角色¶
目的¶
角色实体表示世界中的 agents。Character 节点可以拥有公开状态、私有状态、当前活动、库存、情绪状态、记忆、信念和服务配置,并据此参与模拟。BackgroundCharacter 节点表示较轻量的离场或环境人物,但仍可以占据地点、锚定到地标并持有物品。
重要属性¶
| 实体 | 重要属性 |
|---|---|
Character |
id, user_controlled, name, age, gender, appearance, description, public_state, private_state, current_activity |
BackgroundCharacter |
id, name, description |
CurrentActivity value |
name, started_at, expected_end, interruptible, constraints |
CharacterTtsConfig |
id, character_voice, rvc_character_voice, rvc_character_pitch, backend |
EntityVariableSet |
id, owner_id, variables(VariableDefinition 列表:name, value_type, value, default_value, description, 取值边界) |
关系¶
(:World|Simulation)-[:CONTAINS]->(:Character|BackgroundCharacter)(:Character|BackgroundCharacter)-[:PRESENT_IN {position}]->(:Location)(:Character|BackgroundCharacter)-[:ANCHORED_TO]->(:Landmark)(:Character)-[:HOLDS]->(:Intent)(:Character|BackgroundCharacter|Container)-[:HOLDS]->(:ItemStack|Equipment|Container)(:Character)-[:EQUIPS {position}]->(:Equipment)(:Character|BackgroundCharacter)-[:OWNS]->(:ItemStack|Equipment|Container)(:Character)-[:REMEMBERS]->(:MemoryAtom)(:Character)-[:HOLDS_MODEL]->(:SubjectiveEntityClaim)(:Character)-[:HAS_EMOTION_STATE]->(:EmotionState)(:Character)-[:HAS_CONFIG]->(:CharacterTtsConfig)(:CharacterTtsConfig)-[:USE_CONFIG]->(:TtsModelConfig)(:Character)-[:HAS_VARIABLES]->(:EntityVariableSet)——不是角色专属,任何实体类型都可以用同样方式拥有一个。(:World|Simulation)-[:CONTAINS]->(:EntityVariableSet)
归属与生命周期¶
World-scoped characters 是作者态模板角色,Simulation-scoped characters 才是运行时的实际参与者。Simulation 会在创建运行、或是把作者态角色引入运行时的过程中,复制这些 world characters。
private_state、记忆、主观断言、private visibility 关系和情绪状态都属于角色上下文数据。模拟组件会使用它们,但默认不应把它们当作公开叙事。
创建与删除行为¶
Characters 可以创建在 worlds 或 simulations 下。设置 location 会替换已有 PRESENT_IN 关系。设置 landmark 会替换已有 ANCHORED_TO 关系。
删除 character 会删除角色以及由该角色直接持有的依赖节点,包括 intents、item stacks、emotion state、相关 emotion audit nodes 和 character TTS config。删除 background character 会删除节点和直接持有的 item stacks。
不变量¶
- 正常状态下,一个 character 只能有一个活动 location 关系。
- 正常状态下,一个 character 只能有一个活动 landmark anchor。
- 用户控制角色是
user_controlled = true的Character节点;background characters 是独立节点。 - Private state 是角色上下文的一部分,只有允许从该角色视角推理的组件才应读取。
- Character TTS config 是可选的,可以指向后端配置,也可以依赖全局或 simulation 默认值。
示例 Cypher 表示¶
MATCH (simulation:Simulation {id: "sim-1"})
MATCH (pier:Location {id: "loc-2"})
CREATE (character:Character {
id: "char-1",
user_controlled: true,
name: "Mira Vale",
age: 31,
gender: "female",
appearance: "Weatherproof coat and silver goggles",
description: "A mechanic with a reputation for impossible repairs.",
public_state: "Waiting beside the pier gate.",
private_state: "Worried that the engine ledger is missing."
})
CREATE (simulation)-[:CONTAINS]->(character)
CREATE (character)-[:PRESENT_IN {position: "by the gate"}]->(pier);
相关 API 端点¶
/characters,/characters/{character_id},/worlds/{world_id}/characters,/simulations/{simulation_id}/characters/characters/{character_id}/location,/characters/{character_id}/landmark,/characters/{character_id}/inventory/characters/{character_id}/tts-config/entities/{owner_id}/variables(GET/PUT;不限于角色,适用于任何实体类型)/background-characters,/background-characters/{character_id},/worlds/{world_id}/background-characters,/simulations/{simulation_id}/background-characters/background-characters/{character_id}/location,/background-characters/{character_id}/landmark