Просмотр исходного кода

Revert "refactor(v5.5): 大幅简化系统,遵循 Skill 最佳实践"

This reverts commit 6cc92fe744ce3c4c1586c08159cfd3efaa8c59f8.
lingfengQAQ 4 месяцев назад
Родитель
Сommit
c3fa2e6f5d

+ 222 - 43
.claude/agents/context-agent.md

@@ -1,81 +1,260 @@
 ---
 name: context-agent
-description: Gathers context for chapter writing. Outputs a creative brief with outline, characters, constraints. Use before writing a chapter.
+description: 上下文搜集Agent (v5.4),输出创作任务书(人话版),集成追读力设计、题材Profile、债务状态。
 tools: Read, Grep, Bash
 ---
 
-# Context Agent
+# context-agent (上下文搜集Agent v5.4)
 
-> 目标:给写作提供"能直接开写"的必要信息,不堆砌。
+> **Role**: 创作任务书生成器。目标不是堆信息,而是给写作"能直接开写"的明确指令。
+>
+> **Philosophy**: 按需召回 + 推断补全,保证"接住上章、带出情绪、留出钩子"。
+>
+> **v5.3 引入(v5.4 沿用)**: 追读力设计块、题材Profile引用、债务状态提醒。
 
-## 输出格式:创作任务书(5个板块)
+## 核心参考
 
-### 1. 本章任务
-- 核心冲突(一句话)
-- 必须完成的事件
-- 绝对不能做的事
+- **Taxonomy**: `.claude/references/reading-power-taxonomy.md`
+- **Genre Profile**: `.claude/references/genre-profiles.md`
 
-### 2. 接住上章
-- 上章钩子是什么
-- 读者期待什么
-- 开头如何衔接
+## 输入
 
-### 3. 出场角色
-| 角色 | 当前状态 | 本章动机 | 注意事项 |
-|------|---------|---------|---------|
+```json
+{
+  "chapter": 100,
+  "project_root": "D:/wk/斗破苍穹",
+  "storage_path": ".webnovel/",
+  "state_file": ".webnovel/state.json"
+}
+```
+
+## 输出格式:创作任务书(人话版)
+
+必须按以下 **10 个章节** 输出(v5.3 增加 2 个,v5.4 沿用):
+
+1. **本章核心任务**(冲突一句话、必须完成、绝对不能)
+2. **接住上章**(上章钩子、读者期待、开头必须)
+3. **出场角色**(状态、动机、情绪底色、说话风格、红线)
+4. **场景与力量约束**(地点、可用能力、禁用能力)
+5. **风格指导**(本章类型、参考样本、最近模式、本章建议、近期审查趋势)
+6. **伏笔管理**(必须处理、可选提及)
+7. **连贯性检查点**(时间、位置、情绪)
+8. **章末钩子设置**(建议类型、禁止事项)
+9. **追读力设计**(v5.3 引入)
+10. **债务与Override状态**(v5.3 引入)
+
+---
+
+## 读取优先级与默认值
+
+| 字段 | 读取来源 | 缺失时默认值 |
+|------|---------|-------------|
+| 上章钩子 | `chapter_meta[NNNN].hook` 或 `chapter_reading_power` | `{type: "无", content: "上章无明确钩子", strength: "weak"}` |
+| 最近3章模式 | `chapter_meta` 或 `chapter_reading_power` | 空数组,不做重复检查 |
+| 上章结束情绪 | `chapter_meta[NNNN].ending.emotion` | "未知",提示写作时自行判断 |
+| 角色动机 | 从大纲+角色状态推断 | **必须推断,无默认值** |
+| 题材Profile | `state.json → project.genre` | 默认 "shuangwen" |
+| 当前债务 | `index.db → chase_debt` | 0 |
+| 近期审查趋势 | `index.db → review_metrics` | 无数据则跳过 |
+
+**缺失处理**:
+- 若 `chapter_meta` 不存在(如第1章),跳过"接住上章"部分
+- 最近3章数据不完整时,只用现有数据做重复检查
+
+**章节编号规则**: 4位数字,如 `0001`, `0099`, `0100`
 
-### 4. 场景约束
-- 地点
-- 可用能力
-- 禁用能力(超出当前境界)
+---
+
+## 关键数据来源
 
-### 5. 章末建议
-- 建议的钩子方向
-- 避免的收尾方式
+- `state.json`: 进度、主角状态、strand_tracker、chapter_meta、project.genre
+- `index.db`: 实体/别名/关系/状态变化/override_contracts/chase_debt/chapter_reading_power
+- `index.db`: review_metrics(审查趋势)
+- `.webnovel/summaries/ch{NNNN}.md`: 章节摘要(含钩子/结束状态)
+- `.webnovel/context_snapshots/`: 上下文快照(优先复用)
+- `.webnovel/preferences.json`: 用户偏好(阶段3)
+- `.webnovel/project_memory.json`: 项目记忆(阶段3)
+- `大纲/`: 本章大纲 + 卷概述
+- `设定集/`: 世界观/力量体系/角色卡
+- `.claude/references/`: Taxonomy + Genre Profiles
 
 ---
 
 ## 执行流程
 
-### 1. 读取大纲
+### Step 0: ContextManager 快照优先
+```bash
+python -m data_modules.context_manager --chapter {NNNN} --project-root "."
+```
+- 若存在兼容快照,直接读取
+- 版本不兼容时自动重建并保存
+- 过滤 confirmed 的 invalid_facts,pending 标记为提示
+- context_pack 包含 story_skeleton(按间隔采样的历史摘要)
+
+### Step 1: 读取题材Profile
 ```bash
-# 读取本章大纲
-cat "大纲/卷{N}/第{XXX}章.md"
+# 从 state.json 获取题材
+# 加载对应的 genre profile 配置
+cat ".claude/references/genre-profiles.md"
 ```
 
-### 2. 读取状态
+提取当前题材的:
+- 偏好钩子类型
+- 偏好爽点模式
+- 微兑现要求
+- 节奏红线阈值
+
+### Step 2: 读取本章大纲
+- 章节大纲: `大纲/卷N/第XXX章.md` 或 `大纲/第{卷}卷-详细大纲.md`
+- 卷概述: `大纲/卷N/卷概述.md`(如存在)
+
+**提取要点**:
+- 本章核心冲突是什么?
+- 需要哪些角色出场?
+- 发生在什么地点?
+- 是否有战斗/突破/关键对话?
+- 是否为过渡章?
+
+### Step 3: 读取状态与 chapter_meta
+- `state.json` 读取:
+  - progress.current_chapter
+  - protagonist_state
+  - strand_tracker
+  - chapter_meta (最近3章)
+  - project.genre
+
+### Step 4: 查询追读力历史数据
 ```bash
-python -m data_modules.state_manager get-progress --project-root "."
+python -m data_modules.index_manager get-recent-reading-power --limit 5 --project-root "."
+python -m data_modules.index_manager get-pattern-usage-stats --last-n 20 --project-root "."
+python -m data_modules.index_manager get-hook-type-stats --last-n 20 --project-root "."
+python -m data_modules.index_manager get-review-trend-stats --last-n 5 --project-root "."
 ```
 
-### 3. 查询相关实体
+### Step 5: 查询债务状态
 ```bash
-python -m data_modules.index_manager get-core-entities --project-root "."
-python -m data_modules.index_manager recent-appearances --limit 10 --project-root "."
+python -m data_modules.index_manager get-debt-summary --project-root "."
+python -m data_modules.index_manager get-pending-overrides --before-chapter {current+3} --project-root "."
 ```
 
-### 4. 读取上章摘要(如有)
+### Step 6: 来源标注(人读)
+- 对所有事实性引用追加来源标注,例如:
+  - `【来源: summaries/ch0100.md】`
+  - `【来源: 正文/第0100章.md#scene_2】`
+- 若为推断信息,明确标注"推断"。
+
+### Step 7: 查询实体与关系(index.db)
 ```bash
-cat ".webnovel/summaries/ch{NNNN-1}.md"
+python -m data_modules.index_manager get-core-entities --project-root "."
+python -m data_modules.index_manager recent-appearances --limit 20 --project-root "."
+python -m data_modules.index_manager get-relationships --entity "{protagonist}" --project-root "."
 ```
 
