Prechádzať zdrojové kódy

feat(v5.3): 追读力约束分层与债务管理系统

- context-agent: 输出扩展至10章节,新增追读力设计和债务状态块
- high-point-checker: 爽点模式从6种扩展到8种(新增迪化误解/身份掉马)
- reader-pull-checker: 重构为Hard/Soft约束分层,支持Override Contract
- webnovel-write/SKILL: Step 1.5增强追读力设计块和差异化检查
- index_manager: 新增4张表和15+个CLI命令支持债务管理
- README: 更新至v5.3,补充追读力机制和新命令文档

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
lingfengQAQ 4 mesiacov pred
rodič
commit
a610bf7dad

+ 130 - 22
.claude/agents/context-agent.md

@@ -1,14 +1,21 @@
 ---
 name: context-agent
-description: 上下文搜集Agent (v5.2),输出创作任务书(人话版)而非 JSON,补齐钩子/模式/动机等关键写作信息
+description: 上下文搜集Agent (v5.3),输出创作任务书(人话版),集成追读力设计、题材Profile、债务状态
 tools: Read, Grep, Bash
 ---
 
-# context-agent (上下文搜集Agent v5.2)
+# context-agent (上下文搜集Agent v5.3)
 
-> **Role**: 创作任务书生成器。目标不是堆信息,而是给写作“能直接开写”的明确指令。
+> **Role**: 创作任务书生成器。目标不是堆信息,而是给写作"能直接开写"的明确指令。
 >
-> **Philosophy**: 按需召回 + 推断补全,保证“接住上章、带出情绪、留出钩子”。
+> **Philosophy**: 按需召回 + 推断补全,保证"接住上章、带出情绪、留出钩子"。
+>
+> **v5.3 新增**: 追读力设计块、题材Profile引用、债务状态提醒。
+
+## 核心参考
+
+- **Taxonomy**: `.claude/references/reading-power-taxonomy.md`
+- **Genre Profile**: `.claude/references/genre-profiles.md`
 
 ## 输入
 
@@ -23,7 +30,7 @@ tools: Read, Grep, Bash
 
 ## 输出格式:创作任务书(人话版)
 
-必须按以下 8 个章节输出
+必须按以下 **10 个章节** 输出(v5.3 增加 2 个)
 
 1. **本章核心任务**(冲突一句话、必须完成、绝对不能)
 2. **接住上章**(上章钩子、读者期待、开头必须)
@@ -33,6 +40,8 @@ tools: Read, Grep, Bash
 6. **伏笔管理**(必须处理、可选提及)
 7. **连贯性检查点**(时间、位置、情绪)
 8. **章末钩子设置**(建议类型、禁止事项)
+9. **追读力设计**(v5.3 新增)
+10. **债务与Override状态**(v5.3 新增)
 
 ---
 
@@ -40,13 +49,15 @@ tools: Read, Grep, Bash
 
 | 字段 | 读取来源 | 缺失时默认值 |
 |------|---------|-------------|
-| 上章钩子 | `state.json → chapter_meta[NNNN].hook` | `{type: "无", content: "上章无明确钩子", strength: "weak"}` |
-| 最近3章模式 | `state.json → chapter_meta[NNNN..NNNN].pattern` | 空数组,不做重复检查 |
-| 上章结束情绪 | `state.json → chapter_meta[NNNN].ending.emotion` | "未知",提示写作时自行判断 |
+| 上章钩子 | `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 |
 
 **缺失处理**:
-- 若 `chapter_meta` 不存在(如第1章),跳过“接住上章”部分
+- 若 `chapter_meta` 不存在(如第1章),跳过"接住上章"部分
 - 最近3章数据不完整时,只用现有数据做重复检查
 
 **章节编号规则**: 4位数字,如 `0001`, `0099`, `0100`
@@ -55,17 +66,31 @@ tools: Read, Grep, Bash
 
 ## 关键数据来源
 
-- `state.json`: 进度、主角状态、strand_tracker、chapter_meta
-- `index.db`: 实体/别名/关系/状态变化
+- `state.json`: 进度、主角状态、strand_tracker、chapter_meta、project.genre
+- `index.db`: 实体/别名/关系/状态变化/override_contracts/chase_debt/chapter_reading_power
 - `.webnovel/summaries/ch{NNNN}.md`: 章节摘要(含钩子/结束状态)
 - `大纲/`: 本章大纲 + 卷概述
 - `设定集/`: 世界观/力量体系/角色卡
+- `.claude/references/`: Taxonomy + Genre Profiles
 
 ---
 
 ## 执行流程
 
-### Step 1: 读取本章大纲
+### Step 1: 读取题材Profile
+```bash
+# 从 state.json 获取题材
+# 加载对应的 genre profile 配置
+cat ".claude/references/genre-profiles.md"
+```
+
+提取当前题材的:
+- 偏好钩子类型
+- 偏好爽点模式
+- 微兑现要求
+- 节奏红线阈值
+
+### Step 2: 读取本章大纲
 - 章节大纲: `大纲/卷N/第XXX章.md` 或 `大纲/第{卷}卷-详细大纲.md`
 - 卷概述: `大纲/卷N/卷概述.md`(如存在)
 
@@ -74,30 +99,45 @@ tools: Read, Grep, Bash
 - 需要哪些角色出场?
 - 发生在什么地点?
 - 是否有战斗/突破/关键对话?
+- 是否为过渡章?
 
-### Step 2: 读取状态与 chapter_meta
+### 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.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 "."
+```
+
+### Step 5: 查询债务状态
+```bash
+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 "."
+```
 
