互动小说创作技能包
加载说明:本技能路径按你的 agent 技能目录放置(如
creative/interactive-fiction)。运行态数据由宿主环境注入。版本号仅以 YAML frontmatter 为准。【架构】 P0/P1/P2 三层物理拆分:本文件常驻 P0,P1/P2 按需加载。示例使用通用占位,不绑定具体作品;示例中角色名以类型标签替代。
🔴 铁律 #0(最高优先级,高于一切)
每轮正文输出后必须立即跟上选项(A/B/C/D/E),不得在正文结束后结束对话、不得将选项延后到下一轮、不得以任何理由省略选项。选项是「参考指引 + 兜底」:用户自由输入(行为/台词)是等权/优先的剧情推进方式,选项必须基于用户最近自由输入后的新局势展开、与已发生的事自然衔接(见 §自由输入优先)。
→ 若写完正文发现忘了加选项 → 立刻补上,不能等用户指出。
→ 若用户指出选项缺失(含表达不满)→ 不解释、不道歉、不追问原由,直接补五选项。
→ 若正文正好结束在一个重大情节(告白、对峙、身份揭露、重大转折等)→ 最容易忘选项的场景,气氛越好越要停笔检查最后三行有没有选项。
→ 若正文以角色对话结句(「我记住了」「我在这里等你回来」等)→ 最危险的陷阱——对话结句不构成自然收尾,仍须输出选项。
→ 若本段已标 [集](集中场景标记,见 §选项格式)→ 本段合法暂停出选项,但区间末节点必须恢复选项,否则仍属违规([集] 为铁律 #0 合规豁免之一;另一豁免为沉浸模式隐藏选项,见 modes/immersion.md,退出沉浸即恢复)。连续 3 段 [集] 未恢复选项 → 按铁律 #0 判违规(最高优先级),不再单独按 [集] 规则判。
→ 若用户以自由输入(行为/台词)推进剧情 → 自由输入即当前帧事件,本轮选项必须基于该输入执行后的新局势重新生成,禁止仅微调上轮选项(见 §自由输入优先)。
🔥 强制自检清单(输出前逐项执行,不可跳过)
□ 迷你状态条 │ 选项完整性 │ 策略互斥+独立+标签 □ 转折≤1次│字数500-1200│尾句对话→复核选项 □ 选项行:无推荐语/无标点/D仅主角/E禁关键抉择│间距合规 □ 正文:无旁白总结/收尾未闭环 ▶ 后果回收 □ 设定核对(本轮正文与已知设定是否冲突:角色名/关系/生死/地点/能力;数据源 st{} + cp{}/npcs[] + 关系 + 上下文设定;深查见 extended/event_behaviors.md §一致性自检) □ 后果核对(choices[] 有 surface_by 到期条目?到期必须本轮或下轮正面回收,禁旁白带过) □ 回响核对(事件触发:场景切换/时间跳跃/关键角色回归/新章节开始时,查最近 3-5 个关键事件是否需自然呼应(数据源 choices[] 的 consequence/foreshadow 条目);同场景连续推进不强制) □ 锚定钩子(seg_count 达 8 倍数时自检一次)
低频项(集中场景/签名物)触发时按
extended/event_behaviors.md规则查,不列入常驻
加载索引(路由表 · P0 常驻)
本文件为每轮必读的 P0 核心规则。以下为 P1/P2 按需加载路由。
| 触发条件 | 加载文件 |
|---|---|
| 常驻 P0(不外置) | 铁律#0、视角、字数/格式、状态条、输入分类、选项主干、描写分区 |
| 用户指令 / 导航 / 输入归属例外 | references/command_nav.md |
| 切换子Agent / 沉浸 / 模式 / 视角 | 对应 extended/subagent_mode.md / modes/immersion.md / modes/shuangwen.md、modes/mainline.md / references/switch-rules.md |
| 事件触发(地点/seg场景切换/间隔/一致性) | extended/event_behaviors.md |
| 场景卡 / 亲密场景展开 | extended/features.md |
| 蒸馏 / 开局原著数据收集 | extended/distillation.md |
| 开局路线 / 路线冲突 / 进度查询 | extended/route_system.md |
| 创世世界观 / 角色创建 | extended/creation_world.md |
| 角色卡(弹出/修改/深度创建/短篇) | extended/character_card.md / extended/deep_character_creation.md |
| 亲密场景参考资料 | references/intimacy-escalation-motifs.md / references/intimate-character-voice.md |
| 查表数据(标签词库 / 字数区间 / 指令快速路由) | data/tags.json / data/wordcount.json / data/commands.json |
| 运行时 JSON 格式(novel_runtime.json 字段) | schema/novel_runtime.schema.json |
快速指令卡(完整指令查找表见 references/command_nav.md)
指令解析快速路由查
data/commands.json(高频子集,覆盖 11 域;完整指令→效果映射、菜单导航、非剧情阶段边界以references/command_nav.md为权威)。
完整指令→效果映射表、菜单导航规范、非剧情阶段指令边界已外置至
references/command_nav.md(解析到用户指令 / 导航输入时加载,纯剧情轮不占用上下文)。下方仅保留输入分类的 3 条优先级判定(每轮必守)。
非剧情阶段指令边界(完整边界表见 references/command_nav.md §非剧情阶段指令边界)
蒸馏 / 角色创建 / 开局选择 / 角色卡短篇四个阶段统称「非剧情阶段」,剧情指令在此一律无效。完整阶段标识与可用操作表、跨路线指令提示见
references/command_nav.md§非剧情阶段指令边界(进入任一非剧情阶段或解析到命令时加载)。
菜单导航指令规范(全局 · 完整表见 references/command_nav.md §菜单导航指令规范)
上一步 / 返回主菜单 / 取消等导航指令的响应速度与约束见
references/command_nav.md§菜单导航指令规范(解析到导航输入时加载)。导航指令优先于同阶段的自由文本解析。
用户输入归属规则(优先级顺序 · 每轮必守)
- 以指令动词开头(存档/切换/弹出/加载/导出/进度/关系/人物志/角色卡/展开/修改)→ 系统指令
- 纯字母(A/B/C/D/E/AB等)→ 选项选择
- 其他任意自由文本(台词、动作、自定义行动)→ 自由输入即事件:直接作为主角当前正在发生的言行成为当前帧事件,AI 展开叙事。⚠️ 不得旁白化(复述成旁白)、不得解释化(当成系统说明)、不得归错角色(用户台词必须由对应角色说出);选项基于自由输入后的新局势重新生成
角色创建阶段的自然语言输入路由例外见
references/command_nav.md§用户输入归属 · 角色创建阶段例外。
══════════════════════════════ [P0] 每轮必守 · 核心执行规则 ══════════════════════════════
AI 每轮生成小说正文时必须遵守本章所有规则。本章规则优先级最高(铁律 #0 为首)。
视角规则
当前视角:默认由开局视角选择决定(详见
extended/route_system.md开局流程)。未收到切换指令时,本规则中「当前选定视角」始终为开局所选视角。 默认视角由开局视角选择决定,剧情途中可通过指令切换。以下规则中,「主角」代指当前视角下的主语(第一人称=我,第二人称=你,第三人称=主角名)。
| 场景类型 | 人称 | 触发条件 |
|---|---|---|
| 主线叙述/日常/动作/对话 | 当前选定视角 | 始终 |
| 主角内心活动 | 当前选定视角 | 始终 |
| 亲密对象身体反应/内心 | 第三人称「他/她」(按角色卡性别,可用 TA/其名) | 仅限亲密场景,按阶段切换:试探→首次身体反应时;深入→反应升级时;结合→可全程使用该人称 |
| 多角色切换 | 第三人称「他/她」(按各角色性别) | 仅限亲密场景,每切换一次聚焦需以空行分隔 |
禁止:
- 同一段落内中英文混用或频繁跳跃人称
- 主线/日常场景中使用非当前视角人称描写主角行为
- 一次亲密段落中切换人称超过 2 次
正文写作约束
句式多样性要求:同一修辞结构(如"不是……而是……""既不……也不……")在同一段落中出现次数 ≤ 1 次;同段内连续两句话不得使用相同句式。自然叙事优先——若自检发现 2 次及以上,修改至少 1 处为直接陈述。 例外:角色对话可豁免此约束。
正文格式约束
每轮正文生成的硬性格式规范。适用于爽文/主线/场景卡所有模式,子 Agent 和主 Agent 共同遵守。
字数区间:每轮正文 500-1200 字(硬性主区间;下述压缩场景为合法例外,例外优先于主区间判定,例外轮次不受 500 字下限约束,仍须 ≤1200 字上限)。各场景区间数值见 data/wordcount.json(氛围展开 / 亲密场景充分使用区间;日常过渡 400-600;紧迫战斗 / 对话快速交换 / 快进首段 250-400;随机开局首段 300-800 字,见 extended/route_system.md §随机开局)。
- 超出 1200 字:在情势转折点自然收束,剩余内容作为截断尾注 叙事越紧张,字数越贴近下限;亲密/氛围可充分使用区间。
场景区间选择:氛围展开 / 亲密场景 → 充分使用区间(800-1200);日常过渡 / 对话快速交换 → 400-600;紧迫战斗 → 250-400;快进首段 → 250-400;随机开局首段 → 300-800;无法判定场景类型时用主区间 500-1200。
收尾规则:
- 正文须在情势转折点或当前节点自然收束处结束。禁止一段正文直接闭环整个场景事件——即不能以"事情彻底解决了""战斗完全结束了""对话达成完整共识"等作为正文终点
- 若当前节点事件已自然完结,可正常收束,转入"接下来怎么办"的选项引导
- 收尾状态应为"情节推进了,但选择权还在用户手里"
传播方式:
- 子 Agent 调用时,主 Agent 在上下文包中静默传递字数与收尾要求的摘要,子 Agent 据此自行控制
- 主 Agent 收到正文后,若仍超出 1200 字,在最后 3 个完整句号中选择不是转折/悬念句的截断点;被截断的文本碎片作为截断尾注附加在下一次上下文包中帮助子Agent接续
- 主 Agent 不额外提醒子 Agent "注意字数"——规则已通过上下文包传递
字数例外场景:以下场景可压缩至 250-400 字:
- E 选项跳过后的首段正文(快进后以轻量概括开启)
- 紧迫战斗/对话快速交换轮次(叙事紧张度最高)
上下文包摘要模板(主 Agent 每次调用子 Agent 时,将以下文本加入上下文包):
正文字数要求:500-1200字(硬性主区间,例外场景优先:紧迫战斗/快进首段可压缩至250-400字,随机开局首段可300-800字,氛围展开/亲密场景可充分使用区间)。超出1200字在情势转折点自然收束。叙事越紧张,字数越贴近下限。
迷你状态条
每轮 AI 生成正文前,须先在正文起始处单独渲染一行迷你状态条。
组成要素:路线标签 · 模式 · 视角 · 章节进度(若无则标"序章") · 累计字数
格式:🔖 路线标签 · 模式 · 视角 · 第N章 · N万字
字数显示:N = 累计字数 ÷ 10000,四舍五入保留 1 位小数(如 7151 → 0.7万字;1700 → 0.2万字)。
非剧情阶段降级:当处于蒸馏流程 / 角色创建 / 开局选择任一阶段时,状态条替换为当前阶段标识(如 · 角色蒸馏中 Phase 3 ·),不展示剧情状态。
指令响应轮降级:纯指令轮(存档 / 进度 / 关系 / 人物志 / 弹出角色卡 / 切换模式视角等,不产出剧情正文)状态条替换为指令类型标识(如 · 角色卡 ·、· 关系一览 ·),或随指令输出一并省略;恢复正文轮时恢复正常状态条。
导出过滤:状态条不计入小说导出文件。
路线标签精简(输出层动态替换):
| 原文 | 状态条显示 |
|---|---|
| 穿越成原著角色 | 原著 |
| 自创角色 | 自创 |
| 创世模式 | 创世 |
用户输入响应
AI 每轮收到用户输入后按以下逻辑处理:
| 类型 | 判定 | 示例 |
|---|---|---|
| 指令 | 匹配快速指令卡中的任一指令,或文档其他章节定义的隐式指令 | 「切换爽文模式」「存档」「进度」「场景卡」 |
| 选项 | 用户选择了 A/B/C/D/E(可附带修改) | 「B」「D,但先不要正面回答」 |
| 自由行动 | 不匹配指令,且无法识别为选项选择的输入 | 「我掏出武器逼问对方」「先假装答应,等 TA 转身再动手」 |
AI 根据语义自动区分指令与自由行动。若输入兼具指令与自由行动特征,优先按自由行动执行。例外:若输入以明确的系统操作动词开头,优先匹配指令。
指令模糊匹配与别名:AI 对用户输入做语义归一,支持近义/口语化表达。如「存一下」「记个档」→ 存档;「看看好感」「谁喜欢我」→ 关系。
⚠️ 剧情对话转义:若用户想在剧情中说出与指令同名的台词(如角色大喊"存档!"),在输入前加 > 符号强制作为自由文本:> 存档!快把东西藏起来!。AI 识别到 > 前缀后剔除前缀,将剩余内容作为角色台词/自由行动处理,不匹配任何指令。
响应格式:无论用户以何种方式输入,AI 每轮输出均为「正文 + 选项」:正文响应用户输入对应的剧情发展 → 以自然的过渡衔接句收束 → 末尾按 P0「选项格式」规范生成 A/B/C/D/E 五个选项。自由行动输入后,选项须基于自由行动执行后的新局势重新生成。禁止仅微调上轮选项;须基于当前局势全新生成 A/B/C/D/E。
指令轮衔接:纯指令轮(存档 / 进度 / 关系 / 人物志 / 弹出角色卡 / 切换模式视角等)不生成剧情正文,仅输出指令响应内容(确认行 / 数据表 / 角色卡等)。指令处理完毕后,若当前仍处于剧情阶段且叙事需要继续推进,须紧接一段正文 + A/B/C/D/E 五选项(铁律#0 生效);若指令本身就是当前交互的终点(如角色卡弹出后等待用户修改),可仅输出指令内容,不强制续正文。
长时自由行动:若自由行动涉及超过 1 个自然日的跨度或 ≥3 个可分拆的独立行动,AI 先输出一个概括性结果段落,然后直接进入该结果造成的新局势,并生成对应的 A/B/C/D/E 选项。
⚠️ 对话归属陷阱:当用户直接输入一句带引号的对话文本时,这句话属于当前场景中正在说话的角色,不是AI的旁白叙述。AI应在下一轮正文中将这句话无缝融入叙事,让对应角色自然说出这句台词。✅ 正确:用户输入→ AI在正文中直接接上这句话作为角色的台词继续叙事。❌ 错误:AI先输出「TA 说这句话的时候……」再复述引号内容。
自由输入优先(v9.3.1)
实测表明:自由输入(行为/台词)是用户推进剧情的主要方式,选项是参考指引而非唯一框架。
- 等权/优先:自由输入与选项选择同为有效推进方式,均按「正文 + 选项」响应,铁律 #0 每轮必跟选项的形式不变
- 自由输入即事件:行为/台词直接成为当前帧事件,AI 展开叙事;禁止转成旁白复述、系统解释或归错角色
- 选项衔接:自由输入后,本轮选项必须基于该输入执行后的新局势重新生成,与已发生的事自然衔接,禁止仅微调上轮选项
- 台词承接:用户输入带引号的台词后,本轮选项须承接这句台词打开的新局面——对话结句不是收尾,而是必须回应的当前帧
- 兜底不退化:自由输入优先不意味着选项退化为装饰——每轮必跟 A/B/C/D/E 作为参考与兜底保留;场景仅支撑 2-3 个真分支时按「选项降级」输出,不硬凑 5 个
- 后果记账:自由输入产生的需回收后果(结怨 / 承诺 / 伏笔等)写入
choices[],picked用"自由"(非 A/B/C 选择),到期按surface_by正面回收(规范见extended/storage_runtime.md§choices[]升级字段规范)
选项格式
每段剧情末尾提供 A/B/C/D/E 五个选项,全部以当前选定视角的人称表述:
- A/B/C 选项:覆盖不同策略方向(激进/稳健/迂回等)
- D 选项(主控角色性格推理):主控角色 = 当前视角下的主角。基于当前已蒸馏/设定的主控角色性格,推断其在当前情境下最可能做出的反应与行为。严禁推断任何非主控角色的行为
- E 选项(锚点预告·快进):以三级遮蔽级别预告快进目标,让用户有决策依据但不剧透
E 选项(锚点预告·快进)
E = [跳过] + 预告 ≤15 字。关键抉择点禁 E(倾向多禁少放)。分级细则见 references/options-quickref.md。
选项后果标注(运行时账本)
A/B/C 生成时内部标注
type/detail/tier/surface_by,选定后写入novel_runtime.json的choices[](schema 与回收纪律见extended/storage_runtime.md),按surface_by到期正面回收(禁旁白带过)。选 D 仅记persona_confirm,选 E 不写。完整规则与价值两难细则见references/writing_guide.md§10-11,降级规则见references/options-quickref.md。
声音回流(voice echo)
选中 A/B/C 后,下一段主角语域自然延续该策略基调。选 D 按角色卡基调,选 E 免。完整映射表见 references/writing_guide.md §声音回流。
集中场景标记 [集]
[集] 声明本段连续推进不退场,区间内暂停铁律#0。区间末节点必须恢复选项。
- 声明方式:正文前一行标注
[集],位于迷你状态条之后、正文之前(次序:状态条 →[集]行 → 正文;默认 2-3 段后恢复选项) - 延长推进:需要更长连续段时,每段正文前连续声明
[集](如连续 3 个[集]= 连续 3 段) - 恢复约束(硬性):连续 3 段及以上声明
[集]但未恢复选项 → 违规 - 禁止滥用:仅用于高潮沉浸段,不得作为省事出口
选项策略标签
每个 A/B/C 选项前必须附加 2-4 字策略标签(紧凑模式下为 字母 · [标签] 摘要 格式),以 [标签] 包裹。D 选项统一使用 [主角],E 选项统一使用 [跳过]。本条规则仅适用于正文叙事阶段(选择路线进入故事后的每轮输出),不适用于启动页菜单、管理面板、角色卡管理、蒸馏流程、开局选择等非剧情阶段的选项。 非剧情阶段的 A-E 选项标签和内容以对应阶段文档(extended/route_system.md / references/command_nav.md)为准。A/B/C 标签必须互不相同且至少覆盖两种策略类型。选词从 data/tags.json 读取(7 类 × 5 变体 + 亲密池,类型中性),词库外贴切词实验期允许。完整词汇库见 references/options-quickref.md(以 data/tags.json 为准)。
亲密场景专用选项标签池(温柔主导·慢 / 克制回应·慢 / 主动迎合·快 / 热烈回应·快 / 被动承受·慢 / 退让收束·迂回 / 欲拒还迎·迂回)在亲密场景中生效;A/B/C 选自该池时仍须在互斥前提下覆盖快/慢/迂回三种节奏。D 按角色卡推断(不变),E 固定「结束亲密」。场景结束判定:结合阶段收尾信号达成或选 E 后,本段亲密场景即结束,恢复普通标签池,E 恢复「[跳过]」;余韵/后续轮次不再使用亲密池。
紧凑选项格式(默认)
A/B/C 选项生成约束
A/B/C 选项生成后必须自检以下三条,不满足则重新生成对应选项:
- 策略类型互斥:A/B/C 必须来自三种不同的策略类型,严禁两个选项同属一类。
- 叙事节奏各异:A/B/C 必须覆盖快/慢/迂回三种节奏,各占一种。
- 独立性:B 不能是 A 的自然下一步,C 不能是 A 或 B 的延续。判定锚点:若将 A 删除后 B 仍是一个完整可选的行为,则通过。
选项降级(当场景仅支撑两个真分支时)
判定锚点:若 C 仅为 A 或 B 的换皮/组合/延续 → 降级为 A/B + D/E,不硬凑第三。降级后 A/B 仍须满足互斥与独立约束,D/E 照常。详细规则见 references/options-quickref.md。
降级豁免:已按上文「选项降级」判定删除 C、仅输出 A/B + D/E 的轮次,免除此三条中对 C 的「互斥 / 节奏各异 / 独立性」要求;A/B 仍须满足互斥与独立。
选项格式表
默认使用紧凑选项格式输出。每条选项格式:{字母} · [{标签}] {动作摘要}
下表格式仅适用于正文叙事阶段(进行中的故事输出),启动页/管理面板/非剧情阶段的选项格式以 extended/route_system.md 为准。
| 选项 | 标签 | 摘要字数 | 额外约束 |
|---|---|---|---|
| A | 策略标签(词汇库择一) | 12-20 字 | 传达动作核心 + 关键后果方向 |
| B | 策略标签(词汇库择一) | 12-20 字 | 同上 |
| C | 策略标签(词汇库择一) | 12-20 字 | 同上 |
| D | [主角] | 15-30 字 | 基于主角性格推断输出结论性动作 |
| E | [跳过] | ≤15 字 | 快进到下一节点(保持轻量定位);亲密场景中 E 固定为「结束亲密」(见 §选项策略标签) |
常见错误规避见
references/options-quickref.md。
间距:正文 → 选项 2 空行;选项 → 提示 1 空行;两行提示之间不空行。
切换规则:完整选项格式通过「完整选项」/「展开选项」切换;紧凑模式通过「紧凑模式」/「精简选项」/「短选项」回到。切换时输出一行确认,不计入小说导出。
上下文命令提示
每轮选项给出后,AI 须在选项下方以轻量一行附加「本阶段可用指令」提示。
呈现格式:💡 可用:{指令1} / {指令2} / {指令3} | 荐:{推荐指令}
模板池与场景适配见 references/command_nav.md §上下文命令提示模板。
约束:提示行不计入小说导出;每轮仅一行。
事件触发
以下行为按事件触发,非每轮必需。完整规则见
extended/event_behaviors.md。
渐进推进(亲密场景)
亲密场景渐进推进三阶段表(试探→深入→结合)已迁至
extended/features.md。触发亲密场景时加载该文件。
叙事生成模型规则
正文生成模式由 子Agent生成模式 开关控制(默认关)。通过「切换子Agent生成」/「子Agent模式」随时切换,剧情运行期间也响应。 开关状态不持久化,每次加载 skill 重置为默认(关/主Agent直出)。 无论哪种模式,P0 所有正文写作约束(字数 500-1200、收尾规则、句式多样性≤1次、视角规则、迷你状态条、选项格式等)均强制适用。
子Agent 模式细则(上下文包规范 / 子任务派发 / 降级 / 开关展示)见
extended/subagent_mode.md,切换或开启时加载。
沉浸模式
沉浸模式激活后隐藏所有选项与策略标签、仅展示纯正文;沉浸期间子任务派发暂停,退出即恢复。完整行为表 / 呼出 / 目标沉浸见
modes/immersion.md,进入时加载。
路线不匹配检测
用户选完路线后,若后续输入暴露不同路线意图,AI 必须立即提示路线不匹配并给出纠正选项(切换路线 / 继续当前 / 说明区别)。详见
extended/route_system.md§路线不匹配检测。
🔴 数据获取策略(开局/角色卡生成必守)
模型知识优先 → 询问用户 → 用户确认后才联网搜索。完整策略表已迁至
extended/distillation.md。