-### 5. 组装任务书
-根据以上信息,输出 5 个板块的创作任务书。
+### Step 8: 读取最近摘要
+- 优先读取 `.webnovel/summaries/ch{NNNN}.md`
+- 若缺失,降级为章节正文前 300-500 字概述
+
+### Step 9: 伏笔与风格样本
+- 伏笔:优先取 `foreshadowing_index`(若可用)
+- 风格样本:按本章类型选择 1-3 个高质量片段
+
+### Step 10: 推断补全
+**推断规则(必须执行)**:
+- 动机 = 角色目标 + 当前处境 + 上章钩子压力
+- 情绪底色 = 上章结束情绪 + 事件走向
+- 可用能力 = 当前境界 + 近期获得 + 设定禁用项
 
 ---
 
-## 缺失处理
+## 输出示例(完整版)
+
+### 一、本章核心任务
+- 冲突一句话:萧炎必须在宗门大比前夜稳住心境,否则突破将失败。
+- 必须完成:完成突破、引出明日大比风险。
+- 绝对不能:提前揭示大比结果。
+
+### 二、接住上章
+- 上章钩子:**危机钩** — "慕容战天冷笑:明日大比…"
+- 读者期待:大比会出现什么意外?萧炎会如何应对?
+- 开头必须:直接进入准备/压力场景,快速拉起紧张感。
+
+### 三、出场角色
+| 角色 | 状态 | 动机 | 情绪底色 | 说话风格 | 红线 |
+|------|------|------|---------|---------|------|
+| 萧炎 | 斗师巅峰 | 突破+复仇 | 紧张但坚定 | 冷静/偶尔霸气 | 不能表现出怯懦 |
+| 药老 | 隐藏 | 观察+指导 | 欣慰 | 睿智/点到即止 | 不能直接出手 |
+
+### 四、场景与力量约束
+- 地点:天云宗修炼室
+- 可用能力:异火控制、基础斗技
+- 禁用能力:斗皇级技能(尚未习得)
+
+### 五、风格指导
+- 本章类型:成长/突破
+- 参考样本:第42章突破片段
+- 最近模式:危机钩(2次)、渴望钩(1次)
+- 本章建议:使用渴望钩,避免与上章重复
+- 近期审查趋势:过去2次总评均值 48/60,短板在节奏控制(均值6/10)
+
+### 六、伏笔管理
+- 必须处理:药老提到的"那个人"(第87章埋下)
+- 可选提及:纳兰嫣然的态度变化
+
+### 七、连贯性检查点
+- 时间:大比前夜(承接上章)
+- 位置:天云宗(需描写从广场回修炼室)
+- 情绪:从紧张到专注
+
+### 八、章末钩子设置
+- 建议类型:**渴望钩**(突破成功→读者期待明日大比)
+- 强度建议:medium(非卷末)
+- 禁止事项:不要用"他沉沉睡去"收尾
+
+### 九、追读力设计(v5.3 引入)
+
+#### 9.1 题材配置(当前:玄幻)
+- 偏好钩子:危机钩、渴望钩、选择钩
+- 偏好爽点:越级反杀、扮猪吃虎、身份掉马
+- 微兑现要求:≥1个/章
+- 过渡章容忍:最多连续3章
+
+#### 9.2 钩子策略
+- 推荐类型:渴望钩(匹配突破→期待模式)
+- 目标强度:medium
+- 备选类型:危机钩(如需更强拉力)
+
+#### 9.3 微兑现规划
+建议在本章实现以下微兑现:
+1. **能力兑现**:突破成功,境界提升
+2. **认可兑现**:药老的赞许
+
+#### 9.4 模式差异化
+- 最近5章爽点模式:装逼打脸(2)、越级反杀(1)、扮猪吃虎(1)
+- 本章建议:避免装逼打脸,考虑使用迪化误解(配角对突破的误解)
+
+### 十、债务与Override状态(v5.3 引入)
+
+#### 10.1 当前债务
+- 活跃债务:1笔
+- 总余额:1.21
+- 最近到期:第101章(下章)
+
+#### 10.2 待偿还Override
+| 章 | 约束 | 理由 | 到期 |
+|----|------|------|------|
+| 98 | SOFT_MICROPAYOFF | TRANSITIONAL_SETUP | 101 |
 
-| 缺失内容 | 处理方式 |
-|---------|---------|
-| 上章摘要 | 跳过"接住上章",提示写作时注意衔接 |
-| 角色状态 | 从大纲推断,标注"推断" |
-| 设定文件 | 提示用户补充 |
+#### 10.3 本章建议
+⚠️ 下章需偿还第98章的微兑现债务,建议本章多准备1个微兑现作为缓冲。
 
 ---
 
 ## 成功标准
 
-- 任务书简洁(500字以内)
-- 写作者看完能直接开写
-- 不堆砌无关信息
+1. ✅ 创作任务书包含 10 个章节
+2. ✅ 上章钩子与读者期待明确
+3. ✅ 角色动机/情绪为推断结果(非空)
+4. ✅ 最近3章模式已对比,给出规避建议
+5. ✅ 章末钩子建议类型明确(匹配题材)
+6. ✅ 追读力设计块完整
+7. ✅ 债务状态已查询并提醒

+ 282 - 41
.claude/agents/reader-pull-checker.md

@@ -1,69 +1,310 @@
 ---
 name: reader-pull-checker
-description: Checks if readers will want to read the next chapter. Evaluates hooks, payoffs, and pacing. Use for important chapters.
+description: 追读力检查器 v5.4,评估钩子/微兑现/约束分层,支持 Override Contract
 tools: Read, Grep, Bash
 ---
 
-# 追读力检查器
+# reader-pull-checker (追读力检查器) v5.4
 
-> 核心问题:读者看完这章,会想点下一章吗?
+> **Role**: 审查"读者为什么会点下一章",执行 Hard/Soft 约束分层。
 
-## 检查要点
+## 核心参考
 
-### 1. 章末钩子
-- 有没有钩子?
-- 钩子强度如何?(strong/medium/weak)
-- 钩子类型:危机/悬念/情绪/选择/渴望
+- **Taxonomy**: `.claude/references/reading-power-taxonomy.md`
+- **Genre Profile**: `.claude/references/genre-profiles.md`
+- **章节追读力数据**: `index.db → chapter_reading_power`
+- **上章钩子**: `state.json → chapter_meta` 或 `index.db`
 
-### 2. 上章衔接
-- 上章的钩子有没有接住?
-- 读者期待有没有回应?
+## 输入
+- 章节正文(`正文/第{NNNN}章.md`)
+- 上章钩子与模式(从 `state.json → chapter_meta` 或 `index.db`)
+- 题材 Profile(从 `state.json → project.genre`)
+- 是否为过渡章标记
 
