Parcourir la source

refactor: 移除6个旧checker agent和旧schema,由reviewer.md替代

lingfengQAQ il y a 2 mois
Parent
commit
b7a944d729

+ 0 - 270
webnovel-writer/agents/consistency-checker.md

@@ -1,270 +0,0 @@
----
-name: consistency-checker
-description: 设定一致性检查,输出结构化报告供润色步骤参考
-tools: Read, Grep, Bash
-model: inherit
----
-
-# consistency-checker (设定一致性检查器)
-
-> **职责**: 设定守卫者,执行第二防幻觉定律(设定即物理)。
-
-> **输出格式**: 遵循 `${CLAUDE_PLUGIN_ROOT}/references/checker-output-schema.md` 统一 JSON Schema
-
-## 检查范围
-
-**输入**: 单章或章节区间(如 `45` / `"45-46"`)
-
-**输出**: 设定违规、战力冲突、逻辑不一致的结构化报告。
-
-## 执行流程
-
-### 第一步: 加载参考资料
-
-**输入参数**:
-```json
-{
-  "project_root": "{PROJECT_ROOT}",
-  "storage_path": ".webnovel/",
-  "state_file": ".webnovel/state.json",
-  "chapter_file": "正文/第{NNNN}章-{title_safe}.md"
-}
-```
-
-`chapter_file` 应传实际章节文件路径;若当前项目仍使用旧格式 `正文/第{NNNN}章.md`,同样允许。
-
-**并行读取**:
-1. `正文/` 下的目标章节
-2. `{project_root}/.webnovel/state.json`(主角当前状态)
-3. `设定集/`(世界观圣经)
-4. `大纲/`(对照上下文)
-
-### 第二步: 四层一致性检查
-
-#### 第一层: 战力一致性(战力检查)
-
-**校验项**:
-- Protagonist's current realm/level matches state.json
-- Abilities used are within realm limitations
-- Power-ups follow established progression rules
-
-**危险信号** (POWER_CONFLICT):
-```
-❌ 主角筑基3层使用金丹期才能掌握的"破空斩"
-   → Realm: 筑基3 | Ability: 破空斩 (requires 金丹期)
-   → VIOLATION: Premature ability access
-
-❌ 上章境界淬体9层,本章突然变成凝气5层(无突破描写)
-   → Previous: 淬体9 | Current: 凝气5 | Missing: Breakthrough scene
-   → VIOLATION: Unexplained power jump
-```
-
-**校验依据**:
-- state.json: `protagonist_state.power.realm`, `protagonist_state.power.layer`
-- 设定集/修炼体系.md: Realm ability restrictions
-
-#### 第二层: 地点/角色一致性(地点/角色检查)
-
-**校验项**:
-- Current location matches state.json or has valid travel sequence
-- Characters appearing are established in 设定集/ or tagged with `<entity/>`
-- Character attributes (appearance, personality, affiliations) match records
-
-**危险信号** (LOCATION_ERROR / CHARACTER_CONFLICT):
-```
-❌ 上章在"天云宗",本章突然出现在"千里外的血煞秘境"(无移动描写)
-   → Previous location: 天云宗 | Current: 血煞秘境 | Distance: 1000+ li
-   → VIOLATION: Teleportation without explanation
-
-❌ 李雪上次是"筑基期修为",本章变成"练气期"(无解释)
-   → Character: 李雪 | Previous: 筑基期 | Current: 练气期
-   → VIOLATION: Power regression unexplained
-```
-
-**校验依据**:
-- state.json: `protagonist_state.location.current`
-- 设定集/角色卡/: Character profiles
-
-#### 第三层: 时间线一致性(时间线检查)
-
-**校验项**:
-- Event sequence is chronologically logical
-- Time-sensitive elements (deadlines, age, seasonal events) align
-- Flashbacks are clearly marked
-- Chapter time anchors match volume timeline
-
-**Severity Classification** (时间问题分级):
-| 问题类型 | Severity | 说明 |
-|---------|----------|------|
-| 倒计时算术错误 | **critical** | D-5 直接跳到 D-2,必须修复 |
-| 事件先后矛盾 | **high** | 先发生的事情后写,逻辑混乱 |
-| 年龄/修炼时长冲突 | **high** | 算术错误,如15岁修炼5年却10岁入门 |
-| 时间回跳无标注 | **high** | 非闪回章节却出现时间倒退 |
-| 大跨度无过渡 | **high** | 跨度>3天却无过渡说明 |
-| 时间锚点缺失 | **medium** | 无法确定章节时间,但不影响逻辑 |
-| 轻微时间模糊 | **low** | 时段不明确但不影响剧情 |
-
-> 输出 JSON 时,`issues[].severity` 必须使用小写枚举:`critical|high|medium|low`。
-
-**危险信号** (TIMELINE_ISSUE):
-```
-❌ [critical] 第10章物资耗尽倒计时 D-5,第11章直接变成 D-2(跳过3天)
-   → Setup: D-5 | Next chapter: D-2 | Missing: 3 days
-   → VIOLATION: Countdown arithmetic error (MUST FIX)
-
-❌ [high] 第10章提到"三天后的宗门大比",第11章描述大比结束(中间无时间流逝)
-   → Setup: 3 days until event | Next chapter: Event concluded
-   → VIOLATION: Missing time passage
-
-❌ [high] 主角15岁修炼5年,推算应该10岁开始,但设定集记录"12岁入门"
-   → Age: 15 | Cultivation years: 5 | Start age: 10 | Record: 12
-   → VIOLATION: Timeline arithmetic error
-
-❌ [high] 第一章末世降临,第二章就建立帮派(无时间过渡)
-   → Chapter 1: 末世第1天 | Chapter 2: 建帮派火拼
-   → VIOLATION: Major event without reasonable time progression
-
-❌ [high] 本章时间锚点"末世第3天",上章是"末世第5天"(时间回跳)
-   → Previous: 末世第5天 | Current: 末世第3天
-   → VIOLATION: Time regression without flashback marker
-```
-
-#### 第四层: 情节结构一致性(有节点时)
-
-仅当章纲包含 `CBN/CEN/本章禁区` 字段时执行,否则跳过。
-
-**校验项**:
-- 正文是否违反本章禁区中的任何条目
-- 正文开头方向是否与 `CBN` 目标冲突
-- 正文结尾状态是否与 `CEN` 目标冲突
-- 关键节点所依赖的能力、身份、地点是否违背现有设定
-
-**危险信号** (PLOT_STRUCTURE_VIOLATION):
-```
-❌ 本章禁区违反:"萧炎不得突破到斗师",但正文描写突破场景
-   → Prohibition: 不得突破 | Actual: 正文第N段描写突破
-   → severity: high
-
-❌ CEN 方向冲突:CEN 为"药老|决定|进一步接触萧炎",但正文结尾药老直接拒绝
-   → CEN: 决定接触 | Actual ending: 拒绝并离开
-   → severity: medium
-
-❌ CBN 方向冲突:CBN 为"萧炎|抵达|迦南学院入口",正文开头却在酒楼闲聊
-   → CBN: 抵达学院 | Actual opening: 酒楼场景
-   → severity: medium
-```
-
-**严重度建议**:
-| 问题类型 | Severity |
-|---------|----------|
-| 禁区违反 | **high** |
-| CEN 方向冲突 | **medium** |
-| CBN 方向冲突 | **medium** |
-
-### 第三步: 实体一致性检查
-
-**对所有章节中检测到的新实体**:
-1. Check if they contradict existing settings
-2. Assess if their introduction is consistent with world-building
-3. Verify power levels are reasonable for the current arc
-
-**报告不一致的新增实体**:
-```
-⚠️ 发现设定冲突:
-- 第46章出现"紫霄宗",与设定集中势力分布矛盾
-  → 建议: 确认是否为新势力或笔误
-```
-
-### 第四步: 生成报告
-
-```markdown
-# 设定一致性检查报告
-
-## 覆盖范围
-第 {N} 章 - 第 {M} 章
-
-## 战力一致性
-| 章节 | 问题 | 严重度 | 详情 |
-|------|------|--------|------|
-| {N} | ✓ 无违规 | - | - |
-| {M} | ✗ POWER_CONFLICT | high | 主角筑基3层使用金丹期技能"破空斩" |
-
-**结论**: 发现 {X} 处违规
-
-## 地点/角色一致性
-| 章节 | 类型 | 问题 | 严重度 |
-|------|------|------|--------|
-| {M} | 地点 | ✗ LOCATION_ERROR | medium | 未描述移动过程,从天云宗跳跃到血煞秘境 |
-
-**结论**: 发现 {Y} 处违规
-
-## 时间线一致性
-| 章节 | 问题 | 严重度 | 详情 |
-|------|------|--------|------|
-| {M} | ✗ TIMELINE_ISSUE | critical | 倒计时从 D-5 跳到 D-2 |
-| {M} | ✗ TIMELINE_ISSUE | high | 大比倒计时逻辑不一致 |
-
-**结论**: 发现 {Z} 处违规
-**严重时间线问题**: {count} 个(必须修复后才能继续)
-
-## 情节结构一致性(有节点时)
-| 检查项 | 结果 | 严重度 | 详情 |
-|--------|------|--------|------|
-| 本章禁区 | ✓/✗ | high | {...} |
-| CBN 方向 | ✓/✗ | medium | {...} |
-| CEN 方向 | ✓/✗ | medium | {...} |
-
-## 新实体一致性检查
-- ✓ 与世界观一致的新实体: {count}
-- ⚠️ 不一致的实体: {count}(详见下方列表)
-- ❌ 矛盾实体: {count}
-
-**不一致列表**:
-1. 第{M}章:"紫霄宗"(势力)- 与现有势力分布矛盾
-2. 第{M}章:"天雷果"(物品)- 效果与力量体系不符
-
-## 修复建议
-- [战力冲突] 润色时修改第{M}章,将"破空斩"替换为筑基期可用技能
-- [地点错误] 润色时补充移动过程描述或调整地点设定
-- [时间线问题] 润色时统一时间线推算,修正矛盾
-- [结构冲突] 润色时修正禁区违反或调整章节开头/结尾方向
-- [实体冲突] 润色时确认是否为新设定或需要调整
-
-## 综合评分
-**结论**: {通过/未通过} - {简要说明}
-**严重违规**: {count}(必须修复)
-**轻微问题**: {count}(建议修复)
-```
-
-### 第五步: 标记无效事实(新增)
-
-对于发现的严重级别(`critical`)问题,自动标记到 `invalid_facts`(状态为 `pending`):
-
-```bash
-python -X utf8 "${CLAUDE_PLUGIN_ROOT:?CLAUDE_PLUGIN_ROOT is required}/scripts/webnovel.py" --project-root "{PROJECT_ROOT}" index mark-invalid \
-  --source-type entity \
-  --source-id {entity_id} \
-  --reason "{问题描述}" \
-  --marked-by consistency-checker \
-  --chapter {current_chapter}
-```
-
-> 注意:自动标记仅为 `pending`,需用户确认后才生效。
-
-## 禁止事项
-
-❌ 通过存在 POWER_CONFLICT(战力崩坏)的章节
-❌ 忽略未标记的新实体
-❌ 接受无世界观解释的瞬移
-❌ **降低 TIMELINE_ISSUE 严重度**(时间问题不得降级)
-❌ **通过存在严重/高优先级时间线问题的章节**(必须修复)
-❌ **通过存在本章禁区违反的章节**
-
-## 成功标准
-
-- 0 个严重违规(战力冲突、无解释的角色变化、**时间线算术错误**)
-- 0 个高优先级时间线问题(**倒计时错误、时间回跳、重大事件无时间推进**)
-- 所有新实体与现有世界观一致
-- 地点和时间线过渡合乎逻辑
-- 有节点时,`CBN/CEN/本章禁区` 一致性检查已完成
-- 报告为润色步骤提供具体修复建议

