问题
写章节正文时,reviewer agent被调用4次,chapter-commit被调用4次,token消耗约4倍于正常值。
根因分析:
- 审查一轮找不全问题 — reviewer优先报显眼问题,小问题被遮蔽,修复大问题后小问题才浮出来
- 修复后引入新问题 — 如修复碎片句时引入左右臂矛盾,需要额外审查轮次
- commit前置条件需手动处理 — disambiguation pending需手动清空、review_results需手动补充blocking_count等字段
- 没有收敛机制 — 流程定义中没有"最多N轮"限制,可能无限循环
建议改进
- 结构化检查清单(提升单次审查覆盖面)
在reviewer agent调用时,追加结构化检查清单,强制逐项输出结论:
检查清单(必须逐项输出结论,无问题也要输出pass):
- 设定一致性:角色状态/世界规则/物品属性是否与state.json一致
- 时间线:事件顺序/时间跨度是否合理
- 叙事连贯:视角是否统一/场景切换是否有过渡
- 角色一致性:对话风格/行为动机是否符合人设
- 逻辑:因果关系/行为后果是否合理
- AI味词汇层:缓缓/淡淡/微微/眸中/瞳孔密度
- AI味句式层:三段闭环/同构句/总结句/碎片句
- AI味叙事层:匀速节奏/戏剧性反讽/安全着陆
- AI味情感层:标签化情绪/即时切换
- AI味对话层:信息宣讲/书面语
- 项目规则合规:破折号≤20、但≤6、不是X是Y≤1、句号≤70/千字、系统【】格式
输出要求:每个维度必须输出一行结论,格式为"[维度]: pass"或"[维度]: 发现N个问题(简述)"
建议实现方式:在 reviewer.md 的第5节检查维度后增加"按清单逐项检查"指令,或在 runtime_contract_builder.py
中将检查清单注入review contract。
- 修复后自查(减少无效重审)
在Step 3审查后需要修复时,修复完成后先对照上次审查报告自查,只有自查通过才重新调用reviewer:
def self_check(chapter_file, review_result):
text = Path(chapter_file).read_text(encoding='utf-8')
review = json.loads(Path(review_result).read_text(encoding='utf-8'))
for issue in review.get("issues", []):
evidence = issue.get("evidence", "")
if evidence and evidence[:60] in text:
return False # 问题证据仍存在,未修复
return True # 所有evidence已不在正文中
建议实现方式:在 webnovel-write SKILL.md 的 Step 3→4 之间插入自查步骤,或在 review_pipeline.py 中增加 --self-check
模式。
- commit前置条件自动化
在调用chapter-commit之前,自动处理前置条件:
def prepare_commit(project_root):
# 1. disambiguation_result.json: 已有resolved_entity_id的pending项移到resolved
# 2. review_results.json: 自动补充blocking_count/high_count/medium_count/low_count/total_count
建议实现方式:在 chapter_commit_service.py 的 build_commit 方法开头增加预处理逻辑,或在 webnovel.py 的 chapter-commit
命令中增加 --prepare 步骤。
- 收敛机制(防止无限循环)
审查最多3轮。第3轮后仍有blocking问题,则输出问题清单给用户,询问选择:接受当前版本 / 手动修复 / 放弃。
建议实现方式:在 webnovel-write SKILL.md 的 Step 3 中增加轮次计数和收敛逻辑。
预期效果
┌──────────────────┬────────────────────────────────────┐
│ 改进项 │ 预期效果 │
├──────────────────┼────────────────────────────────────┤
│ 结构化检查清单 │ 单次审查覆盖面从60%提升到90% │
├──────────────────┼────────────────────────────────────┤
│ 修复后自查 │ 审查轮次从平均4轮降低到2轮 │
├──────────────────┼────────────────────────────────────┤
│ commit前置自动化 │ commit一次通过率提升,减少手动干预 │
├──────────────────┼────────────────────────────────────┤
│ 收敛机制 │ 避免无限循环,最多3轮审查 │
└──────────────────┴────────────────────────────────────┘
我已做的项目级临时方案
由于插件源码会被更新覆盖,我已在项目层面创建了临时脚本:
- .scripts/self_check.py — 修复后自查
- .scripts/pre_commit_prep.py — commit前置预处理
- .claude/memory/review_convergence_rule.md — 收敛规则(memory层面)
- .claude/memory/reviewer_prompt_enhancement.md — 增强prompt(memory层面)
这些临时方案需要手动调用,无法自动集成到流程中。希望插件能原生支持这些功能。
问题
写章节正文时,reviewer agent被调用4次,chapter-commit被调用4次,token消耗约4倍于正常值。
根因分析:
建议改进
在reviewer agent调用时,追加结构化检查清单,强制逐项输出结论:
检查清单(必须逐项输出结论,无问题也要输出pass):
输出要求:每个维度必须输出一行结论,格式为"[维度]: pass"或"[维度]: 发现N个问题(简述)"
建议实现方式:在 reviewer.md 的第5节检查维度后增加"按清单逐项检查"指令,或在 runtime_contract_builder.py
中将检查清单注入review contract。
在Step 3审查后需要修复时,修复完成后先对照上次审查报告自查,只有自查通过才重新调用reviewer:
def self_check(chapter_file, review_result):
text = Path(chapter_file).read_text(encoding='utf-8')
review = json.loads(Path(review_result).read_text(encoding='utf-8'))
for issue in review.get("issues", []):
evidence = issue.get("evidence", "")
if evidence and evidence[:60] in text:
return False # 问题证据仍存在,未修复
return True # 所有evidence已不在正文中
建议实现方式:在 webnovel-write SKILL.md 的 Step 3→4 之间插入自查步骤,或在 review_pipeline.py 中增加 --self-check
模式。
在调用chapter-commit之前,自动处理前置条件:
def prepare_commit(project_root):
# 1. disambiguation_result.json: 已有resolved_entity_id的pending项移到resolved
# 2. review_results.json: 自动补充blocking_count/high_count/medium_count/low_count/total_count
建议实现方式:在 chapter_commit_service.py 的 build_commit 方法开头增加预处理逻辑,或在 webnovel.py 的 chapter-commit
命令中增加 --prepare 步骤。
审查最多3轮。第3轮后仍有blocking问题,则输出问题清单给用户,询问选择:接受当前版本 / 手动修复 / 放弃。
建议实现方式:在 webnovel-write SKILL.md 的 Step 3 中增加轮次计数和收敛逻辑。
预期效果
┌──────────────────┬────────────────────────────────────┐
│ 改进项 │ 预期效果 │
├──────────────────┼────────────────────────────────────┤
│ 结构化检查清单 │ 单次审查覆盖面从
60%提升到90% │├──────────────────┼────────────────────────────────────┤
│ 修复后自查 │ 审查轮次从平均4轮降低到2轮 │
├──────────────────┼────────────────────────────────────┤
│ commit前置自动化 │ commit一次通过率提升,减少手动干预 │
├──────────────────┼────────────────────────────────────┤
│ 收敛机制 │ 避免无限循环,最多3轮审查 │
└──────────────────┴────────────────────────────────────┘
我已做的项目级临时方案
由于插件源码会被更新覆盖,我已在项目层面创建了临时脚本:
这些临时方案需要手动调用,无法自动集成到流程中。希望插件能原生支持这些功能。