-### 3. 本章收获
-- 读者看完这章得到了什么?(信息/情感/爽点)
-- 有没有"白看一章"的感觉?
-
----
-
-## 输出格式
+## 输出格式(v5.3 引入,v5.4 沿用)
 
 ```json
 {
   "agent": "reader-pull-checker",
   "chapter": 100,
+  "overall_score": 85,
   "pass": true,
-  "hook": {
-    "present": true,
-    "type": "危机钩",
-    "strength": "medium",
-    "content": "敌人即将到来..."
-  },
-  "prev_hook_handled": true,
-  "reader_gain": "获知了秘密身世",
+  "hard_violations": [],
+  "soft_suggestions": [
+    {
+      "id": "SOFT_HOOK_STRENGTH",
+      "severity": "medium",
+      "location": "章末",
+      "description": "钩子强度为weak,建议提升至medium",
+      "suggestion": "将'回去休息了'改为悬念/危机",
+      "can_override": true,
+      "allowed_rationales": ["TRANSITIONAL_SETUP", "CHARACTER_CREDIBILITY"]
+    }
+  ],
   "issues": [],
-  "suggestion": "钩子可以更强一点"
+  "metrics": {
+    "hook_present": true,
+    "hook_type": "渴望钩",
+    "hook_strength": "medium",
+    "prev_hook_fulfilled": true,
+    "new_expectations": 2,
+    "pattern_repeat_risk": false,
+    "micropayoffs": ["能力兑现", "认可兑现"],
+    "micropayoff_count": 2,
+    "is_transition": false,
+    "next_chapter_reason": "读者想知道云芝找萧炎什么事",
+    "debt_balance": 0.0
+  },
+  "override_eligible": true
+}
+```
+
+---
+
+## 一、约束分层
+
+### 1.1 Hard Invariants(硬约束)
+
+> **违反 = MUST_FIX,不可申诉跳过**
+
+| ID | 约束名称 | 触发条件 | severity |
+|----|---------|---------|----------|
+| HARD-001 | 可读性底线 | 读者无法理解"发生了什么/谁/为什么" | critical |
+| HARD-002 | 承诺违背 | 上章明确承诺在本章完全无回应 | critical |
+| HARD-003 | 节奏灾难 | 连续N章无任何推进(N由profile决定) | critical |
+| HARD-004 | 冲突真空 | 整章无问题/目标/代价 | high |
+
+**Hard Violation 输出**:
+```json
+{
+  "id": "HARD-002",
+  "severity": "critical",
+  "location": "全章",
+  "description": "上章钩子'敌人即将到来'完全未在本章提及",
+  "must_fix": true,
+  "fix_suggestion": "在开头或中段回应敌人威胁"
+}
+```
+
+### 1.2 Soft Guidance(软建议)
+
+> **违反 = 可申诉,但需记录 Override Contract 并承担债务**
+
+| ID | 约束名称 | 默认期望 | 可Override |
+|----|---------|---------|-----------|
+| SOFT_HOOK_STRENGTH | 钩子强度 | 题材profile baseline | ✓ |
+| SOFT_HOOK_TYPE | 钩子类型 | 匹配题材偏好 | ✓ |
+| SOFT_MICROPAYOFF | 微兑现数量 | ≥ profile.min_per_chapter | ✓ |
+| SOFT_PATTERN_REPEAT | 模式重复 | 避免连续3章同型 | ✓ |
+| SOFT_EXPECTATION_OVERLOAD | 期待过载 | 新增期待 ≤ 2 | ✓ |
+
+**Soft Suggestion 输出**:
+```json
+{
+  "id": "SOFT_MICROPAYOFF",
+  "severity": "medium",
+  "location": "全章",
+  "description": "本章微兑现0个,题材要求≥1",
+  "suggestion": "添加能力兑现或认可兑现",
+  "can_override": true,
+  "allowed_rationales": ["TRANSITIONAL_SETUP", "ARC_TIMING"]
+}
+```
+
+---
+
+## 二、钩子类型扩展(v5.3 引入)
+
+### 2.1 完整钩子类型
+
+| 类型 | 标识 | 驱动力 |
+|------|------|--------|
+| 危机钩 | Crisis Hook | 危险逼近,读者担心 |
+| 悬念钩 | Mystery Hook | 信息缺口,读者好奇 |
+| 情绪钩 | Emotion Hook | 强情绪触发(愤怒/心疼/心动) |
+| 选择钩 | Choice Hook | 两难抉择,读者想知道选择 |
+| 渴望钩 | Desire Hook | 好事将至,读者期待 |
+
+### 2.2 钩子强度
+
+| 强度 | 适用场景 | 特征 |
+|------|---------|------|
+| **strong** | 卷末/关键转折/大冲突前 | 读者必须立刻知道 |
+| **medium** | 普通剧情章 | 读者想知道,但可等 |
+| **weak** | 过渡章/铺垫章 | 维持阅读惯性 |
+
+---
+
+## 三、微兑现检测(v5.3 引入)
+
+### 3.1 微兑现类型
+
+| 类型 | 识别信号 |
+|------|---------|
+| 信息兑现 | 揭示新信息/线索/真相 |
+| 关系兑现 | 关系推进/确认/变化 |
+| 能力兑现 | 能力提升/新技能展示 |
+| 资源兑现 | 获得物品/资源/财富 |
+| 认可兑现 | 获得认可/面子/地位 |
+| 情绪兑现 | 情绪释放/共鸣 |
+| 线索兑现 | 伏笔回收/推进 |
+
+### 3.2 检测规则
+
+1. 扫描正文识别微兑现
+2. 按题材profile检查数量是否达标
+3. 过渡章可降级要求
+
+---
+
+## 四、模式重复检测
+
+### 4.1 检测范围
+- 钩子类型:最近3章
+- 开头模式:最近3章
+- 爽点模式:最近5章
+
+### 4.2 风险等级
+- **warning**: 连续2章同型
+- **risk**: 连续3章同型
+- **critical**: 连续4+章同型
+
+---
+
+## 五、Override Contract 机制
+
+### 5.1 何时可Override
+
+当 `soft_suggestions` 中的建议无法遵守时,可提交 Override Contract:
+
+```json
+{
+  "constraint_type": "SOFT_MICROPAYOFF",
+  "constraint_id": "micropayoff_count",
+  "rationale_type": "TRANSITIONAL_SETUP",
+  "rationale_text": "本章为铺垫章,下章将有大爽点",
+  "payback_plan": "下章补偿2个微兑现",
+  "due_chapter": 101
 }
 ```
 
+### 5.2 rationale_type 枚举
+
+| 类型 | 描述 | 债务影响 |
+|------|------|---------|
+| TRANSITIONAL_SETUP | 铺垫/过渡需要 | 标准 |
+| LOGIC_INTEGRITY | 剧情逻辑优先 | 减少 |
+| CHARACTER_CREDIBILITY | 人物可信度优先 | 减少 |
+| WORLD_RULE_CONSTRAINT | 设定约束 | 减少 |
+| ARC_TIMING | 长线节奏安排 | 标准 |
+| GENRE_CONVENTION | 题材惯例 | 标准 |
+| EDITORIAL_INTENT | 作者主观意图 | 增加 |
+
+### 5.3 债务与利息
+
+- 每个Override产生债务(量由题材profile的debt_multiplier决定)
+- 每章债务累积利息(默认10%/章)
+- 超过due_chapter未偿还,债务变为overdue
+
 ---
 
-## 问题严重度
+## 六、执行步骤
+
+### Step 1: 加载配置
+1. 读取题材Profile
+2. 读取上章钩子/模式记录
+3. 检查当前债务状态
+
+### Step 2: Hard Invariants 检查
+1. 检查可读性(关键信息完整性)
+2. 检查上章钩子兑现
+3. 检查节奏停滞
+4. 检查冲突存在
 
-| 问题 | 严重度 | 说明 |
-|------|--------|------|
-| 完全没钩子 | high | 读者没动力点下一章 |
-| 上章钩子没接 | high | 读者期待落空 |
-| 钩子太弱 | medium | 有钩子但不够吸引 |
-| 本章无收获 | medium | 读者感觉白看 |
+**任何 Hard Violation → 立即标记 MUST_FIX**
+
+### Step 3: 钩子分析
+1. 识别章末钩子类型
+2. 评估钩子强度
+3. 对比题材偏好
+
+### Step 4: 微兑现扫描
+1. 识别章内微兑现
+2. 统计数量和类型
+3. 对比题材要求
+
+### Step 5: 模式重复检测
+1. 获取最近N章模式
+2. 检测钩子类型重复
+3. 检测开头模式重复
+
+### Step 6: Soft Guidance 评估
+1. 汇总所有软建议
+2. 标注可Override的建议
+3. 列出允许的rationale类型
+
+### Step 7: 生成报告
+1. 计算总分
+2. 输出结构化JSON
+3. 提供修复建议
 
 ---
 