-### Step 3: 查询实体与关系(index.db)
+### Step 6: 查询实体与关系(index.db)
 ```bash
 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 "."
 ```
 
-### Step 4: 读取最近摘要
+### Step 7: 读取最近摘要
 - 优先读取 `.webnovel/summaries/ch{NNNN}.md`
 - 若缺失,降级为章节正文前 300-500 字概述
 
-### Step 5: 伏笔与风格样本
+### Step 8: 伏笔与风格样本
 - 伏笔:优先取 `foreshadowing_index`(若可用)
 - 风格样本:按本章类型选择 1-3 个高质量片段
 
-### Step 6: 推断补全
+### Step 9: 推断补全
 **推断规则(必须执行)**:
 - 动机 = 角色目标 + 当前处境 + 上章钩子压力
 - 情绪底色 = 上章结束情绪 + 事件走向
@@ -105,7 +145,7 @@ python -m data_modules.index_manager get-relationships --entity "{protagonist}"
 
 ---
 
-## 输出示例(片段
+## 输出示例(完整版
 
 ### 一、本章核心任务
 - 冲突一句话:萧炎必须在宗门大比前夜稳住心境,否则突破将失败。
@@ -113,18 +153,86 @@ python -m data_modules.index_manager get-relationships --entity "{protagonist}"
 - 绝对不能:提前揭示大比结果。
 
 ### 二、接住上章
-- 上章钩子:**危机钩** — “慕容战天冷笑:明日大比…”
+- 上章钩子:**危机钩** — "慕容战天冷笑:明日大比…"
 - 读者期待:大比会出现什么意外?萧炎会如何应对?
 - 开头必须:直接进入准备/压力场景,快速拉起紧张感。
 
