Procházet zdrojové kódy

refactor(v5.4.1): Checker分层 + Context精简

主要改动:
- Step 3: 默认4个核心Checker,关键章加high-point/pacing
- Context Agent: 10章节 → 7章节
- 债务利息默认关闭
- 详细模板移到 workflow-details.md

净变化: +230, -767 行

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
lingfengQAQ před 4 měsíci
rodič
revize
b0bbf5cb36

+ 1 - 1
.claude/agents/consistency-checker.md

@@ -176,7 +176,7 @@ python -m data_modules.index_manager mark-invalid \
   --reason "{问题描述}" \
   --marked-by consistency-checker \
   --chapter {current_chapter} \
-  --project-root "."
+  --project-root "{PROJECT_ROOT}"
 ```
 
 > 注意:自动标记仅为 `pending`,需用户确认后才生效。

+ 37 - 183
.claude/agents/context-agent.md

@@ -1,16 +1,13 @@
 ---
 name: context-agent
-description: 上下文搜集Agent (v5.4),输出创作任务书(人话版),集成追读力设计、题材Profile、债务状态
+description: 上下文搜集Agent (v5.4),输出精简创作任务书(7板块),聚焦可直接开写的信息
 tools: Read, Grep, Bash
 ---
 
 # context-agent (上下文搜集Agent v5.4)
 
-> **Role**: 创作任务书生成器。目标不是堆信息,而是给写作"能直接开写"的明确指令。
->
-> **Philosophy**: 按需召回 + 推断补全,保证"接住上章、带出情绪、留出钩子"。
->
-> **v5.3 引入(v5.4 沿用)**: 追读力设计块、题材Profile引用、债务状态提醒。
+> **Role**: 创作任务书生成器。目标是“能直接开写”,不堆信息。
+> **Philosophy**: 按需召回 + 推断补全,确保接住上章、场景清晰、留出钩子。
 
 ## 核心参考
 
@@ -28,20 +25,16 @@ tools: Read, Grep, Bash
 }
 ```
 
-## 输出格式:创作任务书(人话版)
-
-必须按以下 **10 个章节** 输出(v5.3 增加 2 个,v5.4 沿用):
+## 输出格式:创作任务书(7个板块)
 
 1. **本章核心任务**(冲突一句话、必须完成、绝对不能)
 2. **接住上章**(上章钩子、读者期待、开头必须)
 3. **出场角色**(状态、动机、情绪底色、说话风格、红线)
 4. **场景与力量约束**(地点、可用能力、禁用能力)
-5. **风格指导**(本章类型、参考样本、最近模式、本章建议、近期审查趋势)
-6. **伏笔管理**(必须处理、可选提及)
-7. **连贯性检查点**(时间、位置、情绪)
-8. **章末钩子设置**(建议类型、禁止事项)
-9. **追读力设计**(v5.3 引入)
-10. **债务与Override状态**(v5.3 引入)
+5. **风格指导**(本章类型、参考样本、最近模式、本章建议)
+6. **连续性与伏笔**(时间/位置/情绪连贯;必须处理/可选伏笔)
+7. **追读力策略**(章末钩子类型+强度、微兑现建议、差异化提示)
+   - 如存在债务/Override,仅在此板块补充“债务状态/偿还建议”。
 
 ---
 
@@ -51,15 +44,14 @@ tools: Read, Grep, Bash
 |------|---------|-------------|
 | 上章钩子 | `chapter_meta[NNNN].hook` 或 `chapter_reading_power` | `{type: "无", content: "上章无明确钩子", strength: "weak"}` |
 | 最近3章模式 | `chapter_meta` 或 `chapter_reading_power` | 空数组,不做重复检查 |
-| 上章结束情绪 | `chapter_meta[NNNN].ending.emotion` | "未知",提示写作时自行判断 |
+| 上章结束情绪 | `chapter_meta[NNNN].ending.emotion` | "未知"(提示自行判断) |
 | 角色动机 | 从大纲+角色状态推断 | **必须推断,无默认值** |
 | 题材Profile | `state.json → project.genre` | 默认 "shuangwen" |
 | 当前债务 | `index.db → chase_debt` | 0 |
-| 近期审查趋势 | `index.db → review_metrics` | 无数据则跳过 |
 
 **缺失处理**:
-- 若 `chapter_meta` 不存在(如第1章),跳过"接住上章"部分
-- 最近3章数据不完整时,只用现有数据做重复检查
+- 若 `chapter_meta` 不存在(如第1章),跳过“接住上章”
+- 最近3章数据不完整时,只用现有数据做差异化检查
 
 **章节编号规则**: 4位数字,如 `0001`, `0099`, `0100`
 
@@ -69,192 +61,54 @@ tools: Read, Grep, Bash
 
 - `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
+- `大纲/` 与 `设定集/`
 
 ---
 
-## 执行流程
+## 执行流程(精简版)
 
 ### 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
-# 从 state.json 获取题材
-# 加载对应的 genre profile 配置
-cat ".claude/references/genre-profiles.md"
+python -m data_modules.context_manager --chapter {NNNN} --project-root "{project_root}"
 ```
 
-提取当前题材的:
-- 偏好钩子类型
-- 偏好爽点模式
-- 微兑现要求
-- 节奏红线阈值
-
-### 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.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 "."
-```
+### Step 1: 读取大纲与状态
+- 大纲:`大纲/卷N/第XXX章.md` 或 `大纲/第{卷}卷-详细大纲.md`
+- `state.json`:progress / protagonist_state / chapter_meta / project.genre
 
-### Step 5: 查询债务状态
+### Step 2: 追读力与债务(按需)
 ```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 "."
