进入世界模拟
这一节结束后,你会知道如何从一个普通写作项目进入世界模拟 / RP 模式,并完成第一 Tick。
NeuroBook 的 RP 模式不是把用户丢进一个普通聊天角色卡。它更接近“世界模拟”:simulator leader 负责理解用户行动、调度角色、裁决世界变化,再把结果交给 writer 渲染成用户看到的文本。
先理解 simulation
当前 Project Workspace 默认使用 simulation/ 保存可变化的运行态:
agent-context/
simulator.leader/
context.md
memory.md
generated.md
rp.writer/
context.md
memory.md
generated.md
simulation/
subjects/
entities/
runs/这些文件各有分工:
agent-context/simulator.leader/context.md:simulator leader 的 Project 专用运行上下文。agent-context/rp.writer/context.md:可选的 RP 输出偏好来源;由上级读取后写入 writer brief,rp.writer自己不绑定这个文件。subjects/:角色、玩家主角、势力代表等可扮演主体。entities/:需要状态追踪的物品、地点、机关或特殊对象。runs/:每次 Tick 的过程记录。
选择入口
使用 RP模式 Skill 开始:
请使用“RP模式”检查当前项目是否已经准备好进入世界模拟。如果缺少 simulation 文件,请先列出需要补齐的内容。如果你刚导入过 SillyTavern 卡片,可以补一句:
请同时参考 reference/silly-tavern 下最近导入的 simulation-migration 材料,但不要把动态机制直接复制进角色 knowledge。最小可运行场景
第一次 RP 不需要完整世界。建议先准备最小场景:
- 一个玩家主角 subject。
- 一个会回应玩家的 NPC subject。
- 一个当前地点。
- 一个开局行动。
- 一条需要裁决的悬念或危险。
可以让 Agent 帮你补齐:
请为当前项目准备一个最小 RP 场景:玩家主角、一个 NPC、一个地点和一个开局行动。只写必要文件,写入前先列路径。三类 Agent
第一版 RP 主要由三类 profile 协作:
simulator.leader:世界模拟主管,负责场景叙述、世界裁决和 actor 调度。simulator.actor:角色扮演 agent,只看到自己应该知道的信息。rp.writer:RP 文本渲染 agent,profile input 为空,只把上级注入的 writer brief 写成用户可读 prose。
用户也是故事中的一个扮演者。不同点在于,simulator leader 不直接以内部裁决文本和用户交流,而是通过 writer 输出最终文本。
初始化 subject
每个重要扮演者都应该在 simulation/subjects/ 下有自己的目录。玩家主角也应该有一个 subject。
典型 subject 文件包括:
subject.md
soul.md
events.jsonl
memory.jsonl
mind.md
state.md含义是:
subject.md:全知秘密档,只有simulator.leader可读,含隐藏真相和调度提示;frontmatter 可记录id、name、kind、profile、controlledBy和canonicalSource。soul.md:第一人称扮演手册(无 frontmatter),直接注入 actor 本人作为身份,只含角色自知信息,不含秘密。events.jsonl:这个主体经历过什么,每行一条{ tick?, time?, text }。memory.jsonl:这个主体对人、地点、物品、概念或自己的当前稳定看法,每行一条{ topic, aliases?, view }。mind.md:当前心理、欲望、误解和倾向。state.md:身体、位置、持有物、关系等当前状态。
不要把上帝视角 lorebook 直接复制进 memory.jsonl。角色只能知道它合理知道的信息。
玩家主角也需要 subject。区别是:系统不应该替玩家发明关键动作、台词或目标;玩家的行动由你输入。
配置 Subject RAG
长线 RP 会使用 Subject RAG 帮 actor 召回自己的经历和稳定认知。它只检索当前 subject 的 events.jsonl 和 memory.jsonl,不会检索完整 lorebook 或其他 subject。
在第一次依赖 RAG 前,打开设置里的 Embedding tab:
- Global scope 配置 OpenAI-compatible embedding 服务、API Key、Base URL、模型名和维度。
- Project scope 可以覆盖当前项目使用的 embedding 模型名和维度。
如果没有配置 embedding,subject_rag_search 会明确报错,不会退回关键词搜索。这个错误通常会让 actor.context-load 失败,从而阻止当前 actor run 继续;这样你能立刻知道长期记忆没有真正生效。
进行第一 Tick
准备好后,可以直接输入行动:
进入 RP。我的角色醒来,发现自己坐在夜行列车最后一节车厢,手里攥着一张被打孔的旧车票。一次 Tick 通常会发生:
simulator.leader理解用户行动或开始请求。- simulator leader 检查相关 subject、entity、lorebook 和当前状态。
- simulator leader 向需要反应的
simulator.actor发送 actor-facing message。 actor.context-load检索当前 actor 自己的events.jsonl/memory.jsonl,压缩成<actor-sidecar-context>。- actor 只按自己知道的信息回应。
actor.memory-save追加本轮经历,并在稳定认知变化时维护memory.jsonl。- simulator leader 裁决剧情推进和世界变化。
rp.writer把裁决结果写成用户可见文本。- 必要状态写回
simulation/subjects/、simulation/entities/或simulation/runs/。
第一 Tick 后,你应该能看到一次 run 记录,例如:
simulation/runs/ticks/{id}-{slug}/report.md
simulation/runs/ticks/{id}-{slug}/prose.mdreport.md 保存后台裁决和状态变化,prose.md 保存用户可见正文或片段。
和写作模式的关系
RP 模式可以服务于写作。你可以先用世界模拟探索角色反应和剧情可能性,再把稳定结果整理进 Plot,最后用普通 writer 写正式章节。
边界要保持清楚:
agent-context/保存 profile 专用上下文、启动阅读顺序和程序生成的 context recommendations。lorebook/保存稳定设定和原型。simulation/保存当前运行态。manuscript/保存正式正文。reference/保存外部素材和导入归档。
如果你不确定某条信息该放哪里,先让 leader 解释它是稳定设定、角色知识、实体状态,还是一次 Tick 的过程记录。