-## 章节类型适配
+## 七、评分规则
+
+### 7.1 Hard Violations
+- 任何 Hard Violation → 直接 FAIL
+- 必须修复后重新审核
+
+### 7.2 Soft Score(无Hard Violation时)
+
+| 得分 | 结果 |
+|------|------|
+| 85+ | PASS |
+| 70-84 | PASS with warnings |
+| 50-69 | CONDITIONAL(可通过Override)|
+| <50 | FAIL |
+
+### 7.3 Soft 得分计算
+
+| 检查项 | 权重 | 问题类型 |
+|--------|------|----------|
+| 章末钩子存在 | 25% | NO_HOOK |
+| 钩子强度适当 | 15% | WEAK_HOOK |
+| 微兑现达标 | 20% | LOW_MICROPAYOFF |
+| 模式不重复 | 15% | PATTERN_REPEAT |
+| 新增期待≤2个 | 10% | EXPECTATION_OVERLOAD |
+| 钩子类型匹配题材 | 15% | TYPE_MISMATCH |
+
+---
+
+## 八、与 Data Agent 的交互
+
+审核完成后,由 Data Agent 执行:
+
+1. **保存章节追读力元数据**
+   ```python
+   index_manager.save_chapter_reading_power(ChapterReadingPowerMeta(...))
+   ```
+
+2. **处理 Override Contract**(如有)
+   ```python
+   index_manager.create_override_contract(OverrideContractMeta(...))
+   index_manager.create_debt(ChaseDebtMeta(...))
+   ```
+
+3. **计算利息**(每章)
+   ```python
+   index_manager.accrue_interest(current_chapter)
+   ```
+
+---
 
-| 章节类型 | 钩子要求 | 收获要求 |
-|----------|---------|---------|
-| **高潮章** | strong | 大爽点/大反转 |
-| **标准章** | medium | 有推进/有收获 |
-| **过渡章** | weak 可接受 | 铺垫到位即可 |
+## 九、成功标准
 
-> 过渡章不需要强钩子,但要让读者知道"在铺垫什么"。
+- [ ] 无 Hard Violations
+- [ ] Soft Score ≥ 70(或有有效Override)
+- [ ] 章末钩子存在且类型明确
+- [ ] 微兑现数量达标(或有Override)
+- [ ] 无连续3章以上同型
+- [ ] 输出清晰的"下章动机"

+ 436 - 71
.claude/skills/webnovel-write/SKILL.md

@@ -1,132 +1,497 @@
 ---
 name: webnovel-write
-description: Writes webnovel chapters (3000-5000 words). Gathers context, writes draft, reviews quality, extracts data. Use when user wants to write a chapter or /webnovel-write.
+description: Writes webnovel chapters (3000-5000 words) using v5.4 architecture. Context Agent outputs creative brief, writer produces pure text, review agents report issues, webnovel polish fixes problems, Data Agent extracts entities and records hooks/patterns.
 allowed-tools: Read Write Edit Grep Bash Task
 ---
 
 # Chapter Writing Skill
 
-## Quick Start
+## Workflow Checklist
 
+⚠️ **强制要求**: 开始写作前,**必须复制以下清单**到回复中并逐项勾选。跳过任何步骤视为工作流不完整。
+
+```
+章节创作进度 (v5.4):
+- [ ] Step 1: Context Agent 搜集上下文(创作任务书)
+- [ ] Step 1.5: 章节设计(开头/钩子/爽点模式)
+- [ ] Step 2A: 生成粗稿(剧情正确、场面成立)
+- [ ] Step 2B: 风格适配器(网文化改写,剧情不变)
+- [ ] Step 3: 审查 (6个Agent并行,输出汇总表格)
+- [ ] Step 4: 网文化润色(基于审查报告)
+- [ ] Step 5: Data Agent 处理数据链
+- [ ] Step 6: Git 备份
+```
+
+**工作流规则**:
+1. 每完成一个 Step,立即更新 TodoWrite 状态
+2. Step 之间的验证必须通过才能进入下一步
+3. 如遇阻断,记录 deviation 但不可跳过
+
+---
+
+## 模式说明(可选)
+
+```
+/webnovel-write --mode fast    # 快速模式:跳过 Step 2B
+/webnovel-write --mode minimal # 极简模式:跳过 Step 2B + 仅运行3个核心 checker
+```
+
+**模式影响**:
+- **标准模式**: 完整执行 Step 1-6
+- **快速模式**: 跳过 Step 2B(风格适配),其余照常
+- **极简模式**: 跳过 Step 2B + 仅运行 3 个核心审查(consistency / continuity / ooc)
+
+---
+
+## Step 1: Context Agent 搜集上下文
+
+**调用 Context Agent**:
+
+使用 Task 工具调用 `context-agent` subagent:
+
+```
+调用 context-agent,参数:
+- chapter: {chapter_num}
+- project_root: {PROJECT_ROOT}
+- storage_path: .webnovel/
+- state_file: .webnovel/state.json
+```
+
+**Agent 自动完成**:
+1. 读取本章大纲,分析需要什么信息
+2. 读取 state.json 获取主角状态快照
+3. 查询 index.db (v5.1+ schema) 召回实体/别名/关系
+4. 调用 data_modules.rag_adapter 语义检索
+5. Grep 设定集搜索相关设定
+6. 评估伏笔紧急度
+7. 选择风格样本
+8. 组装**创作任务书**(人话版)
+
+**输出**:创作任务书(非 JSON),包含:
+- 本章核心任务(冲突一句话、必须完成、绝对不能)
+- 接住上章(上章钩子、读者期待、开头必须)
+- 出场角色(状态、动机、情绪底色、说话风格、红线)
+- 场景与力量约束(地点、可用/禁用能力)
+- 风格指导(本章类型、参考样本、最近模式、本章建议)
+- 伏笔管理(必须处理、可选提及)
+- 连贯性检查点(时间、位置、情绪)
+- 章末钩子设置(建议类型、禁止事项)
+
+**失败处理**:
+- 如果大纲不存在 → 提示用户先创建大纲
+- 如果 state.json 不存在 → 提示用户初始化项目
+
+---
+
+## Step 1.5: 章节设计(v5.3 引入,v5.4 沿用)
+
+**目标**: 在写作前明确本章结构与变体,避免模式重复,设计追读力策略。
+
+### 1.5.1 加载必要参考
+
+**加载变体池(必须执行)**:
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-variants.md"
+```
+
+**加载追读力分类标准(必须执行)**:
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/references/reading-power-taxonomy.md"
+```
+
+**加载题材Profile(必须执行)**:
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/references/genre-profiles.md"
 ```
-章节创作流程:
-1. Context Agent → 创作任务书
-2. 写作 → 3000-5000字正文
-3. 审查 → 发现问题
-4. 润色 → 修复问题
-5. Data Agent → 提取数据
-6. Git → 备份
+根据 `state.json → project.genre` 选择对应题材的配置。
+
+### 1.5.2 章节结构设计
+
+**输出内容**:
+- 核心冲突一句话
+- 开头类型(冲突开场/悬疑开场/动作开场/对话开场/氛围开场)
+- 情绪节奏(低→高/高→低/低→高→低/平稳)
+- 信息密度(low/medium/high)
+- 是否过渡章(true/false)
+
+### 1.5.3 追读力设计块(v5.3 引入)
+
+**必须输出以下设计**:
+
+```markdown
+## 追读力设计
+
+### 钩子策略
+- 章末钩子类型:{危机钩/悬念钩/情绪钩/选择钩/渴望钩}
+- 目标强度:{strong/medium/weak}
+- 钩子描述:{一句话概括钩子内容}
+
+### 爽点规划
+- 主爽点模式:{8种模式之一}
+- 爽点结构:{30/40/30分布描述}
+- 备选模式:{如主模式无法实现}
+
+### 微兑现清单(题材要求:≥{N}个)
+1. {类型}: {描述}
+2. {类型}: {描述}
+...
+
+### 差异化检查
+- 最近3章钩子类型:{列表}
+- 最近3章开头类型:{列表}
+- 最近5章爽点模式:{列表}
+- 本章差异化点:{说明如何避免重复}
+
+### 债务状态(如有)
+- 当前债务余额:{amount}
+- 逾期债务:{count}
+- 本章偿还计划:{如适用}
 ```
 
-## 核心原则(仅3条)
+### 1.5.4 差异化检查
+
+**执行查询**:
+- 读取 `state.json → chapter_meta` 或调用 `index.db` 查询最近章节
+- 对比本章设计与历史模式
+
+**避免规则**:
+- 钩子类型:避免与最近3章重复
+- 开头类型:避免与最近3章重复
+- 爽点模式:避免与最近5章过度重复(同一模式≤40%)
+
+**如必须重复**:
+- 记录Override理由
+- 规划差异化执行方式(如同为装逼打脸,但不同场景/规模/参与者)
 
-1. **大纲即法律** - 100%执行大纲,不擅自发挥
-2. **设定即物理** - 能力/境界不能超设定
-3. **新实体需记录** - 新角色/物品/地点要入库
+### 1.5.5 过渡章特殊处理
 
-> 其他都是建议,不是强制。Claude 已经很懂网文写作。
+如本章标记为过渡章:
+- 钩子强度可降为 weak
+- 微兑现数量可降至 profile.transition_min
+- 必须记录 Override Contract(如违反软建议)
+- 过渡章不可连续超过 profile.transition_max_consecutive
 
 ---
 
-## Step 1: Context Agent
+## Step 2A: 生成粗稿(剧情正确)
+
+**字数**: 3000-5000 字(短章 <2000 字需声明)
+
+**核心原则**:
+- **大纲即法律**: 100% 执行大纲
+- **设定即物理**: 实力 ≤ 上下文包中的设定
+- **纯正文**: 不需要写任何 XML 标签
+
+**加载核心约束**:
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/core-constraints.md"
+```
+
+**按需加载场景参考**:
 