+python -m data_modules.index_manager get-recent-reading-power --limit 5 --project-root "{project_root}"
+python -m data_modules.index_manager get-pattern-usage-stats --last-n 20 --project-root "{project_root}"
+python -m data_modules.index_manager get-hook-type-stats --last-n 20 --project-root "{project_root}"
+python -m data_modules.index_manager get-debt-summary --project-root "{project_root}"
 ```
 
-### Step 6: 来源标注(人读)
-- 对所有事实性引用追加来源标注,例如:
-  - `【来源: summaries/ch0100.md】`
-  - `【来源: 正文/第0100章.md#scene_2】`
-- 若为推断信息,明确标注"推断"。
-
-### Step 7: 查询实体与关系(index.db)
+### Step 3: 实体与最近出场
 ```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 "."
+python -m data_modules.index_manager get-core-entities --project-root "{project_root}"
+python -m data_modules.index_manager recent-appearances --limit 20 --project-root "{project_root}"
 ```
 
-### Step 8: 读取最近摘要
-- 优先读取 `.webnovel/summaries/ch{NNNN}.md`
+### Step 4: 摘要与推断补全
+- 优先读取 `.webnovel/summaries/ch{NNNN-1}.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个微兑现作为缓冲。
+### Step 5: 组装任务书
+输出 7 个板块的创作任务书。
 
 ---
 
 ## 成功标准
 
-1. ✅ 创作任务书包含 10 个章节
-2. ✅ 上章钩子与读者期待明确
+1. ✅ 创作任务书包含 7 个板块
+2. ✅ 上章钩子与读者期待明确(若存在)
 3. ✅ 角色动机/情绪为推断结果(非空)
-4. ✅ 最近3章模式已对比,给出规避建议
-5. ✅ 章末钩子建议类型明确(匹配题材)
-6. ✅ 追读力设计块完整
-7. ✅ 债务状态已查询并提醒
+4. ✅ 最近模式已对比,给出差异化建议
+5. ✅ 章末钩子建议类型明确

+ 13 - 13
.claude/agents/data-agent.md

@@ -67,16 +67,16 @@ tools: Read, Write, Bash
 使用 Bash 工具从 index.db 查询已有实体:
 ```bash
 # v5.1: 从 SQLite 获取核心实体
-python -m data_modules.index_manager get-core-entities --project-root "."
+python -m data_modules.index_manager get-core-entities --project-root "{project_root}"
 
 # v5.1: 获取实体别名
-python -m data_modules.index_manager get-aliases --entity "xiaoyan" --project-root "."
+python -m data_modules.index_manager get-aliases --entity "xiaoyan" --project-root "{project_root}"
 
 # 查询最近出场记录
-python -m data_modules.index_manager recent-appearances --limit 20 --project-root "."
+python -m data_modules.index_manager recent-appearances --limit 20 --project-root "{project_root}"
 
 # v5.1: 按别名查找实体(一对多)
-python -m data_modules.index_manager get-by-alias --alias "萧炎" --project-root "."
+python -m data_modules.index_manager get-by-alias --alias "萧炎" --project-root "{project_root}"
 ```
 
 ### Step B: AI 实体提取
@@ -97,15 +97,15 @@ python -m data_modules.index_manager get-by-alias --alias "萧炎" --project-roo
 
 **写入 index.db (实体/别名/状态变化/关系)**:
 ```bash
-python -m data_modules.index_manager upsert-entity --data '{...}' --project-root "."
-python -m data_modules.index_manager register-alias --alias "红衣女子" --entity "hongyi_girl" --type "角色" --project-root "."
-python -m data_modules.index_manager record-state-change --data '{...}' --project-root "."
-python -m data_modules.index_manager upsert-relationship --data '{...}' --project-root "."
+python -m data_modules.index_manager upsert-entity --data '{...}' --project-root "{project_root}"
+python -m data_modules.index_manager register-alias --alias "红衣女子" --entity "hongyi_girl" --type "角色" --project-root "{project_root}"
+python -m data_modules.index_manager record-state-change --data '{...}' --project-root "{project_root}"
+python -m data_modules.index_manager upsert-relationship --data '{...}' --project-root "{project_root}"
 ```
 
 **更新精简版 state.json**:
 ```bash
-python -m data_modules.state_manager process-chapter --chapter 100 --data '{...}' --project-root "."
+python -m data_modules.state_manager process-chapter --chapter 100 --data '{...}' --project-root "{project_root}"
 ```
 
 写入内容 (v5.2 引入):
@@ -156,7 +156,7 @@ python -m data_modules.rag_adapter index-chapter \
   --chapter 100 \
   --scenes '[...]' \
   --summary "本章摘要文本" \
-  --project-root "."
+  --project-root "{project_root}"
 ```
 
 **父子索引规则 (v1.2)**:
@@ -174,14 +174,14 @@ if review_score >= 80:
 ```
 
 ```bash
-python -m data_modules.style_sampler extract --chapter 100 --score 85 --scenes '[...]' --project-root "."
+python -m data_modules.style_sampler extract --chapter 100 --score 85 --scenes '[...]' --project-root "{project_root}"
 ```
 
 ### Step I: 债务利息计算(v5.4 新增)
 
-**每章完成后自动触发**
+**默认不自动触发**。仅在“开启债务追踪”或用户明确要求时执行
 ```bash
