媒体与配置¶
目的¶
Media nodes 把图实体连接到上传、生成、prompt、workflow、图像和语音资产。Configuration nodes 把 worlds 和 simulations 连接到模型供应商和运行时生成行为。
重要属性¶
| 实体 | 重要属性 |
|---|---|
Media |
id, type, title, hash, filename, created_at |
PromptMediaFile |
media fields 加 prompt_name, language, component |
WorkflowMediaFile |
media fields 加 workflow_name |
GeneratedImageMediaFile |
generation type, component, workflow name, canonical 和 transient tags/descriptions, negative prompt |
GeneratedVoiceMediaFile |
presentation block id, turn id, character id, text, voice reference |
ConnectionConfig |
id, type, name, base_url, api_key |
| Model config nodes | provider-specific chat, embedding, image, TTS, STT settings |
| Generation config nodes | ImageGenerationConfig.mode, fallback_turns; TtsGenerationConfig.mode, browser autoplay, narrator voice fields |
关系¶
(:Entity)-[:HAS_MEDIA]->(:Media)(:Entity)-[:HAS_COVER]->(:Media)(:Entity)-[:HAS_IMAGE]->(:GeneratedImageMediaFile)(:Turn)-[:GENERATES_IMAGE]->(:GeneratedImageMediaFile)(:TurnPresentationBlock)-[:GENERATES_IMAGE]->(:GeneratedImageMediaFile)(:TurnPresentationBlock)-[:HAS_VOICE]->(:GeneratedVoiceMediaFile)(:World|Simulation)-[:USE_PROMPT]->(:PromptMediaFile)(:World|Simulation)-[:USE_WORKFLOW]->(:WorkflowMediaFile)(:World|Simulation)-[:USES {component}]->(:ChatModelConfig|EmbedModelConfig|ImageModelConfig|TtsModelConfig|SttModelConfig)(:ModelConfig)-[:USES]->(:ConnectionConfig)(:Simulation)-[:HAS_IMAGE_GENERATION_CONFIG]->(:ImageGenerationConfig)(:Simulation)-[:HAS_TTS_GENERATION_CONFIG]->(:TtsGenerationConfig)(:Character)-[:HAS_CONFIG]->(:CharacterTtsConfig)(:CharacterTtsConfig)-[:USE_CONFIG]->(:TtsModelConfig)
归属与生命周期¶
Media 可以附着到 worlds、simulations、characters、background characters、locations、landmarks、items、stacks、equipment 和 containers。Cover media 是每个 entity 的单个选中 media relationship。Prompt 和 workflow media 可以由 simulation 从 world 继承,除非 simulation 有 override。
Connection configs 是可复用的供应商连接记录。Model configs 指向 connection configs。Worlds 和 simulations 再用带 component 关系属性的链接为各组件选择 model configs。
创建与删除行为¶
上传 media 会创建 Media 节点,保存文件元数据,并可选地附着到 source entity。分配 cover media 会替换之前的 HAS_COVER 关系。从 entity 移除 media 会删除关系;在对应 source flow 中不再使用时,也可以删除 media node。
创建 prompt 和 workflow media 会把上传定义保存为 specialized media。分配 prompts 或 workflows 会替换 world 或 simulation 上匹配 component 的 assignment。
删除 connection 或 model config 会移除 config node 及其 USES links。删除 simulation 会移除该 simulation 拥有的 generation configs、jobs、snapshots 和 media assignments。
不变量¶
- Media identity 通过
hash内容寻址,并用filename命名。 - 每个 entity 的 cover assignment 是单一的。
- Model config 应指向兼容的
ConnectionConfig。 - World-level prompt、workflow 和 model assignments 是默认值;simulation-level assignments 会覆盖它们。
- Character TTS config 可以为单个 character 覆盖所选 TTS backend。
- Generated voice media 应指回请求它的 presentation block 和 turn。
示例 Cypher 表示¶
MATCH (simulation:Simulation {id: "sim-1"})
MATCH (mira:Character {id: "char-1"})
CREATE (connection:ConnectionConfig {
id: "conn-1",
type: "openai",
name: "OpenAI",
base_url: null
})
CREATE (llm:OpenAiChatModelConfig {
id: "llm-1",
name: "Narration model",
model: "gpt-4.1"
})
CREATE (portrait:Media {
id: "media-1",
type: "image",
title: "Mira portrait",
hash: "sha256:...",
filename: "mira.png",
created_at: datetime()
})
CREATE (llm)-[:USES]->(connection)
CREATE (simulation)-[:USES {component: "narrator"}]->(llm)
CREATE (mira)-[:HAS_MEDIA]->(portrait)
CREATE (mira)-[:HAS_COVER]->(portrait);
相关 API 端点¶
/media,/media/{media_id}/{entity}/{entity_id}/media,/{entity}/{entity_id}/media-connections,/{entity}/{entity_id}/cover-image,适用于 worlds、simulations、characters、background characters、locations、landmarks、items、stacks、equipment 和 containers/prompts,/prompts/{media_id},/prompts/builtin/{language}/{prompt_name},/prompts/{media_id}/messages/worlds/{world_id}/prompt-connections,/simulations/{simulation_id}/prompt-connections,/simulations/{simulation_id}/prompts/{language}/{prompt_name}/workflows,/workflows/{media_id},/workflows/builtin/{workflow_name},/workflows/{media_id}/data/worlds/{world_id}/workflow-connections,/simulations/{simulation_id}/workflow-connections,/simulations/{simulation_id}/workflows/{workflow_name}/config/connections,/config/llm,/config/embeddings,/config/images,/config/tts,/config/stt/worlds/{world_id}/{llm|embedding|tts|image}-connection/simulations/{simulation_id}/{llm|embedding|tts|image}-connection/characters/{character_id}/tts-config/characters/{character_id}/generate-image/state,/locations/{location_id}/generate-image/state,/items/{item_id}/generate-image/state