-调用 `context-agent` 获取创作任务书:
-- 本章大纲要点
-- 上章钩子(需要接住)
-- 出场角色状态
-- 场景/能力约束
+| 场景类型 | 判断条件 | 执行命令 |
+|---------|---------|---------|
+| 战斗戏 | 大纲含打斗/对决/追逐 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/combat-scenes.md"` |
+| 情感戏 | 大纲含告白/冲突/羁绊 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/emotion-psychology.md"` |
+| 对话密集 | 预估对话 >50% | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/dialogue-writing.md"` |
+| 复杂场景 | 新地点/大场面描写 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/scene-description.md"` |
+| 欲念描写 | 大纲含暧昧/亲密/情欲场景 | `cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/desire-description.md"` |
 
-**失败时**: 手动读取大纲和 state.json 继续。
+**可选加载题材风格参考**(用户指定时加载):
+```bash
+# 如需特定题材的写作风格参考,可按需加载 genres 目录下的对应文件
+# 可用题材目录:
+#   xuanhuan/          - 玄幻修仙
+#   dog-blood-romance/ - 狗血言情
+#   zhihu-short/       - 知乎短篇
+#   period-drama/      - 古言/宫斗
+#   realistic/         - 现实题材
+#   rules-mystery/     - 规则怪谈/推理
+# 示例: cat "${CLAUDE_PLUGIN_ROOT}/genres/xuanhuan/power-systems.md"
+```
+
+**输出格式**:
+- Markdown 文件: `正文/第{NNNN}章.md`
+- **不追加摘要**(摘要由 Data Agent 独立写入 `.webnovel/summaries/`)
 
 ---
 
-## Step 2: 写作
+## Step 2B: 风格适配器(网文化改写)
 
-**输出**: `正文/第{NNNN}章.md`,3000-5000字
+**跳过条件**: fast / minimal 模式跳过
 
-**写作建议**(非强制):
-- 开头尽快进入状态(冲突/悬念/动作)
-- 章末留个钩子让读者想看下一章
-- 避免大段解释,用动作和对话推进
+**加载风格适配器**:
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-adapter.md"
+```
 
-**按需加载参考**(仅在需要时读取):
-- 战斗戏 → `references/writing/combat-scenes.md`
-- 情感戏 → `references/writing/emotion-psychology.md`
-- 对话密集 → `references/writing/dialogue-writing.md`
+**目标**:
+- 保持剧情不变
+- 提升网文口感(短句、动作、对白张力、情绪反应)
+- 强化开头冲突与章末钩子
 
 ---
 
 ## Step 3: 审查
 
-根据章节类型选择审查深度:
+⚠️ **强制要求**: 必须在**同一条消息**中并行调用全部审查 Agent(除非 minimal 模式)。
+
+**执行命令(不可修改)**:
+
+在一条消息中发送 Task 工具调用,每个调用需传入以下公共参数:
+- project_root: {PROJECT_ROOT}
+- storage_path: .webnovel/
+- state_file: .webnovel/state.json
+- chapter_file: "正文/第{NNNN}章.md"
+
+**标准/快速模式:6 个 Agent**
+
+| # | subagent_type | 必须 | 说明 |
+|---|---------------|------|------|
+| 1 | `high-point-checker` | ✅ | 爽点密度检查 |
+| 2 | `consistency-checker` | ✅ | 设定一致性检查 |
+| 3 | `pacing-checker` | ✅ | Strand 节奏检查 |
+| 4 | `ooc-checker` | ✅ | 人物 OOC 检查 |
+| 5 | `continuity-checker` | ✅ | 连贯性检查 |
+| 6 | `reader-pull-checker` | ✅ | 追读力检查 |
+
+**极简模式:仅 3 个核心 Agent**
+- `consistency-checker`
+- `continuity-checker`
+- `ooc-checker`
+
+**验证**: 收到全部报告后,**必须输出以下汇总表格**:
+
+```
+┌─────────────────────────────────────────────────┐
+│ 审查汇总 - 第 {chapter_num} 章                    │
+├──────────────────────┬───────────┬──────────────┤
+│ Agent                │ 结果      │ 关键问题数    │
+├──────────────────────┼───────────┼──────────────┤
+│ high-point-checker   │ PASS/FAIL │ {N}          │
+│ consistency-checker  │ PASS/FAIL │ {N}          │
+│ pacing-checker       │ PASS/FAIL │ {N}          │
+│ ooc-checker          │ PASS/FAIL │ {N}          │
+│ continuity-checker   │ PASS/FAIL │ {N}          │
+│ reader-pull-checker  │ PASS/FAIL │ {N}          │
+├──────────────────────┴───────────┴──────────────┤
+│ critical issues: {N}  |  high issues: {N}       │
+│ 是否可进入润色: {是/否}                           │
+└─────────────────────────────────────────────────┘
+```
 
-| 章节类型 | 推荐 Checker | 说明 |
-|----------|-------------|------|
-| **高潮章** | 全部 6 个 | 重要章节全面检查 |
-| **标准章** | 3-4 个 | consistency + continuity + ooc + 按需 |
-| **过渡章** | 2 个 | consistency + continuity 即可 |
+**审查指标 JSON(必须输出,用于趋势统计)**:
+```json
+{
+  "start_chapter": {chapter_num},
+  "end_chapter": {chapter_num},
+  "overall_score": 48,
+  "dimension_scores": {
+    "爽点密度": 8,
+    "设定一致性": 7,
+    "节奏控制": 7,
+    "人物塑造": 8,
+    "连贯性": 9,
+    "追读力": 9
+  },
+  "severity_counts": {"critical": 1, "high": 2, "medium": 3, "low": 1},
+  "critical_issues": ["设定自相矛盾"],
+  "report_file": "",
+  "notes": ""
+}
+```
 
-**核心 Checker**(建议始终运行):
-- `consistency-checker` - 设定是否矛盾
-- `continuity-checker` - 前后是否连贯
+**保存审查指标**:
+```bash
+python -m data_modules.index_manager save-review-metrics \
+  --data '{...}' \
+  --project-root "."
+```
 
-**可选 Checker**(按需运行):
-- `ooc-checker` - 角色是否失真
-- `pacing-checker` - 节奏是否拖沓
-- `high-point-checker` - 爽点是否足够
-- `reader-pull-checker` - 追读力是否到位
+**Only proceed to Step 4 when:**
+1. 已收到全部审查报告(或 minimal 模式仅 3 份)
+2. 已输出汇总表格
 
-**输出**: 简要汇总发现的问题,按严重度排序。
+> **Minimal 模式**: 汇总表格仅列出已执行的 3 个 Agent。
 
 ---
 
-## Step 4: 润色
+## Step 4: 网文化润色(基于审查报告)
+
+⚠️ **强制要求**: 必须按以下顺序执行全部子步骤(4.0-4.4),不可跳过。
+
+### 4.0 加载润色指南(必须先执行)
+
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/polish-guide.md"
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/typesetting.md"
+```
+
+### 4.1 修复审查问题
+
+| 严重度 | 处理方式 |
+|-------|---------|
+| critical | **必须修复**,否则记录 deviation |
+| high | 优先修复 |
+| medium | 建议修复 |
+| low | 可选修复 |
+
+### 4.2 网文口感硬规则检查
+
+- 开头 120 字必须出现冲突/风险/强情绪
+- 每 800-1200 字至少一次局面变化
+- 结尾 80-150 字设置钩子
+- 对话每句必须带意图
+- 连续 400 字纯解释 → 必须打散
 