-python -m data_modules.index_manager accrue-interest --chapter {chapter} --project-root "."
+python -m data_modules.index_manager accrue-interest --chapter {chapter} --project-root "{project_root}"
 ```
 
 此步骤会:

+ 2 - 0
.claude/scripts/init_project.py

@@ -173,6 +173,8 @@ def init_project(
     platform: str = "",
 ) -> None:
     project_path = Path(project_dir).expanduser().resolve()
+    if ".claude" in project_path.parts:
+        raise SystemExit("Refusing to initialize a project inside .claude. Choose a different directory.")
     project_path.mkdir(parents=True, exist_ok=True)
 
     # 目录结构(同时兼容“卷目录”与后续扩展)

+ 28 - 6
.claude/skills/webnovel-init/SKILL.md

@@ -231,11 +231,20 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/market-pos
 
 ## Phase 7: 生成项目文件
 
+### 7.0 项目目录规则(必须执行)
+
+- 项目目录名 = 书名安全化(去除非法字符 `<>:"/\\|?*`,空格转 `-`,首尾去除 `-`)
+- 若结果为空或以 `.` 开头,前缀 `proj-`
+- **禁止**将项目目录放在 `.claude/` 下
+
+最终得到:
+- `project_root = "./{safe_title}"`
+
 ### 7.1 执行初始化脚本
 
 ```bash
 python "${CLAUDE_PLUGIN_ROOT}/scripts/init_project.py" \
-  "./webnovel-project" \
+  "{project_root}" \
   "{title}" \
   "{genre}" \
   --protagonist-name "{name}" \
@@ -245,23 +254,36 @@ python "${CLAUDE_PLUGIN_ROOT}/scripts/init_project.py" \
   --core-selling-points "{points}"
 ```
 
-### 7.2 生成文件清单(含模板写入)
+### 7.2 进入项目目录(必须执行)
+
+```bash
+cd "{project_root}"
+```
+
+### 7.3 生成文件清单(含模板写入)
 
 | 文件 | 说明 | 生成时机 | 写入路径 |
 |------|------|---------|---------|
 | `.webnovel/state.json` | 运行时状态 | init Phase 7 | `.webnovel/state.json` |
-| `.webnovel/index.db` | 实体索引数据库 | init Phase 7 | `.webnovel/index.db` |
+| `.webnovel/index.db` | 实体索引数据库 | init Phase 7 + 索引初始化 | `.webnovel/index.db` |
 | `设定集/世界观.md` | 世界观设定模板 | init Phase 7 | `设定集/世界观.md` |
 | `设定集/力量体系.md` | 力量体系模板 | init Phase 7 | `设定集/力量体系.md` |
 | `设定集/主角卡.md` | 主角卡模板 | init Phase 7 | `设定集/主角卡.md` |
 | `设定集/金手指设计.md` | 金手指设计模板 | init Phase 7 | `设定集/金手指设计.md` |
 | `大纲/总纲.md` | 总纲模板 | init Phase 7 | `大纲/总纲.md` |
+| `大纲/爽点规划.md` | 爽点规划模板 | init Phase 7 | `大纲/爽点规划.md` |
 
 **模板引用方式**:
 ```bash
 cat "${CLAUDE_PLUGIN_ROOT}/templates/output/设定集-世界观.md" | 填充变量 > 设定集/世界观.md
 ```
 
+### 7.4 初始化索引数据库(推荐)
+
+```bash
+python -m data_modules.index_manager stats --project-root "{project_root}"
+```
+
 ---
 
 ## Phase 8: 验证并报告
@@ -269,14 +291,14 @@ cat "${CLAUDE_PLUGIN_ROOT}/templates/output/设定集-世界观.md" | 填充变
 ### 8.1 验证文件
 
 ```bash
-ls -la .webnovel/state.json
-ls -la 设定集/*.md
+ls -la "{project_root}/.webnovel/state.json"
+ls -la "{project_root}/设定集"/*.md
 ```
 
 ### 8.2 初始化 Git(可选)
 
 ```bash
-git init && git add . && git commit -m "初始化网文项目:{title}"
+git -C "{project_root}" init && git -C "{project_root}" add . && git -C "{project_root}" commit -m "初始化网文项目:{title}"
 ```
 
 ### 8.3 输出三大定律提醒

+ 8 - 2
.claude/skills/webnovel-learn/SKILL.md

@@ -6,6 +6,12 @@ allowed-tools: Read Write Bash
 
 # /webnovel-learn
 
+## Project Root Guard(必须先确认)
+
+- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
+- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
+- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
+
 ## 目标
 - 提取可复用的写作模式(钩子/节奏/对话/微兑现等)
 - 追加到 `.webnovel/project_memory.json`
@@ -29,8 +35,8 @@ allowed-tools: Read Write Bash
 ```
 
 ## 执行流程
-1. 读取 `.webnovel/state.json`,获取当前章节号(progress.current_chapter)
-2. 读取 `.webnovel/project_memory.json`,若不存在则初始化 `{"patterns": []}`
+1. 读取 `"$PROJECT_ROOT/.webnovel/state.json"`,获取当前章节号(progress.current_chapter)
+2. 读取 `"$PROJECT_ROOT/.webnovel/project_memory.json"`,若不存在则初始化 `{"patterns": []}`
 3. 解析用户输入,归类 pattern_type(hook/pacing/dialogue/payoff/emotion)
 4. 追加记录并写回文件
 

+ 20 - 6
.claude/skills/webnovel-plan/SKILL.md

@@ -16,6 +16,15 @@ allowed-tools: Read Write Edit AskUserQuestion Bash
 
 ---
 
+## Project Root Guard(必须先确认)
+
+- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
+- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
+- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
+- **禁止**在 `.claude/` 下写入任何项目文件
+
+---
+
 ## Workflow Checklist
 
 ```
