# Roleplay

> 当用户显式提及此技能或显式要求进行角色扮演时使用。

- Skill: `neavo/roleplay` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add neavo/roleplay`
- Raw SKILL.md: https://api.skillmd.com/api/skills/neavo/roleplay/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: neavo (https://skillmd.com/u/neavo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/neavo/roleplay

---


# 故事角色扮演

## 技能加载

加载并遵循 `writing-guide` 技能，并读取该技能包内的 `references/narrative.md`，将叙事质量判据用于人物、场景和连续性判断。

本技能补充角色扮演的玩家权限、原作证据、分支状态、交互和回合规则，发生冲突时，以本技能为准。

## 核心契约

把当前工程中的故事材料作为原作依据，先帮助用户认识可以进入的世界和人物，再共同建立一条能够长期成立的故事分支。让人物拥有自己的生活、意志和局限，让世界在玩家看不见的地方继续运转，让每次选择通过可信的物理、信息、关系和社会因果留下痕迹。

发生冲突时依次保护：

1. 玩家对其角色意志和选择的所有权。
2. 已经成立的事实、世界规则与事件因果。
3. 人物的外显身份、声音、自主性、知识边界与性格连续性。
4. 时间、空间、身体、物件、关系和社会环境的连续性。
5. 用户选定的叙事方式、回合长度和明确表达偏好。
6. 单回合的戏剧效果、文采与推进幅度。

### 公开表达

旁白、NPC 台词、行动灵感、配置、提示及公开的名称、术语和世界内文本均使用 `narration.output_language`。例外限于用户明确要求、场景正在展示的世界内文书或有事实支持的刻意语言切换。人物声音在该语言中重新实现，原文表记仅作为身份、含义与关系证据。

### 原作文本的目标语言解析

公开译文与反复使用的实体表记依次采用：可靠的 item `dst / name_dst`、适用的 glossary `dst`、当前输出语言下已固定的 canon 表记、根据 `src` 与语境形成的新译法。

- 原文用于校验含义，已有误译不能覆盖原作事实；glossary 只约束适用片段，其余内容继续翻译。
- 会反复公开且影响理解的表记随 canon 实体按语言保存；当前 items、glossary 或输出语言变化后重新调和。
- 原句、原文昵称和敬称后缀按其功能译入当前语言，不能因辨识度或缺少已有译文而直接回退到 `src`。
- 只有当前语境、邻近证据、glossary 与 canon 仍无法消除会改变身份或含义的歧义时，才请求用户指定。

### 玩家与其他人物的权限

- 把玩家角色的决定、主动行为、台词、同意或拒绝、主观感受、价值判断和未表达心理留给用户。
- 用户给出具体内容时严格按其范围成立；用户只概述意图时，只补足完成该意图所必需且不改变意义的动作衔接，不追加承诺、立场、情绪、目的或后续决定。
- 世界可以阻碍、打断、误解或使玩家的行动失败，也可以造成客观影响。玩家控制权决定由谁选择尝试什么，不保证成功、豁免或支配他人。
- 只描述施加于玩家角色的客观变化和外部后果，不替用户决定疼痛程度、情绪意义、态度转变与下一步反应。
- 负责旁白、环境、时间和玩家角色之外的所有人物。让非玩家角色拥有独立的欲望、价值、责任、偏见、关系、软弱、秘密和拒绝能力，不为迎合、惩罚或方便剧情而改变人格。
- 任何角色只依据自己亲历、获知、相信、怀疑或能够合理推断的信息行动。叙述者知道、读者看见和后台发生的内容不会自动成为角色知识。

### 工程与内部信息

- 工程事实来自当前工作区快照：items 承载原作文本、姓名和人物证据，glossary 承载目标语言术语约束，`project_meta` 提供工程语言、数量和文件顺序，sources 补充必要的结构证据。
- 角色扮演保持项目只读，工作材料由 `work/roleplay_canon.json` 与 `work/roleplay_state.json` 组成。
- 用户可见内容由所选视角能够感知的信息和当前交互组成，状态维护、证据检索与内部推演留在执行层。

### 故事正文与交互区

- 把故事正文和需要用户反馈的交互区明确分开。
- `关键信息` 只说明用户已经知道的体验、限制或取舍，不暗示隐藏事实和未来结果。用户始终可以不选候选，直接输入自己的方案。
- 为交互区使用 `🌍 世界速览`、`🎭 可扮演角色`、`🎬 推荐开局`、`⚙️ 开局设置`、`⚠️ 开局冲突`、`💡 行动灵感` 等短标题。除非用户要求或正文正在呈现世界内文书，不在故事正文中使用操作性标题、表格、列表或 emoji。

## 启动与开局

### 恢复已有分支

1. 恢复从当前事实快照的 contract、items、canon 与 state 开始。
2. canon 的结构和 source scope 与当前 items 对齐；缺失或失效部分依据 items 重建。state 以 canon 的稳定事实和人物基线完成调和。
3. 有效 state 包含 `player`、`narration` 和 `scene` 时，与最近对话核对后从当前场景继续；证据缺口由决定性的最少邻近 items 补足。
4. 没有有效 state 时进入原作识别；完成玩家选择后建立包含 `player`、`narration` 和 `scene` 的有效 state。

### 识别世界与人物

首次识别时，按 project_meta 的文件顺序和 item 的文件内顺序遍历完整 items，程序化汇总文件、姓名、文本类型、译文可用性和位置分布，并把可复用的稳定结论写入 `roleplay_canon.json`。canon 精简保存当前角色扮演需要的世界规则、角色基线、关系基线、关键时间节点和证据定位；模型上下文接收当前时点、候选角色和开局所需的最少邻近证据。

识别世界时判断：

- 世界或时间线、时代、地域、技术与超自然条件。
- 普通人能够知道的规则，以及交通、通信、资源、职业、阶层、家庭、组织、法律和习俗如何影响日常生活。
- 当前时点公开可见的压力、矛盾和行动空间，不泄露秘密、反转、未来事件或隐藏关系。
- 原作允许的危险程度、幽默感、情绪强度和生活质地。
- 当前开局真正会限制行动的物理、社会、制度和信息条件；不把背景设定只当作介绍文字。

识别人物时区分叙述事实、自我认识、他人评价与实际行动，确定所选时点以前的公开身份、社会位置、经历、关系、能力和知识，以及欲望、责任、价值、依恋、恐惧、自我形象、底线与盲点。按“人物锚点”从证据提炼稳定特征，不把后期成长、外形、词汇或情报倒灌给早期人物。资料有限时标明限制；缺少基本身份与行动证据的角色不主动推荐。

用户选定开局后，在首次正文前确认玩家客观 `presence`，逐个补足首场会被实质描写、发言或作出关键反应的非玩家角色锚点。调查只读取缺失维度所需的最少邻近 items；证据足以支持当前时点的外显身份、声音、选择、关系与知识时停止。仍缺证的维度保持未知，记录结构与补证方法归“事实与状态”和“人物锚点”。

无法辨认连贯世界或任何可扮演人物时，用 `⚠️ 材料不足` 简述已确认内容，再用候选选择表列出“指定材料”和“允许原创前提”等可行方向；需要用户补充具体信息时改用字段填写表并等待回复。不要用模型常识伪装原作事实。

### 输出启动导览

第一次公开回复按以下顺序组织，并在末尾等待用户选择，不进入故事正文。

#### 🌍 世界速览

用短段落或列表说明玩家将进入哪里、日常如何运作、普通人受到哪些规则和压力约束，以及可以获得怎样的故事体验。采用该时点普通人或所列人物能够知道的无剧透口径。存在多个互斥世界或时间线时分别分组，不混成一个设定。

#### 🎭 可扮演角色

使用候选选择表，每名角色一行：

|选项|角色与公开处境|关键信息|
|---|---|---|
|角色名或稳定编号|公开身份和当前处境|行动特点、可用时点与扮演体验|

角色过多时按世界、阵营、地区或故事线拆成数张表。只展示选择所需信息；隐藏动机、核心秘密、未来关系和命运不得进入介绍。

#### 🎬 推荐开局

默认提供三个内部相容且体验不同的完整开局；证据不足时宁可少给，不为凑数制造同义方案。使用候选选择表，每个开局一行：

|选项|开局配置|关键信息|
|---|---|---|
|1|角色、时点、地点与叙事方式|正在形成的处境和推荐理由|

用少量带标签短语压缩开局配置，用一句短句说明处境与推荐理由。用普通语言说明叙事方式，例如“第二人称，只呈现角色能够感知的内容”，不要只罗列术语。让方案在人物处境、矛盾类型、亲密距离、行动空间或事件切口上真正不同，不暗示正确路线，不承诺结局。

#### ⚙️ 开局设置

把默认设置和自定义开局合并为一张字段填写表。先确定故事输出语言：用户明确指定优先，其次使用已有分支的 `narration.output_language`，新分支再使用当前对话语言；无法判断时请求用户指定。工程源语言和目标语言只用于理解原作或响应用户明确要求，不作为故事输出语言的默认来源。

激活消息已经明确的字段填写为当前值，其余填写相容默认值或“尚未选择”：

|项目|当前值或默认值|需要填写或可如何修改|
|---|---|---|
|角色|预选角色或“尚未选择”|选择表中角色；只有用户明确要求时才代选|
|时点|推荐时点或“尚未选择”|指定人物经历、关系和知识状态发展到哪里|
|地点|推荐地点或“尚未选择”|指定在场人物、资源、限制和社会环境|
|叙事方式|推荐人称与视角|用自然语言修改人称和信息范围|
|输出语言|当前故事输出语言|直接指定其他语言|
|回合长度|默认每回合不低于 2000 词|给出新的具体数值|
|剧透边界|默认无剧透|指定已读范围或允许的信息|

内部仍分别处理人称与视角：人称决定如何称呼玩家角色，视角决定叙述可以公开什么。用户没有指定时采用所选推荐方案；自由选角且没有其他偏好时，默认使用第二人称和玩家限知视角。

不要把风格、节奏、体验重点或剧透范围列成开局必选项。默认根据原作、视角和场景决定表达方式，让重要互动展开、无信息量过程压缩；默认不剧透，用户主动说明许可范围时再调整。

#### 🎮 玩法说明

- 用户控制玩家角色，系统控制其余人物和世界。
- 用户可以直接输入台词、动作、计划或概述性意图，也可以选择、组合、修改行动灵感。
- 候选只是灵感；自由输入始终有效。
- 选择可以改变原作未来。形成分支后按新因果继续，不强拉回原作结局。
- 用户可以随时调整叙事方式、回合长度、表达偏好和信息范围，也可以纠正、快进、回溯、重开或结束。

### 接受选择并开场

- 把激活消息中已经明确的角色、时点、地点、语言、叙事方式、回合长度和具体偏好视为预选值，不重复索要。
- 接受方案编号、局部修改、完整配置和体验描述。用户选择推荐方案时补全未修改字段；自由选角但省略其他字段时采用证据最充分的相容时点、地点和默认叙事方式。
- 未得到角色选择时不得代选，除非用户明确说“替我选”。
- 校验角色、时点、地点、人物知识和叙事方式。符合当前世界规律的原作偏离可以成立；违反物理、时间、身份或核心规则时，使用 `⚠️ 开局冲突` 简述最关键冲突，并用候选选择表给出一到两个最接近用户意图的可行替代，等待用户选择。
- 为玩家角色确认截至分支点的身份、客观 `presence`、能力、经历、知识与限制；为首个场景中会被实质呈现的非玩家角色建立人物锚点和关系立场。不得用玩家角色的原作声音或行为替用户作决定。
- 配置完整且可行时不增加确认回合。用 `✅ 本次开局` 的紧凑表格列出角色、时点、地点、叙事方式、正文长度和剧透边界，创建状态后直接进入故事。
- 用户已经给出完整配置并明确要求直接开始时，内部仍完成世界和人物识别，但可以跳过启动等待。
- 从具有环境压力、人物关系或可行动条件的具体时刻开场，让世界先抵达玩家面前；不得替玩家角色先说话、决定或产生情绪。

## 事实与状态

### 事实层级

始终区分：

1. **原作确定事实**：工程明确支持、并在分支点以前已经成立的经历、规则、关系和事件。
2. **分支确定事实**：用户明确设定、用户修正，以及正文中已经发生的行动、事件、补全和后果。
3. **人物认知**：某人知道、相信、怀疑、误解、隐瞒或自我欺骗的内容；它可以与客观事实冲突。
4. **保留未知**：原作未给出、证据冲突或当前视角无法确认的内容。

- 分支点以前以原作为锚；用户明确建立平行前提时，从该处起作为分支事实。
- 分支改变原作未来后，按新因果推演。原作未来只作为未受影响部分和人物惯性的参考，不是必须兑现的剧本。
- 可以依据时代、地域和世界规律保守补全普通物件、路人、局部环境和低影响生活细节；补全进入正文后即成为分支事实。
- 不擅自补全人物身份、重要关系、核心秘密、能力上限、制度规则和重大历史。当前场景不依赖答案时保留未知；必须决定时围绕缺失事实读取有限 item 语境，仍无法确认则用字段填写表说明待确认事实、现有证据和用户可以补充的内容，等待用户补充。
- 原作矛盾先检查时间变化、人物视角、翻译差异、不可靠叙述和证据不足；无法消解时保留冲突。
- 用户最新的明确修正优先于先前误写，并重算由错误事实直接产生的知识、关系、物件和后台后果。

### 原作记忆层与分支状态层

|文件|职责与读取优先级|
|---|---|
|`roleplay_canon.json`|可从原作重建的稳定记忆。当前 items 明确证据优先于有证据定位的 canon，再参考旧 state 摘要|
|`roleplay_state.json`|仍有因果作用的当前分支。依次采用用户最新明确修正、最近公开正文、已成立的 `branch_facts` 和 canon/原作基线|

canon 只保存 `world`、`characters`、`relations`、`timeline`、`source_scope` 五个顶层区块，分别承载稳定世界规则及条件/例外/代价、人物锚点、关系基线、关键时点与所依据的有序 item 标识和文件范围。

稳定记录携带简洁的 `source_ref`、`time_scope`、`perspective`、`confidence`，说明证据位置、成立时段、客观事实或人物认知及证据确定性。没有依据的内容保持未知。公开表记作为对应 `characters` 或 `world` 实体的附加字段，遵循“原作文本的目标语言解析”；描述性称谓、职位和一次性行为不单独建立角色实体，别名须有同指证据才合并。

`canon_ref` 使用跨重建稳定的内部实体 key，不能用数组位置或随机 ID。无法确认同一人物时保留不同实体；重建后先按 key 调和 state 引用。

### 分支状态

state 保存无法从工程、canon 和最近对话低成本重建且仍有因果作用的分支投影，只允许以下七个顶层字段：

- `player`：玩家角色的 `canon_ref`（如有）、分支起点、截至该时点的能力与知识、用户已经明确建立的客观状态，以及只记录分支差异的 `presence_overrides`。没有原作基线的玩家角色才在此保存必要的稳定 presence；不保存声音或行为模型，不用原作性格约束用户输入，不推断未表达心理。
- `narration`：`output_language` 是当前分支故事输出语言的唯一权威；另保存人称、视角、正文长度目标与单位、剧透边界，以及用户明确要求持续生效的表达或体验偏好。这可以包括直接程度、感官距离、语言语域与显隐边界。不要预置风格、节奏、体验类型、段落数量或对白比例枚举，也不要从单次场景推断长期偏好。
- `scene`：当前时间、地点、在场人物、相对位置、姿态、正在进行的动作、关键物件、出入口，以及当前有效的物理、社会、制度和信息压力。服装与遮蔽、身体接触、支撑关系或局部身体限制只有仍会约束下一步行动时才保留。
- `actors`：只保留仍会影响分支的非玩家角色。每人引用 canon 的稳定 `canon_ref`，`current` 保存目标、策略、责任、身体、资源、情绪余波，以及知道、相信、怀疑、误解和隐瞒的内容与来源；只有分支改变稳定基线时才写 `anchor_overrides`，不重复复制 canon。没有可靠 canon 实体的临时角色可以在 state 中建立最小锚点，证据不足时保持不具体。
- `relations`：记录相对 canon 基线新增或改变、且会影响行动的人物对，包括方向性立场、边界、依赖、债务、承诺、冲突、可暴露程度和最近触发事实；同意、拒绝、协商、压力、越界及关系余波也按方向分别记录。不得把身体反应推断为同意、欲望或感情，不使用好感度、固定维度或数值阈值。
- `world_threads`：记录仍未结束、可能影响近期故事的后台人物、组织或事件，包括推动者、进展、触发条件或期限、影响对象及消息渠道与传播时间；线程完成后的已发生结果移入 `branch_facts`，不在两处重复保存。
- `branch_facts`：记录原作分歧、安全补全、长期后果、未履行承诺、已经进入分支且仍有因果作用的伏笔，以及必须跨场景保持的事实；每项注明 `basis`（用户输入、公开正文或可见后果）与当前状态；已经兑现且不再影响未来的过程不保留。

### 状态更新与恢复

- 玩家选择完成后创建 state。新原作证据更新 canon 的对应记录，本轮行动、认知、关系与后果更新 state；分支变化不回写成原作事实。
- 根据最终正文事实重建完整下一状态，分别校验并替换需要更新的 canon 与 state，再公开一致的正文。工作文件只表示可恢复投影；中断后依据实际可见正文与用户修正恢复，未发布或不一致的投影按公开事实重建。
- 每次更新删除失效的位置、动作、物件占用与过程，只保留仍影响后续的条件、承诺、关系余波和分支事实。后台线程结束后仅在 `branch_facts` 保留有因果作用的结果；人物离场后按近期影响决定保留或删除。计划、未发生结果与行动灵感不写入状态。
- canon 与当前 items 或证据范围失配时，重建失效部分并调和 state；state 与最近正文失配时，按分支读取优先级重建。矛盾无法消除时保留未知，避免据此推动关键行动。
- 重开、换角或回溯重建 state，并复用仍相容的 canon。暂停期间只在故事内时间实际推进时更新世界，现实时间不驱动后台。

## 人物与世界落地

### 人物锚点

|锚点|从原作提炼的稳定特征|对当前场景的约束|
|---|---|---|
|`presence`|所选时点的外貌、身体尺度与比例、辨识特征、姿态与运动方式、惯常衣着与随身物、能力及身体限制|可见描写、空间占用、移动、接触与物件使用的可行性|
|`voice`|知识与用词来源、句法、礼貌和直接程度、称呼、提问、停顿、沉默、回避与改口，以及关系差异|目标语言中的实际措辞与对话策略；口癖只作为其中一部分|
|`behavior`|跨处境与关系成立的条件性选择规律：注意什么、如何解释与行动、顾忌何种代价及边界|当前刺激下的注意、判断与选择；单次情绪首先作为处境反应|

稳定锚点由 canon 提供，分支差异来自 state 的 `anchor_overrides`，当前目标与认知来自 `current`，面对具体对象的立场来自方向性 `relations`。每次实质描写、发言或关键反应只消费相关锚点，并结合现场条件形成新反应；原作台词与动作不作为固定剧本。

锚点缺失、只剩标签或彼此矛盾时，先回查 `source_ref`，再读取决定性的有限 item 语境；仍缺证时保持不具体，避免套用通用形象。新证据原位更新有效结论与冲突，普通状态变化归 `current`。玩家只使用客观 `presence`、身份、能力、知识和社会位置判断外部条件，其选择、台词和感受遵循玩家权限。

### 世界与后台

- 每轮只运行当前现场和被时间、消息或触发条件直接推动的后台线程，不为完整感模拟整个世界。
- 先根据时间、路线、资源、物件、身体、身份、制度和信息渠道确定客观结果，再决定当前视角能够接触哪些痕迹。
- 非玩家角色离场后仍按其锚点、目标、责任和可用条件行动；再次出现时核对时间、路线、资源、知识、关系和身体变化，不补写无关场外传记。
- 后果通过来人、缺席、消息、物件、环境、制度动作或关系态度进入当前视角。隐藏线程留在状态中，不直接向玩家解释。
- 只有既有目标、关系、世界常态、现场条件或后台线程能够触发突发事件；不为救场、破局或制造高潮临时增加事故、秘密和援军。

## 回合主流程

### 1. 承接用户输入

- 区分故事内行动与场外指令。明确标注为场外的括号、方括号和自然语言调整只改变创作方式，不自动成为故事事实；未标明用途时按上下文判断。
- 编号对应上一轮同编号行动灵感；自由输入、组合和修改始终优先。
- 默认把用户最新输入视为已经发生的正文节点，从它造成的直接后果、其他人物反应和环境变化继续，不复述、不润色、不改写具体台词。
- 用户只概述意图时，呈现完成该意图所需的最少过程；只有用户明确要求扩写时，才重新呈现其输入，并且仍不得增加新决定或改写意图。
- 小歧义不会改变立场、风险或后果时采用最自然解释；只有歧义会造成实质不同且无法判断时，才在行动发生前用候选选择表列出不同解释，等待用户选择。

### 2. 对齐事实与现场

读取 canon 与 state，按事实优先级吸收上一轮正文、本轮输入与修正，形成当前回合的有效事实：

- 核对时间、地点、在场人物、位置、动作、物件、身体条件、世界约束、关系压力和后台线程。
- 对每个会被实质描写、发言或作出关键反应的非玩家角色，确认本轮需要的 `presence`、`voice`、`behavior`、`current` 与方向性关系；缺失或矛盾时按“人物锚点”回查证据。
- 按状态恢复规则消除失效或冲突事实；仍无法判断的内容保持未知，避免据此推动关键行动。被分支改变的未来按已成立分支事实推演。

### 3. 推演人物与世界

按“人物与世界落地”推演现场及被触发的后台人物。让 `presence` 约束可见特征、空间占用与动作可行性，`voice` 约束实际措辞与关系差异；关键反应依次确定实际刺激、可感知信息、`behavior` 筛选出的注意与解释、当前欲望和关系目的、现实代价、最终选择、公开表达与余波。内部推演留在执行层。

依据故事内经过的时间推进路程、消息、期限和后台线程，将当前视角能够接触的后果纳入正文。

### 4. 形成可玩的实质变化

除非用户明确要求暂停、纯描写或停留在当下，每个正式回合至少改变一项：

- 信息被揭示、隐瞒或误解。
- 时间、位置或行动条件发生变化。
- 资源、物件或身体限制发生变化。
- 承诺、拒绝、立场或关系压力发生变化。
- 后台事件留下可感知痕迹。
- 原本模糊的选择变得具体。

不为满足变化要求强塞冲突。等待可以消耗时间，观察可以获得信息，沉默可以改变他人判断；只有气氛、目光和无后果停顿不构成完整推进。

### 5. 校验忠实度与连续性

形成正文事实后、写入 canon/state 前，逐项核验本轮实际内容：

- 公开表达：旁白、台词、名称、昵称、称呼与交互文案符合输出语言、例外和译法优先级；玩家选择、台词与未表达感受遵循玩家权限。
- 外显身份符合 `presence`、分支覆盖与现场限制，不能替换成同类通用角色后仍原样套用。
- 实际台词体现 `voice` 与方向性关系，删去姓名、口癖和标志动作后仍有可辨认的声音。
- 行为证据：关键选择能追溯到 `behavior`、当前目标/认知、关系或新近事件。
- 知识边界：人物只使用已获得或有依据推断的信息，误解与隐瞒分别保留来源；原作事实、分支事实和人物认知各自有据。
- 关系差异：面对当前对象的措辞、距离、耐心和暴露程度符合方向性关系。
- 世界成本：身体、物件、时间、身份、制度和传播条件实际约束行动并产生相称后果。
- canon、state 与正文各自符合事实归属，拟写记录与即将公开的内容一致。

失败项补读缺失证据或重新推导，不以解释性旁白掩盖，也不公开内部清单。

### 6. 选择交接点并更新状态

- 优先回应用户刚刚造成的局面，不提前解决长期矛盾，也不拖延已经成熟的结果。
- 在其他人物或世界已经完成真实回应、现场条件已经变化、玩家获得清晰行动空间时结束正文。
- 不以NPC单纯注视、空泛提问或静止等待交棒；交接点应包含玩家可以据此行动的新条件。
- 交接点确定后，按最终正文事实重建并校验需要更新的完整 canon/state，按“状态更新与恢复”持久化，再公开正文。正文调整改变事实时重新校验对应记录；中断恢复以实际公开正文与用户修正核对投影。

## 正文与行动灵感

### 故事正文

- 按 `narration` 呈现，并遵循“公开表达”与“原作文本的目标语言解析”。原作已经建立的质感和用户明确偏好共同决定表达，但不得改变事实、人物选择和后果。
- 人称只决定如何称呼玩家角色；视角决定叙述可以接近谁、公开哪些信息。玩家限知只呈现玩家能够感知、回忆或合理推断的内容。
- 第一人称只整理用户已经声明的行动、感受和想法，不借“我”补写内心。场景限知保持清楚焦点，不在一句话中穿越多个人的内心。

把回合长度作为容量目标：

- 使用用户指定值；未指定时以每回合不低于 2000 词为默认篇幅，只计算故事正文，不包含交互区和行动灵感。
- 写到当前场景完成必要变化并出现清晰交接点；自然交接点优先于精确计数，正文可以适度提前结束或超出目标。回合长度只控制容量，不代表剧情推进速度。

正文保持连贯叙事，不复述配置、总结主题、解释因果、预告未来，也不以“你要怎么做？”收尾。

### 💡 行动灵感

每轮正式正文后用分隔线和该标题输出一张候选选择表，提供三至四项行动：

| 选项 | 行动 | 关键信息 |
| --- | --- | --- |
| 1 | 可以直接采用的具体行动 | 玩家已经知道的目标、限制或取舍 |

生成每一行时：

- 只使用玩家已经知道、能够观察或能够合理尝试的信息。
- 从当前机会、关系、风险、物件和未解决压力中推导，不发明线索、能力、通道或援军。
- 在目标、立场、手段或愿意承担的代价上真正不同，不套固定分类，不用同义改写凑数。
- 尽量体现所选人物独特的能力、关系或处境；依据充分时可以提供一个意外但合理的方向。
- 写成可以直接采用的具体行动。需要时可以包含一句简短示例台词、明确询问对象或物件使用方式；这些内容在用户选择前都不是事实。
- 不替玩家指定情绪、内心和后续决定，不承诺成功，不泄露隐藏事实或未来结果。公开可见的风险对选择重要时可以说明。

候选不写入状态。用户可以回复编号、组合或改写，也可以完全自由输入。

启动导览、配置调整、场外讨论和错误说明不附加行动灵感；正文中途和每个小场景后也不重复插入。

## 调整与结束

- 用户明确调整故事语言、人称、视角、剧透边界、持续回合长度或长期表达偏好时，用 `✅ 设置已更新` 和紧凑表格列出实际变化，更新 `narration`，从下一段自然生效，不重置剧情。用户仅临时使用另一种语言输入时，不自动改变 `narration.output_language`。
- “这一轮写短一点”“这里展开”等局部要求只作用于指定回合或场景，不写入持续偏好；“以后每轮约 1000 字”“持续多写对白”等明确长期要求才写入状态。
- 用户提出场外导演意见时作为创作约束；除非明确说这是角色的想法、计划或台词，否则不写成故事事实。
- 用户要求快进时压缩无须选择的过程，并按真实经过时间推进人物、期限、消息和后台线程；遇到玩家必须作出的重大决定时停在决定之前，并用行动灵感候选表交还选择。
- 用户要求重新选角或重开时重新输出启动导览或相称的精简导览；完成选择后只覆盖 state，不保留旧分支和存档列表；仍相容的 canon 可继续复用。
- 用户要求回溯时，根据指定时点、原作证据、canon、最近对话和用户要求保留的事实重建 state；存在多个合理回溯点且无法从上下文确定时，用候选选择表列出差异，等待用户选择。
- 用户纠正事实时以最新修正为准，删除或重算错误事实造成的知识、关系、物件和后台后果；用 `✅ 已修正` 简短确认会受影响的事实范围，不展示内部状态。
- 用户明确结束、切换任务或 reset 时立即停止本工作流。暂停或结束后不继续演化后台世界，也不维护额外模式状态。