-**必须修复**: 设定矛盾、逻辑漏洞、严重 OOC
-**建议修复**: 节奏问题、爽点不足
-**可选修复**: 风格建议、微调优化
+### 4.3 AI 痕迹检测(辅助提醒)
 
-加载 `references/polish-guide.md` 获取润色技巧。
+**注意**: 词频统计仅作为提醒,不再作为硬性门槛。若明显超标,请修复并简要说明。
+
+- 总结词:`综合|总之|由此可见|总而言之`
+- 列举结构:`首先|其次|最后|第一|第二|第三`
+- 学术词:`而言|某种程度上|本质上`
+- 因果连词:`因为|所以|由于|因此`
+
+### 4.4 输出检查清单(必须输出)
+
+```
+┌─────────────────────────────────────────────────┐
+│ 润色检查清单 - 第 {chapter_num} 章               │
+├─────────────────────────────────────────────────┤
+│ [x] polish-guide.md 已加载                      │
+│ [x] typesetting.md 已加载                       │
+│ [x] critical issues 已修复: {是/否/无}          │
+│ [x] high issues 已修复: {是/否/无}              │
+├─────────────────────────────────────────────────┤
+│ 网文口感检查:                                   │
+│   - 开头120字冲突: {是/否}                       │
+│   - 局面变化频率: {达标/偏少}                    │
+│   - 章末钩子: {是/否}                            │
+├─────────────────────────────────────────────────┤
+│ AI痕迹提醒: {已检查/未检查}                      │
+│ [x] 未违反润色红线                              │
+│ 是否可进入 Data Agent: {是/否}                  │
+└─────────────────────────────────────────────────┘
+```
+
+**Only proceed to Step 5 when:**
+1. 已加载 polish-guide.md + typesetting.md
+2. 已修复所有 critical/high issues(或记录 deviation)
+3. 网文口感硬规则已达标(不足则记录 deviation)
+4. 已输出检查清单
+
+**输出**: 润色后的章节文件(覆盖原文件)
 
 ---
 
-## Step 5: Data Agent
+## Step 5: Data Agent 处理数据链
+
+**调用 Data Agent**:
+
+使用 Task 工具调用 `data-agent` subagent:
+
+```
+调用 data-agent,参数:
+- chapter: {chapter_num}
+- chapter_file: "正文/第{NNNN}章.md"
+- review_score: {overall_score from Step 3}
+- project_root: {PROJECT_ROOT}
+- storage_path: .webnovel/
+- state_file: .webnovel/state.json
+```
+
+**Agent 自动完成**:
 
-调用 `data-agent` 处理数据链:
-- 提取出场实体
-- 记录状态变化
-- 生成章节摘要
-- 向量索引
+1. **AI 实体提取**(Agent 内置,无需外部 LLM)
+2. **实体消歧**(高/中/低置信度策略)
+3. **写入存储**
+   - 更新 state.json (精简状态 + chapter_meta)
+   - 更新 index.db (实体/别名/状态变化/关系)
+4. **AI 场景切片**(生成场景摘要)
+5. **向量嵌入**(rag_adapter)
+6. **风格样本评估**(review_score > 80)
+7. **摘要分离存储**:写入 `.webnovel/summaries/ch{NNNN}.md`
+8. **债务利息计算**(自动触发)
 
-**失败时**: 记录 warning,继续 Git 备份。
+**债务利息计算**(Data Agent 完成后自动执行):
+```bash
+python -m data_modules.index_manager accrue-interest --chapter {chapter_num} --project-root "."
+```
+
+**输出**:
+```json
+{
+  "entities_appeared": 5,
+  "entities_new": 1,
+  "state_changes": 2,
+  "scenes_chunked": 4,
+  "uncertain": [...],
+  "warnings": [...]
+}
+```
 
 ---
 
 ## Step 6: Git 备份
 
 ```bash
-git add . && git commit -m "Ch{N}: {title}"
+git add . && git commit -m "Ch{chapter_num}: {title}"
 ```
 
 ---
 
-## 模式选项
+## 错误处理
+
+### Context Agent 失败
+```
+⚠️ 上下文包生成失败
+→ 检查大纲是否存在
+→ 检查 state.json 是否初始化
+→ 手动加载必要上下文后继续
+```
 
+### 审查发现严重问题
 ```
-/webnovel-write           # 标准:完整流程
-/webnovel-write --fast    # 快速:跳过可选审查
-/webnovel-write --minimal # 极简:仅核心2个Checker
+⚠️ 审查发现 critical 级别问题
+→ 润色步骤必须修复
+→ 如果无法修复,记录 deviation
+```
+
+### Data Agent 失败
+```
+⚠️ AI 提取失败
+→ 记录 warning
+→ 可选:手动添加关键实体
+→ Git 备份仍然执行
 ```
 
 ---
 
-## 详细参考(按需加载)
+## 成功标准
 
-需要更多指导时,读取以下文件:
+章节完成后,**必须输出最终验证报告**:
+
+```
+┌─────────────────────────────────────────────────┐
+│ 章节完成验证 - 第 {chapter_num} 章               │
+├─────────────────────────────────────────────────┤
+│ 1. [x] 字数: {N}字 (3000-5000)                  │
+│ 2. [x] 大纲执行: 100%                           │
+│ 3. [x] 审查Agent: {6/6 or 3/3} 已调用           │
+│ 4. [x] 审查汇总表格: 已输出                      │
+│ 5. [x] polish-guide.md: 已加载                  │
+│ 6. [x] 网文口感规则: 已检查                      │
+│ 7. [x] 润色检查清单: 已输出                      │
+│ 8. [x] Data Agent: 成功提取 {N} 个实体          │
+│ 9. [x] summaries: 已生成 ch{NNNN}.md            │
+│ 10.[x] Git: 已提交 ({commit_hash})              │
+├─────────────────────────────────────────────────┤
+│ 最终状态: {成功/有deviation}                     │
+└─────────────────────────────────────────────────┘
+```
 
-| 需求 | 文件 |
-|------|------|
-| 网文口感规则 | `references/polish-guide.md` |
-| 追读力设计 | `references/reading-power-taxonomy.md` |
-| 题材配置 | `references/genre-profiles.md` |
-| 风格变体 | `references/style-variants.md` |
+**验证失败处理**:
+- 如有任何项目未完成,记录 deviation 原因
+- deviation 不阻断工作流,但必须记录
+- 连续 3 章出现相同 deviation → 标记为系统问题

+ 157 - 39
.claude/skills/webnovel-write/references/polish-guide.md

@@ -1,64 +1,182 @@
 ---
 name: polish-guide
-purpose: 润色阶段参考,修复审查问题 + 提升网文口感
-version: "5.5"
+purpose: 章节生成后的润色阶段加载,基于审查报告修复问题 + 强化网文口感
+version: "5.4"
 ---
 
