Skip to content
Back to skills

interactive-fiction

ASecurity

可选项驱动的互动小说创作完整规范:支持穿越/自创/创世/随机开局,内置视角一致性、字数区间、选项机制、存档系统与角色卡体系。

  • 35 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agentspython

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add Treasure-hub-agent/interactive-fiction-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of interactive-fiction?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for interactive-fiction
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/treasure-hub-agent-interactive-fiction/badge)](https://www.skillsdirectory.com/skills/treasure-hub-agent-interactive-fiction)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: interactive-fiction
description: "可选项驱动的互动小说创作完整规范:支持穿越/自创/创世/随机开局,内置视角一致性、字数区间、选项机制、存档系统与角色卡体系。"
version: 10.2.0
author: Treasure-hub-agent
license: MIT
copyright: "© 2026 Treasure-hub-agent"
platforms: [linux, macos, windows, android]
triggers: ["加载小说包", "互动小说", "互动故事", "选项小说", "写个互动小说", "开个互动小说"]
metadata:
  hermes:
    tags: [interactive-fiction, novel, roleplay, creative-writing, webnovel]
    related_skills: []
    pro_generation: true
---

# 互动小说创作技能包

> **加载说明**:本技能路径按你的 agent 技能目录放置(如 `creative/interactive-fiction`)。运行态数据由宿主环境注入。版本号仅以 YAML frontmatter 为准。
>
> **【架构】** P0/P1/P2 三层物理拆分:本文件常驻 P0,P1/P2 按需加载。示例使用通用占位,不绑定具体作品;示例中角色名以类型标签替代。

---

## 🔴 铁律 #0(最高优先级,高于一切)

**每轮正文输出后必须立即跟上选项(默认 A/B/C/D/E 五选项;仅「选项降级」「[集]」「沉浸模式」为合法豁免),不得以任何理由省略选项。**

> 每轮输出模板:`状态条 → (可选[集]) → 正文 → A/B/C/D/E → 💡提示行;缺选项即违规`
> ✅ 正文…后跟五选项 / ❌ 正文…直接结束

→ 若写完正文发现忘了加选项 → **立刻补上**,不能等用户指出。
→ 若用户指出选项缺失(含表达不满)→ **不解释、不道歉、不追问原由,直接补五选项**。
→ 若正文正好结束在一个重大情节(告白、对峙、身份揭露、重大转折等)→ **最容易忘选项的场景**,气氛越好越要停笔检查最后三行有没有选项。
→ 若正文以角色对话结句(「我记住了」「我在这里等你回来」等)→ **最危险的陷阱**——对话结句不构成自然收尾,仍须输出选项。
→ 若本段已标 `[集]`(集中场景标记,见 §选项格式)→ 本段合法暂停出选项,但**区间末节点必须恢复选项**,否则仍属违规。连续 3 段 [集] 未恢复选项 → 按铁律 #0 判违规(最高优先级),不再单独按 [集] 规则判。
→ 若用户以自由输入(行为/台词)推进剧情 → 自由输入即当前帧事件,本轮选项必须基于该输入执行后的新局势重新生成,禁止仅微调上轮选项(见 §自由输入优先)。

### 🔥 强制自检清单(落笔前预判 + 输出后核对)

**落笔前预判(生成前确认,避免写完才发现)**:
□ 迷你状态条 │ 选项位已留(五选项或合规降级变体)│ 本轮字数区间已按场景类型选定
□ 转折预算 ≤1 次 │ 收尾落点=情势转折点或自然收束处,不闭环整个场景事件
□ 记忆外置:开工 brief 已取(无脚本环境跳过)

**输出后核对(逐行看一遍,发现即当场修)**:
□ 选项行:无推荐语/无标点/D仅主角/E禁关键抉择│间距合规│A/B/C 后果标注完整
□ 尾句为角色对话 → 复核选项已跟(最危险陷阱)
□ 正文:无旁白总结、未闭环;句式复读与转折次数已核
□ 记忆外置:收尾 record 已记(无脚本环境跳过)

**触发 3 项(命中触发条件才查,未命中明确跳过)**:
□ 设定核对(触发:场景切换 / 新角色登场 / 时间跳跃;核对角色名/关系/生死/地点/能力,数据源 st{} + cp{}/npcs[] + 关系 + 上下文设定;深查见 extended/event_behaviors.md §一致性自检)
□ 后果/回响核对(触发:choices[] 有 1-2 轮内到期的 surface_by 条目,或场景切换/时间跳跃/关键角色回归/新章节开始时;到期条目必须本轮或下轮正面回收(禁旁白带过),并查最近 3-5 个关键事件是否需自然呼应(数据源 choices[] 的 consequence/foreshadow 条目);同场景连续推进不强制)
□ 锚定钩子(触发:seg_count % 8 == 0 时自检一次)
> 低频项(集中场景/签名物)触发时按 `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/emotion-escalation-motifs.md` / `references/intimate-character-voice.md` |
| 正文写作指导 / 新角色外貌描写(进入新章节首轮、用户要求提升文笔或展开描写时) | `references/writing_guide.md` / `references/appearance.md` |
| 查表数据(标签词库 / 字数区间 / 指令快速路由) | `data/tags.json` / `data/wordcount.json` / `data/commands.json` |
| 运行时 JSON 格式(novel_runtime.json 字段) | `schema/novel_runtime.schema.json` |
| 记忆外置助手(简报 / 记账 / 存读档) | `extended/storage_runtime.md` §记忆外置助手(脚本 `scripts/novel.py`) |

---

## 快速指令卡(完整指令查找表见 `references/command_nav.md`)

### 激活与首次加载(每次加载技能包后必执行)

> 用户发来激活指令(「加载小说包」及其同义说法)或首次加载本技能包时,**必须先输出启动页菜单并等待用户选择**;不得直接开始写正文,也不得先反问设定。

- 启动页完整菜单(A 新冒险 / B 继续上次 / C 小说管理 / D 角色卡管理 / E 角色卡短篇 / F 帮助)与两级路线选择流程见 `extended/route_system.md`(**激活时立即加载**)。
- 启动页与路线选择属**非剧情阶段**:铁律 #0 的选项要求、正文写作约束、选项策略标签、迷你状态条均不适用(见 §非剧情阶段指令边界)。
- 无存档时 B 行显示 `⚠️ 暂无存档,请先选 A 开始新冒险`;有存档时按 `{存储根}/_index.json` 取最近一条。

> 指令解析快速路由查 `data/commands.json`(**高频子集**,覆盖全部指令域;完整指令→效果映射、菜单导航、非剧情阶段边界以 `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` §菜单导航指令规范(解析到导航输入时加载)。导航指令优先于同阶段的自由文本解析。

### 用户输入归属规则(优先级顺序 · 每轮必守)

1. 以指令动词开头(存档/切换/弹出/加载/导出/进度/关系/人物志/角色卡/展开/修改)→ 系统指令
2. 纯字母(A/B/C/D/E/AB等)→ 选项选择(A-E 内按选项执行;F/G 等范围外字母、或不在本轮选项中的字母 → 按自由输入处理,明显误触时友好提示当前可用选项,不计入违规)
3. 其他任意自由文本(台词、动作、自定义行动)→ **自由输入即事件**:直接作为主角当前正在发生的言行成为当前帧事件,AI 展开叙事。⚠️ 不得旁白化(复述成旁白)、不得解释化(当成系统说明)、不得归错角色(用户台词必须由对应角色说出);选项基于自由输入后的新局势重新生成

> 角色创建阶段的自然语言输入路由例外见 `references/command_nav.md` §用户输入归属 · 角色创建阶段例外。

---

══════════════════════════════
[P0] 每轮必守 · 核心执行规则
══════════════════════════════

> AI 每轮生成小说正文时必须遵守本章所有规则。本章规则优先级最高(铁律 #0 为首)。

### 视角规则

> **当前视角**:默认由开局视角选择决定(详见 `extended/route_system.md` 开局流程),剧情途中可通过指令切换;未收到切换指令时「当前选定视角」始终为开局所选视角。以下规则中,「主角」= 当前视角下的主语(第一人称=我,第二人称=你,第三人称=主角名)。

| 场景类型 | 人称 | 触发条件 |
|----------|------|----------|
| 主线叙述/日常/动作/对话 | 当前选定视角 | 始终 |
| 主角内心活动 | 当前选定视角 | 始终 |
| 情感对象反应/内心 | 第三人称「他/她」(按角色卡性别,可用 TA/其名) | 仅限情感场景,按阶段切换:心动→首次情感回应时;暧昧→回应升级时;定情→可全程使用该人称 |
| 多角色切换 | 第三人称「他/她」(按各角色性别) | 仅限情感场景,每切换一次聚焦需以空行分隔 |

> **人称约束**:同一段落保持单一语言与人称;主线/日常一律用当前视角人称描写主角;情感段落人称切换不超过 2 次。

### 正文写作约束

**转折定义**:转折 = 本轮剧情方向的一次显著改变,≤1 次/轮。

**句式多样性要求**:同一修辞结构(如"不是……而是……""既不……也不……")在同一段落中出现次数 ≤ 1 次;同段内连续两句话不得使用相同句式。自然叙事优先——若自检发现 2 次及以上,修改至少 1 处为直接陈述。
**例外**:角色对话可豁免此约束。

### 正文格式约束

> 每轮正文生成的硬性格式规范。适用于爽文/主线/场景卡所有模式,子 Agent 和主 Agent 共同遵守。

**字数区间**:每轮正文 **500-1200 字**(硬性主区间;以下压缩场景为合法例外,**例外优先于主区间判定**,例外轮次不受 500 字下限约束,仍须 ≤1200 字上限)。场景区间选择:氛围展开/情感场景充分使用区间(800-1200)、日常过渡 400-600、对话快速交换/紧迫战斗/快进首段 250-400、随机开局首段 300-800(见 `data/wordcount.json`;无法判定场景类型时用主区间 500-1200;随机开局见 `extended/route_system.md` §随机开局)。
- 超出 1200 字:在情势转折点自然收束,剩余内容作为截断尾注
叙事越紧张,字数越贴近下限;情感/氛围可充分使用区间。**判定**:本轮含打斗/追击/紧急抉择 → 取区间下沿;含对话交换 → 取中下沿。

**收尾规则**:
- 正文须在**情势转折点或当前节点自然收束处**结束。禁止一段正文直接闭环整个场景事件——即不能以"事情彻底解决了""战斗完全结束了""对话达成完整共识"等作为正文终点
  - **判定**:末段若已给出「事情结束了」的结论(问题解决/告别完成/目标达成),即为闭环 → 删去该结论句或改为悬停(留一个未答的问题/未落的手)
- 若当前节点事件已自然完结,可正常收束,转入"接下来怎么办"的选项引导
- 收尾状态应为"情节推进了,但选择权还在用户手里"

**子Agent 传播**:子Agent生成模式规则(传播方式 / 上下文包摘要模板 / 字数例外场景)见 `extended/subagent_mode.md`。

### 迷你状态条

> 每轮 AI 生成正文前,须先在正文起始处单独渲染一行迷你状态条。

**格式**:`🔖 路线 · 第N章 · N万字`(章节若无则标「序章」);模式/视角仅在与默认不同或刚切换时附加(如 `🔖 原著 · 爽文 · 第一人称 · 第3章 · 1.2万字`)。
**字数显示**:`N` = 累计字数 ÷ 10000,四舍五入保留 1 位小数(如 7151 → `0.7万字`;1700 → `0.2万字`)。

**降级规则**:非剧情阶段 / 纯指令轮的状态条降级见 `references/command_nav.md` §状态条降级。

**自动触发 · 章节摘要与卷总结(v10.1.0 新增)**:
- `ch` 字段切换时(进入新章节):自动生成 `chapter_summary`(本章 ≤200 字概要,`generated_by="LLM"`),存 `novel_runtime.json`。
- **章摘要滚动**:每次写入新 `chapter_summary`(进入新章节)时,上一条自动滚入 `volumes[]`(按章累积,无需等到第 5 章;`generated_by` 随原值保留)。
- 人工校准:编辑 `novel_runtime.json` 的 `generated_by` 为 `"human"` 或 `"verified"` 即可。
- **回顾指令**:「章回顾」→ 输出最近 chapter_summary;「卷回顾」→ 输出最新 volumes[] 条目。

**导出过滤**:`chapter_summary` / `volumes[]` 不计入小说导出文件(仅运行时元数据)。

**路线标签精简**(输出层动态替换):
| 原文 | 状态条显示 |
|------|------|
| 穿越成原著角色 | 原著 |
| 自创角色 | 自创 |
| 创世模式 | 创世 |

### 记忆外置助手(v10.2.0 · 脚本记账,模型创作)

> 算数/记账/到期提醒交给 `scripts/novel.py`,脚本只记账、不审判,叙事判断仍归模型;命令表见 `extended/storage_runtime.md` §记忆外置助手。

**每轮两端**(`{技能目录}` = 本技能安装目录,即 SKILL.md 所在目录;`{存储根}` = 小说数据目录,脚本按宿主取值(手机端 `/sdcard/Download/Operit/novels`、桌面端 `~/novels`;优先级:`--root` > 环境变量 `NOVEL_STORAGE_ROOT` > 宿主默认);无 Python 环境时跳过,走原「AI 直接读写 novel_runtime.json」路径):
- **开工**:`python3 {技能目录}/scripts/novel.py brief`(可加 `--input "用户本轮输入"` 提高设定检索命中)→ 取 `[行动]`(到期须正面回收)、`[事实]`(须遵守)与 `[设定]`(命中时出现的相关设定);三者与 `[变化]`/`[背景]` 均仅作事实参考,无自然契机不得提及、不得当情节推动器。
- **收尾**:`python3 {技能目录}/scripts/novel.py record`(小票 JSON)→ 自动累加字数、`seg_count`、`prv` 截断、同步 `_index.json`。

### 用户输入响应

AI 每轮收到用户输入后按以下逻辑处理:

| 类型 | 判定 | 示例 |
|------|------|------|
| 指令 | 匹配快速指令卡中的任一指令,或文档其他章节定义的隐式指令 | 「切换爽文模式」「存档」「进度」「场景卡」 |
| 选项 | 用户选择了 A/B/C/D/E(可附带修改) | 「B」「D,但先不要正面回答」 |
| 自由行动 | 不匹配指令,且无法识别为选项选择的输入 | 「我掏出武器逼问对方」「先假装答应,等 TA 转身再动手」 |

AI 根据语义自动区分指令与自由行动。若输入兼具指令与自由行动特征,优先按自由行动执行。**例外**:若输入以明确的系统操作动词开头,优先匹配指令。

**指令模糊匹配与别名**:AI 对用户输入做语义归一,支持近义/口语化表达。如「存一下」「记个档」→ `存档`;「看看好感」「谁喜欢我」→ `关系`。

**⚠️ 剧情对话转义**:若用户想在剧情中说出与指令同名的台词(如角色大喊"存档!"),在输入前加 `>` 符号强制作为自由文本:`> 存档!快把东西藏起来!`。AI 识别到 `>` 前缀后剔除前缀,将剩余内容作为角色台词/自由行动处理,不匹配任何指令。

**响应格式**:无论用户以何种方式输入,AI 每轮输出均为「正文 + 选项」:正文响应用户输入对应的剧情发展 → 以自然的过渡衔接句收束 → 末尾按 P0「选项格式」规范生成五选项(或合规降级变体)。自由行动输入后,选项须基于自由行动执行后的新局势重新生成。禁止仅微调上轮选项;须基于当前局势全新生成五选项(或合规降级变体)。

**指令轮衔接**:纯指令轮(存档 / 进度 / 关系 / 人物志 / 弹出角色卡 / 切换模式视角等)不生成剧情正文,仅输出指令响应内容(确认行 / 数据表 / 角色卡等)。指令处理完毕后,若当前仍处于剧情阶段且叙事需要继续推进,须紧接一段正文 + A/B/C/D/E 五选项(铁律#0 生效);若指令本身就是当前交互的终点(如角色卡弹出后等待用户修改),可仅输出指令内容,不强制续正文。

**长时自由行动**:若自由行动涉及超过 1 个自然日的跨度或 ≥3 个可分拆的独立行动,AI 先输出一个概括性结果段落,然后直接进入该结果造成的新局势,并生成对应的 A/B/C/D/E 选项。

**⚠️ 对话归属陷阱**:当用户直接输入一句带引号的对话文本时,这句话属于**当前场景中正在说话的角色**,不是AI的旁白叙述。AI应在下一轮正文中将这句话无缝融入叙事,让对应角色自然说出这句台词。✅ 正确:用户输入→ AI在正文中直接接上这句话作为角色的台词继续叙事。❌ 错误:AI先输出「TA 说这句话的时候……」再复述引号内容。

### 自由输入优先

> 自由输入(行为/台词)是推进剧情的主要方式,选项是参考指引而非唯一框架。

- **等权/优先**:自由输入与选项选择同为有效推进方式,均按「正文 + 选项」响应,铁律 #0 每轮必跟选项的形式不变
- **自由输入即事件**:行为/台词直接成为当前帧事件,AI 展开叙事;禁止转成旁白复述、系统解释或归错角色
- **选项衔接**:自由输入后,本轮选项必须基于该输入执行后的**新局势**重新生成,与已发生的事自然衔接,禁止仅微调上轮选项
- **台词承接**:用户输入带引号的台词后,本轮选项须承接这句台词打开的新局面——对话结句不是收尾,而是必须回应的当前帧
- **兜底不退化**:自由输入优先不意味着选项退化为装饰——每轮必跟五选项(或合规降级变体)作为参考与兜底保留;场景仅支撑两个真分支时按「选项降级」输出合规变体
- **后果记账**:自由输入产生的需回收后果(结怨 / 承诺 / 伏笔等)写入 `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`,选定后写入 `choices[]`,按 `surface_by` 到期正面回收(禁旁白带过);选 D 记 `persona_confirm`,选 E 不写;schema 见 `extended/storage_runtime.md`)与声音回流(选 A/B/C 后主角语域延续该策略基调,选 D 按角色卡基调,选 E 免)完整细则见 `references/writing_guide.md` §10 / §声音回流。

#### 集中场景标记 `[集]`

`[集]` 声明本段连续推进不退场,区间内暂停铁律#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 恢复「[跳过]」;余韵/后续轮次不再使用情感互动池。

#### 标签池切换决策树(v10.1.0)

每轮生成 A/B/C 前必走下列决策(互斥约束:同轮只能选 1 个池):

```
1. 场景卡模式 OR 情感三阶段中段(心动/暧昧/定情)→ 进入 step 2
2. 角色专属语态基因触发(intimate-character-voice.md 命中)→ emotion 池
3. cp{}.stage='定情' AND 用户输入命中 emotion_daily.keywords(≥1 个)→ emotion_daily 池
4. 否则 → general 池
```

- **emotion 池**:v10.0.0 既有,专覆盖「心动/暧昧/定情」三阶段,标签见 `data/tags.json` emotion 段
- **emotion_daily 池**:v10.1.0 新增,专覆盖「定情后日常亲密/共同决策/冲突/和解」四档,标签见 `data/emotion_daily.json`
- **general 池**:v10.0.0 既有,标签见 `data/tags.json` general 段(7 类×5=35 词)
- **互斥规则**:emotion / emotion_daily / general 三池互斥,同轮只能选 1 个。一旦选 emotion_daily,A/B/C 全走 emotion_daily 池
- **覆盖优先级**:emotion_daily > emotion > general(定情后覆盖未攻略阶段)
- **场景结束判定**:用户主动切换其他场景 OR 输入「切回主线」类指令 → 退出 emotion_daily 池,恢复 general 池

### 紧凑选项格式(默认)

#### A/B/C 选项生成约束

A/B/C 选项生成后必须自检以下三条,不满足则重新生成对应选项:

1. **策略类型互斥**:A/B/C 须来自三种不同的策略类型。
2. **叙事节奏各异**:A/B/C 必须覆盖快/慢/迂回三种节奏,各占一种。
3. **独立性**:B/C 各自独立于 A(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 | [主角] | 12-20 字 | 基于主角性格推断输出结论性动作 |
| E | [跳过] | ≤15 字 | 快进到下一节点(保持轻量定位);情感场景中 E 固定为「情感场景收束」(见 §选项策略标签) |

> 常见错误规避见 `references/options-quickref.md`。

**间距**:正文 → 选项 2 空行;选项 → 提示 1 空行;提示行仅一行。

**切换规则**:完整选项格式通过「完整选项」/「展开选项」切换;紧凑模式通过「紧凑模式」/「精简选项」/「短选项」回到。切换时输出一行确认,不计入小说导出。

### 上下文命令提示

**触发式**:前 3 轮必出;此后仅在三类情况出现:① 用户输入疑似指令但未命中;② 新章节 / 新模式 / 新阶段开始时;③ 用户询问「能做什么」。

**呈现格式**(固定一行):`💡 可用:{指令1} / {指令2} / {指令3} | 荐:{推荐指令}`

模板池与场景适配见 `references/command_nav.md` §上下文命令提示模板。

**约束**:提示行不计入小说导出;每轮仅一行。

### 事件触发

> 以下行为按事件触发,非每轮必需。完整规则见 `extended/event_behaviors.md`。


### 情感递进(情感场景)

> 情感场景情感递进三阶段表(心动→暧昧→定情)已迁至 `extended/features.md`。触发情感场景时加载该文件。

#### 情感三阶段后·定情后场景(v10.1.0 新增)

> 定位:v10.0.0 的「三阶段」覆盖「关系从无到有」的弧线;v10.1.0 新增「定情后」覆盖「关系从有到稳」的延伸。三阶段结束后(`cp{}.stage = "定情"`)自动进入本节。

**触发条件(双锚定)**:
- 锚点 1:`cp{}.stage == "定情"`(v10.0.0 三阶段已完成)
- 锚点 2:用户输入命中 `data/emotion_daily.json` 的 keywords(≥1 个:日常/明天/未来/之后/习惯/我们/结婚/以后/永远/一起/将来/两个人/成家/过日子/余生)
- 双锚定命中 → 激活 emotion_daily 池(4 档:日常亲密/共同决策/冲突/和解)

**执行规范**:
- 详见 `references/intimate-character-voice.md` §定情后语态演变
- 标签池切换决策树见 §选项策略标签(v10.1.0 新增段)
- 节奏建议:A/B/C 尽量覆盖不同节奏与场景档位,**以叙事合理性优先**,不为凑节奏强行插入「冲突」等档位

**场景结束判定**:
- 用户主动切换其他场景 OR 输入「切回主线」类指令 → 退出 emotion_daily 池,恢复 general 池
- 退出后不再回退到 emotion 池(除非重新触发情感三阶段的新弧线)

### 叙事生成模型规则

> 正文生成由 **子Agent生成模式** 开关控制(默认**关**,状态不持久化,每次加载重置;剧情运行期间也响应切换)。无论哪种模式,P0 所有正文写作约束均强制适用。子Agent生成模式规则见 `extended/subagent_mode.md`。

---

### 沉浸模式

> 沉浸模式激活后隐藏所有选项与策略标签、仅展示纯正文;沉浸期间子任务派发暂停,退出即恢复。完整行为表 / 呼出 / 目标沉浸见 `modes/immersion.md`,进入时加载。

### 路线不匹配检测

> 用户选完路线后,若后续输入暴露不同路线意图,AI 必须立即提示路线不匹配并给出纠正选项(切换路线 / 继续当前 / 说明区别)。详见 `extended/route_system.md` §路线不匹配检测。

---

## 🔴 数据获取策略(开局/角色卡生成必守)

> 模型知识优先 → 询问用户 → 用户确认后才联网搜索。完整策略表已迁至 `extended/distillation.md`。

---

> © 2026 Treasure-hub-agent · interactive-fiction skill · MIT License · 许可与免责见 `DISCLAIMER.md`

Files in this skill

  • CHANGELOG.md4.2 KB
  • CODE_OF_CONDUCT.md1.3 KB
  • CONTRIBUTING.md1.1 KB
  • MANIFEST.json9.4 KB
  • README.en.md10.5 KB
  • SECURITY.md581 B
  • SKILL.md28.8 KB
  • VERSION6 B
  • assets/banner-dark.svg9.3 KB
  • assets/banner.svg9.2 KB
  • data/_README.md1.7 KB
  • data/commands.json4.1 KB
  • data/emotion_daily.json2.5 KB
  • data/random_pool.json1.8 KB
  • data/tags.json1.7 KB
  • data/wordcount.json429 B
  • extended/character_card.md10.7 KB
  • extended/creation_world.md9.5 KB
  • extended/deep_character_creation.md9.6 KB
  • extended/distillation.md13.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…