@@ -74,8 +83,8 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/outlining/plot-framew
 ### 2.1 加载状态和总纲
 
 ```bash
-cat .webnovel/state.json
-cat 大纲/总纲.md
+cat "$PROJECT_ROOT/.webnovel/state.json"
+cat "$PROJECT_ROOT/大纲/总纲.md"
 ```
 
 ### 2.2 解析总纲卷结构
@@ -93,7 +102,7 @@ cat 大纲/总纲.md
 ### 2.3 检查已有详细大纲
 
 ```bash
-ls 大纲/第*卷*.md 2>/dev/null
+Get-ChildItem "$PROJECT_ROOT/大纲/第*卷*.md" -ErrorAction SilentlyContinue
 ```
 
 ---
@@ -262,7 +271,7 @@ ls 大纲/第*卷*.md 2>/dev/null
 - **爽点**: {类型} - {30字以内}
 - **Strand**: {Quest|Fire|Constellation}
 - **实体**: {新增角色/物品,如有}
-- **钩子类型**: {危机钩/悬念钩/反转钩/期待钩/代价钩}
+- **钩子类型**: {危机钩/悬念钩/情绪钩/选择钩/渴望钩}
 - **钩子内容**: {章末悬念,30字以内}
 - **接住上章**: {如何接住上章钩子,20字以内}
 ```
@@ -275,10 +284,14 @@ ls 大纲/第*卷*.md 2>/dev/null
 
 ```bash
 # 第一批
-echo "{第1-10章内容}" >> 大纲/第{volume_id}卷-详细大纲.md
+@'
+{第1-10章内容}
+'@ | Add-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-详细大纲.md"
 
 # 第二批
-echo "{第11-20章内容}" >> 大纲/第{volume_id}卷-详细大纲.md
+@'
+{第11-20章内容}
+'@ | Add-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-详细大纲.md"
 ```
 
 这样即使中途失败,已生成的内容不会丢失。
@@ -321,6 +334,7 @@ echo "{第11-20章内容}" >> 大纲/第{volume_id}卷-详细大纲.md
 
 ```bash
 python "${CLAUDE_PLUGIN_ROOT}/scripts/update_state.py" \
+  --project-root "$PROJECT_ROOT" \
   --volume-planned {volume_id} \
   --chapters-range "{start}-{end}"
 ```

+ 10 - 3
.claude/skills/webnovel-query/SKILL.md

@@ -6,6 +6,13 @@ allowed-tools: Read Grep Bash AskUserQuestion
 
 # Information Query Skill
 
+## Project Root Guard(必须先确认)
+
+- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
+- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
+- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
+- **禁止**在 `.claude/` 下读取或写入项目文件
+
 ## Workflow Checklist
 
 Copy and track progress:
@@ -58,7 +65,7 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-query/references/tag-specification.md
 ## Step 3: 加载项目数据
 
 ```bash
-cat .webnovel/state.json
+cat "$PROJECT_ROOT/.webnovel/state.json"
 ```
 
 ## Step 4: 确认上下文充足
@@ -102,7 +109,7 @@ cat .webnovel/state.json
 
 **快速分析**:
 ```bash
-python "${CLAUDE_PLUGIN_ROOT}/scripts/status_reporter.py" --focus urgency
+python "${CLAUDE_PLUGIN_ROOT}/scripts/status_reporter.py" --focus urgency --project-root "$PROJECT_ROOT"
 ```
 
 ### 金手指状态
@@ -119,7 +126,7 @@ python "${CLAUDE_PLUGIN_ROOT}/scripts/status_reporter.py" --focus urgency
 
 **快速分析**:
 ```bash
-python "${CLAUDE_PLUGIN_ROOT}/scripts/status_reporter.py" --focus strand
+python "${CLAUDE_PLUGIN_ROOT}/scripts/status_reporter.py" --focus strand --project-root "$PROJECT_ROOT"
 ```
 
 **检查警告**:

+ 7 - 1
.claude/skills/webnovel-resume/SKILL.md

@@ -6,6 +6,12 @@ allowed-tools: Read Bash AskUserQuestion
 
 # Task Resume Skill
 
+## Project Root Guard(必须先确认)
+
+- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
+- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
+- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
+
 ## Workflow Checklist
 
 Copy and track progress:
@@ -114,7 +120,7 @@ python "${CLAUDE_PLUGIN_ROOT}/scripts/workflow_manager.py" clear
 
 **选项 B - Git 回滚**:
 ```bash