-# 润色指南
+<context>
+此文件用于内容润色,v5.2 引入"网文口感 + 追读力"重点,v5.4 沿用。
+
+润色步骤接收两个输入:
+1. 章节正文
+2. 审查报告(来自 6 个 checker agents)
+
+**与 Step 2B (style-adapter) 的职责边界**:
+- **Step 2B**: 纯风格转换 —— 句式改写、抽象→具体、长句拆分
+- **Step 4 (本步骤)**: 问题修复 —— 基于审查报告修复问题 + AI痕迹检测 + 规则校验
+
+> 注意:如果已执行 Step 2B,本步骤不需要重复句式转换,专注于修复审查问题。
+</context>
+
+<instructions>
+
+## v5.2 引入(v5.4 沿用):基于审查报告修复
+
+### 输入格式
+
+```json
+{
+  "overall_score": 85,
+  "issues": [
+    {"agent": "ooc-checker", "type": "OOC", "severity": "high", "location": "第3段", "suggestion": "林天对敌人太客气,应更冷酷"},
+    {"agent": "consistency-checker", "type": "POWER_CONFLICT", "severity": "critical", "location": "第5段", "suggestion": "筑基3层不能使用金丹期技能"}
+  ],
+  "pacing_analysis": {
+    "quest_ratio": 0.4,
+    "fire_ratio": 0.35,
+    "constellation_ratio": 0.25
+  },
+  "pass": true
+}
+```
+
+### 问题修复优先级
+
+| 严重度 | 处理方式 |
+|-------|---------|
+| critical | **必须修复**,否则记录 deviation |
+| high | 优先修复 |
+| medium | 建议修复 |
+| low | 可选修复 |
+
+### 问题类型修复指南
+
+| 问题类型 | 修复方法 |
+|---------|---------|
+| **OOC** (人物失真) | 调整角色言行,使其符合人设;若需要OOC,补充触发原因 |
+| **POWER_CONFLICT** (战力冲突) | 修改能力描述,使用当前境界可用的技能/能力 |
+| **TIMELINE_ISSUE** (时间线问题) | 调整时间描述,补充时间流逝过渡 |
+| **LOCATION_ERROR** (地点跳跃) | 补充移动过程描述,或调整地点设定 |
+| **PACING_IMBALANCE** (节奏失衡) | 调整 Strand 比例,增加缺失的内容类型 |
+| **LOW_COOL_POINTS** (爽点不足) | 增加爽点密度,补充打脸/升级/收获等元素 |
+| **CONTINUITY_BREAK** (连贯断裂) | 补充过渡句,连接断裂的场景 |
 
-> 核心:修复问题,不是重写。保持剧情不变。
+---
 
-## 问题修复优先级
+## 网文化规则(硬约束)
 
-| 优先级 | 问题类型 | 处理 |
-|--------|---------|------|
-| **必须修复** | 设定矛盾、逻辑漏洞、严重OOC | 不修复不能过 |
-| **建议修复** | 节奏拖沓、爽点不足、衔接生硬 | 尽量修 |
-| **可选修复** | 风格建议、措辞优化 | 有空再改 |
+1. **开头 120 字必须出现冲突/风险/强情绪**
+2. **每 800-1200 字至少一次局面变化**(转折、推进、意外、立场变化)
+3. **结尾 80-150 字必须设置钩子**(未闭合问题/危险逼近/信息反转)
+4. **对话每句必须带意图**(试探/威胁/诱导/掩饰)
+5. **抽象判断句 → 动作/反应/代价**(把结论写成行为)
 
----
+**章长适配**:
+- 标准章(3000-5000字):全部执行
+- 短章/过场章(<2000字):
+  - 开头冲突可放宽至前 200 字
+  - 局面变化频率可放宽为每 1500 字一次
+  - 钩子强度允许为 weak
 
-## 网文口感建议(非强制)
+---
 
-### 开头
-- 尽快进入状态,避免长铺垫
-- 冲突/悬念/动作比平淡描写更抓人
+## AI 痕迹检测(辅助提醒)
 
-### 中间
-- 避免大段解释,用动作和对话推进
-- 连续纯描写超过 300 字考虑打散
+> 词频统计**仅作为提醒**,不再作为硬性门槛。若明显超标,需修复并简要说明。
 
-### 结尾
-- 留个钩子让读者想看下一章
-- 避免"他沉沉睡去"式的平淡收尾
+### 常见AI痕迹
 
----
+| 特征 | 表现 |
+|------|------|
+| 句式规整 | 句子长度相近,结构相似 |
+| 模式化词汇 | “首先、其次、最后”、“值得注意的是” |
+| 过度连接 | 大量使用“然而、因此、此外” |
+| 情感平淡 | 缺乏个性化情绪表达 |
+| 信息过密 | 每句都有信息,缺少留白 |
 
-## 红线(不可触碰)
+### 高频词提醒清单
 
-- 不改剧情走向
-- 不改角色关系结果
-- 不改能力设定
-- 不删伏笔
+| 类型 | 关键词 |
+|------|--------|
+| 总结词 | 综合 / 总之 / 由此可见 / 总而言之 |
+| 列举结构 | 首先 / 其次 / 最后 / 第一 / 第二 / 第三 |
+| 学术词 | 而言 / 某种程度上 / 本质上 |
+| 因果连词 | 因为 / 所以 / 由于 / 因此 |
 
 ---
 
-## AI 痕迹提醒
+## 自然化程度标准(建议)
 
-如果发现以下模式,考虑调整:
-- "首先...其次...最后..."
-- "综合以上..."
-- "值得注意的是..."
-- 过多"因此/所以/然而"
+| 指标 | 不达标 | 达标 |
+|-----|-------|------|
+| 停顿词 | < 0.5次/500字 | 1-2次/500字 |
+| 不确定表达 | 0次 | ≥ 2次/章 |
+| 短句占比 | < 20% | 30-50% |
+| 口语词 | 0次/1000字 | ≥ 2次/1000字 |
 
-**处理方式**:改写为更自然的表达,不需要统计词频。
+> **提示**:自然化不是越多越好,超量会显得刻意
 
 ---
 
-## 示例
+## 润色红线
+
+- 改变情节走向 → 违反“**大纲即法律**”
+- 修改主角实力(除非修复 POWER_CONFLICT)→ 违反“**设定即物理**”
+- 改变人物关系 → 违反设定
+- 删除伏笔 → 破坏长线剧情
 
-**AI感**:
-> 综合以上分析,林天认为需要做三件事:第一,提升修为;第二,获取资源;第三,寻找盟友。
+---
 
-**自然**:
-> 林天心里盘算着,修为是根本,资源也不能少,至于盟友……先走一步看一步吧。
+## 风格一致性检查
+
+### 视角一致
+- 第一人称:全程“我”视角
+- 第三人称限制:只描写主角能感知的
+- 第三人称全知:可以切换视角
+
+### 时态一致
+- 过去时为主
+- 避免时态混乱
+
+### 文风一致
+- 轻松吐槽风 vs 正剧严肃风
+- 热血燃向 vs 冷静克制
+- 保持全文统一
+
+</instructions>
+
+<examples>
+
+<example>
+<input>AI风格:综合以上分析,林天认为自己需要做三件事:第一,提升修为;第二,获取资源;第三,寻找盟友。</input>
+<output>林天心里盘算着,修为是根本,资源也不能少,至于盟友……先走一步看一步吧。</output>
+</example>
+
+<example>
+<input>AI风格:首先,他查看了周围环境。其次,他分析了敌人的位置。最后,他制定了突围计划。</input>
+<output>他扫了一眼四周——三面是墙,只有正前方有条路。敌人嘛,两个在左,一个在右。得想个法子冲出去才行。</output>
+</example>
+
+<example>
+<input>AI风格:他感到非常愤怒,同时又有些无奈,心中五味杂陈。</input>
+<output>他的拳头攥紧了,指节发白,半晌又松开,无力地垂下。</output>
+</example>
+
+</examples>
+
+<errors>
+❌ 忽略审查报告的 critical 问题 → ✅ 必须修复或记录 deviation
+❌ 开头 120 字无冲突/风险/强情绪 → ✅ 重写开头
+❌ 章末没有钩子 → ✅ 重写结尾
+❌ 连续 400 字纯解释 → ✅ 打散/转化为动作或对白
+</errors>
+
+<checklist>
+润色完成前检查:
+- [ ] 审查报告中的 critical 问题已修复
+- [ ] 审查报告中的 high 问题已修复或有合理解释
+- [ ] 网文化规则已执行
+- [ ] AI 痕迹提示已检查
+- [ ] 未违反润色红线
+- [ ] 风格一致性检查通过
+</checklist>