+ 0 - 295
webnovel-writer/agents/continuity-checker.md

@@ -1,295 +0,0 @@
----
-name: continuity-checker
-description: 连贯性检查,输出结构化报告供润色步骤参考
-tools: Read, Grep
-model: inherit
----
-
-# continuity-checker (连贯性检查器)
-
-> **职责**: 叙事流守卫者,确保场景过渡顺畅、情节线连贯、逻辑一致。
-
-> **输出格式**: 遵循 `${CLAUDE_PLUGIN_ROOT}/references/checker-output-schema.md` 统一 JSON Schema
-
-## 检查范围
-
-**输入**: 单章或章节区间(如 `45` / `"45-46"`)
-
-**输出**: 场景过渡、情节线、伏笔管理、逻辑流的连贯性分析。
-
-## 执行流程
-
-### 第一步: 加载上下文
-
-**输入参数**:
-```json
-{
-  "project_root": "{PROJECT_ROOT}",
-  "storage_path": ".webnovel/",
-  "state_file": ".webnovel/state.json",
-  "chapter_file": "正文/第{NNNN}章-{title_safe}.md"
-}
-```
-
-`chapter_file` 应传实际章节文件路径;若当前项目仍使用旧格式 `正文/第{NNNN}章.md`,同样允许。
-
-**并行读取**:
-1. `正文/` 下的目标章节
-2. 前 2-3 章(过渡上下文)
-3. `大纲/`(对照大纲 - 大纲即法律)
-4. `{project_root}/.webnovel/state.json`(情节线追踪器,若存在)
-
-### 第二步: 四层连贯性检查
-
-#### 第一层: 场景转换流畅度(场景转换)
-
-**检查项**:
-```
-❌ Abrupt Transition:
-上一段:林天在天云宗大殿与长老对话
-下一段:林天已经在血煞秘境深处战斗
-问题:缺少移动过程/时间流逝描写
-
-✓ Smooth Transition:
-上一段:林天告别长老,离开宗门
-过渡句:"三日后,林天抵达血煞秘境入口"
-下一段:林天在秘境中遭遇妖兽
-```
-
-**过渡质量评级**:
-- **A**: 自然过渡 + 时间/空间标记清晰
-- **B**: 有过渡但略显生硬
-- **C**: 缺少过渡,靠读者推测
-- **F**: 完全断裂,逻辑跳跃
-
-#### 第二层: 情节线连贯(情节线连贯)
-
-**追踪活跃情节线**:
-- **Main Thread** (主线): 当前核心任务/目标
-- **Sub-threads** (支线): 次要任务、悬念、铺垫
-
-**检查项**:
-- Threads introduced but never resolved (烂尾)
-- Threads resolved without proper setup (突兀)
-- Threads forgotten mid-story (遗忘)
-
-**示例分析**:
-```
-第40章引入: "宗门大比将在10天后举行"(主线)
-第45章: 大比正在进行中 ✓
-第50章: 大比结束,主角获胜 ✓
-判定:✓ 线索完整,有始有终
-
-vs.
-
-第30章引入: "血煞门即将入侵"(支线伏笔)
-第31-50章: 完全未提及血煞门
-判定:⚠️ 线索悬空,可能遗忘或拖得太久
-```
-
-#### 第三层: 伏笔管理(伏笔管理)
-
-**伏笔分类**:
-| Type | Setup → Payoff Gap | Risk |
-|------|-------------------|------|
-| **Short-term** (短期) | 1-3 章 | Low |
-| **Mid-term** (中期) | 4-10 章 | Medium (容易被遗忘) |
-| **Long-term** (长期) | 10+ 章 | High (需明确标记) |
-
-**危险信号**:
-第10章: "林天发现神秘玉佩,似乎隐藏秘密"
-第11-30章: 玉佩再未提及
-判定:⚠️ 伏笔遗忘风险,建议第31章回收或再次提及
-
-✓ Proper Payoff:
-第10章: "李雪提到师父曾去过血煞秘境"
-第25章: "在秘境中发现李雪师父留下的线索"
-判定:✓ 伏笔回收合理,间隔15章属于中期伏笔
-```
-
-**伏笔检查清单**:
-- [ ] 所有设置的伏笔是否在合理章节内回收?
-- [ ] 长期伏笔(10+章)是否定期提及以保持读者记忆?
-- [ ] 回收时是否自然,不生硬?
-
-#### 第四层: 逻辑流畅性(逻辑流畅性)
-
-**检查情节漏洞与逻辑不一致**:
-
-```
-❌ Logic Hole:
-第45章: 主角说"我从未见过这种妖兽"
-第30章: 主角曾击败同种妖兽
-判定:❌ 前后矛盾,需修正
-
-❌ Causality Break:
-第46章: 主角突然获得神秘力量
-问题: 无解释来源,违反"发明需申报"原则
-判定:❌ 缺少因果关系,需补充 `<entity/>` 或铺垫
-
-✓ Logical:
-第44章: 主角服用聚气丹(铺垫)
-第45章: 主角突破境界(因果)
-判定:✓ 因果清晰
-```
-
-### 第三步: 大纲一致性检查(大纲即法律)
-
-**将章节与大纲对照**:
-
-```
-大纲第45章: "主角参加宗门大比,对战王少,险胜"
-
-实际第45章内容:
-- ✓ 主角参加大比
-- ✓ 对战王少
-- ✗ 结果是"轻松碾压"而非"险胜"
-
-判定:⚠️ 偏离大纲(难度降低),需确认是否有意调整
-```
-
-**偏差处理**:
-- **轻微**(细节优化): 可接受
-- **中等**(情节调整): 需标记并确认
-- **重大**(核心冲突变化): 必须标记 `<deviation reason="..."/>` 并说明
-
-### 第三步-B: 情节节点覆盖检查(有节点时)
-
-仅当章纲包含 `CBN/CPNs/CEN/必须覆盖节点` 字段时执行,否则跳过。
-
-**检查项**:
-1. **CBN 承接**:正文开头 1/3 是否体现了 CBN 描述的起始状态或事件方向
-2. **CEN 落地**:正文结尾 1/3 是否体现了 CEN 描述的结束状态或事件方向
-3. **必须节点覆盖**:`必须覆盖节点` 中列出的 CPN 在正文中是否有对应情节
-4. **可选节点覆盖**:非必须 CPN 的覆盖情况(仅统计,不作为 fail 主依据)
-
-判定方式:
-- 语义方向匹配,不要求逐字对应
-- 允许叙述扩展、合并表达和场景重排
-- 不允许跳过 CBN/CEN 或完全缺失必须节点
-
-**覆盖评级**:
-- **A**: CBN+CEN 方向吻合,所有必须节点已覆盖
-- **B**: CBN+CEN 基本吻合,1 个必须节点仅弱覆盖
-- **C**: CBN 或 CEN 偏离,或 2 个以上必须节点未覆盖
-- **F**: CBN+CEN 均偏离,或核心必须节点完全缺失
-
-**报告格式**:
-```markdown
-## 情节节点覆盖
-| 节点 | 类型 | 要求 | 正文对应 | 状态 |
-|------|------|------|---------|------|
-| 萧炎 \| 抵达 \| 迦南学院入口 | CBN | 必须 | 第1段:抵达描写 | ✓ 覆盖 |
-| 萧炎 \| 展示 \| 异火控制力 | CPN | 必须 | 第4-5段:考核表现 | ✓ 覆盖 |
-| 药老 \| 对萧炎产生 \| 明确兴趣 | CEN | 必须 | 末段:态度转变 | ✓ 覆盖 |
-
-**节点覆盖评级**: A
-```
-
-### 第四步: 拖沓检查(拖沓检查)
-
-**识别拖沓段落**:
-```
-⚠️ Possible Drag:
-第45-46章: 两章都在描述"主角赶路"
-内容: 重复的风景描写,无关键事件
-判定:⚠️ 节奏拖沓,建议:
-- 压缩为1章
-- 或在赶路途中安排事件(遭遇/奇遇/思考)
-
-✓ Efficient Pacing:
-第47章: "三日后,主角抵达秘境"(一句带过)
-判定:✓ 有效省略无关紧要的过程
-```
-
-### 第五步: 生成报告
-
-```markdown
-# 连贯性检查报告
-
-## 覆盖范围
-第 {N} 章 - 第 {M} 章
-
-## 场景转换评分
-| 转换 | 从 → 到 | 评级 | 问题 |
-|------|---------|------|------|
-| 第{N}章→第{M}章 | 天云宗大殿 → 血煞秘境 | C | 缺少移动过程描写 |
-
-**场景转换总评**: {平均评级}
-
-## 情节线追踪
-| 情节线 | 引入 | 最近提及 | 状态 | 下一步 |
-|--------|------|---------|------|--------|
-| 宗门大比 | 第40章 | 第46章(结束)| ✓ 已解决 | - |
-| 血煞门入侵 | 第30章 | 第30章 | ⚠️ 休眠(16章未提及)| 建议第47章提及或回收 |
-| 神秘玉佩 | 第10章 | 第10章 | ⚠️ 遗忘(36章未提及)| 建议回收或删除伏笔 |
-
-**活跃情节线**: {count}
-**休眠/遗忘**: {count}
-
-## 伏笔管理
-| 设置 | 章节 | 类型 | 兑现 | 间隔 | 状态 |
-|------|------|------|------|------|------|
-| 李雪师父去过秘境 | 10 | 中期 | 第25章发现线索 | 15章 | ✓ 已回收 |
-| 神秘玉佩 | 10 | 长期 | 未回收 | 36章+ | ❌ 遗忘风险 |
-
-**伏笔健康度**: {X} 已回收, {Y} 待处理, {Z} 有风险
-
-## 情节节点覆盖(有节点时)
-| 节点 | 类型 | 要求 | 正文对应 | 状态 |
-|------|------|------|---------|------|
-| {CBN} | CBN | 必须 | {...} | ✓/✗ |
-| {CPN1} | CPN | 必须 | {...} | ✓/△/✗ |
-| {CEN} | CEN | 必须 | {...} | ✓/✗ |
-
-**节点覆盖评级**: {A/B/C/F}
-
-## 逻辑一致性
-| 章节 | 问题 | 类型 | 严重度 |
-|------|------|------|--------|
-| {M} | 前后矛盾(主角称"从未见过"但第30章遇见过)| 前后矛盾 | high |
-| {M} | 突然获得力量无解释 | 因果缺失 | medium |
-
-**发现逻辑漏洞**: {count}
-
-## 大纲一致性
-| 章节 | 大纲 | 实际 | 偏差程度 |
-|------|------|------|---------|
-| {M} | 险胜王少 | 轻松碾压 | ⚠️ 中等(难度调整)|
-
-**偏差数**: {count}({X} 轻微, {Y} 中等, {Z} 重大)
-
-## 节奏拖沓检查
-- ⚠️ 第{N}-{M}章: 两章赶路场景重复,建议压缩或增加事件
-
-## 修复建议
-1. **修复场景转换**: 第{M}章添加"三日后"等时间标记
-2. **回收遗忘伏笔**: 神秘玉佩已36章未提及,建议回收或回溯删除
-3. **解决逻辑矛盾**: 第{M}章修改"从未见过"为"很少见到"
-4. **提及休眠线索**: 血煞门入侵线索建议第47章再次提及
-5. **压缩拖沓段落**: 第{N}-{M}章赶路场景合并为1章
-6. **修复节点覆盖问题**: 补写缺失的必须节点或调整结尾落点
-
-## 综合评分
-**连贯性总评**: {流畅/可接受/生硬/断裂}
-**严重问题**: {count}(必须修复)
-**改进建议**: {count}(建议改进)
-```
-
-## 禁止事项
-
-❌ 通过存在重大大纲偏差且无 `<deviation/>` 标记的章节
-❌ 忽略遗忘伏笔(10+ 章休眠)
-❌ 接受突兀的场景转换(F 级)
-❌ 忽视情节漏洞和前后矛盾
-❌ 有节点覆盖 `F` 级评定却未在修复建议中提及
-
-## 成功标准
-
-- 所有场景转换评级 ≥ B
-- 无活跃情节线遗忘超过 15 章
-- 所有长期伏笔已追踪并有兑现计划
-- 0 个重大逻辑漏洞
-- 大纲偏差已正确标记
-- 报告指出需修复的具体章节
-- 有节点时,节点覆盖评级 ≥ B

+ 0 - 217
webnovel-writer/agents/high-point-checker.md

@@ -1,217 +0,0 @@
----
-name: high-point-checker
-description: 爽点密度检查,支持迪化误解/身份掉马模式,输出结构化报告
-tools: Read, Grep, Bash
-model: inherit
----
-
-# high-point-checker (爽点检查器)
-
-> **职责**: 读者满足感机制的质量保障专家(爽点设计)。
-
-> **输出格式**: 遵循 `${CLAUDE_PLUGIN_ROOT}/references/checker-output-schema.md` 统一 JSON Schema
-
-## 核心参考
-
-- **分类法**: `${CLAUDE_PLUGIN_ROOT}/references/reading-power-taxonomy.md`
-- **题材画像**: `${CLAUDE_PLUGIN_ROOT}/references/genre-profiles.md`
-
-## 检查范围
-
-**输入**: 单章或章节区间(如 `45` / `"45-46"`)
-
-**输出**: 爽点密度、类型覆盖、执行质量的结构化报告。
-
-## 执行流程
-
-### 第一步: 加载目标章节
-
-读取指定范围内 `正文/` 目录下的所有章节。
-
-### 第二步: 识别爽点
-
-扫描 **8 种标准执行模式**:
-
-| 模式 | 特征关键词 | 最低要求 |
-|------|-----------------|---------------------|
-| **装逼打脸** | 嘲讽/废物/不屑 → 反转/震惊/目瞪口呆 | 铺垫 + 反转 + 反应 |
-| **扮猪吃虎** | 示弱/隐藏实力 → 碾压 | 隐藏 + 轻视 + 碾压 |
-| **越级反杀** | 实力差距 → 以弱胜强 → 震撼 | 展示差距 + 策略/爆发 + 反转 |
-| **打脸权威** | 权威/前辈/强者 → 主角挑战成功 | 建立权威 + 挑战 + 成功 |
-| **反派翻车** | 反派得意/阴谋 → 计划失败/被反杀 | 反派铺垫 + 主角反制 + 翻车 |
-| **甜蜜超预期** | 期待/心动 → 超预期表现 → 情感升华 | 期待 + 超越期待 + 情绪 |
-| **迪化误解** | 主角随意行为 → 配角脑补升华 → 读者优越感 | 随意行为 + 信息差 + 误解 + 读者优越 |
-| **身份掉马** | 身份伪装 → 关键时刻揭露 → 周围震惊 | 隐藏(长期)+ 触发事件 + 揭露 + 群体反应 |
-
-### 第二步补充: 迪化误解模式检测
-
-**核心结构**:
-1. 主角随意行为(无心插柳)
-2. 配角信息差(不知道主角真实情况)
-3. 配角脑补升华(合理化主角行为)
-4. 读者优越感(我知道真相)
-
-**识别信号**:
-- "竟然"/"难道"/"莫非" + 配角内心戏
-- 主角行为与配角解读的反差
-- 读者视角知道真相
-
-**质量评估**:
-- A级:脑补合理,读者优越感强
-- B级:脑补尚可,效果一般
-- C级:脑补太刻意,配角显得蠢
-
-### 第二步补充: 身份掉马模式检测
-
-**核心结构**:
-1. 身份伪装(需长期铺垫)
-2. 关键时刻(危机/高光)
-3. 身份揭露(意外或主动)
-4. 周围反应(震惊/后悔/敬畏)
-
-**识别信号**:
-- 身份相关词汇(真实身份/原来是/竟然是)
-- 周围角色大规模反应
-- 前后反差描写
-
-**质量评估**:
-- A级:有长期铺垫,反应层次丰富
-- B级:有铺垫,反应单一
-- C级:无铺垫,突兀
-- F级:硬编身份,逻辑矛盾
-
-### 第三步: 密度检查
-
-**推荐基线(滚动窗口)**:
-- **Per chapter**: 优先有爽点或同等兑现;允许过渡章低密度
-- **Every 5 chapters**: 建议 ≥ 1 组合爽点(2种模式叠加)
-- **Every 10-15 chapters**: 建议 ≥ 1 里程碑爽点(改变主角地位)
-
-**输出**:
-```
-第 X 章: [✓ 2 个爽点] 或 [△ 0 个爽点 - 连续出现时需预警]
-```
-
-### 第四步: 类型多样性检查
-
-**反单调要求**: 审查范围内单一类型不得超过 80%。
-
-**示例**:
-```
-Chapters 1-2:
-- 装逼打脸: 3 (75%) ✓
-- 越级反杀: 1 (25%)
-Mode diversity: Acceptable
-```
-
-vs.
-
-```
-Chapters 45-46:
-- 装逼打脸: 7 (87.5%) ✗ OVER-RELIANCE
-- 扮猪吃虎: 1 (12.5%)
-Mode diversity: Warning - Monotonous pacing
-```
-
-### 第五步: 执行质量评估
-
-对每个已识别的爽点,检查:
-
-1. **铺垫充分性**: 是否有充分的前期铺垫(至少1-2章)?
-2. **反转冲击**: 转折是否出人意料又合乎逻辑?
-3. **情绪回报**: 是否实现了读者情绪释放?
-4. **30/40/30 参考结构**: 结构是否清晰(不要求严格比例)?
-   - 30% 铺垫蓄势
-   - 40% 兑现执行
-   - 30% 微反转/余波
-5. **压扬比例**: 是否匹配题材?
-   - 传统爽文: 压3扬7
-   - 硬核正剧: 压5扬5
-   - 虐恋文: 压7扬3
-
-**质量评级**:
-- **A(优秀)**: 所有标准达标,执行有力,结构清晰
-- **B(良好)**: 多数标准达标,可能有轻微比例问题
-- **C(及格)**: 基本标准达标但结构偏弱
-- **F(失败)**: 爽点缺少铺垫突然出现,或逻辑不一致
-
-### 第六步: 生成报告
-
-```markdown
-# 爽点检查报告
-
-## 覆盖范围
-第 {N} 章 - 第 {M} 章
-
-## 密度检查
-- 第 {N} 章: ✓ 2 个爽点(装逼打脸 + 越级反杀)
-- 第 {M} 章: △ 0 个爽点 **[预警 - 连续出现时需补强]**
-
-**结论**: {通过/预警/未通过}(基于滚动窗口)
-
-## 类型分布
-- 装逼打脸: {count}({percent}%)
-- 扮猪吃虎: {count}({percent}%)
-- 越级反杀: {count}({percent}%)
-- 打脸权威: {count}({percent}%)
-- 反派翻车: {count}({percent}%)
-- 甜蜜超预期: {count}({percent}%)
-
-**结论**: {通过/预警}(单一类型 > 80% 时有单调风险)
-
-## 质量评级
-| 章节 | 爽点 | 模式 | 评级 | 30/40/30 | 压扬比 | 问题 |
-|------|------|------|------|---------|--------|------|
-| {N} | 主角被嘲讽后一招秒杀对手 | 装逼打脸 | A | ✓ | 压3扬7 | - |
-| {M} | 突然顿悟突破境界 | 越级反杀 | C | ✗ | 压1扬9 | 缺少铺垫,压扬比失衡 |
-
-**结论**: 平均评级 = {X}
-
-## 修复建议
-- [密度预警] 第 {M} 章低密度,建议补{mode}型爽点或同等兑现
-- [单调风险] 过度依赖{mode}型,建议增加{other_modes}
-- [质量问题] 第 {M} 章的爽点执行不足,需要补充{missing_element}
-- [结构偏弱] 爽点结构偏弱,建议补铺垫/兑现/余波中的缺项
-- [压扬比问题] 压扬比例不符合{genre}类型,建议调整为{ratio}
-
-## 综合评分
-**结论**: {通过/未通过} - {简要说明}
-```
-
-## 禁止事项
-
-❌ 忽略连续低密度章节且不预警
-❌ 忽略缺乏铺垫的突发爽点
-❌ 通过连续 5+ 章同类型爽点
-❌ 迪化误解中配角智商明显下线
-❌ 身份掉马无任何前期暗示
-
-## 成功标准
-
-- 滚动窗口密度保持健康(不连续低密度)
-- 类型分布显示多样性(单一类型不超过 80%)
-- 平均质量评级 ≥ B
-- 迪化误解的脑补需合理
-- 身份掉马需有铺垫
-- 报告包含可执行的修复建议
-
-## 输出格式增强
-
-```json
-{
-  "agent": "high-point-checker",
-  "chapter": 45,
-  "overall_score": 86,
-  "pass": true,
-  "issues": [],
-  "metrics": {
-    "cool_point_count": 2,
-    "cool_point_types": ["迪化误解", "身份掉马"],
-    "density_score": 8,
-    "type_diversity": 0.9,
-    "milestone_present": false,
-    "monotony_risk": false
-  },
-  "summary": "爽点密度达标,类型分布健康,执行质量稳定。"
-}
-```

+ 0 - 213
webnovel-writer/agents/ooc-checker.md

@@ -1,213 +0,0 @@
----
-name: ooc-checker
-description: 人物OOC检查,输出结构化报告供润色步骤参考
-tools: Read, Grep
-model: inherit
----
-
-# ooc-checker (人物OOC检查器)
-
-> **职责**: 角色完整性守卫者,防止 OOC(Out-Of-Character)违规。
-
-> **输出格式**: 遵循 `${CLAUDE_PLUGIN_ROOT}/references/checker-output-schema.md` 统一 JSON Schema
-
-## 检查范围
-
-**输入**: 单章或章节区间(如 `45` / `"45-46"`)
-
-**输出**: 角色行为分析、OOC 违规、人设漂移警告。
-
-## 执行流程
-
-### 第一步: 加载角色档案
-
-**并行读取**:
-1. `正文/` 下的目标章节
-2. `设定集/角色卡/`(所有角色档案)
-3. 前序章节作为行为基线(若审查章节 > 10)
-
-### 第二步: 提取角色档案
-
-**对每个主要角色,提取**:
-- **Personality traits** (性格): e.g., "隐忍冷静/嚣张狂妄/温柔体贴"
-- **Speech patterns** (说话风格): e.g., "言简意赅/喜欢嘲讽/礼貌用词"
-- **Core values** (价值观): e.g., "重视承诺/追求力量/保护弱者"
-- **Behavioral tendencies** (行为倾向): e.g., "三思而后行/冲动鲁莽/谨慎多疑"
-
-**角色档案示例**:
-```
-角色:林天(主角)
-性格:隐忍冷静、智谋深沉、不轻易暴露实力
-说话风格:言简意赅,很少废话,语气平淡
-价值观:重视家族荣誉,保护弱者
-行为倾向:三思而后行,善于隐藏真实意图
-```
-
-### 第三步: 行为采样
-
-**对每章,提取角色的动作和对话**:
-
-```
-第45章 - 林天行为采样:
-[对话] "你找死!" 林天怒吼一声,失去理智冲向对手
-[行动] 不顾一切地正面硬刚
-[情绪] 暴怒失控
-```
-
-### 第四步: OOC 检测(三级判定)
-
-#### 一级: 轻微偏离
-**定义**: 角色行为略有不同,但有合理的世界观内解释。
-
-**Examples**:
-```
-✓ Acceptable:
-角色:林天(平时冷静)
-场景:敌人威胁要杀他家人
-行为:罕见地暴怒
-判定:✓ 触及底线,情绪变化合理
-
-✓ Acceptable:
-角色:李雪(平时温柔)
-场景:主角生死关头
-行为:展现强势果断的一面
-判定:✓ 危机激发隐藏面,有前置铺垫
-```
-
-#### 二级: 中度失真
-**定义**: 角色行为不一致,缺乏充分的铺垫或解释。
-
-**Examples**:
-```
-⚠️ Warning:
-角色:林天(三思而后行)
-场景:普通挑衅
-行为:突然冲动鲁莽
-判定:⚠️ 缺少动机,需补充原因(如压力积累/特殊影响)
-
-⚠️ Warning:
-角色:慕容雪(高傲冷漠)
-场景:对路人甲
-行为:突然温柔体贴
-判定:⚠️ 性格转变过快,需铺垫(如特殊原因/渐进变化)
-```
-
-#### 三级: 严重崩坏
-**定义**: 角色行为与既定特征完全相反,且无任何解释。
-
-**Examples**:
-```
-❌ Violation:
-角色:反派(嚣张狂妄、智商在线)
-场景:与主角对峙
-行为:突然智商下线,犯低级错误(故意让主角翻盘)
-判定:❌ 反派智商崩坏,纯粹为剧情服务
-
-❌ Violation:
-角色:林天(隐忍冷静)
-场景:无特殊刺激
-行为:持续多章表现为冲动易怒
-判定:❌ 性格全面改变无解释,核心人设崩塌
-```
-
-### 第五步: 对话风格检查
-
-**校验对话一致性**:
-
-| Character Type | Expected Style | OOC Examples |
-|---------------|----------------|--------------|
-| **主角(冷静型)** | 言简意赅、语气平淡 | ❌ "哈哈哈!老子今天就让你见识见识!" (过度张扬) |
-| **反派(嚣张型)** | 嘲讽、轻蔑、自信 | ❌ "对不起...我错了..." (突然怯懦) |
-| **修仙者** | "阁下/道友/在下" | ❌ "牛逼/666/OMG" (现代网络用语) |
-
-### 第六步: 角色成长 vs. OOC
-
-**区分合理成长与 OOC**:
-
-```
-✓ Character Development:
-第1-10章:林天谨慎多疑(因为实力弱)
-第50章:林天开始自信果敢(实力提升+经历磨练)
-判定:✓ 合理成长,有渐进式铺垫
-
-❌ OOC:
-第10章:林天隐忍冷静
-第11章:林天突然变成话痨
-判定:❌ 无解释的性格突变,非成长而是失真
-```
-
-**成长检查清单**:
-- [ ] 性格转变有合理触发事件?
-- [ ] 转变过程有渐进式铺垫?
-- [ ] 转变后的行为与触发事件逻辑一致?
-
-### 第七步: 生成报告
-
-```markdown
-# 人物OOC检查报告
-
-## 覆盖范围
-第 {N} 章 - 第 {M} 章
-
-## 主要角色行为采样
-
-### 林天(主角)
-| 章节 | 行为/对话 | 人设匹配 | OOC 级别 |
-|------|----------|---------|---------|
-| {N} | "..." 冷静观察,未轻举妄动 | ✓ 符合"隐忍冷静" | 无 |
-| {M} | "你找死!"暴怒冲向对手 | ✗ 不符合"三思而后行" | ⚠️ 中度 |
-
-**OOC 分析**:
-- 第{M}章林天失去冷静,**缺少触发原因**
-- 建议补充:对手触及底线(如威胁家人)来合理化情绪爆发
-
-### 慕容雪(女配)
-| 章节 | 行为/对话 | 人设匹配 | OOC 级别 |
-|------|----------|---------|---------|
-| {M} | 突然对路人温柔体贴 | ✗ 不符合"高傲冷漠" | ⚠️ 中度 |
-
-**OOC 分析**:
-- 性格转变缺少铺垫,建议:
-  - 补充慕容雪性格变化的原因(如受主角影响)
-  - 或将此场景改为"表面冷漠实则关心"来保持人设
-
-## 对话风格检查
-| 角色 | 预期风格 | 发现违规 |
-|------|---------|---------|
-| 林天 | 言简意赅 | ✓ 无违规 |
-| 反派王少 | 嚣张嘲讽 | ✗ 第{M}章突然谦逊(智商下线)|
-
-## 性格转变检查
-| 角色 | 原有特征 | 当前特征 | 合理性 | 判定 |
-|------|---------|---------|--------|------|
-| 林天 | 谨慎 | 自信 | ✓ 实力提升+经历铺垫 | ✓ 合理成长 |
-| 慕容雪 | 高傲 | 温柔 | ✗ 无铺垫 | ❌ OOC |
-
-## 修复建议
-1. **修复第{M}章林天OOC**: 补充对手触及底线的情节
-2. **慕容雪性格转变**: 添加渐进式铺垫(3-5章)或调整此章表现
-3. **反派王少智商崩坏**: 修改对话,恢复嚣张狂妄但逻辑在线的人设
-
-## 综合评分
-**OOC 违规**:
-- 严重: {count}
-- 中度: {count}
-- 轻微: {count}
-
-**结论**: {通过/警告/未通过}
-**优先修复项**: {列出必须修复的严重OOC}
-```
-
-## 禁止事项
-
-❌ 通过存在严重 OOC 且未标记的章节(如反派智商下线)
-❌ 忽略角色对话风格违规
-❌ 混淆 OOC 与角色成长
-
-## 成功标准
-
-- 0 个严重 OOC 违规
-- 中度 OOC 有合理的世界观内解释
-- 角色成长是渐进且有动机的
-- 对话风格与既定档案匹配
-- 报告能区分 OOC 和合理成长

+ 0 - 215
webnovel-writer/agents/pacing-checker.md

@@ -1,215 +0,0 @@
----
-name: pacing-checker
-description: Strand Weave 节奏检查,输出结构化报告供润色步骤参考
-tools: Read, Grep, Bash
-model: inherit
----
-
-# pacing-checker (节奏检查器)
-
-> **职责**: 节奏分析师,执行 Strand Weave 平衡检查,防止读者疲劳。
-
-> **输出格式**: 遵循 `${CLAUDE_PLUGIN_ROOT}/references/checker-output-schema.md` 统一 JSON Schema
-
-## 检查范围
-
-**输入**: 单章或章节区间(如 `45` / `"45-46"`)
-
-**输出**: 情节线分布分析、平衡预警、节奏建议。
-
-## 执行流程
-
-### 第一步: 加载上下文
-
-**输入参数**:
-```json
-{
-  "project_root": "{PROJECT_ROOT}",
-  "storage_path": ".webnovel/",
-  "state_file": ".webnovel/state.json",
-  "chapter_file": "正文/第{NNNN}章-{title_safe}.md"
-}
-```
-
-`chapter_file` 应传实际章节文件路径;若当前项目仍使用旧格式 `正文/第{NNNN}章.md`,同样允许。
-
-**并行读取**:
-1. `正文/` 下的目标章节
-2. `{project_root}/.webnovel/state.json`(strand_tracker 历史)
-3. `大纲/`(理解预期弧线结构)
-
-**可选: 使用 status_reporter 进行自动化分析**:
-```bash
-python -X utf8 "${CLAUDE_PLUGIN_ROOT:?CLAUDE_PLUGIN_ROOT is required}/scripts/webnovel.py" --project-root "${PROJECT_ROOT}" status -- --focus strand
-```
-
-### 第二步: 章节情节线分类
-
-**对每章,识别主导情节线**:
-
-| Strand | Indicators | Examples |
-|--------|-----------|----------|
-| **Quest** (主线) | 战斗/任务/探索/升级/打怪 | 参加宗门大比、探索秘境、击败反派 |
-| **Fire** (感情线) | 情感关系/暧昧/友情/羁绊 | 与李雪的感情发展、师徒情深、兄弟义气 |
-| **Constellation** (世界观线) | 势力关系/阵营/社交网络/揭示世界观 | 新势力登场、修仙界格局展示、宗门政治 |
-
-**分类规则**:
-- 一章可以有多条情节线的**底色**,但只有**一条主导**
-- 主导 = 占据章节内容 ≥ 60%
-
-**Example**:
-```
-第45章:主角参加大比(Quest 80%)+ 李雪担心主角(Fire 20%)
-→ Dominant: Quest
-
-第46章:主角与李雪约会(Fire 70%)+ 揭示血煞门阴谋(Constellation 30%)
-→ Dominant: Fire
-```
-
-### 第三步: 平衡检查(Strand Weave 违规)
-
-**从 state.json 加载 strand_tracker**:
-```json
-{
-  "strand_tracker": {
-    "last_quest_chapter": 46,
-    "last_fire_chapter": 42,
-    "last_constellation_chapter": 38,
-    "history": [
-      {"chapter": 45, "dominant": "quest"},
-      {"chapter": 46, "dominant": "quest"}
-    ]
-  }
-}
-```
-
-**应用警告阈值**:
-
-| 违规类型 | 触发条件 | 严重度 | 影响 |
-|-----------|-----------|----------|--------|
-| **Quest 过载** | 连续 5+ 章 Quest 主导 | High | 战斗疲劳,缺少情感深度 |
-| **Fire 干旱** | 距上次 Fire > 10 章 | Medium | 人物关系停滞 |
-| **Constellation 缺席** | 距上次 Constellation > 15 章 | Low | 世界观单薄 |
-
-**违规示例**:
-```
-⚠️ Quest Overload (连续7章)
-Chapters 40-46 全部为 Quest 主导
-→ Impact: 读者疲劳,建议第47章安排感情戏或世界观扩展
-
-⚠️ Fire Drought (已12章未出现)
-Last Fire chapter: 34 | Current: 46 | Gap: 12 chapters
-→ Impact: 李雪等角色存在感降低,建议补充互动场景
-
-✓ Constellation Acceptable
-Last Constellation: 38 | Current: 46 | Gap: 8 chapters
-```
-
-### 第四步: 节奏标准
-
-**每10章理想分布与缺席阈值**:
-
-| Strand | 理想占比 | 最大缺席 | 超限影响 |
-|--------|---------|---------|---------|
-| Quest (主线) | 55-65% | 5 章连续 | 战斗疲劳,缺少情感深度 |
-| Fire (感情线) | 20-30% | 10 章 | 人物关系停滞 |
-| Constellation (世界观线) | 10-20% | 15 章 | 世界观单薄 |
-
-### 第五步: 历史趋势分析
-
-**若 state.json 包含 20+ 章历史数据**:
-
-生成情节线分布图:
-```
-Chapters 1-20 Strand Distribution:
-Quest:         ████████████░░░░░░░░  60% (12 chapters)
-Fire:          ████░░░░░░░░░░░░░░░░  20% (4 chapters)
-Constellation: ████░░░░░░░░░░░░░░░░  20% (4 chapters)
-
-结论:✓ 节奏均衡(符合理想比例)
-```
-
-vs.
-
-```
-Chapters 21-40 Strand Distribution:
-Quest:         ███████████████████░  95% (19 chapters)
-Fire:          █░░░░░░░░░░░░░░░░░░░   5% (1 chapter)
-Constellation: ░░░░░░░░░░░░░░░░░░░░   0% (0 chapters)
-
-结论:✗ 严重失衡(Quest 过载,节奏单调)
-```
-
-### 第六步: 生成报告
-
-```markdown
-# 节奏检查报告
-
-## 覆盖范围
-第 {N} 章 - 第 {M} 章
-
-## 当前章节主导情节线
-| 章节 | 主导线 | 底色 | 强度 |
-|------|--------|------|------|
-| {N} | Quest | Fire(20%)| 高(战斗密集)|
-| {M} | Quest | - | 中等 |
-
-## Strand 平衡检查
-### Quest 线(主线)
-- 最近出现: 第 {X} 章
-- 连续章数: {count}
-- **状态**: {✓ 正常 / ⚠️ 预警 / ✗ 过载}
-
-### Fire 线(情感线)
-- 最近出现: 第 {Y} 章
-- 距上次间隔: {count} 章
-- **状态**: {✓ 正常 / ⚠️ 预警 / ✗ 干旱}
-
-### Constellation 线(世界观线)
-- 最近出现: 第 {Z} 章
-- 距上次间隔: {count} 章
-- **状态**: {✓ 正常 / ⚠️ 预警}
-
-## 历史趋势(需 ≥ 20 章数据)
-最近 20 章分布:
-- Quest: {X}%({count} 章)
-- Fire: {Y}%({count} 章)
-- Constellation: {Z}%({count} 章)
-
-**趋势**: {均衡 / Quest偏重 / Fire不足 / ...}
-
-## 修复建议
-- [Quest 过载] 连续{count}章Quest主导,建议在第{next}章安排:
-  - 与{角色}的感情发展场景(Fire)
-  - 或揭示{势力/世界观元素}(Constellation)
-
-- [Fire 干旱] 距上次Fire已{count}章,建议补充:
-  - 与李雪/师父/伙伴的互动
-  - 不必是专门的感情章,可作为底色穿插
-
-- [Constellation 间隔] 世界观扩展不足,建议:
-  - 揭示新势力或修仙界格局
-  - 展示新的修炼体系或设定
-
-## 下一章节奏建议
-基于当前平衡状态,第 {next} 章应优先:
-**主导**: {线}(因为距上次{gap}章)
-**底色**: {线}
-
-## 综合评分
-**节奏总评**: {健康/预警/危险}
-**读者疲劳风险**: {低/中/高}
-```
-
-## 禁止事项
-
-❌ 通过连续 5+ 章 Quest 主导且不预警
-❌ 忽略 Fire 干旱超过 10 章
-❌ 接受 20+ 章中完全相同的节奏模式
-
-## 成功标准
-
-- 最近 10 章内单一情节线不超过 70%
-- 所有情节线在各自阈值内至少出现一次
-- 报告提供可执行的下一章建议
-- 趋势分析显示分布均衡(若有足够历史数据)

+ 0 - 317
webnovel-writer/agents/reader-pull-checker.md

@@ -1,317 +0,0 @@
----
-name: reader-pull-checker
-description: 追读力检查器,评估钩子/微兑现/约束分层,支持 Override Contract
-tools: Read, Grep, Bash
-model: inherit
----
-
-# reader-pull-checker (追读力检查器)
-
-> **职责**: 审查"读者为什么会点下一章",执行 Hard/Soft 约束分层。
-
-## 核心参考
-
-- **分类法**: `${CLAUDE_PLUGIN_ROOT}/references/reading-power-taxonomy.md`
-- **题材画像**: `${CLAUDE_PLUGIN_ROOT}/references/genre-profiles.md`
-- **章节追读力数据**: `index.db → chapter_reading_power`
-- **上章钩子**: `state.json → chapter_meta` 或 `index.db`
-
-## 输入
-- 章节正文(实际章节文件路径,优先 `正文/第{NNNN}章-{title_safe}.md`,旧格式 `正文/第{NNNN}章.md` 仍兼容)
-- 上章钩子与模式(从 `state.json → chapter_meta` 或 `index.db`)
-- 题材 Profile(从 `state.json → project.genre`)
-- 是否为过渡章标记
-
-## 输出格式
-
-```json
-{
-  "agent": "reader-pull-checker",
-  "chapter": 100,
-  "overall_score": 85,
-  "pass": true,
-  "issues": [],
-  "hard_violations": [],
-  "soft_suggestions": [
-    {
-      "id": "SOFT_HOOK_STRENGTH",
-      "severity": "medium",
-      "location": "章末",
-      "description": "钩子强度为weak,建议提升至medium",
-      "suggestion": "将'回去休息了'改为悬念/危机",
-      "can_override": true,
-      "allowed_rationales": ["TRANSITIONAL_SETUP", "CHARACTER_CREDIBILITY"]
-    }
-  ],
-  "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
-  },
-  "summary": "硬约束通过,钩子强度偏弱,建议增强章末期待。",
-  "override_eligible": true
-}
-```
-
----
-
-## 一、约束分层
-
-### 1.1 硬约束
-
-> **违反 = 必须修复,不可申诉跳过**
-
-| ID | 约束名称 | 触发条件 | severity |
-|----|---------|---------|----------|
-| HARD-001 | 可读性底线 | 读者无法理解"发生了什么/谁/为什么" | critical |
-| HARD-002 | 承诺违背 | 上章明确承诺在本章完全无回应 | critical |
-| HARD-003 | 节奏灾难 | 连续N章无任何推进(N由profile决定) | critical |
-| HARD-004 | 冲突真空 | 整章无问题/目标/代价 | high |
-
-**硬约束违规输出**:
-```json
-{
-  "id": "HARD-002",
-  "severity": "critical",
-  "location": "全章",
-  "description": "上章钩子'敌人即将到来'完全未在本章提及",
-  "must_fix": true,
-  "fix_suggestion": "在开头或中段回应敌人威胁"
-}
-```
-
-### 1.2 软建议
-
-> **违反 = 可申诉,但需记录 `Override Contract` 并承担债务**
-
-| ID | 约束名称 | 默认期望 | 可覆盖 |
-|----|---------|---------|-----------|
-| SOFT_NEXT_REASON | 下章动机 | 读者能明确“为何点下一章” | ✓ |
-| SOFT_HOOK_ANCHOR | 期待锚点有效性 | 有未闭合问题或明确期待(章末/后段均可) | ✓ |
-| SOFT_HOOK_STRENGTH | 钩子强度 | 题材profile baseline | ✓ |
-| SOFT_HOOK_TYPE | 钩子类型 | 匹配题材偏好 | ✓ |
-| SOFT_MICROPAYOFF | 微兑现数量 | ≥ profile.min_per_chapter | ✓ |
-| SOFT_PATTERN_REPEAT | 模式重复 | 避免连续3章同型 | ✓ |
-| SOFT_EXPECTATION_OVERLOAD | 期待过载 | 新增期待 ≤ 2 | ✓ |
-| SOFT_RHYTHM_NATURALNESS | 节奏自然性 | 避免固定字距机械打点 | ✓ |
-
-**软建议输出**:
-```json
-{
-  "id": "SOFT_MICROPAYOFF",
-  "severity": "medium",
-  "location": "全章",
-  "description": "本章微兑现0个,题材要求≥1",
-  "suggestion": "添加能力兑现或认可兑现",
-  "can_override": true,
-  "allowed_rationales": ["TRANSITIONAL_SETUP", "ARC_TIMING"]
-}
-```
-
----
-
-## 二、钩子类型扩展
-
-### 2.1 完整钩子类型
-
-| 类型 | 标识 | 驱动力 |
-|------|------|--------|
-| 危机钩 | Crisis Hook | 危险逼近,读者担心 |
-| 悬念钩 | Mystery Hook | 信息缺口,读者好奇 |
-| 情绪钩 | Emotion Hook | 强情绪触发(愤怒/心疼/心动) |
-| 选择钩 | Choice Hook | 两难抉择,读者想知道选择 |
-| 渴望钩 | Desire Hook | 好事将至,读者期待 |
-
-### 2.2 钩子强度
-
-| 强度 | 适用场景 | 特征 |
-|------|---------|------|
-| **strong** | 卷末/关键转折/大冲突前 | 读者必须立刻知道 |
-| **medium** | 普通剧情章 | 读者想知道,但可等 |
-| **weak** | 过渡章/铺垫章 | 维持阅读惯性 |
-
----
-
-## 三、微兑现检测
-
-### 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 何时可覆盖
-
-当 `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: 硬约束检查
-1. 检查可读性(关键信息完整性)
-2. 检查上章钩子兑现
-3. 检查节奏停滞
-4. 检查冲突存在
-
-**任何硬约束违规 → 立即标记为必须修复**
-
-### Step 3: 钩子分析
-1. 识别本章期待锚点(优先章末,允许后段)
-2. 评估钩子强度与有效性
-3. 对比题材偏好与章节类型
-
-### Step 4: 微兑现扫描
-1. 识别章内微兑现
-2. 统计数量和类型
-3. 对比题材要求
-
-### Step 5: 模式重复检测
-1. 获取最近N章模式
-2. 检测钩子类型重复
-3. 检测开头模式重复
-
-### Step 6: 软建议评估
-1. 汇总所有软建议
-2. 标注可覆盖的建议
-3. 列出允许的 `rationale` 类型
-
-### Step 7: 生成报告
-1. 计算总分
-2. 输出结构化JSON
-3. 提供修复建议
-
----
-
-## 七、评分规则
-
-### 7.1 硬约束违规
-- 任何硬约束违规 → 直接未通过
-- 必须修复后重新审核
-
-### 7.2 软评分(无硬约束违规时)
-
-| 得分 | 结果 |
-|------|------|
-| 85+ | 通过 |
-| 70-84 | 通过(有警告) |
-| 50-69 | 条件通过(可通过 `Override`)|
-| <50 | 未通过 |
-
-### 7.3 软评分计算
-
-| 检查项 | 权重 | 问题类型 |
-|--------|------|----------|
-| 下章动机清晰 | 20% | NEXT_REASON_WEAK |
-| 期待锚点有效(章末/后段) | 15% | WEAK_HOOK_ANCHOR |
-| 钩子强度适当 | 10% | WEAK_HOOK |
-| 微兑现达标 | 20% | LOW_MICROPAYOFF |
-| 模式不重复 | 15% | PATTERN_REPEAT |
-| 新增期待≤2个 | 10% | EXPECTATION_OVERLOAD |
-| 钩子类型匹配题材 | 5% | TYPE_MISMATCH |
-| 节奏自然性(非机械打点) | 5% | MECHANICAL_PACING |
-
----
-
-## 八、与 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)
-   ```
-
----
-
-## 九、成功标准
-
-- [ ] 无硬约束违规
-- [ ] 软评分 ≥ 70(或有有效 `Override`)
-- [ ] 存在可感知的未闭合问题/期待锚点(章末或后段)
-- [ ] 微兑现数量达标(或有 `Override`)
-- [ ] 无连续3章以上同型
-- [ ] 输出清晰的"下章动机"

+ 0 - 168
webnovel-writer/references/checker-output-schema.md

@@ -1,168 +0,0 @@
-# Checker 统一输出 Schema
-
-所有审查 Agent 应遵循此统一输出格式,便于自动化汇总和趋势分析。
-
-说明:
-- 单章写作场景默认使用 `chapter` 字段。
-- 若需要兼容区间统计,可在聚合层补充 `start_chapter/end_chapter`,不要求单个 checker 必填。
-- 允许扩展字段,但不得删除或替代本文件定义的必填字段。
-
-## 标准 JSON Schema
-
-```json
-{
-  "agent": "checker-name",
-  "chapter": 100,
-  "overall_score": 85,
-  "pass": true,
-  "issues": [
-    {
-      "id": "ISSUE_001",
-      "type": "问题类型",
-      "severity": "critical|high|medium|low",
-      "location": "位置描述",
-      "description": "问题描述",
-      "suggestion": "修复建议",
-      "can_override": false
-    }
-  ],
-  "metrics": {},
-  "summary": "简短总结"
-}
-```
-
-## 字段说明
-
-| 字段 | 类型 | 必填 | 说明 |
-|------|------|------|------|
-| `agent` | string | ✅ | Agent 名称 |
-| `chapter` | int | ✅ | 章节号 |
-| `overall_score` | int | ✅ | 总分 (0-100) |
-| `pass` | bool | ✅ | 是否通过 |
-| `issues` | array | ✅ | 问题列表 |
-| `metrics` | object | ✅ | Agent 特定指标 |
-| `summary` | string | ✅ | 简短总结 |
-
-扩展字段约定(可选):
-- 可附加 checker 私有字段(如 `hard_violations`、`soft_suggestions`、`override_eligible`)。
-- 私有字段用于增强解释,不用于替代 `issues`。
-
-## 问题严重度定义
-
-| severity | 含义 | 处理方式 |
-|----------|------|----------|
-| `critical` | 严重问题,必须修复 | 润色步骤必须修复 |
-| `high` | 高优先级问题 | 优先修复 |
-| `medium` | 中等问题 | 建议修复 |
-| `low` | 轻微问题 | 可选修复 |
-
-## 各 Checker 特定 metrics
-
-### reader-pull-checker
-```json
-{
-  "metrics": {
-    "hook_present": true,
-    "hook_type": "危机钩",
-    "hook_strength": "strong",
-    "prev_hook_fulfilled": true,
-    "micropayoff_count": 2,
-    "micropayoffs": ["能力兑现", "认可兑现"],
-    "is_transition": false,
-    "debt_balance": 0.0
-  }
-}
-```
-
-### high-point-checker
-```json
-{
-  "metrics": {
-    "cool_point_count": 2,
-    "cool_point_types": ["装逼打脸", "越级反杀"],
-    "density_score": 8,
-    "type_diversity": 0.8,
-    "milestone_present": false
-  }
-}
-```
-
-### consistency-checker
-```json
-{
-  "metrics": {
-    "power_violations": 0,
-    "location_errors": 1,
-    "timeline_issues": 0,
-    "entity_conflicts": 0
-  }
-}
-```
-
-### ooc-checker
-```json
-{
-  "metrics": {
-    "severe_ooc": 0,
-    "moderate_ooc": 1,
-    "minor_ooc": 2,
-    "speech_violations": 0,
-    "character_development_valid": true
-  }
-}
-```
-
-### continuity-checker
-```json
-{
-  "metrics": {
-    "transition_grade": "B",
-    "active_threads": 3,
-    "dormant_threads": 1,
-    "forgotten_foreshadowing": 0,
-    "logic_holes": 0,
-    "outline_deviations": 0
-  }
-}
-```
-
-### pacing-checker
-```json
-{
-  "metrics": {
-    "dominant_strand": "quest",
-    "quest_ratio": 0.6,
-    "fire_ratio": 0.25,
-    "constellation_ratio": 0.15,
-    "consecutive_quest": 3,
-    "fire_gap": 4,
-    "constellation_gap": 8,
-    "fatigue_risk": "low"
-  }
-}
-```
-
-## 汇总格式
-
-Step 3 完成后,输出汇总 JSON:
-
-```json
-{
-  "chapter": 100,
-  "checkers": {
-    "reader-pull-checker": {"score": 85, "pass": true, "critical": 0, "high": 1},
-    "high-point-checker": {"score": 80, "pass": true, "critical": 0, "high": 0},
-    "consistency-checker": {"score": 90, "pass": true, "critical": 0, "high": 0},
-    "ooc-checker": {"score": 75, "pass": true, "critical": 0, "high": 1},
-    "continuity-checker": {"score": 85, "pass": true, "critical": 0, "high": 0},
-    "pacing-checker": {"score": 80, "pass": true, "critical": 0, "high": 0}
-  },
-  "overall": {
-    "score": 82.5,
-    "pass": true,
-    "critical_total": 0,
-    "high_total": 2,
-    "can_proceed": true
-  }
-}
-```

+ 0 - 137
webnovel-writer/skills/webnovel-write/references/step-3-review-gate.md

@@ -1,137 +0,0 @@
-# Step 3 Review Gate
-
-## 调用约束(硬规则)
-
-- 必须使用 `Task` 调用审查 subagent,禁止主流程直接内联“自审结论”。
-- 审查任务可并行发起,必须在全部返回后统一聚合。
-- `overall_score` 必须来自聚合结果,不可主观估分。
-- 单章写作场景下,统一传入:`{chapter, chapter_file, project_root}`。
-
-## 审查路由模式
-
-- 标准/`--fast`:`auto` 路由(核心 3 个 + 条件命中)。
-- `--minimal`:固定核心 3 个(不启用条件审查器)。
-
-核心审查器(始终执行):
-- `consistency-checker`
-- `continuity-checker`
-- `ooc-checker`
-
-条件审查器(仅 `auto` 命中时执行):
-- `reader-pull-checker`
-- `high-point-checker`
-- `pacing-checker`
-
-## Auto 路由判定信号
-
-输入信号来源:
-1. Step 1 内置合同(历史文件名仍为 `step-1.5-contract.md`,内容包括是否过渡章、追读力设计、核心冲突)。
-2. 本章正文(战斗/反转/高光/章末未闭合问题等信号)。
-3. 大纲标签(关键章/高潮章/卷末章/转场章)。
-4. 最近章节节奏(连续主线、情感线断档、世界观线断档)。
-
-路由规则:
-- `reader-pull-checker`:当满足任一条件时启用
-  - 非过渡章;
-  - 有明确未闭合问题/期待锚点;
-  - 用户显式要求“追读力审查”。
-- `high-point-checker`:当满足任一条件时启用
-  - 关键章/高潮章/卷末章;
-  - 正文出现战斗、反杀、打脸、身份揭露、大反转等高光信号。
-- `pacing-checker`:当满足任一条件时启用
-  - 章号 >= 10;
-  - 最近章节存在明显节奏失衡风险;
-  - 用户显式要求“节奏审查”。
-
-## Task 调用模板(示意)
-
-```text
-selected = ["consistency-checker", "continuity-checker", "ooc-checker"]
-
-if mode != "minimal":
-  if trigger_reader_pull: selected.append("reader-pull-checker")
-  if trigger_high_point: selected.append("high-point-checker")
-  if trigger_pacing: selected.append("pacing-checker")
-
-parallel Task(agent, {chapter, chapter_file, project_root}) for agent in selected
-```
-
-## 输出契约(统一)
-
-每个 checker 返回值必须遵循 `${CLAUDE_PLUGIN_ROOT}/references/checker-output-schema.md`:
-- 必含:`agent`、`chapter`、`overall_score`、`pass`、`issues`、`metrics`、`summary`
-- 允许扩展字段(如 `hard_violations`、`soft_suggestions`),但不得替代必填字段
-
-聚合输出最小字段:
-- `chapter`(单章)
-- `start_chapter`、`end_chapter`(单章时二者都等于 `chapter`)
-- `selected_checkers`
-- `overall_score`
-- `severity_counts`
-- `critical_issues`
-- `issues`(扁平化聚合)
-- `dimension_scores`(按已启用 checker 计算)
-
-## 汇总输出模板
-
-```text
-审查汇总 - 第 {chapter_num} 章
-- 已启用审查器: {list}
-- 严重问题: {N} 个
-- 高优先级问题: {N} 个
-- 综合评分: {score}
-- 可进入润色: {是/否}
-```
-
-## 审查指标落库(必做)
-
-```bash
-python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" index save-review-metrics --data "@${PROJECT_ROOT}/.webnovel/tmp/review_metrics.json"
-```
-
-review_metrics 文件字段约束(当前工作流约定只传以下字段):
-- `start_chapter`(int)、`end_chapter`(int):单章时二者相等
-- `overall_score`(float):必填
-- `dimension_scores`(Dict[str, float]):按已启用 checker 计算
-- `severity_counts`(Dict[str, int]):键为 critical / high / medium / low
-- `critical_issues`(List[str])
-- `report_file`(str)
-- `notes`(str):在当前执行契约中必须是单个字符串;`selected_checkers`、`timeline_gate`、`anti_ai_force_check` 等扩展信息统一压成单行文本写入此字段,不得作为独立顶层键传入
-- 当前工作流不额外传入其它顶层字段;脚本侧未在此处做新增硬校验
-
-## 进入 Step 4 前闸门
-
-- `overall_score` 已生成。
-- `save-review-metrics` 已成功。
-- 审查报告中的 `issues`、`severity_counts` 可被 Step 4 直接消费。
-- **时间线闸门(新增)**:若存在 `TIMELINE_ISSUE` 且 `severity >= high`,禁止进入 Step 4/5,必须先修复。
-
-### 时间线闸门规则
-
-**Hard Block(必须修复才能继续)**:
-- `TIMELINE_ISSUE` + `severity = critical`(倒计时算术错误)
-- `TIMELINE_ISSUE` + `severity = high`(事件先后矛盾/年龄冲突/时间回跳/大跨度无过渡)
-
-**Soft Warning(建议修复但可继续)**:
-- `TIMELINE_ISSUE` + `severity = medium`(时间锚点缺失)
-- `TIMELINE_ISSUE` + `severity = low`(轻微时间模糊)
-
-**闸门判定逻辑**:
-```text
-timeline_issues = filter(issues, type="TIMELINE_ISSUE")
-critical_timeline = filter(timeline_issues, severity in ["critical", "high"])
-
-if len(critical_timeline) > 0:
-    BLOCK: "存在 {len(critical_timeline)} 个严重时间线问题,必须修复后才能进入润色步骤"
-    for issue in critical_timeline:
-        print(f"- 第{issue.chapter}章: {issue.description}")
-    return BLOCKED
-else:
-    通过: "时间线检查通过"
-```
-
-**修复指引**:
-- 倒计时错误 → 修正倒计时推进,确保 D-N → D-(N-1) 连续
-- 时间回跳 → 添加闪回标记,或调整时间锚点
-- 大跨度无过渡 → 添加时间过渡句/段,或插入过渡章
-- 事件先后矛盾 → 调整事件发生顺序或添加时间跳跃说明