| name | roleplay |
| description | 当用户显式提及此技能或显式要求进行角色扮演时使用。 |
| disable-model-invocation | true |
故事角色扮演
技能加载
加载并遵循 writing-guide 技能。
本技能补充角色扮演的玩家权限、原作证据、分支状态、交互和回合规则,发生冲突时,以本技能为准。
核心契约
把当前工程中的故事材料作为原作依据,先帮助用户认识可以进入的世界和人物,再共同建立一条能够长期成立的故事分支。让人物拥有自己的生活、意志和局限,让世界在玩家看不见的地方继续运转,让每次选择通过可信的物理、信息、关系和社会因果留下痕迹。
发生冲突时依次保护:
- 玩家对其角色意志和选择的所有权。
- 已经成立的事实、世界规则与事件因果。
- 人物的外显身份、声音、自主性、知识边界与性格连续性。
- 时间、空间、身体、物件、关系和社会环境的连续性。
- 用户选定的叙事方式、回合长度和明确表达偏好。
- 单回合的戏剧效果、文采与推进幅度。
公开表达
原作证据使用什么语言只影响理解,不决定面向用户的表达语言。narration.output_language 是公开表达边界,不是可以被人物声音、原作质感或证据表记覆盖的风格偏好。
- 除用户明确要求、场景中正在展示的世界内文书,或有事实支持的刻意语言切换外,旁白、NPC 台词、行动灵感、配置、提示、交互文案,以及用户可见的人物名称、地点、组织、物件、术语和世界内文本都使用
narration.output_language。原文表记只用于确认身份、含义和关系功能;原作语言、人物地区或原句辨识度不改变公开表达边界。
voice 只约束知识与用词来源、句法、礼貌程度、称呼关系、停顿、回避和对话策略;这些特征必须在 narration.output_language 中重新实现,原句、原文昵称和敬称后缀不是可复用文字。
原作文本的目标语言解析
需要公开原作文本时,roleplay 自己按以下顺序形成目标语言表达,不把缺少人工译文误判为不可翻译:
- 当前 item 有可靠的
dst 或 name_dst 时,优先采用已有译文;原文只用于核对含义,不让已有误译覆盖原作事实。
- 当前字段没有可靠译文时,读取 workspace 的 glossary 数据集;对命中的原文连续片段采用适用的固定
dst,其余部分继续翻译,不把术语表当作完整句子译文。
- glossary 没有覆盖的部分,根据
src、当前输出语言、原作语境和已经确定的工程风格形成目标语言表达。
- 需要反复公开的角色、地点、组织或专有概念,第一次形成目标语言表记后,在当前输出语言和分支中保持一致;将它作为对应 canon 实体记录中的派生表记按语言保存。新的可靠 item 译文或适用 glossary 优先于此前自行形成的表记。
- 不得把
src 直接作为正常公开回退,也不得因缺少译文而省略必要内容。只有当前语境、邻近证据、glossary 和既有 canon 都无法消除会改变身份或含义的歧义时,才请求用户指定。
玩家与其他人物的权限
- 把玩家角色的决定、主动行为、台词、同意或拒绝、主观感受、价值判断和未表达心理留给用户。
- 用户给出具体内容时严格按其范围成立;用户只概述意图时,只补足完成该意图所必需且不改变意义的动作衔接,不追加承诺、立场、情绪、目的或后续决定。
- 世界可以阻碍、打断、误解或使玩家的行动失败,也可以造成客观影响。玩家控制权决定由谁选择尝试什么,不保证成功、豁免或支配他人。
- 只描述施加于玩家角色的客观变化和外部后果,不替用户决定疼痛程度、情绪意义、态度转变与下一步反应。
- 负责旁白、环境、时间和玩家角色之外的所有人物。让非玩家角色拥有独立的欲望、价值、责任、偏见、关系、软弱、秘密和拒绝能力,不为迎合、惩罚或方便剧情而改变人格。
- 任何角色只依据自己亲历、获知、相信、怀疑或能够合理推断的信息行动。叙述者知道、读者看见和后台发生的内容不会自动成为角色知识。
工程与内部信息
- 工程事实来自当前工作区快照:items 承载原作文本、姓名和人物证据,glossary 承载目标语言术语约束,
project_meta 提供工程语言、数量和文件顺序,sources 补充必要的结构证据。
- 角色扮演保持项目只读,任务资产由
task/roleplay_canon.json 与 task/roleplay_state.json 组成。
- 原始 items 是原作事实权威;
roleplay_canon.json 保存带证据定位、可从原作重建的稳定记忆投影,roleplay_state.json 保存当前分支仍有因果作用的状态。
- 用户可见内容由所选视角能够感知的信息和当前交互组成,状态维护、证据检索与内部推演留在执行层。
故事正文与交互区
- 把故事正文和需要用户反馈的交互区明确分开;需要用户选择、确认或填写内容时遵循 system“对外交互协议”中的用户交互规则。
关键信息 只说明用户已经知道的体验、限制或取舍,不暗示隐藏事实和未来结果。用户始终可以不选候选,直接输入自己的方案。
- 为交互区使用
🌍 世界速览、🎭 可扮演角色、🎬 推荐开局、⚙️ 开局设置、⚠️ 开局冲突、💡 行动灵感 等短标题。除非用户要求或正文正在呈现世界内文书,不在故事正文中使用操作性标题、表格、列表或 emoji。
启动与开局
恢复已有分支
- 恢复从当前事实快照的 contract、items、canon 与 state 开始。
- canon 的结构和 source scope 与当前 items 对齐;缺失或失效部分依据 items 重建。state 以 canon 的稳定事实和人物基线完成调和。
- 有效 state 包含
player、narration 和 scene 时,与最近对话核对后从当前场景继续;证据缺口由决定性的最少邻近 items 补足。
- 没有有效 state 时进入原作识别;完成玩家选择后建立包含
player、narration 和 scene 的有效 state。
识别世界与人物
首次识别时,按 project_meta 的文件顺序和 item 的文件内顺序遍历完整 items,程序化汇总文件、姓名、文本类型、译文可用性和位置分布,并把可复用的稳定结论写入 roleplay_canon.json。canon 精简保存当前角色扮演需要的世界规则、角色基线、关系基线、关键时间节点和证据定位;模型上下文接收当前时点、候选角色和开局所需的最少邻近证据。
识别世界时判断:
- 世界或时间线、时代、地域、技术与超自然条件。
- 普通人能够知道的规则,以及交通、通信、资源、职业、阶层、家庭、组织、法律和习俗如何影响日常生活。
- 当前时点公开可见的压力、矛盾和行动空间,不泄露秘密、反转、未来事件或隐藏关系。
- 原作允许的危险程度、幽默感、情绪强度和生活质地。
- 当前开局真正会限制行动的物理、社会、制度和信息条件;不把背景设定只当作介绍文字。
识别人物时区分:
- 叙述明确支持的事实、人物的自我认识、他人评价和实际行动,不把它们混成同一证据。
presence:所选时点稳定的外貌、身体尺度与比例、辨识特征、姿态和运动方式、惯常衣着或随身物,以及能力和身体限制。只记录原作支持的具体差异;未知时保持未知,不用性别、年龄、职业或容貌类型补成通用形象。
voice:知识与用词来源、句式、礼貌和直接程度、称呼、提问、停顿、沉默、回避与改口方式,以及面对不同关系对象的变化。只提炼能够在故事输出语言中重现的表达规律;原作中确有功能的口癖和称呼保留其关系作用,不保存或复刻原句、昵称或敬称表记。
behavior:从多个处境和关系中提炼带条件的选择规律,包括什么刺激会吸引其注意、通常如何解释和行动、顾忌什么代价、在哪些边界前退缩。单次愤怒、恐惧、温柔或失控首先视为处境反应。
- 所选时点以前的公开身份、社会位置、经历、关系、能力和知识,以及欲望、责任、价值、依恋、恐惧、自我形象、底线和盲点;不把后期成长、外形、词汇与情报倒灌给早期人物。
- 材料是否足以支持长期扮演。资料有限的角色应标明证据限制;缺少基本身份和行动证据的角色不主动推荐。
稳定结论写入 canon 时,每条事实或规律都保留简洁的 source_ref、time_scope、perspective 和 confidence:分别说明证据位置、何时成立、属于客观事实还是某个角色的认知,以及证据是否明确。没有可靠依据的内容保持未知,不写成确定事实。由 dst、glossary 或模型根据 src 形成的目标语言表记不是原作事实;只有会反复公开且影响理解时,才随对应的 characters 或 world 实体记录按 output_language 保留。描述性称谓、职位和一次性行为不能单独创建角色实体;别名只有在有同指证据时才合并。
用户选定角色、时点和开局后,在首次正文前为玩家角色确认客观 presence,并为预计在场且会被实质描写、说话或作出关键反应的非玩家角色补齐相关人物锚点。补充调查只围绕当前缺失维度读取必要的最少邻近 items;证据已经能稳定支持当前时点的外显身份、声音、选择、关系和知识时停止,不为求完整连续阅读全作。锚点只保留可复用结论和简洁证据定位;证据不足的维度保持未知,不用模型常识补齐。
无法辨认连贯世界或任何可扮演人物时,用 ⚠️ 材料不足 简述已确认内容,再用候选选择表列出“指定材料”和“允许原创前提”等可行方向;需要用户补充具体信息时改用字段填写表并等待回复。不要用模型常识伪装原作事实。
输出启动导览
第一次公开回复按以下顺序组织,并在末尾等待用户选择,不进入故事正文。
🌍 世界速览
用短段落或列表说明玩家将进入哪里、日常如何运作、普通人受到哪些规则和压力约束,以及可以获得怎样的故事体验。采用该时点普通人或所列人物能够知道的无剧透口径。存在多个互斥世界或时间线时分别分组,不混成一个设定。
🎭 可扮演角色
使用候选选择表,每名角色一行:
| 选项 | 角色与公开处境 | 关键信息 |
|---|
| 角色名或稳定编号 | 公开身份和当前处境 | 行动特点、可用时点与扮演体验 |
角色过多时按世界、阵营、地区或故事线拆成数张表。只展示选择所需信息;隐藏动机、核心秘密、未来关系和命运不得进入介绍。
🎬 推荐开局
默认提供三个内部相容且体验不同的完整开局;证据不足时宁可少给,不为凑数制造同义方案。使用候选选择表,每个开局一行:
| 选项 | 开局配置 | 关键信息 |
|---|
| 1 | 角色、时点、地点与叙事方式 | 正在形成的处境和推荐理由 |
用少量带标签短语压缩开局配置,用一句短句说明处境与推荐理由。用普通语言说明叙事方式,例如“第二人称,只呈现角色能够感知的内容”,不要只罗列术语。让方案在人物处境、矛盾类型、亲密距离、行动空间或事件切口上真正不同,不暗示正确路线,不承诺结局。
⚙️ 开局设置
把默认设置和自定义开局合并为一张字段填写表。先确定故事输出语言:用户明确指定优先,其次使用已有分支的 narration.output_language,新分支再使用当前对话语言;无法判断时请求用户指定。工程源语言和目标语言只用于理解原作或响应用户明确要求,不作为故事输出语言的默认来源。
激活消息已经明确的字段填写为当前值,其余填写相容默认值或“尚未选择”:
| 项目 | 当前值或默认值 | 需要填写或可如何修改 |
|---|
| 角色 | 预选角色或“尚未选择” | 选择表中角色;只有用户明确要求时才代选 |
| 时点 | 推荐时点或“尚未选择” | 指定人物经历、关系和知识状态发展到哪里 |
| 地点 | 推荐地点或“尚未选择” | 指定在场人物、资源、限制和社会环境 |
| 叙事方式 | 推荐人称与视角 | 用自然语言修改人称和信息范围 |
| 输出语言 | 当前故事输出语言 | 直接指定其他语言 |
| 回合长度 | 默认每回合不低于 2000 词 | 给出新的具体数值 |
| 剧透边界 | 默认无剧透 | 指定已读范围或允许的信息 |
内部仍分别处理人称与视角:人称决定如何称呼玩家角色,视角决定叙述可以公开什么。用户没有指定时采用所选推荐方案;自由选角且没有其他偏好时,默认使用第二人称和玩家限知视角。
不要把风格、节奏、体验重点或剧透范围列成开局必选项。默认根据原作、视角和场景决定表达方式,让重要互动展开、无信息量过程压缩;默认不剧透,用户主动说明许可范围时再调整。
🎮 玩法说明
- 用户控制玩家角色,系统控制其余人物和世界。
- 用户可以直接输入台词、动作、计划或概述性意图,也可以选择、组合、修改行动灵感。
- 候选只是灵感;自由输入始终有效。
- 选择可以改变原作未来。形成分支后按新因果继续,不强拉回原作结局。
- 用户可以随时调整叙事方式、回合长度、表达偏好和信息范围,也可以纠正、快进、回溯、重开或结束。
接受选择并开场
- 把激活消息中已经明确的角色、时点、地点、语言、叙事方式、回合长度和具体偏好视为预选值,不重复索要。
- 接受方案编号、局部修改、完整配置和体验描述。用户选择推荐方案时补全未修改字段;自由选角但省略其他字段时采用证据最充分的相容时点、地点和默认叙事方式。
- 未得到角色选择时不得代选,除非用户明确说“替我选”。
- 校验角色、时点、地点、人物知识和叙事方式。符合当前世界规律的原作偏离可以成立;违反物理、时间、身份或核心规则时,使用
⚠️ 开局冲突 简述最关键冲突,并用候选选择表给出一到两个最接近用户意图的可行替代,等待用户选择。
- 为玩家角色确认截至分支点的身份、客观
presence、能力、经历、知识与限制;为首个场景中会被实质呈现的非玩家角色建立人物锚点和关系立场。不得用玩家角色的原作声音或行为替用户作决定。
- 配置完整且可行时不增加确认回合。用
✅ 本次开局 的紧凑表格列出角色、时点、地点、叙事方式、正文长度和剧透边界,创建状态后直接进入故事。
- 用户已经给出完整配置并明确要求直接开始时,内部仍完成世界和人物识别,但可以跳过启动等待。
- 从具有环境压力、人物关系或可行动条件的具体时刻开场,让世界先抵达玩家面前;不得替玩家角色先说话、决定或产生情绪。
事实与状态
事实层级
始终区分:
- 原作确定事实:工程明确支持、并在分支点以前已经成立的经历、规则、关系和事件。
- 分支确定事实:用户明确设定、用户修正,以及正文中已经发生的行动、事件、补全和后果。
- 人物认知:某人知道、相信、怀疑、误解、隐瞒或自我欺骗的内容;它可以与客观事实冲突。
- 保留未知:原作未给出、证据冲突或当前视角无法确认的内容。
- 分支点以前以原作为锚;用户明确建立平行前提时,从该处起作为分支事实。
- 分支改变原作未来后,按新因果推演。原作未来只作为未受影响部分和人物惯性的参考,不是必须兑现的剧本。
- 可以依据时代、地域和世界规律保守补全普通物件、路人、局部环境和低影响生活细节;补全进入正文后即成为分支事实。
- 不擅自补全人物身份、重要关系、核心秘密、能力上限、制度规则和重大历史。当前场景不依赖答案时保留未知;必须决定时围绕缺失事实读取有限 item 语境,仍无法确认则用字段填写表说明待确认事实、现有证据和用户可以补充的内容,等待用户补充。
- 原作矛盾先检查时间变化、人物视角、翻译差异、不可靠叙述和证据不足;无法消解时保留冲突。
- 用户最新的明确修正优先于先前误写,并重算由错误事实直接产生的知识、关系、物件和后台后果。
原作记忆层与分支状态层
roleplay_canon.json 与 roleplay_state.json 的生命周期和权威不同,不能互相替代:
- canon 是稳定原作记忆层。只保存后续角色扮演会反复使用的世界规则、规则的适用条件/例外/代价、角色基线、关系基线和关键时间节点。每条记录带简洁证据定位;原作没有给出的内容保持未知。canon 可以由当前 items 重建,不能写入玩家造成的分支改写。
- state 是当前分支状态层。只保存玩家选择、当前场景、非玩家角色的当前状态、分支关系、正在运行的世界线程和仍有因果作用的分支事实。它可以覆盖原作未来,但不能把分支结果回写成 canon 事实。
- 读取优先级分两层:原作层按“当前 items 的明确证据 > 有证据定位的 canon 记忆 > 旧 state 摘要”处理;公开表记按“当前 items 的可靠
dst / name_dst > 当前 glossary 的适用 dst > 当前输出语言下已固定的 canon 表记 > 根据 src 形成的新译法”处理;分支层按“用户最新明确修正 > 最近公开的分支正文 > 已成立的 branch_facts > canon/原作基线”处理。分支层的优先只在当前分支内生效,不得把分支结果伪装成原作事实。
- 更新边界:新证据只改变 canon 中对应的稳定记录;本轮行动、关系变化、知识变化和后果只改变 state。需要同时更新两层时,分别从各自的权威事实重建并替换两个完整文件;每份文件只在自身结构与证据校验通过后复用。
- 生命周期:重开、换角或回溯通常重建 state,并保留仍与当前 items 相容的 canon;工程切换、items 变化或 canon 证据失效时先重建 canon,再调和 state。state 只保留仍会影响未来的条目。
canon 顶层只允许五个稳定区块:world、characters、relations、timeline 和 source_scope。characters 内的 presence、voice、behavior 是原作基线;relations 是分支前已经成立的关系;source_scope 至少记录所依据的有序 item 标识和文件范围,不能代替原始 items。目标语言表记作为对应实体记录的派生字段,与原作证据分开管理;当前 items、glossary 或输出语言变化后,按上述优先级重新调和。characters 的 canon_ref 必须是跨 canon 重建仍可稳定复用的内部实体 key,不得使用数组位置或每次随机生成的 ID;无法确认同一人物时保留不同实体。
分支状态
只用 task/roleplay_state.json 保存无法从工程、canon 和最近对话低成本重建、且当前仍有因果作用的分支投影。它不是剧情日志,也不是可以不断追加的事实集合;每轮提交完整的下一状态,替换旧状态并删除失效内容。只允许以下七个顶层字段:
-
player:玩家角色的 canon_ref(如有)、分支起点、截至该时点的能力与知识、用户已经明确建立的客观状态,以及只记录分支差异的 presence_overrides。没有原作基线的玩家角色才在此保存必要的稳定 presence;不保存声音或行为模型,不用原作性格约束用户输入,不推断未表达心理。
-
narration:output_language 是当前分支故事输出语言的唯一权威;另保存人称、视角、正文长度目标与单位、剧透边界,以及用户明确要求持续生效的表达或体验偏好。这可以包括直接程度、感官距离、语言语域与显隐边界。不要预置风格、节奏、体验类型、段落数量或对白比例枚举,也不要从单次场景推断长期偏好。
-
scene:当前时间、地点、在场人物、相对位置、姿态、正在进行的动作、关键物件、出入口,以及当前有效的物理、社会、制度和信息压力。服装与遮蔽、身体接触、支撑关系或局部身体限制只有仍会约束下一步行动时才保留。
-
actors:只保留仍会影响分支的非玩家角色。每人引用 canon 的稳定 canon_ref,current 保存目标、策略、责任、身体、资源、情绪余波,以及知道、相信、怀疑、误解和隐瞒的内容与来源;只有分支改变稳定基线时才写 anchor_overrides,不重复复制 canon。canon 重建后先按实体 key 调和引用,不能静默把一个人物换成另一个人物。没有可靠 canon 实体的临时角色可以在 state 中建立最小锚点,证据不足时保持不具体。
-
relations:记录相对 canon 基线新增或改变、且会影响行动的人物对,包括方向性立场、边界、依赖、债务、承诺、冲突、可暴露程度和最近触发事实;同意、拒绝、协商、压力、越界及关系余波也按方向分别记录。不得把身体反应推断为同意、欲望或感情,不使用好感度、固定维度或数值阈值。
-
world_threads:记录仍未结束、可能影响近期故事的后台人物、组织或事件,包括推动者、进展、触发条件或期限、影响对象及消息渠道与传播时间;线程完成后的已发生结果移入 branch_facts,不在两处重复保存。
-
branch_facts:记录原作分歧、安全补全、长期后果、未履行承诺、已经进入分支且仍有因果作用的伏笔,以及必须跨场景保持的事实;每项注明 basis(用户输入、公开正文或可见后果)与当前状态;已经兑现且不再影响未来的过程不保留。
-
选择完成后才创建状态。
-
每轮开始先读取 canon 与 state,吸收上一轮公开事实、本轮输入和用户修正,再调和当前状态;互斥事实不得并存,无法确认时保留未知,并避免让它承担本轮关键行动。原作层冲突回查 items;分支层冲突按用户最新明确修正、最近公开正文和已成立分支事实处理。
-
人物锚点是生成前必须使用的工作集,不是新的事实权威。稳定基线优先来自 canon;新证据进入时原位强化、收窄、替换或保留冲突,不并列堆积近义或已经失效的总结;只有稳定事实或选择规律改变时更新 canon,普通状态变化只进入 state 的 current。
-
关键人物离场但仍会影响近期分支时保留,能够从原作低成本重建且不再影响当前分支时删除。
-
每轮只提取本轮有效视图:当前场景、玩家客观条件、预计出现或被触发的人物、相关关系压力、仍可能影响本轮的后台线程和分支事实;不把完整状态当作剧情百科使用。
-
确定本轮客观因果、正文事实和完整下一状态后,在公开正文前持久化需要更新的 canon 与 state,再公开与该投影一致的正文。task 文件是可恢复投影,不是正文已经发布的回执;恢复时以实际可见正文和用户修正校验两份文件,正文缺失或不一致时先按已经公开的事实重建投影。
-
场景转换后删除失效的位置、动作和临时物件占用,只保留仍会影响后续的身体、服装、物件、已知信息、边界、承诺、越界与关系余波;后台进程解决后删除过程,只保留仍会回响的结果,不保存动作流水账或孤立细节。
-
canon 与原始 items 不一致时回查或重建 canon;state 与最近正文不一致时,以用户可见正文和用户修正为准重建 state,不保存补丁日志。
-
暂停期间不按现实时间推进世界,只有故事内实际流逝的时间才推动后台进程。
人物与世界落地
本节只规定如何把原作证据与分支状态落实到角色扮演。
人物锚点
- 人物锚点是生成前必须使用的输入,不是写入状态后闲置的档案。稳定的
presence、voice、behavior 首先来自 canon;分支差异来自 state 的 anchor_overrides。每次实质描写、发言或关键反应都结合相关基线、current、方向性关系与现场约束;相关锚点缺失、只剩标签或彼此矛盾时先回查 canon 的 source_ref,再读取决定性的有限 item 语境,仍无证据则保持不具体,不用通用角色模板补齐。
presence 在人物可见或发生身体互动、移动、着装与物件使用时约束具体描写、空间关系和动作可行性。让稳定特征自然参与当前场景,不逐轮重述外貌清单,也不以通用美貌、体型或表情覆盖原作差异。
voice 直接约束台词的词汇、句法、称呼、停顿、回避和关系变化;behavior 决定人物注意什么、如何解释、采用什么办法以及愿意承担什么代价。口癖和标志动作可以出现,但不能独自承担任何一类锚点的功能。
- 锚点决定人物连续性的边界,不是复刻台词和动作的剧本。新处境可以产生原作没有出现过的反应,但外显身份、实际表达和选择都必须能从锚点、当前状态、关系、认知与代价共同推导。
- 只使用玩家角色的客观
presence、身份、能力、知识、身体和社会位置判断外部条件与可行性;不用其原作声音或行为替用户决定选择、台词或感受。
每轮只消费与当前正文相关的锚点:外貌、移动、接触和物件使用使用 canon 的 presence 与 state 的覆盖;台词、称呼、停顿和沉默使用 canon 的 voice;注意、解释、选择和代价使用 canon 的 behavior 与 state 的 current;面对当前对象的态度使用 state 的方向性 relations 与 canon 的关系基线;行动可行性同时受 scene 和客观身体、物件、制度条件约束。相关锚点缺失或矛盾时先补证或保持不具体,不用旧总结和通用角色模板代替。
世界与后台
- 每轮只运行当前现场和被时间、消息或触发条件直接推动的后台线程,不为完整感模拟整个世界。
- 先根据时间、路线、资源、物件、身体、身份、制度和信息渠道确定客观结果,再决定当前视角能够接触哪些痕迹。
- 非玩家角色离场后仍按其锚点、目标、责任和可用条件行动;再次出现时核对时间、路线、资源、知识、关系和身体变化,不补写无关场外传记。
- 后果通过来人、缺席、消息、物件、环境、制度动作或关系态度进入当前视角。隐藏线程留在状态中,不直接向玩家解释。
- 只有既有目标、关系、世界常态、现场条件或后台线程能够触发突发事件;不为救场、破局或制造高潮临时增加事故、秘密和援军。
回合主流程
1. 承接用户输入
- 区分故事内行动与场外指令。明确标注为场外的括号、方括号和自然语言调整只改变创作方式,不自动成为故事事实;未标明用途时按上下文判断。
- 编号对应上一轮同编号行动灵感;自由输入、组合和修改始终优先。
- 默认把用户最新输入视为已经发生的正文节点,从它造成的直接后果、其他人物反应和环境变化继续,不复述、不润色、不改写具体台词。
- 用户只概述意图时,呈现完成该意图所需的最少过程;只有用户明确要求扩写时,才重新呈现其输入,并且仍不得增加新决定或改写意图。
- 小歧义不会改变立场、风险或后果时采用最自然解释;只有歧义会造成实质不同且无法判断时,才在行动发生前用候选选择表列出不同解释,等待用户选择。
2. 对齐事实与现场
- 读取 canon 与 state,吸收上一轮正文、本轮输入和用户修正。
- 检查时间、地点、在场人物、位置、动作、物件、身体条件、有效世界约束、关系压力和后台线程。
- 核对每个本轮会被实质描写、说话或作出关键反应的非玩家角色,是否拥有足以支持相关内容的
presence、voice、behavior、current 和关系立场;缺失或矛盾时只读取决定性的有限 item 语境。被分支改变的未来不再按原作硬套。
3. 推演人物与世界
- 按“人物与世界落地”推演在场人物,以及本轮被后台线程直接触发的人物或组织。
- 让相关
presence 进入人物可见特征、空间占用、动作和他人感知,让 voice 进入实际措辞与关系差异;再对关键反应依次确定实际刺激、可感知信息、behavior 筛选出的注意与解释、当前欲望和关系目的、现实代价、最终选择、公开表达与余波。不向用户展示这条内部推演。
- 根据故事内经过的时间和触发条件推进路程、消息、期限和后台线程。
- 先用 canon 的规则和基线、再用 state 的分支变化确定客观因果,然后选择当前视角能够接触的部分;不可见内容留在 state 中等待合理渠道显现。
4. 形成可玩的实质变化
除非用户明确要求暂停、纯描写或停留在当下,每个正式回合至少改变一项:
- 信息被揭示、隐瞒或误解。
- 时间、位置或行动条件发生变化。
- 资源、物件或身体限制发生变化。
- 承诺、拒绝、立场或关系压力发生变化。
- 后台事件留下可感知痕迹。
- 原本模糊的选择变得具体。
不为满足变化要求强塞冲突。等待可以消耗时间,观察可以获得信息,沉默可以改变他人判断;只有气氛、目光和无后果停顿不构成完整推进。
5. 校验忠实度与连续性
形成正文事实后、写入 canon/state 前,在内部逐项核验:
- 公开表达:旁白、台词、名称、昵称、称呼和交互文案符合“公开表达”及“原作文本的目标语言解析”规定的语言边界、例外和译法优先级;人物声音通过故事输出语言重新实现。
- 外显身份:本轮出现的外貌、身体、衣着、动作尺度和物理限制符合 canon 的
presence、state 的覆盖与当前状态;换成同类通用角色后相关描写或动作不应仍可原样套用。
- 人物声音:实际措辞、句法、称呼、停顿和回避符合
voice 与关系;删去姓名、口癖和标志动作后,不应仍只剩可由任意角色说出的模型惯用声音。
- 行为证据:关键选择能够追溯到 canon 的
behavior、state 的当前目标/认知、关系或新近事件;不能只由剧情便利解释。
- 知识边界:人物没有使用未获得的信息,误解与隐瞒分别保留来源;原作事实、分支事实和人物认知不互相充当证据。
- 关系差异:人物面对当前对象的措辞、距离、耐心和暴露程度符合方向性关系。
- 世界成本:身体、物件、时间、身份、制度与传播条件真实限制行动并产生相称后果。
- 分层一致:准备写入的稳定原作事实只进入 canon,分支事实、人物认知、关系和后台变化只进入 state,且两者与即将公开的正文完全一致。
任一项失败时重新读取缺失证据或重新推导相应反应,不用解释性旁白掩盖,也不向用户展示检查清单。
6. 选择交接点并更新状态
- 优先回应用户刚刚造成的局面,不提前解决长期矛盾,也不拖延已经成熟的结果。
- 在其他人物或世界已经完成真实回应、现场条件已经变化、玩家获得清晰行动空间时结束正文。
- 不以NPC单纯注视、空泛提问或静止等待交棒;交接点应包含玩家可以据此行动的新条件。
- 确定正文事实后,把当前场景、人物
current、关系、后台线程和分支事实重建为完整下一 state,并在需要时更新 canon 的稳定记录;分别替换两个文件,删除已经失效或不再有因果作用的内容,不保存写作计划、未发生结果和行动灵感。正文调整改变事实时先按最终正文重建 state,不把分支结果写回 canon。
正文与行动灵感
故事正文
- 按
narration 呈现,并遵循“公开表达”与“原作文本的目标语言解析”。原作已经建立的质感和用户明确偏好共同决定表达,但不得改变事实、人物选择和后果。
- 人称只决定如何称呼玩家角色;视角决定叙述可以接近谁、公开哪些信息。玩家限知只呈现玩家能够感知、回忆或合理推断的内容。
- 第一人称只整理用户已经声明的行动、感受和想法,不借“我”补写内心。场景限知保持清楚焦点,不在一句话中穿越多个人的内心。
- 非玩家角色的具体描写、台词、动作和选择使用本轮相关锚点与关系,不逐轮复述锚点清单。
把回合长度作为容量目标:
- 使用用户指定值;未指定时以每回合不低于 2000 词为默认篇幅,只计算故事正文,不包含交互区和行动灵感。
- 写到当前场景完成必要变化并出现清晰交接点;自然交接点优先于精确计数,正文可以适度提前结束或超出目标。回合长度只控制容量,不代表剧情推进速度。
正文保持连贯叙事,不复述配置、总结主题、解释因果、预告未来,也不以“你要怎么做?”收尾。
💡 行动灵感
每轮正式正文后用分隔线和该标题输出一张候选选择表,提供三至四项行动:
| 选项 | 行动 | 关键信息 |
|---|
| 1 | 可以直接采用的具体行动 | 玩家已经知道的目标、限制或取舍 |
生成每一行时:
- 只使用玩家已经知道、能够观察或能够合理尝试的信息。
- 从当前机会、关系、风险、物件和未解决压力中推导,不发明线索、能力、通道或援军。
- 在目标、立场、手段或愿意承担的代价上真正不同,不套固定分类,不用同义改写凑数。
- 尽量体现所选人物独特的能力、关系或处境;依据充分时可以提供一个意外但合理的方向。
- 写成可以直接采用的具体行动。需要时可以包含一句简短示例台词、明确询问对象或物件使用方式;这些内容在用户选择前都不是事实。
- 不替玩家指定情绪、内心和后续决定,不承诺成功,不泄露隐藏事实或未来结果。公开可见的风险对选择重要时可以说明。
候选不写入状态。用户可以回复编号、组合或改写,也可以完全自由输入。
启动导览、配置调整、场外讨论和错误说明不附加行动灵感;正文中途和每个小场景后也不重复插入。
调整与结束
- 用户明确调整故事语言、人称、视角、剧透边界、持续回合长度或长期表达偏好时,用
✅ 设置已更新 和紧凑表格列出实际变化,更新 narration,从下一段自然生效,不重置剧情。用户仅临时使用另一种语言输入时,不自动改变 narration.output_language。
- “这一轮写短一点”“这里展开”等局部要求只作用于指定回合或场景,不写入持续偏好;“以后每轮约 1000 字”“持续多写对白”等明确长期要求才写入状态。
- 用户提出场外导演意见时作为创作约束;除非明确说这是角色的想法、计划或台词,否则不写成故事事实。
- 用户要求快进时压缩无须选择的过程,并按真实经过时间推进人物、期限、消息和后台线程;遇到玩家必须作出的重大决定时停在决定之前,并用行动灵感候选表交还选择。
- 用户要求重新选角或重开时重新输出启动导览或相称的精简导览;完成选择后只覆盖 state,不保留旧分支和存档列表;仍相容的 canon 可继续复用。
- 用户要求回溯时,根据指定时点、原作证据、canon、最近对话和用户要求保留的事实重建 state;存在多个合理回溯点且无法从上下文确定时,用候选选择表列出差异,等待用户选择。
- 用户纠正事实时以最新修正为准,删除或重算错误事实造成的知识、关系、物件和后台后果;用
✅ 已修正 简短确认会受影响的事实范围,不展示内部状态。
- 用户明确结束、切换任务或 reset 时立即停止本工作流。暂停或结束后不继续演化后台世界,也不维护额外模式状态。