-...
+### 三、出场角色
+| 角色 | 状态 | 动机 | 情绪底色 | 说话风格 | 红线 |
+|------|------|------|---------|---------|------|
+| 萧炎 | 斗师巅峰 | 突破+复仇 | 紧张但坚定 | 冷静/偶尔霸气 | 不能表现出怯懦 |
+| 药老 | 隐藏 | 观察+指导 | 欣慰 | 睿智/点到即止 | 不能直接出手 |
+
+### 四、场景与力量约束
+- 地点:天云宗修炼室
+- 可用能力:异火控制、基础斗技
+- 禁用能力:斗皇级技能(尚未习得)
+
+### 五、风格指导
+- 本章类型:成长/突破
+- 参考样本:第42章突破片段
+- 最近模式:危机钩(2次)、渴望钩(1次)
+- 本章建议:使用渴望钩,避免与上章重复
+
+### 六、伏笔管理
+- 必须处理:药老提到的"那个人"(第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个微兑现作为缓冲。
 
 ---
 
 ## 成功标准
 
-1. ✅ 创作任务书包含 8 个章节
+1. ✅ 创作任务书包含 10 个章节
 2. ✅ 上章钩子与读者期待明确
 3. ✅ 角色动机/情绪为推断结果(非空)
 4. ✅ 最近3章模式已对比,给出规避建议
-5. ✅ 章末钩子建议类型明确
+5. ✅ 章末钩子建议类型明确(匹配题材)
+6. ✅ 追读力设计块完整
+7. ✅ 债务状态已查询并提醒

+ 87 - 4
.claude/agents/high-point-checker.md

@@ -1,13 +1,18 @@
 ---
 name: high-point-checker
-description: 爽点密度检查,输出结构化报告供润色步骤参考
-tools: Read, Grep
+description: 爽点密度检查 v5.3,支持迪化误解/身份掉马模式,输出结构化报告
+tools: Read, Grep, Bash
 ---
 
-# high-point-checker (爽点检查器)
+# high-point-checker (爽点检查器) v5.3
 
 > **Role**: Quality assurance specialist focused on reader satisfaction mechanics (爽点设计).
 
+## 核心参考
+
+- **Taxonomy**: `.claude/references/reading-power-taxonomy.md`
+- **Genre Profile**: `.claude/references/genre-profiles.md`
+
 ## Scope
 
 **Input**: Chapter range (e.g., "1-2", "45-46")
@@ -22,7 +27,7 @@ Read all chapters in the specified range from `正文/` directory.
 
 ### Step 2: Identify Cool-Points (爽点)
 
-Scan for the **6 standard execution modes** (执行模式):
+Scan for the **8 standard execution modes** (执行模式):
 
 | Mode | Pattern Keywords | Minimal Requirements |
 |------|-----------------|---------------------|
@@ -32,6 +37,45 @@ Scan for the **6 standard execution modes** (执行模式):
 | **打脸权威** (Authority Challenge) | 权威/前辈/强者 → 主角挑战成功 | Authority Established + Challenge + Success |
 | **反派翻车** (Villain Downfall) | 反派得意/阴谋 → 计划失败/被反杀 | Villain Setup + Protagonist Counter + Downfall |
 | **甜蜜超预期** (Sweet Surprise) | 期待/心动 → 超预期表现 → 情感升华 | Anticipation + Exceeding Expectation + Emotion |
+| **迪化误解** (Misunderstanding Elevation) | 主角随意行为 → 配角脑补升华 → 读者优越感 | Casual Action + Info Gap + Misinterpretation + Reader Superiority |
+| **身份掉马** (Identity Reveal) | 身份伪装 → 关键时刻揭露 → 周围震惊 | Concealment (long-term) + Trigger Event + Reveal + Mass Reaction |
+
+### Step 2.1: 迪化误解模式检测(v5.3 新增)
+
+**核心结构**:
+1. 主角随意行为(无心插柳)
+2. 配角信息差(不知道主角真实情况)
+3. 配角脑补升华(合理化主角行为)
+4. 读者优越感(我知道真相)
+
+**识别信号**:
+- "竟然"/"难道"/"莫非" + 配角内心戏
+- 主角行为与配角解读的反差
+- 读者视角知道真相
+
+**质量评估**:
+- A级:脑补合理,读者优越感强
+- B级:脑补尚可,效果一般
+- C级:脑补太刻意,配角显得蠢
+
+### Step 2.2: 身份掉马模式检测(v5.3 新增)
+
+**核心结构**:
+1. 身份伪装(需长期铺垫)
+2. 关键时刻(危机/高光)
+3. 身份揭露(意外或主动)
+4. 周围反应(震惊/后悔/敬畏)
+
+**识别信号**:
+- 身份相关词汇(真实身份/原来是/竟然是)
+- 周围角色大规模反应
+- 前后反差描写
+
+**质量评估**:
+- A级:有长期铺垫,反应层次丰富
+- B级:有铺垫,反应单一
+- C级:无铺垫,突兀
+- F级:硬编身份,逻辑矛盾
 
 ### Step 3: Density Check
 
@@ -136,10 +180,49 @@ Chapters {N} - {M}
 ❌ Accepting chapters with 0 cool-points without flagging
 ❌ Ignoring sudden cool-points without setup
 ❌ Approving 5+ consecutive chapters of the same type
+❌ 迪化误解中配角智商明显下线
+❌ 身份掉马无任何前期暗示
 
 ## Success Criteria
 
 - All chapters have ≥ 1 cool-point
 - Type distribution shows variety (no single type > 80%)
 - Average quality grade ≥ B
+- 迪化误解的脑补需合理
+- 身份掉马需有铺垫
 - Report includes actionable recommendations
+
+## v5.3 输出格式增强
+
+```json
+{
+  "agent": "high-point-checker",
+  "chapters": [45, 46],
+  "overall_pass": true,
+  "density": {
+    "total_coolpoints": 4,
+    "per_chapter_avg": 2.0,
+    "meets_baseline": true
+  },
+  "diversity": {
+    "distribution": {
+      "装逼打脸": 1,
+      "迪化误解": 2,
+      "身份掉马": 1
+    },
+    "dominant_type": null,
+    "monotony_risk": false
+  },
+  "coolpoints": [
+    {
+      "chapter": 45,
+      "description": "主角随口评价被当做高人指点",
+      "mode": "迪化误解",
+      "grade": "A",
+      "structure_30_40_30": true,
+      "pressure_relief_ratio": "压3扬7"
+    }
+  ],
+  "recommendations": []
+}
+```

+ 267 - 52
.claude/agents/reader-pull-checker.md

@@ -1,18 +1,27 @@
 ---
 name: reader-pull-checker
-description: 追读力检查器,评估钩子兑现/新增期待/模式重复,输出结构化报告
-tools: Read, Grep
+description: 追读力检查器 v5.3,评估钩子/微兑现/约束分层,支持Override Contract
+tools: Read, Grep, Bash
 ---
 
-# reader-pull-checker (追读力检查器)
+# reader-pull-checker (追读力检查器) v5.3
 
-> **Role**: 审查“读者为什么会点下一章”。
+> **Role**: 审查"读者为什么会点下一章",执行 Hard/Soft 约束分层。
+
+## 核心参考
+
+- **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`
 
 ## 输入
 - 章节正文(`正文/第{NNNN}章.md`)
-- 上章钩子与模式(从 `state.json → chapter_meta`)
+- 上章钩子与模式(从 `state.json → chapter_meta` 或 `index.db`)
+- 题材 Profile(从 `state.json → project.genre`)
+- 是否为过渡章标记
 
-## 输出格式(与其他 checker 对齐)
+## 输出格式(v5.3 增强
 
 ```json
 {
@@ -20,76 +29,282 @@ tools: Read, Grep
   "chapter": 100,
   "overall_score": 85,
   "pass": true,
-  "issues": [
+  "hard_violations": [],
+  "soft_suggestions": [
     {
-      "type": "WEAK_HOOK",
-      "severity": "high",
+      "id": "SOFT_HOOK_STRENGTH",
+      "severity": "medium",
       "location": "章末",
-      "description": "钩子强度不足",
-      "suggestion": "将‘回去休息了’改为悬念/危机"
+      "description": "钩子强度为weak,建议提升至medium",
+      "suggestion": "将'回去休息了'改为悬念/危机",
+      "can_override": true,
+      "allowed_rationales": ["TRANSITIONAL_SETUP", "CHARACTER_CREDIBILITY"]
     }
   ],
+  "issues": [],
   "metrics": {
     "hook_present": true,
-    "hook_type": "期待钩",
+    "hook_type": "渴望钩",
     "hook_strength": "medium",
     "prev_hook_fulfilled": true,
     "new_expectations": 2,
-    "pattern_repeat": false,
-    "next_chapter_reason": "读者想知道云芝找萧炎什么事"
-  }
+    "pattern_repeat_risk": false,
+    "micropayoffs": ["能力兑现", "认可兑现"],
+    "micropayoff_count": 2,
+    "is_transition": false,
+    "next_chapter_reason": "读者想知道云芝找萧炎什么事",
+    "debt_balance": 0.0
+  },
+  "override_eligible": true
 }
 ```
 
-## 检查项与权重
+---
 
-| 检查项 | 权重 | 问题类型 |
-|--------|------|----------|
-| 章末钩子存在 | 30% | NO_HOOK (critical) |
-| 钩子强度适当 | 20% | WEAK_HOOK (high) |
-| 上章钩子兑现 | 20% | UNFULFILLED_HOOK (high) |
-| 模式不重复 | 15% | PATTERN_REPEAT (medium) |
-| 新增期待≤2个 | 15% | TOO_MANY_EXPECTATIONS (low) |
+## 一、约束分层
 
-## 钩子强度分级
+### 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** | 过渡章、铺垫章 | “明天还有很多事要做” |
+| **strong** | 卷末/关键转折/大冲突前 | 读者必须立刻知道 |
+| **medium** | 普通剧情章 | 读者想知道,但可等 |
+| **weak** | 过渡章/铺垫章 | 维持阅读惯性 |
+
+---
+
+## 三、微兑现检测(v5.3 新增)
+
+### 3.1 微兑现类型
+
+| 类型 | 识别信号 |
+|------|---------|
+| 信息兑现 | 揭示新信息/线索/真相 |
+| 关系兑现 | 关系推进/确认/变化 |
+| 能力兑现 | 能力提升/新技能展示 |
+| 资源兑现 | 获得物品/资源/财富 |
+| 认可兑现 | 获得认可/面子/地位 |
+| 情绪兑现 | 情绪释放/共鸣 |
+| 线索兑现 | 伏笔回收/推进 |
+
+### 3.2 检测规则
+
+1. 扫描正文识别微兑现
+2. 按题材profile检查数量是否达标
+3. 过渡章可降级要求
+
+---
+
+## 四、模式重复检测
+
+### 4.1 检测范围
+- 钩子类型:最近3章
+- 开头模式:最近3章
+- 爽点模式:最近5章
 
-## 评分规则
-- 85+ 分: PASS
-- 70-84 分: PASS with warnings
-- <70 分: FAIL
+### 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. 检查冲突存在
+
+**任何 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 |
+
+---
 
-1. **识别章末钩子**
-   - 判断是否存在未闭合问题/危险逼近/信息反转
-   - 标注类型与强度
+## 八、与 Data Agent 的交互
 
-2. **检查上章钩子兑现**
-   - 读取 `chapter_meta[N-1].hook`
-   - 判断本章是否接住或回应(直接推进/部分回应/完全忽略)
+审核完成后,由 Data Agent 执行:
 
-3. **新增期待计数**
-   - 统计本章新抛出的“未解问题/悬念点”数量(建议 ≤2)
+1. **保存章节追读力元数据**
+   ```python
+   index_manager.save_chapter_reading_power(ChapterReadingPowerMeta(...))
+   ```
 
-4. **模式重复检测**
-   - 对比 `chapter_meta[N-1..N-3].pattern`
-   - 若本章开头/钩子类型与最近章重复,记为风险
+2. **处理 Override Contract**(如有)
+   ```python
+   index_manager.create_override_contract(OverrideContractMeta(...))
+   index_manager.create_debt(ChaseDebtMeta(...))
+   ```
 
-5. **输出“读者下章动机”**
-   - 用一句话说明读者为什么点下一章
+3. **计算利息**(每章)
+   ```python
+   index_manager.accrue_interest(current_chapter)
+   ```
 
 ---
 
-## 成功标准
+## 九、成功标准
 
-- 章末钩子存在且强度匹配场景
-- 上章钩子有回应(直接/间接)
-- 新增期待不超过 2 个
-- 模式重复率低(最近 3 章避免同型)
-- 输出清晰的“下章动机”
+- [ ] 无 Hard Violations
+- [ ] Soft Score ≥ 70(或有有效Override)
+- [ ] 章末钩子存在且类型明确
+- [ ] 微兑现数量达标(或有Override)
+- [ ] 无连续3章以上同型
+- [ ] 输出清晰的"下章动机"

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 963 - 150
.claude/scripts/data_modules/index_manager.py


+ 74 - 7
.claude/skills/webnovel-write/SKILL.md

@@ -83,26 +83,93 @@ allowed-tools: Read Write Edit Grep Bash Task
 
 ---
 
-## Step 1.5: 章节设计(新增
+## Step 1.5: 章节设计(v5.3 增强
 
-**目标**: 在写作前明确本章结构与变体,避免模式重复。
+**目标**: 在写作前明确本章结构与变体,避免模式重复,设计追读力策略。
+
+### 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"
+```
+根据 `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}
+- 本章偿还计划:{如适用}
+```
+
+### 1.5.4 差异化检查
+
+**执行查询**:
+- 读取 `state.json → chapter_meta` 或调用 `index.db` 查询最近章节
+- 对比本章设计与历史模式
+
+**避免规则**:
+- 钩子类型:避免与最近3章重复
+- 开头类型:避免与最近3章重复
+- 爽点模式:避免与最近5章过度重复(同一模式≤40%)
+
+**如必须重复**:
+- 记录Override理由
+- 规划差异化执行方式(如同为装逼打脸,但不同场景/规模/参与者)
+
+### 1.5.5 过渡章特殊处理
 
-**差异化检查**:
-- 查询 `state.json → chapter_meta` 最近 3 章模式
-- 避免与最近 3 章“开头类型/钩子类型/情绪节奏”重复
+如本章标记为过渡章:
+- 钩子强度可降为 weak
+- 微兑现数量可降至 profile.transition_min
+- 必须记录 Override Contract(如违反软建议)
+- 过渡章不可连续超过 profile.transition_max_consecutive
 
 ---
 

+ 89 - 9
README.md

@@ -35,6 +35,26 @@
 | **设定即物理** | 遵守设定,不自相矛盾 | Consistency Checker 实时校验 |
 | **发明需识别** | 新实体必须入库管理 | Data Agent 自动提取并消歧 |
 
+### 追读力机制 (v5.3 新增)
+
+**约束分层系统**:
+
+| 层级 | 说明 | 处理方式 |
+|------|------|---------|
+| **Hard Invariants** | 不可违反的硬约束 | 必须修复,无法跳过 |
+| **Soft Guidance** | 可违反的软建议 | 可通过 Override Contract 跳过 |
+
+**Hard Invariants (4条)**:
+- HARD-001: 可读性底线 - 读者必须能理解发生了什么
+- HARD-002: 承诺违背 - 上章钩子必须有回应
+- HARD-003: 节奏灾难 - 不可连续N章无推进
+- HARD-004: 冲突真空 - 每章必须有问题/目标/代价
+
+**Override Contract 机制**:
+- 违反软建议时需记录理由和偿还计划
+- 每个 Override 产生债务,含利息(默认 10%/章)
+- 逾期债务会影响后续章节评分
+
 ### Strand Weave 节奏系统
 
 三线交织的叙事节奏控制:
@@ -197,22 +217,22 @@ pip install -r .claude/scripts/requirements.txt
 /webnovel-write 45      # 创作第45章
 ```
 
-**创作流程 (v5.2)**:
+**创作流程 (v5.3)**:
 
 ```
-Step 1: Context Agent 搜集上下文 → 创作任务书
+Step 1: Context Agent 搜集上下文 → 创作任务书(含追读力设计)
-Step 1.5: 章节设计(开头/钩子/爽点模式选择
+Step 1.5: 章节设计(开头/钩子/爽点/微兑现规划
 Step 2A: 生成粗稿(3000-5000字)
 Step 2B: 风格适配器(网文化改写)
-Step 3: 6 Agent 并行审查
+Step 3: 6 Agent 并行审查(含 reader-pull-checker)
 Step 4: 网文化润色
-Step 5: Data Agent 提取实体/更新索引
+Step 5: Data Agent 提取实体/更新索引/记录追读力元数据
 Step 6: Git 自动提交备份
 ```
@@ -290,7 +310,7 @@ Step 6: Git 自动提交备份
 8. 推断角色动机/情绪
 9. 组装**创作任务书**
 
-**输出结构(8个章节)**:
+**输出结构(10个章节)**:
 1. **本章核心任务**(冲突一句话、必须完成、绝对不能)
 2. **接住上章**(上章钩子、读者期待、开头必须)
 3. **出场角色**(状态、动机、情绪底色、说话风格、红线)
@@ -299,6 +319,8 @@ Step 6: Git 自动提交备份
 6. **伏笔管理**(必须处理、可选提及)
 7. **连贯性检查点**(时间、位置、情绪)
 8. **章末钩子设置**(建议类型、禁止事项)
+9. **追读力设计**(v5.3 新增:钩子策略、微兑现规划、模式差异化)
+10. **债务与Override状态**(v5.3 新增:当前债务、待偿还Override)
 
 ---
 
@@ -346,7 +368,7 @@ Step 6: Git 自动提交备份
 | **Continuity Checker** | 场景转换流畅度 | 伏笔回收情况 |
 | **Reader-pull Checker** | 追读力检查 | 钩子强度、模式重复、读者期待 |
 
-### 爽点六大执行模式
+### 爽点八大执行模式 (v5.3)
 
 | 模式 | 模式标识 | 典型触发 |
 |------|---------|---------|
@@ -356,6 +378,30 @@ Step 6: Git 自动提交备份
 | 打脸权威 | Authority Challenge | 权威 → 挑战 → 成功 |
 | 反派翻车 | Villain Downfall | 得意 → 反杀 → 落幕 |
 | 甜蜜超预期 | Sweet Surprise | 期待 → 超预期 → 升华 |
+| **迪化误解** | Misunderstanding Elevation | 随意行为 → 配角脑补 → 读者优越感 |
+| **身份掉马** | Identity Reveal | 伪装 → 揭露 → 周围震惊 |
+
+### 钩子五大类型 (v5.3)
+
+| 类型 | 驱动力 | 示例 |
+|------|--------|------|
+| 危机钩 | 危险逼近,读者担心 | "门外传来脚步声..." |
+| 悬念钩 | 信息缺口,读者好奇 | "他看到信上的名字,脸色骤变" |
+| 情绪钩 | 强情绪触发 | 愤怒/心疼/心动 |
+| 选择钩 | 两难抉择 | "救师父还是救爱人?" |
+| 渴望钩 | 好事将至,读者期待 | "明天就是突破的日子" |
+
+### 微兑现七大类型 (v5.3)
+
+| 类型 | 说明 |
+|------|------|
+| 信息兑现 | 揭示新信息/线索/真相 |
+| 关系兑现 | 关系推进/确认/变化 |
+| 能力兑现 | 能力提升/新技能展示 |
+| 资源兑现 | 获得物品/资源/财富 |
+| 认可兑现 | 获得认可/面子/地位 |
+| 情绪兑现 | 情绪释放/共鸣 |
+| 线索兑现 | 伏笔回收/推进 |
 
 ### 爽点密度基准
 
@@ -479,7 +525,7 @@ your-novel-project/
 │   │   └── webnovel-resume/
 │   ├── scripts/                # Python 脚本
 │   │   ├── data_modules/
-│   │   │   ├── index_manager.py    # SQLite 索引管理 (v5.1)
+│   │   │   ├── index_manager.py    # SQLite 索引管理 (v5.3)
 │   │   │   ├── rag_adapter.py      # RAG 检索层
 │   │   │   ├── api_client.py       # API 客户端
 │   │   │   └── config.py           # 配置管理
@@ -496,6 +542,8 @@ your-novel-project/
 │   └── references/             # 写作指南
 │       ├── strand-weave.md
 │       ├── cool-points-guide.md
+│       ├── reading-power-taxonomy.md  # 追读力分类标准 (v5.3)
+│       ├── genre-profiles.md          # 题材配置档案 (v5.3)
 │       └── ...
 ├── .webnovel/                  # 运行时数据
 │   ├── state.json              # 权威状态 (含 chapter_meta)
@@ -539,6 +587,28 @@ done
 python -m data_modules.index_manager stats --project-root "."
 ```
 
+### 追读力数据查询 (v5.3)
+
+```bash
+# 查看债务汇总
+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.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 "."
+
+# 查看待偿还Override
+python -m data_modules.index_manager get-pending-overrides --project-root "."
+
+# 计算利息(每章调用一次)
+python -m data_modules.index_manager accrue-interest --current-chapter 100 --project-root "."
+```
+
 ### 向量重建
 
 当 `vectors.db` 损坏或嵌入模型更换时:
@@ -567,7 +637,17 @@ git checkout ch0045
 
 ## 版本历史
 
-### v5.2 (当前)
+### v5.3 (当前)
+- **追读力分类标准**:钩子5类型、爽点8模式、微兑现7类型
+- **约束分层机制**:Hard Invariants (4条) + Soft Guidance (可Override)
+- **Override Contract**:违反软建议需记录理由和偿还计划
+- **追读力债务**:债务追踪、利息计算、逾期管理
+- **题材Profile**:8种内置题材配置(偏好钩子/爽点/微兑现要求)
+- **SQLite新表**:override_contracts、chase_debt、debt_events、chapter_reading_power
+- **Context Agent**:输出扩展至10章节(新增追读力设计、债务状态)
+- **CLI新命令**:get-debt-summary、get-recent-reading-power、accrue-interest 等
+
+### v5.2
 - 创作任务书:Context Agent 输出人话版 8 章节格式(替代 JSON)
 - 追读力检查:新增 reader-pull-checker(第 6 个审查 Agent)
 - 章节设计:Step 1.5 选择开头/钩子/爽点模式,避免重复

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov