SQLite + sqlite-vec replaces JSON memory files with semantic search, follow-up injection, privacy levels, and lifecycle management. Six prompt styles (quick/standard/creative/roleplayer/game-master/storyteller) with per-style Claude model tiering (Haiku/Sonnet/Opus), temperature control, and section stripping. Characters can set default style and per-style overrides. Dream character import and GAZE character linking in the dashboard editor with auto-populated fields, cover image resolution, and preset assignment. Bridge: session isolation (conversation_id / 12h satellite buckets), model routing refactor, PUT/DELETE support, memory REST endpoints. Dashboard: mobile-responsive sidebar, retry button, style picker in chat, follow-up banner, memory lifecycle/privacy UI, cloud model options in editor. Wyoming TTS: upgraded to v1.8.0 for HA 1.7.2 compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
107 lines
3.5 KiB
JSON
107 lines
3.5 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "HomeAI Character Config",
|
|
"version": "2",
|
|
"type": "object",
|
|
"required": ["schema_version", "name", "system_prompt", "tts"],
|
|
"properties": {
|
|
"schema_version": { "type": "integer", "enum": [1, 2] },
|
|
"name": { "type": "string" },
|
|
"display_name": { "type": "string" },
|
|
"description": { "type": "string" },
|
|
|
|
"background": { "type": "string", "description": "Backstory, lore, or general prompt enrichment" },
|
|
"dialogue_style": { "type": "string", "description": "How the persona speaks or reacts, with example lines" },
|
|
"appearance": { "type": "string", "description": "Physical description, also used for image prompting" },
|
|
"skills": {
|
|
"type": "array",
|
|
"description": "Topics the persona specialises in or enjoys talking about",
|
|
"items": { "type": "string" }
|
|
},
|
|
|
|
"system_prompt": { "type": "string" },
|
|
|
|
"model_overrides": {
|
|
"type": "object",
|
|
"properties": {
|
|
"primary": { "type": "string" },
|
|
"fast": { "type": "string" }
|
|
}
|
|
},
|
|
|
|
"tts": {
|
|
"type": "object",
|
|
"required": ["engine"],
|
|
"properties": {
|
|
"engine": {
|
|
"type": "string",
|
|
"enum": ["kokoro", "chatterbox", "qwen3", "elevenlabs"]
|
|
},
|
|
"voice_ref_path": { "type": "string" },
|
|
"kokoro_voice": { "type": "string" },
|
|
"elevenlabs_voice_id": { "type": "string" },
|
|
"elevenlabs_voice_name": { "type": "string" },
|
|
"elevenlabs_model": { "type": "string", "default": "eleven_monolingual_v1" },
|
|
"speed": { "type": "number", "default": 1.0 }
|
|
}
|
|
},
|
|
|
|
"dream_id": {
|
|
"type": "string",
|
|
"description": "Linked Dream character ID for syncing character data and images"
|
|
},
|
|
|
|
"gaze_character": {
|
|
"type": "string",
|
|
"description": "Linked GAZE character_id for auto-assigned cover image and default image generation preset"
|
|
},
|
|
|
|
"gaze_presets": {
|
|
"type": "array",
|
|
"description": "GAZE image generation presets with trigger conditions",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["preset"],
|
|
"properties": {
|
|
"preset": { "type": "string" },
|
|
"trigger": { "type": "string", "default": "self-portrait" }
|
|
}
|
|
}
|
|
},
|
|
|
|
"custom_rules": {
|
|
"type": "array",
|
|
"description": "Trigger/response overrides for specific contexts",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"trigger": { "type": "string" },
|
|
"response": { "type": "string" },
|
|
"condition": { "type": "string" }
|
|
}
|
|
}
|
|
},
|
|
|
|
"notes": { "type": "string" },
|
|
|
|
"default_prompt_style": {
|
|
"type": "string",
|
|
"description": "Default prompt style for this character (quick, standard, creative, roleplayer, game-master, storyteller). Overrides global active style when this character is active.",
|
|
"enum": ["", "quick", "standard", "creative", "roleplayer", "game-master", "storyteller"]
|
|
},
|
|
|
|
"prompt_style_overrides": {
|
|
"type": "object",
|
|
"description": "Per-style customizations for this character. Keys are style IDs, values contain override fields.",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dialogue_style": { "type": "string", "description": "Override dialogue style for this prompt style" },
|
|
"system_prompt_suffix": { "type": "string", "description": "Additional instructions appended for this prompt style" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
}
|