-git reset --hard ch{N-1:04d}
+git -C "$PROJECT_ROOT" reset --hard ch{N-1:04d}
 python "${CLAUDE_PLUGIN_ROOT}/scripts/workflow_manager.py" clear
 ```
 

+ 41 - 104
.claude/skills/webnovel-review/SKILL.md

@@ -1,137 +1,81 @@
 ---
 name: webnovel-review
-description: Reviews chapter quality using 6 specialized checkers (including reader-pull) and generates comprehensive reports. Activates when user requests chapter review or /webnovel-review.
+description: Reviews chapter quality with checker agents and generates reports. Use when the user asks for a chapter review or runs /webnovel-review.
 allowed-tools: Read Grep Write Edit Bash Task AskUserQuestion
 ---
 
 # Quality Review Skill
 
-## Workflow Checklist
+## Project Root Guard(必须先确认)
 
-Copy and track progress:
+- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
+- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
+- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
 
-```
-质量审查进度:
-- [ ] Step 1: 加载核心约束 (cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/core-constraints.md")
-- [ ] Step 2: 加载爽点标准 (cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/cool-points-guide.md")
-- [ ] Step 3: 加载节奏标准 (cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/strand-weave-pattern.md")
-- [ ] Step 4: 加载常见错误 (cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/common-mistakes.md")
-- [ ] Step 5: 加载项目状态 (cat .webnovel/state.json)
-- [ ] Step 6: 确认上下文充足
-- [ ] Step 7: 调用 6 个检查员 (并行 Task)
-- [ ] Step 8: 生成审查报告
-- [ ] Step 9: 处理关键问题
-```
+## Review depth
 
----
+- **Core (default)**: consistency / continuity / ooc / reader-pull
+- **Full (关键章/用户要求)**: core + high-point + pacing
 
-## Step 1: 加载核心约束(必须执行
+## Step 1: 加载参考(按需)
 
+**必读**:
 ```bash
 cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/core-constraints.md"
 ```
 
-## Step 2: 加载爽点标准(必须执行)
-
+**建议(Full 或需要时)**:
 ```bash
 cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/cool-points-guide.md"
-```
-
-## Step 3: 加载节奏标准(必须执行)
-
-```bash
 cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/strand-weave-pattern.md"
 ```
 
-## Step 4: 加载常见错误
-
+**可选**:
 ```bash
 cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/common-mistakes.md"
-```
-
-**可选加载节奏控制参考**:
-```bash
-# 如需深入分析节奏控制,可加载此文件
 cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-review/references/pacing-control.md"
 ```
 
-## Step 5: 加载项目状态
+## Step 2: 加载项目状态(若存在)
 
 ```bash
-cat .webnovel/state.json
+cat "$PROJECT_ROOT/.webnovel/state.json"
 ```
 
-## Step 6: 确认上下文充足
-
-**检查清单**:
-- [ ] 三大定律已理解
-- [ ] 爽点密度要求已理解
-- [ ] Strand Weave 规范已理解
-- [ ] 常见错误模式已了解
-- [ ] state.json 可用于一致性检查
-- [ ] 待审查章节已确定
+## Step 3: 并行调用检查员(Task)
 
-**如有缺失 → 返回对应 Step**
+**Core**:
+- `consistency-checker`
+- `continuity-checker`
+- `ooc-checker`
+- `reader-pull-checker`
 
-## Step 7: 调用 6 个检查员(并行)
+**Full 追加**:
+- `high-point-checker`
+- `pacing-checker`
 
-**使用 Task 工具并行调用 6 个专职检查员**:
+## Step 4: 生成审查报告
 
-调用格式示例(所有检查员并行执行):
-- 调用 `high-point-checker` 子代理:审查章节 {range},重点检查爽点密度和多样性
-- 调用 `consistency-checker` 子代理:审查章节 {range},重点检查设定违规 vs state.json
-- 调用 `pacing-checker` 子代理:审查章节 {range},重点检查 Strand 分布
-- 调用 `ooc-checker` 子代理:审查章节 {range},重点检查角色行为一致性
-- 调用 `continuity-checker` 子代理:审查章节 {range},重点检查时间线和剧情连贯
-- 调用 `reader-pull-checker` 子代理:审查章节 {range},重点检查章末钩子与追读动机
-
-**注意**:Claude 会自动根据描述匹配并调用对应的子代理
-
-**汇总要求**:统计 critical / high / medium / low 的问题数量(用于趋势记录)
-
-## Step 8: 生成审查报告
-
-保存到: `审查报告/第{start}-{end}章审查报告.md`
-
-**报告结构**:
+保存到:`审查报告/第{start}-{end}章审查报告.md`
 
+**报告结构(精简版)**:
 ```markdown
 # 第 {start}-{end} 章质量审查报告
 
-## 📊 综合评分
-
-| 维度 | 评分 | 状态 |
-|------|------|------|
-| 爽点密度 | X/10 | ✅/🟡/🟠/🔴 |
-| 设定一致性 | X/10 | ... |
-| 节奏控制 | X/10 | ... |
-| 人物塑造 | X/10 | ... |
-| 连贯性 | X/10 | ... |
-| 追读力 | X/10 | ... |
-| **总评** | **X/60** | **等级** |
-
-## 📋 修改优先级
+## 综合评分
+- 爽点密度 / 设定一致性 / 节奏控制 / 人物塑造 / 连贯性 / 追读力
+- 总评与等级
 
-### 🔴 高优先级(必须修改)
-{检查员发现的问题}
+## 修改优先级
+- 🔴 高优先级(必须修改)
+- 🟠 中优先级(建议修改)
+- 🟡 低优先级(可选优化)
 
-### 🟠 中优先级(建议修改)
-{检查员发现的问题}
-
-### 🟡 低优先级(可选优化)
-{检查员发现的问题}
-
-## 📈 改进建议
-{具体可行的建议}
+## 改进建议
+- 可执行的修复建议
 ```
 
-**评分标准**:
-- 9-10: 优秀
-- 7-8: 良好
-- 5-6: 及格
-- <5: 不及格(高流失风险)
-
-**审查指标 JSON(必须输出,用于趋势统计)**:
+**审查指标 JSON(用于趋势统计)**:
 ```json
 {
   "start_chapter": {start},
@@ -152,20 +96,13 @@ cat .webnovel/state.json
 }
 ```
 
-**保存审查指标**
+保存审查指标:
 ```bash
-python -m data_modules.index_manager save-review-metrics \
-  --data '{...}' \
-  --project-root "."
+python -m data_modules.index_manager save-review-metrics --data '{...}' --project-root "."
 ```
 
-## Step 9: 处理关键问题
+## Step 5: 处理关键问题
 
-如发现 🔴 问题,询问用户:
+如发现 critical 问题,询问用户:
 - A) 立即修复(推荐)
-- B) 保存报告稍后处理
-
-```bash
-python "${CLAUDE_PLUGIN_ROOT}/scripts/update_state.py" \
-  --add-review "{start}-{end}" "审查报告/第{start}-{end}章审查报告.md"
-```
+- B) 仅保存报告,稍后处理

+ 47 - 429
.claude/skills/webnovel-write/SKILL.md

@@ -1,53 +1,35 @@
 ---
 name: 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.
+description: Writes webnovel chapters (3000-5000 words). Use when the user asks to write a chapter or runs /webnovel-write. Runs context, drafting, review, polish, and data extraction.
 allowed-tools: Read Write Edit Grep Bash Task
 ---
 
 # Chapter Writing Skill
 
-## Workflow Checklist
+## Project Root Guard(必须先确认)
 
-⚠️ **强制要求**: 开始写作前,**必须复制以下清单**到回复中并逐项勾选。跳过任何步骤视为工作流不完整。
+- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
+- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
+- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
 
-```
-章节创作进度 (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 但不可跳过
-
----
+## Default flow
 
-## 模式说明(可选)
+1. Context Agent → 创作任务书
+2. 写作 → 3000-5000字正文
+3. 审查 → 核心4个Checker
+4. 润色 → 修复问题
+5. Data Agent → 提取数据
+6. Git → 备份
 
-```
-/webnovel-write --mode fast    # 快速模式:跳过 Step 2B
-/webnovel-write --mode minimal # 极简模式:跳过 Step 2B + 仅运行3个核心 checker
-```
+## Modes
 
-**模式影响**:
-- **标准模式**: 完整执行 Step 1-6
-- **快速模式**: 跳过 Step 2B(风格适配),其余照常
-- **极简模式**: 跳过 Step 2B + 仅运行 3 个核心审查(consistency / continuity / ooc)
+- `/webnovel-write`:标准流程(含核心4个Checker)
+- `/webnovel-write --fast`:跳过 Step 2B,其余同标准
+- `/webnovel-write --minimal`:跳过 Step 2B,仅运行 consistency + continuity + ooc(不产出追读力数据)
 
----
+## Step 1: Context Agent
 
-## Step 1: Context Agent 搜集上下文
-
-**调用 Context Agent**:
-
-使用 Task 工具调用 `context-agent` subagent:
+使用 Task 工具调用 `context-agent`:
 
 ```
 调用 context-agent,参数:
@@ -57,339 +39,48 @@ allowed-tools: Read Write Edit Grep Bash Task
 - 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"
-```
-根据 `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%)
+**缺失处理**:大纲或 state.json 不存在时,提示用户先初始化。
 
-**如必须重复**:
-- 记录Override理由
-- 规划差异化执行方式(如同为装逼打脸,但不同场景/规模/参与者)
+## Step 2: 写作
 
-### 1.5.5 过渡章特殊处理
+- 遵循三大原则:大纲即法律 / 设定即物理 / 新实体需记录。
+- 输出纯正文到 `正文/第{NNNN}章.md`。
+- 开写前加载核心约束:
 
-如本章标记为过渡章:
-- 钩子强度可降为 weak
-- 微兑现数量可降至 profile.transition_min
-- 必须记录 Override Contract(如违反软建议)
-- 过渡章不可连续超过 profile.transition_max_consecutive
-
----
-
-## Step 2A: 生成粗稿(剧情正确)
-
-**字数**: 3000-5000 字(短章 <2000 字需声明)
-
-**核心原则**:
-- **大纲即法律**: 100% 执行大纲
-- **设定即物理**: 实力 ≤ 上下文包中的设定
-- **纯正文**: 不需要写任何 XML 标签
-
-**加载核心约束**:
 ```bash
 cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/core-constraints.md"
 ```
 
-**按需加载场景参考**:
-
-| 场景类型 | 判断条件 | 执行命令 |
-|---------|---------|---------|
-| 战斗戏 | 大纲含打斗/对决/追逐 | `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"` |
-
-**可选加载题材风格参考**(用户指定时加载):
-```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 2B: 风格适配器(网文化改写)
-
-**跳过条件**: fast / minimal 模式跳过
-
-**加载风格适配器**:
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-adapter.md"
-```
-
-**目标**:
-- 保持剧情不变
-- 提升网文口感(短句、动作、对白张力、情绪反应)
-- 强化开头冲突与章末钩子
-
----
+场景写作与风格参考按需加载(见 `references/workflow-details.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**
+**默认核心4个 Checker**:
 - `consistency-checker`
 - `continuity-checker`
 - `ooc-checker`
+- `reader-pull-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}       │
-│ 是否可进入润色: {是/否}                           │
-└─────────────────────────────────────────────────┘
-```
-
-**审查指标 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": ""
-}
-```
-
-**保存审查指标**:
-```bash
-python -m data_modules.index_manager save-review-metrics \
-  --data '{...}' \
-  --project-root "."
-```
-
-**Only proceed to Step 4 when:**
-1. 已收到全部审查报告(或 minimal 模式仅 3 份)
-2. 已输出汇总表格
-
-> **Minimal 模式**: 汇总表格仅列出已执行的 3 个 Agent。
-
----
+**关键章/卷末/用户明确要求**:额外运行
+- `high-point-checker`
+- `pacing-checker`
 
-## Step 4: 网文化润色(基于审查报告)
+审查汇总表格与审查指标 JSON 模板见 `references/workflow-details.md`。
 
-⚠️ **强制要求**: 必须按以下顺序执行全部子步骤(4.0-4.4),不可跳过。
+## Step 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 字纯解释 → 必须打散
-
-### 4.3 AI 痕迹检测(辅助提醒)
-
-**注意**: 词频统计仅作为提醒,不再作为硬性门槛。若明显超标,请修复并简要说明。
-
-- 总结词:`综合|总之|由此可见|总而言之`
-- 列举结构:`首先|其次|最后|第一|第二|第三`
-- 学术词:`而言|某种程度上|本质上`
-- 因果连词:`因为|所以|由于|因此`
-
-### 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 处理数据链
+先修复 critical/high,再处理 medium/low。
 
-**调用 Data Agent**:
+## Step 5: Data Agent
 
-使用 Task 工具调用 `data-agent` subagent
+使用 Task 工具调用 `data-agent`:
 
 ```
 调用 data-agent,参数:
@@ -401,37 +92,7 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/writing/typesetting.
 - state_file: .webnovel/state.json
 ```
 
-**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. **债务利息计算**(自动触发)
-
-**债务利息计算**(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": [...]
-}
-```
-
----
+债务利息计算默认关闭,仅在开启债务追踪或用户明确要求时执行(见 `references/workflow-details.md`)。
 
 ## Step 6: Git 备份
 
@@ -439,59 +100,16 @@ python -m data_modules.index_manager accrue-interest --chapter {chapter_num} --p
 git add . && git commit -m "Ch{chapter_num}: {title}"
 ```
 
----
-
-## 错误处理
-
-### Context Agent 失败
-```
-⚠️ 上下文包生成失败
-→ 检查大纲是否存在
-→ 检查 state.json 是否初始化
-→ 手动加载必要上下文后继续
-```
-
-### 审查发现严重问题
-```
-⚠️ 审查发现 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/workflow-details.md`
+  - Step 1.5 章节设计(钩子/爽点/微兑现/差异化)
+  - 审查汇总表格 + 审查指标 JSON 模板
+  - 润色硬规则 + 检查清单
+  - 债务/Override 处理与利息开关
 
-**验证失败处理**:
-- 如有任何项目未完成,记录 deviation 原因
-- deviation 不阻断工作流,但必须记录
-- 连续 3 章出现相同 deviation → 标记为系统问题
+Step 1.5 需要时可直接加载(避免深层引用):
+- `references/style-variants.md`
+- `.claude/references/reading-power-taxonomy.md`
+- `.claude/references/genre-profiles.md`

+ 116 - 0
.claude/skills/webnovel-write/references/workflow-details.md

@@ -0,0 +1,116 @@
+# Webnovel Write - Workflow Details
+
+## Contents
+- Step 1.5 章节设计
+- Step 2B 风格适配器
+- Step 3 审查模板
+- Step 4 润色硬规则与清单
+- Step 5 债务与利息开关
+
+## Step 1.5 章节设计(标准/关键章建议执行)
+
+**加载参考**:
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-variants.md"
+cat "${CLAUDE_PLUGIN_ROOT}/references/reading-power-taxonomy.md"
+cat "${CLAUDE_PLUGIN_ROOT}/references/genre-profiles.md"
+```
+
+**输出结构**:
+- 核心冲突一句话
+- 开头类型(冲突/悬疑/动作/对话/氛围)
+- 情绪节奏(低→高/高→低/低→高→低/平稳)
+- 信息密度(low/medium/high)
+- 是否过渡章(true/false)
+- 追读力设计:钩子类型/强度、微兑现清单、爽点模式
+
+**差异化检查**:
+- 钩子类型避免与最近3章重复
+- 开头类型避免与最近3章重复
+- 爽点模式避免与最近5章过度重复
+
+如必须重复,记录 Override 理由并给出差异化执行方式。
+
+## Step 2B 风格适配器(fast/minimal 可跳过)
+
+```bash
+cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-write/references/style-adapter.md"
+```
+
+目标:不改剧情,只提升网文口感与张力。
+
+## Step 3 审查模板
+
+**审查汇总表格**:
+```
+┌─────────────────────────────────────────────────┐
+│ 审查汇总 - 第 {chapter_num} 章                    │
+├──────────────────────┬───────────┬──────────────┤
+│ Agent                │ 结果      │ 关键问题数    │
+├──────────────────────┼───────────┼──────────────┤
+│ consistency-checker  │ PASS/FAIL │ {N}          │
+│ continuity-checker   │ PASS/FAIL │ {N}          │
+│ ooc-checker          │ PASS/FAIL │ {N}          │
+│ reader-pull-checker  │ PASS/FAIL │ {N}          │
+│ high-point-checker   │ PASS/FAIL │ {N}          │
+│ pacing-checker       │ PASS/FAIL │ {N}          │
+├──────────────────────┴───────────┴──────────────┤
+│ critical issues: {N}  |  high issues: {N}       │
+│ 是否可进入润色: {是/否}                           │
+└─────────────────────────────────────────────────┘
+```
+
+**审查指标 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": ""
+}
+```
+
+保存审查指标:
+```bash
+python -m data_modules.index_manager save-review-metrics --data '{...}' --project-root "."
+```
+
+## Step 4 润色硬规则与清单
+
+**硬规则(不满足需记录 deviation)**:
+- 开头 120 字出现冲突/风险/强情绪
+- 每 800-1200 字至少一次局面变化
+- 结尾 80-150 字设置钩子
+- 对话每句带意图
+- 连续 400 字纯解释 → 必须打散
+
+**AI 痕迹提醒(出现就改写)**:
+- “首先/其次/最后”
+- “综合以上/值得注意的是”
+- 过多“因此/所以/然而”
+
+**简版清单**:
+- [ ] critical/high 问题已修复或记录 deviation
+- [ ] 硬规则检查完成
+- [ ] AI 痕迹已检查
+- [ ] 未违反润色红线
+
+## Step 5 债务与利息开关
+
+- 默认不计算利息。
+- 仅在“开启债务追踪”或用户明确要求时执行:
+
+```bash
+python -m data_modules.index_manager accrue-interest --chapter {chapter_num} --project-root "."
+```

+ 5 - 5
CLAUDE.md

@@ -4,7 +4,7 @@
 
 ## 项目概述
 
-**Webnovel Writer** 是基于 Claude Code 的长篇网文辅助创作系统(v5.3),解决 AI 写作中的"遗忘"和"幻觉"问题,支持 200 万字量级连载创作。
+**Webnovel Writer** 是基于 Claude Code 的长篇网文辅助创作系统(v5.4.1),解决 AI 写作中的"遗忘"和"幻觉"问题,支持 200 万字量级连载创作。
 
 ## 核心理念
 
@@ -88,13 +88,13 @@
 
 ```
 Step 1: Context Agent 搜集上下文
-        ↓ (输出创作任务书,含追读力设计)
-Step 1.5: 章节设计(开头/钩子/爽点/微兑现)
+        ↓ (输出创作任务书,含追读力策略)
+Step 1.5: 章节设计(按需,开头/钩子/爽点/微兑现)
 Step 2A: 生成粗稿
 Step 2B: 风格适配器
-Step 3: 6 Agent 并行审查(含 reader-pull-checker
+Step 3: 默认 4 Agent 审查(关键章扩展到 6
 Step 4: 网文化润色
@@ -132,5 +132,5 @@ python -m data_modules.index_manager get-pattern-usage-stats --last-n 20 --proje
 
 1. **不要直接修改 state.json 中的大量数据** - 大数据存 SQLite
 2. **Override Contract 需明确偿还计划** - 每个 Override 产生债务
-3. **债务有利息** - 每章累积 10%,逾期会影响后续章节
+3. **债务利息默认关闭** - 仅在明确开启时计算
 4. **题材 Profile 可覆盖** - 在 state.json 中设置 genre_overrides

+ 11 - 14
README.md

@@ -52,8 +52,8 @@
 
 **Override Contract 机制**:
 - 违反软建议时需记录理由和偿还计划
-- 每个 Override 产生债务,含利息(默认 10%/章
-- 逾期债务会影响后续章节评分
+- 每个 Override 产生债务,利息为可选机制(默认不自动计算
+- 逾期债务会影响后续章节评分(仅在开启追踪时生效)
 
 ### Strand Weave 节奏系统
 
@@ -220,10 +220,10 @@ pip install -r .claude/scripts/requirements.txt
 /webnovel-write 45      # 创作第45章
 ```
 
-**创作流程 (v5.3)**:
+**创作流程 (v5.4.1)**:
 
 ```
-Step 1: Context Agent 搜集上下文 → 创作任务书(含追读力设计
+Step 1: Context Agent 搜集上下文 → 创作任务书(含追读力策略
 Step 1.5: 章节设计(开头/钩子/爽点/微兑现规划)
@@ -231,7 +231,7 @@ Step 2A: 生成粗稿(3000-5000字)
 Step 2B: 风格适配器(网文化改写)
-Step 3: 6 Agent 并行审查(含 reader-pull-checker
+Step 3: 默认 4 Agent 审查(关键章扩展到 6
 Step 4: 网文化润色
@@ -243,7 +243,7 @@ Step 6: Git 自动提交备份
 **写作模式**:
 - **标准模式**: 完整执行 Step 1-6
 - **快速模式** (`--mode fast`): 跳过 Step 2B
-- **极简模式** (`--mode minimal`): 跳过 Step 2B + 仅 3 个核心审查
+- **极简模式** (`--mode minimal`): 跳过 Step 2B + 仅 3 个核心审查(无追读力数据)
 
 **产出**:
 - `正文/第N章-标题.md`
@@ -313,17 +313,14 @@ Step 6: Git 自动提交备份
 8. 推断角色动机/情绪
 9. 组装**创作任务书**
 
-**输出结构(10个章节)**:
+**输出结构(7个板块)**:
 1. **本章核心任务**(冲突一句话、必须完成、绝对不能)
 2. **接住上章**(上章钩子、读者期待、开头必须)
 3. **出场角色**(状态、动机、情绪底色、说话风格、红线)
 4. **场景与力量约束**(地点、可用能力、禁用能力)
 5. **风格指导**(本章类型、参考样本、最近模式、本章建议)
-6. **伏笔管理**(必须处理、可选提及)
-7. **连贯性检查点**(时间、位置、情绪)
-8. **章末钩子设置**(建议类型、禁止事项)
-9. **追读力设计**(v5.3 引入:钩子策略、微兑现规划、模式差异化)
-10. **债务与Override状态**(v5.3 引入:当前债务、待偿还Override)
+6. **连续性与伏笔**(时间/位置/情绪连贯;必须处理/可选伏笔)
+7. **追读力策略**(钩子类型/强度、微兑现建议、差异化提示;有债务时附带说明)
 
 ---
 
@@ -610,7 +607,7 @@ python -m data_modules.index_manager get-hook-type-stats --last-n 20 --project-r
 # 查看待偿还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 "."
 ```
 
@@ -672,7 +669,7 @@ git checkout ch0045
 - **追读力债务**:债务追踪、利息计算、逾期管理
 - **题材Profile**:8种内置题材配置(偏好钩子/爽点/微兑现要求)
 - **SQLite新表**:override_contracts、chase_debt、debt_events、chapter_reading_power
-- **Context Agent**:输出扩展至10章节(新增追读力设计、债务状态
+- **Context Agent**:输出精简为7个板块(含追读力策略,债务状态按需输出
 - **CLI新命令**:get-debt-summary、get-recent-reading-power、accrue-interest 等
 
 ### v5.2