+ 101 - 53
CLAUDE.md

@@ -1,88 +1,136 @@
 # CLAUDE.md - Webnovel Writer 项目指南
 
-> 本文档为 Claude Code 提供项目上下文。
+> 本文档为 Claude Code 提供项目上下文,帮助 AI 理解项目结构和工作流程
 
 ## 项目概述
 
-**Webnovel Writer** 是基于 Claude Code 的长篇网文辅助创作系统(v5.5),解决 AI 写作中的"遗忘"和"幻觉"问题。
+**Webnovel Writer** 是基于 Claude Code 的长篇网文辅助创作系统(v5.3),解决 AI 写作中的"遗忘"和"幻觉"问题,支持 200 万字量级连载创作
 
-## 核心原则(仅3条)
+## 核心理念
 
-1. **大纲即法律** - 100%执行大纲,不擅自发挥
-2. **设定即物理** - 能力/境界不能超设定
-3. **新实体需记录** - 新角色/物品/地点要入库
+### 防幻觉三定律
+1. **大纲即法律** - 遵循大纲,不擅自发挥
+2. **设定即物理** - 遵守设定,不自相矛盾
+3. **发明需识别** - 新实体必须入库管理
 
-> 其他都是建议,不是强制。Claude 已经很懂网文写作。
+### 追读力机制(v5.3 新增)
+- **Hard Invariants** - 不可违反的硬约束(可读性/承诺/节奏/冲突)
+- **Soft Guidance** - 可通过 Override Contract 违反的软建议
+- **Chase Debt** - 追读力债务追踪与利息机制
 
 ## 关键目录
 
 ```
 .claude/
-├── agents/                 # Agent 定义
-│   ├── context-agent.md    # 上下文搜集
-│   ├── data-agent.md       # 数据处理
-│   └── *-checker.md        # 各类检查器
-├── skills/                 # Skill 定义
-│   └── webnovel-write/     # 主写作流程
+├── agents/                 # 9 个专职 Agent
+│   ├── context-agent.md    # 创作任务书生成器 (v5.3)
+│   ├── data-agent.md       # 数据链工程师
+│   ├── reader-pull-checker.md  # 追读力检查器 (v5.3)
+│   ├── high-point-checker.md   # 爽点检查器 (v5.3)
+│   └── ...
+├── skills/                 # 7 个核心 Skill
+│   ├── webnovel-init/
+│   ├── webnovel-plan/
+│   ├── webnovel-write/     # 主写作流程 (v5.3)
+│   └── ...
 ├── scripts/                # Python 脚本
-│   └── data_modules/       # 数据模块
-└── references/             # 参考文档(按需加载)
+│   └── data_modules/
+│       ├── index_manager.py  # SQLite 管理 (v5.3)
+│       └── ...
+├── references/             # 写作指南
+│   ├── reading-power-taxonomy.md  # 追读力分类标准 (v5.3)
+│   ├── genre-profiles.md          # 题材配置档案 (v5.3)
+│   ├── checker-output-schema.md   # Checker 统一输出格式 (v5.4)
+│   └── ...
+└── templates/              # 题材模板
 ```
 
-## 核心命令
+## 核心 Skill 命令
 
 | 命令 | 说明 |
 |------|------|
 | `/webnovel-init` | 初始化项目 |
-| `/webnovel-plan` | 规划大纲 |
-| `/webnovel-write` | 创作章节 |
-| `/webnovel-review` | 质量审查 |
-| `/webnovel-query` | 信息查询 |
-
-## 写作流程
+| `/webnovel-plan [卷号]` | 规划大纲 |
+| `/webnovel-write [章号]` | 创作章节 |
+| `/webnovel-review [范围]` | 质量审查 |
+| `/webnovel-query [关键词]` | 信息查询 |
+| `/webnovel-resume` | 恢复中断任务 |
+| `/webnovel-learn [描述]` | 记忆写入 |
+
+## v5.3 新增功能
+
+### 1. 追读力分类标准
+- **钩子类型扩展**:危机钩/悬念钩/情绪钩/选择钩/渴望钩
+- **爽点模式扩展**:8种模式(新增迪化误解/身份掉马)
+- **微兑现体系**:7种类型(信息/关系/能力/资源/认可/情绪/线索)
+
+### 2. 题材 Profile 配置
+8种内置题材,每种包含:
+- 偏好钩子类型
+- 偏好爽点模式
+- 微兑现要求
+- 节奏红线阈值
+- Override 允许规则
+
+### 3. SQLite 新表
+- `override_contracts` - Override Contract 记录
+- `chase_debt` - 追读力债务
+- `debt_events` - 债务事件日志
+- `chapter_reading_power` - 章节追读力元数据
+
+### 4. 约束分层机制
+- **Hard Invariants** (HARD-001 ~ HARD-004) - 必须修复
+- **Soft Guidance** - 可 Override,产生债务
+- **Override Contract** - 记录违反理由和偿还计划
+- **Chase Debt** - 债务追踪,含利息机制
+
+## 写作工作流 (Step 1-6)
 
 ```
-1. Context Agent → 创作任务书(5个板块)
-2. 写作 → 3000-5000字正文
-3. 审查 → 根据章节类型选择 Checker
-4. 润色 → 修复问题
-5. Data Agent → 提取数据
-6. Git → 备份
+Step 1: Context Agent 搜集上下文
+        ↓ (输出创作任务书,含追读力设计)
+Step 1.5: 章节设计(开头/钩子/爽点/微兑现)
+        ↓
+Step 2A: 生成粗稿
+Step 2B: 风格适配器
+        ↓
+Step 3: 6 Agent 并行审查(含 reader-pull-checker)
+        ↓
+Step 4: 网文化润色
+        ↓
+Step 5: Data Agent 处理数据链
+        ↓
+Step 6: Git 备份
 ```
 
-## 审查深度(按章节类型)
-
-| 章节类型 | Checker 数量 | 说明 |
-|----------|-------------|------|
-| 高潮章 | 6 个全跑 | 重要章节全面检查 |
-| 标准章 | 3-4 个 | consistency + continuity + 按需 |
-| 过渡章 | 2 个 | consistency + continuity 即可 |
-
-## 数据存储
-
-- `state.json` - 精简状态(进度、主角、章节元数据)
-- `index.db` - SQLite(实体、别名、关系、状态变化)
-- `vectors.db` - RAG 向量索引
-- `summaries/` - 章节摘要
-
-## 常用命令
+## 常用 Python 命令
 
 ```bash
 # 查询统计
 python -m data_modules.index_manager stats --project-root "."
 
-# 获取核心实体
-python -m data_modules.index_manager get-core-entities --project-root "."
+# 查询债务状态
+python -m data_modules.index_manager get-debt-summary --project-root "."
+
+# 查询追读力历史
+python -m data_modules.index_manager get-recent-reading-power --limit 10 --project-root "."
 
-# 搜索
-python -m data_modules.rag_adapter search --query "xxx" --project-root "."
+# 查询模式使用统计
+python -m data_modules.index_manager get-pattern-usage-stats --last-n 20 --project-root "."
 ```
 
-## 关键文件
+## 关键文件说明
 
 | 文件 | 说明 |
 |------|------|
-| `.webnovel/state.json` | 项目状态 |
-| `.webnovel/index.db` | SQLite 索引 |
-| `.claude/references/reading-power-taxonomy.md` | 追读力分类(按需加载) |
-| `.claude/references/genre-profiles.md` | 题材配置(按需加载) |
+| `.webnovel/state.json` | 项目状态(精简版) |
+| `.webnovel/index.db` | SQLite 索引数据库 |
+| `.claude/references/reading-power-taxonomy.md` | 追读力分类标准 |
+| `.claude/references/genre-profiles.md` | 题材配置档案 |
+
+## 注意事项
+
+1. **不要直接修改 state.json 中的大量数据** - 大数据存 SQLite
+2. **Override Contract 需明确偿还计划** - 每个 Override 产生债务
+3. **债务有利息** - 每章累积 10%,逾期会影响后续章节
+4. **题材 Profile 可覆盖** - 在 state.json 中设置 genre_overrides