|
@@ -0,0 +1,1320 @@
|
|
|
|
|
+# 作者友好报告与异常可见性改造 Plan
|
|
|
|
|
+
|
|
|
|
|
+> 日期:2026-06-07
|
|
|
|
|
+> 状态:草案 v2 · 已对齐 `docs/superpowers/specs/2026-06-07-author-friendly-experience-design.md`
|
|
|
|
|
+> 范围:承接 spec 的「作者外壳 / 作者界面层」七组件,统一 `init / plan / write / review` 的最终汇报、subagent 返回协议、错误目录、审查作者视图、下一步建议、异常分类、耗时呈现与作者友好术语;先取消 token 统计
|
|
|
|
|
+> 核心原则:问题不静默、自动处理要说明、技术细节默认隐藏、最终报告面向作者而不是工程日志;工程内核不动
|
|
|
|
|
+> 实施方式:先用 Skill / Agent 契约固定行为,再用 runtime helper 收敛格式,避免只靠提示词导致输出漂移
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 0. 与产品 Spec 的对齐关系
|
|
|
|
|
+
|
|
|
|
|
+本计划是 `docs/superpowers/specs/2026-06-07-author-friendly-experience-design.md` 的工程落地计划,不再另起一套产品口径。
|
|
|
|
|
+
|
|
|
|
|
+分工如下:
|
|
|
|
|
+
|
|
|
|
|
+| 文档 | 负责什么 | 不负责什么 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 产品 spec | 定义「工程内核 + 作者外壳」分层、七个组件、错误恢复红线、分期价值 | 不展开具体文件、测试与施工顺序 |
|
|
|
|
|
+| 本 plan | 把七组件落到 Skill / Agent / runtime helper / 测试 / 文档 | 不重新定义产品目标,不放宽 spec 红线 |
|
|
|
|
|
+
|
|
|
|
|
+对齐后的共同边界:
|
|
|
|
|
+
|
|
|
|
|
+- Story System、`write-gate`、`chapter-commit`、projection、RAG 等工程内核不改语义、不降校验强度。
|
|
|
|
|
+- 作者默认看到里程碑、结论、影响和下一步;工程命令、JSON、schema、traceback 默认写入日志或技术详情。
|
|
|
|
|
+- 自动处理只限幂等、可重试、不碰作者内容的过程性问题;最终报告必须说明处理过什么,不能静默。
|
|
|
|
|
+- 不新增 UI、按钮、进度条、命令别名或自动修复大循环。
|
|
|
|
|
+
|
|
|
|
|
+七组件在本计划中的落点:
|
|
|
|
|
+
|
|
|
|
|
+| spec 组件 | 本 plan 落点 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 术语对照表 | §5 单一事实源;Phase 1 先落结构化词表 |
|
|
|
|
|
+| 进度播报规范 | §8 过程易用性;Phase 5A |
|
|
|
|
|
+| 错误→行动映射表 | §15 异常分类 + Phase 4 runtime helper;新增 `error_catalog.py` 与 `author_error_catalog.json` |
|
|
|
|
|
+| 审查作者视图 | §16 helper / `review_pipeline.py` 渲染;Phase 4 优先接 `review` |
|
|
|
|
|
+| 导航尾巴 | §4 三段式报告第三段;§20 推荐施工顺序中作为早期交付 |
|
|
|
|
|
+| 命令任务化 | §4 / §19 / §23 的下一步建议;只改提示语言,不新增别名 |
|
|
|
|
|
+| 可自动处理项 + 默认不展示工程细节 | §3.2-3.4、§11、§15、§21;第三期前只做说明和日志,不扩白名单 |
|
|
|
|
|
+
|
|
|
|
|
+## 1. 目标
|
|
|
|
|
+
|
|
|
|
|
+本计划把 `webnovel-writer` 的交付体验从“流程执行完以后由主 agent 自行总结”改成“每次都有稳定、可读、可信的作者回执”。
|
|
|
|
|
+
|
|
|
|
|
+核心交付:
|
|
|
|
|
+
|
|
|
|
|
+1. 统一最终报告规范:所有主 Skill 结尾都输出固定三段式报告,并以一句总状态开头。
|
|
|
|
|
+2. 全局作者友好约束:中文、少术语、不静默、自动处理要说明、技术细节按需展开。
|
|
|
|
|
+3. 阶段化报告模板:分别补强 `/webnovel-init`、`/webnovel-plan`、`/webnovel-write`、`/webnovel-review` 的最终汇报要求。
|
|
|
|
|
+4. Subagent 返回协议:主流程能汇总 `context-agent`、`reviewer`、`data-agent`、`deconstruction-agent` 的状态、问题、自动处理与耗时。
|
|
|
|
|
+5. 异常分类:所有问题归入“已自动处理 / 建议确认 / 必须处理”,重点暴露 subagent 失败、跳过、重试和输出不完整。
|
|
|
|
|
+6. 耗时可见:记录已耗时和关键步骤耗时;长时间无进展时说明可能原因和是否影响结果,不承诺固定完成时间。
|
|
|
|
|
+7. 术语翻译:工程词默认翻译成作者能理解的写作语义。
|
|
|
|
|
+8. Runtime helper:新增统一报告 helper,优先消费已有 `project-status`、`doctor`、`write-gate`、`review-pipeline`、`chapter-commit`、`projection_log` 等结构化输出。
|
|
|
|
|
+9. 过程易用性:在长流程执行中提供清晰进度、少打扰确认、可恢复状态和作者可理解的卡点说明。
|
|
|
|
|
+10. 断点续跑:重复执行同一主命令时,能识别已完成步骤,从最近可信断点继续,而不是要求作者记补跑命令。
|
|
|
|
|
+11. 交互式裁决:必须用户处理的问题优先给有限选项,减少“自己去改文件”的认知负担。
|
|
|
|
|
+12. 技术溯源:作者报告保持清爽,同时把工程细节写入本地日志,便于故障反馈和开发排查。
|
|
|
|
|
+13. 错误目录:把 runtime 错误码映射为作者能理解的原因、影响和下一步动作。
|
|
|
|
|
+14. 审查作者视图:在审查报告顶部提供一句结论和最多 3 条可执行修改建议。
|
|
|
|
|
+15. 下一步建议:每条主命令结束后给出任务化说明和可复制命令,不新增命令别名。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 2. 背景
|
|
|
|
|
+
|
|
|
|
|
+当前项目底层流程已经比较完整:
|
|
|
|
|
+
|
|
|
|
|
+- `project-status` 能判断项目阶段和下一步。
|
|
|
|
|
+- `doctor` 能给阶段感知体检。
|
|
|
|
|
+- `write-gate` 已覆盖写前、提交前、提交后三个边界。
|
|
|
|
|
+- `review-pipeline` 能规范化审查结果、生成报告并落库。
|
|
|
|
|
+- `chapter-commit` 能生成写后事实并驱动 state / index / summary / memory / vector 投影。
|
|
|
|
|
+- `projection_log` 能定位投影状态。
|
|
|
|
|
+
|
|
|
|
|
+问题不在于缺少检查,而在于这些检查结果没有稳定地翻译给作者:
|
|
|
|
|
+
|
|
|
|
|
+1. 最终回复格式不稳定,作者每次要重新判断“到底完成了没有”。
|
|
|
|
|
+2. 技术细节、JSON、命令输出容易直接暴露,阅读负担偏重。
|
|
|
|
|
+3. 某些降级、跳过、重试或自动处理只存在于流程内部,最终汇报不一定说明。
|
|
|
|
|
+4. subagent 成败、输出完整性和耗时没有统一汇总。
|
|
|
|
|
+5. `init / plan / write / review` 四条主流程的成功标准清楚,但“如何交付给作者”的要求不够清楚。
|
|
|
|
|
+6. 长流程执行过程中,作者不一定知道当前做到哪一步、为什么在等、是否需要介入、能不能中断后继续。
|
|
|
|
|
+7. 偶发失败后,作者往往需要理解内部步骤和补跑命令,恢复成本偏高。
|
|
|
|
|
+8. 必须用户裁决的问题容易变成“报错退出 + 长解释”,没有被收敛成清晰选择。
|
|
|
|
|
+
|
|
|
|
|
+本轮改造不重写写作主链,不新增自动修复大循环;重点补“作者可理解的交付层”。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 3. 设计原则
|
|
|
|
|
+
|
|
|
|
|
+### 3.0 Claude Code 能力边界
|
|
|
|
|
+
|
|
|
|
|
+所有改造必须基于 Claude Code 已有能力和本插件可实现的 runtime 能力,不编造宿主不存在的 UI、后台任务或交互机制。
|
|
|
|
|
+
|
|
|
|
|
+已可依赖的能力:
|
|
|
|
|
+
|
|
|
|
|
+- Skill 通过 `SKILL.md` 约束流程和最终输出。
|
|
|
|
|
+- 主流程可使用 Claude Code 的 `Agent` 工具调用已注册 subagent。
|
|
|
|
|
+- 主流程可使用 `AskUserQuestion` 做关键裁决,前提是该 Skill frontmatter 已允许并且宿主环境支持。
|
|
|
|
|
+- 主流程可通过 `Read` / `Write` / `Edit` / `Bash` 等工具读取、写入和运行本插件脚本。
|
|
|
|
|
+- 插件 runtime 可通过 Python CLI 读写 `.webnovel/`、`.story-system/`、日志和中间产物。
|
|
|
|
|
+
|
|
|
|
|
+不能假设的能力:
|
|
|
|
|
+
|
|
|
|
|
+- 不能假设 Claude Code 有实时进度条、图形化按钮、后台任务队列或终端内原生选择菜单。
|
|
|
|
|
+- 不能假设 subagent 会自动返回结构化元数据;需要通过 prompt 协议和主流程记录来实现。
|
|
|
|
|
+- 不能假设重复运行 Skill 会天然断点续跑;断点续跑必须由本插件 runtime 读取产物、run ledger 和 gate 结果实现。
|
|
|
|
|
+- 不能假设 AskUserQuestion 可以承担复杂表单;裁决选项应保持 2-3 个短选项。
|
|
|
|
|
+- 不能假设日志、耗时、恢复点会自动存在;这些必须由脚本或主流程显式记录。
|
|
|
|
|
+
|
|
|
|
|
+因此,本计划中的“过程提示”是主流程在关键节点输出短提示;“交互式裁决”是基于 `AskUserQuestion` 或普通对话提问的有限选择;“断点续跑”是插件 runtime 的文件与状态检查能力,不是 Claude Code 内置工作流引擎。
|
|
|
|
|
+
|
|
|
|
|
+### 3.1 作者友好,不工程炫技
|
|
|
|
|
+
|
|
|
|
|
+默认用作者能理解的中文表达,不直接输出 `subagent`、`artifact`、`projection`、`schema`、`runtime contract` 等工程词。
|
|
|
|
|
+
|
|
|
|
|
+必要时可以在问题详情中保留文件路径和命令,但默认先讲影响:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+“保存本章故事事实”失败,会影响后续查询本章发生过什么。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+而不是:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+data-agent artifact schema_error: extraction_result missing accepted_events
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 3.2 问题不静默
|
|
|
|
|
+
|
|
|
|
|
+以下情况必须在最终报告中出现:
|
|
|
|
|
+
|
|
|
|
|
+- subagent 调用失败。
|
|
|
|
|
+- subagent 被用户模式选择跳过。
|
|
|
|
|
+- subagent 输出不完整。
|
|
|
|
|
+- reviewer 跳过或 `--minimal` 写 no-review artifact。
|
|
|
|
|
+- data-agent 三份结果缺失或 schema 不合格。
|
|
|
|
|
+- `write-gate` 任一阶段 failed。
|
|
|
|
|
+- `chapter-commit` rejected。
|
|
|
|
|
+- projection failed / pending / missing。
|
|
|
|
|
+- RAG 降级。
|
|
|
|
|
+- 备份失败。
|
|
|
|
|
+- 耗时异常。
|
|
|
|
|
+
|
|
|
|
|
+### 3.3 自动处理必须说明
|
|
|
|
|
+
|
|
|
|
|
+系统自动做过的事要简短说明,包括:
|
|
|
|
|
+
|
|
|
|
|
+- 自动补跑 projection。
|
|
|
|
|
+- 自动降级到关键词检索。
|
|
|
|
|
+- 自动应用白名单内的非阻断定点处理,例如格式整理或明确的错别字修正。
|
|
|
|
|
+- 自动覆盖旧的 no-review artifact。
|
|
|
|
|
+- 自动初始化 Git 或退回本地备份。
|
|
|
|
|
+
|
|
|
|
|
+说明不需要讲全部过程,只说明“处理了什么、是否影响结果”。
|
|
|
|
|
+
|
|
|
|
|
+### 3.4 技术细节默认隐藏
|
|
|
|
|
+
|
|
|
|
|
+最终报告优先给结论和影响。只有当用户需要处理时,再给路径、命令或错误类型。
|
|
|
|
|
+
|
|
|
|
|
+### 3.5 Runtime 优先,提示词兜底
|
|
|
|
|
+
|
|
|
|
|
+能由 runtime 确认的状态,不靠主 agent 口头判断。
|
|
|
|
|
+
|
|
|
|
|
+最终报告 helper 优先消费结构化数据:
|
|
|
|
|
+
|
|
|
|
|
+- `project-status --format json`
|
|
|
|
|
+- `doctor --format json`
|
|
|
|
|
+- `write-gate --format json`
|
|
|
|
|
+- `review-pipeline` payload
|
|
|
|
|
+- `chapter-commit` payload
|
|
|
|
|
+- `projection_log`
|
|
|
|
|
+- subagent run summary
|
|
|
|
|
+
|
|
|
|
|
+Skill 文档只规定“必须汇报什么”,不让每个 Skill 自己发明报告格式。
|
|
|
|
|
+
|
|
|
|
|
+### 3.6 过程易用性也是交付的一部分
|
|
|
|
|
+
|
|
|
|
|
+最终报告只能降低“结束后的不确定感”,不能解决执行过程中的焦虑。
|
|
|
|
|
+
|
|
|
|
|
+长流程必须让作者持续知道四件事:
|
|
|
|
|
+
|
|
|
|
|
+1. 当前在做哪一步。
|
|
|
|
|
+2. 这一步大概会产生什么。
|
|
|
|
|
+3. 是否需要作者做决定。
|
|
|
|
|
+4. 如果卡住,卡点是什么、会不会影响已有成果。
|
|
|
|
|
+
|
|
|
|
|
+过程提示应该短、少术语、少打扰。默认由系统继续推进,只有真正影响创作方向、事实一致性或文件安全时才打断用户。
|
|
|
|
|
+
|
|
|
|
|
+### 3.7 恢复应优先自动化
|
|
|
|
|
+
|
|
|
|
|
+“告诉作者怎么恢复”是底线,“作者重新执行同一个命令即可自动续跑”才是目标。
|
|
|
|
|
+
|
|
|
|
|
+主流程应逐步做到幂等:
|
|
|
|
|
+
|
|
|
|
|
+- 已完成且可信的产物不重复生成。
|
|
|
|
|
+- 失败后保留已有正文、审查报告和中间结果。
|
|
|
|
|
+- 再次执行同一命令时,先检查断点状态,再从最近失败步骤继续。
|
|
|
|
|
+- 只有产物过期、参数变更或用户明确要求重写时,才重新执行前置步骤。
|
|
|
|
|
+
|
|
|
|
|
+### 3.8 技术溯源不打扰作者
|
|
|
|
|
+
|
|
|
|
|
+作者默认看不到 JSON、schema、traceback 和完整命令日志。
|
|
|
|
|
+
|
|
|
|
|
+但系统需要保留本地溯源材料:
|
|
|
|
|
+
|
|
|
|
|
+- 用于开发者定位问题。
|
|
|
|
|
+- 用于用户反馈不可恢复故障。
|
|
|
|
|
+- 用于 runtime helper 判断断点和步骤状态。
|
|
|
|
|
+
|
|
|
|
|
+普通报告只给一条低干扰提示:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+如需反馈故障,可附上 .webnovel/logs/run_last.log。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 4. 统一最终报告规范
|
|
|
|
|
+
|
|
|
|
|
+所有主 Skill 最终输出统一为:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+总状态:已完成 / 部分完成 / 需要你处理 / 未完成。
|
|
|
|
|
+
|
|
|
|
|
+一、产生的文件与完成情况
|
|
|
|
|
+- ...
|
|
|
|
|
+
|
|
|
|
|
+二、过程中遇到的问题与异常耗时
|
|
|
|
|
+- 已自动处理:...
|
|
|
|
|
+- 建议确认:...
|
|
|
|
|
+- 必须处理:...
|
|
|
|
|
+- 耗时异常:...
|
|
|
|
|
+
|
|
|
|
|
+三、下一步建议
|
|
|
|
|
+- ...
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+状态含义:
|
|
|
|
|
+
|
|
|
|
|
+| 状态 | 含义 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 已完成 | 当前阶段产物齐全,关键检查通过,可以进入下一步 |
|
|
|
|
|
+| 部分完成 | 有主要产物,但存在跳过、降级、未完成项或非阻断问题 |
|
|
|
|
|
+| 需要你处理 | 当前结果可保存,但必须由用户确认、裁决或补充信息 |
|
|
|
|
|
+| 未完成 | 关键产物缺失或阻断失败,不能继续下一阶段 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 5. 术语翻译表(单一事实源)
|
|
|
|
|
+
|
|
|
|
|
+术语翻译不是每个 Skill 各写一份,而是作为 Author Layer 的单一事实源维护。
|
|
|
|
|
+
|
|
|
|
|
+首版采用结构化数据,便于 runtime helper 和 prompt integrity 测试复用:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+webnovel-writer/references/author_glossary.json
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+可选补一份面向文档阅读的 Markdown 摘要,但实现与测试只以 JSON 为准。
|
|
|
|
|
+
|
|
|
|
|
+维护规则:
|
|
|
|
|
+
|
|
|
|
|
+- Skill / Agent 文档可以引用术语,但不得自造不同译法。
|
|
|
|
|
+- `user_report.py`、`error_catalog.py`、审查作者视图都从同一术语表取作者友好表达。
|
|
|
|
|
+- 未登记的新工程词默认保留原词,并在报告中优先解释影响;后续再补词表,不临场硬翻。
|
|
|
|
|
+- 词表测试只检查关键术语是否存在、是否有作者解释,不锁死完整文案。
|
|
|
|
|
+
|
|
|
|
|
+| 工程词 | 作者友好表达 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| subagent | 写作助手 / 审查助手 / 资料整理助手 / 拆书助手 |
|
|
|
|
|
+| context-agent | 写前准备 |
|
|
|
|
|
+| reviewer | 写作检查 |
|
|
|
|
|
+| data-agent | 保存本章故事事实 |
|
|
|
|
|
+| deconstruction-agent | 参考作品拆解 |
|
|
|
|
|
+| artifact | 中间结果文件 |
|
|
|
|
|
+| review_results | 写作检查结果 |
|
|
|
|
|
+| fulfillment_result | 本章目标完成情况 |
|
|
|
|
|
+| disambiguation_result | 待确认的人名/设定歧义 |
|
|
|
|
|
+| extraction_result | 本章新发生的故事事实 |
|
|
|
|
|
+| chapter-commit | 提交本章事实 |
|
|
|
|
|
+| projection | 更新故事资料 |
|
|
|
|
|
+| state / index / summary / memory / vector | 状态 / 索引 / 摘要 / 长期记忆 / 检索库 |
|
|
|
|
|
+| blocking issue | 会影响继续写作的问题 |
|
|
|
|
|
+| fallback | 临时降级读取 |
|
|
|
|
|
+| runtime contract | 本章写作要求 |
|
|
|
|
|
+| schema error | 中间结果格式不完整 |
|
|
|
|
|
+| pending | 等待确认 |
|
|
|
|
|
+| rejected | 本章事实未通过提交 |
|
|
|
|
|
+| accepted | 本章事实已通过提交 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 6. 修改范围
|
|
|
|
|
+
|
|
|
|
|
+### 6.1 Skill / Agent 文档
|
|
|
|
|
+
|
|
|
|
|
+- `webnovel-writer/skills/webnovel-init/SKILL.md`
|
|
|
|
|
+- `webnovel-writer/skills/webnovel-plan/SKILL.md`
|
|
|
|
|
+- `webnovel-writer/skills/webnovel-write/SKILL.md`
|
|
|
|
|
+- `webnovel-writer/skills/webnovel-review/SKILL.md`
|
|
|
|
|
+- `webnovel-writer/agents/context-agent.md`
|
|
|
|
|
+- `webnovel-writer/agents/reviewer.md`
|
|
|
|
|
+- `webnovel-writer/agents/data-agent.md`
|
|
|
|
|
+- `webnovel-writer/agents/deconstruction-agent.md`
|
|
|
|
|
+
|
|
|
|
|
+### 6.2 Runtime helper
|
|
|
|
|
+
|
|
|
|
|
+新增:
|
|
|
|
|
+
|
|
|
|
|
+- `webnovel-writer/references/author_glossary.json`
|
|
|
|
|
+- `webnovel-writer/references/author_error_catalog.json`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/author_glossary.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/error_catalog.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/review_author_view.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/user_report.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/run_ledger.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/run_logger.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_author_glossary.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_error_catalog.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_review_author_view.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_user_report.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_run_ledger.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_run_logger.py`
|
|
|
|
|
+
|
|
|
|
|
+修改:
|
|
|
|
|
+
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/webnovel.py`
|
|
|
|
|
+- `webnovel-writer/scripts/review_pipeline.py`
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_webnovel_unified_cli.py`
|
|
|
|
|
+- `webnovel-writer/skills/webnovel-write/SKILL.md`
|
|
|
|
|
+
|
|
|
|
|
+### 6.3 Prompt / behavior 测试
|
|
|
|
|
+
|
|
|
|
|
+修改或新增:
|
|
|
|
|
+
|
|
|
|
|
+- `webnovel-writer/scripts/data_modules/tests/test_prompt_integrity.py`
|
|
|
|
|
+- `webnovel-writer/evals/fixtures/behavior/fast.json`
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 7. 能力映射与实现边界
|
|
|
|
|
+
|
|
|
|
|
+| 易用性目标 | 可用 Claude Code 能力 | 插件需新增 / 修改 | 不依赖 |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| 过程提示 | 主流程自然语言输出 | Skill 增加关键节点提示要求 | 实时进度条 |
|
|
|
|
|
+| 开始前预期管理 | 主流程开头输出短说明 | Skill 增加流程概览模板 | 后台任务估时系统 |
|
|
|
|
|
+| 最终报告 | 主流程最终回复 | `user_report.py` 渲染 text/json | Claude Code 自动格式化 |
|
|
|
|
|
+| subagent 状态汇总 | `Agent` 调用 + 主流程记录 | `SubagentRun` 协议和主流程汇总 | subagent 自动 telemetry |
|
|
|
|
|
+| 异常分类 | 主流程读取 runtime JSON | `user_report.py` 分类逻辑 | 宿主自动错误分类 |
|
|
|
|
|
+| 耗时记录 | Bash / Python 计时或主流程记录 | run ledger / helper 记录步骤时间 | Claude Code 内置性能面板 |
|
|
|
|
|
+| 断点续跑 | Bash 运行 Python CLI,读写本地文件 | `run_ledger.py`、产物可信度检查、gate 复用 | Claude Code 内置 resume 引擎 |
|
|
|
|
|
+| 交互式裁决 | `AskUserQuestion` 或普通对话提问 | Skill 定义有限选项和处理分支 | 图形化按钮 / 复杂表单 |
|
|
|
|
|
+| 技术溯源 | Python 写本地日志 | `run_logger.py`、敏感信息过滤 | 宿主自动日志导出 |
|
|
|
|
|
+| 下一步命令 | 最终报告文本 | `user_report.py` 填入建议命令 | 一键按钮 |
|
|
|
|
|
+
|
|
|
|
|
+实现原则:
|
|
|
|
|
+
|
|
|
|
|
+1. 先用现有 Skill / Agent / Bash / Python CLI 能力落地。
|
|
|
|
|
+2. 任何需要 runtime 判断的能力,都必须有本地文件、JSON 或命令输出作为依据。
|
|
|
|
|
+3. 任何看起来像 UI 的体验,都只能表现为文本提示、有限提问或最终报告,除非未来另做 Dashboard 改造。
|
|
|
|
|
+4. 不把 Claude Code 未承诺的行为写成验收标准。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 8. 过程易用性设计
|
|
|
|
|
+
|
|
|
|
|
+### 8.1 目标
|
|
|
|
|
+
|
|
|
|
|
+让作者在流程运行中不需要理解内部工程链路,也能知道:
|
|
|
|
|
+
|
|
|
|
|
+- 现在系统在做什么。
|
|
|
|
|
+- 这一步为什么必要。
|
|
|
|
|
+- 是否仍在推进。
|
|
|
|
|
+- 什么时候需要自己拍板。
|
|
|
|
|
+- 中途失败时已经完成了哪些部分,能从哪里继续。
|
|
|
|
|
+
|
|
|
|
|
+过程体验不是把每条命令都打印出来,而是把长流程拆成作者能理解的“当前动作”。
|
|
|
|
|
+
|
|
|
|
|
+### 8.2 开始前预期管理
|
|
|
|
|
+
|
|
|
|
|
+长流程开始前,先给作者一个短概览:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+开始写第 13 章。本次会经过:整理依据 -> 起草正文 -> 写作检查 -> 润色 -> 保存本章故事事实 -> 更新资料并备份。
|
|
|
|
|
+不同 API、模型和网络速度差异很大,本流程不承诺固定耗时;中途只有遇到创作裁决或事实冲突时才会问你。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+预期管理必须包含:
|
|
|
|
|
+
|
|
|
|
|
+- 本次目标。
|
|
|
|
|
+- 主要步骤。
|
|
|
|
|
+- 不承诺固定耗时的说明。
|
|
|
|
|
+- 是否需要用户守在旁边。
|
|
|
|
|
+
|
|
|
|
|
+### 8.3 统一过程提示格式
|
|
|
|
|
+
|
|
|
|
|
+过程提示使用短句,不超过两行:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+正在整理本章写作依据:会读取章纲、最近剧情和未回收伏笔。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+正在保存本章故事事实:这一步会更新摘要、角色状态和后续检索资料。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+避免:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+Running write-gate --stage precommit and validating artifacts...
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 8.4 阶段名翻译
|
|
|
|
|
+
|
|
|
|
|
+| 内部步骤 | 过程提示名称 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| preflight | 检查项目环境 |
|
|
|
|
|
+| placeholder-scan | 检查未补齐占位 |
|
|
|
|
|
+| story-system | 刷新本章写作要求 |
|
|
|
|
|
+| write-gate prewrite | 写前检查 |
|
|
|
|
|
+| context-agent | 整理写作依据 |
|
|
|
|
|
+| draft | 起草正文 |
|
|
|
|
|
+| reviewer | 写作检查 |
|
|
|
|
|
+| review-pipeline | 生成检查报告 |
|
|
|
|
|
+| polish | 润色与排版 |
|
|
|
|
|
+| data-agent | 保存本章故事事实 |
|
|
|
|
|
+| write-gate precommit | 提交前检查 |
|
|
|
|
|
+| chapter-commit | 提交本章事实 |
|
|
|
|
|
+| write-gate postcommit | 提交后确认 |
|
|
|
|
|
+| projections retry | 补跑故事资料更新 |
|
|
|
|
|
+| backup | 备份本章成果 |
|
|
|
|
|
+
|
|
|
|
|
+### 8.5 少打扰确认策略
|
|
|
|
|
+
|
|
|
|
|
+默认不打断作者,除非出现以下情况:
|
|
|
|
|
+
|
|
|
|
|
+| 必须询问 | 原因 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| init 最终方案确认 | 会写入新书核心设定 |
|
|
|
|
|
+| 参考作品拆解质量不足但用户想采用 | 可能污染新书创意 |
|
|
|
|
|
+| plan 发现总纲 / 设定冲突 | 需要创作裁决 |
|
|
|
|
|
+| write 发现无法定点修复的 blocking issue | 会影响本章继续提交 |
|
|
|
|
|
+| data-agent 出现低置信度歧义且会影响事实入库 | 后续状态可能写错 |
|
|
|
|
|
+| commit rejected 后用户仍想继续 | 需要明确风险接受 |
|
|
|
|
|
+| 文件写入范围异常 | 可能污染其他章节或项目 |
|
|
|
|
|
+
|
|
|
|
|
+不应询问:
|
|
|
|
|
+
|
|
|
|
|
+- 普通非阻断审查问题,系统可在润色中处理。
|
|
|
|
|
+- RAG 降级但不影响当前写作。
|
|
|
|
|
+- projection retry 可以自动补跑。
|
|
|
|
|
+- 备份从 Git 降级到本地备份且成功。
|
|
|
|
|
+- 单纯耗时偏长但结果正常。
|
|
|
|
|
+
|
|
|
|
|
+### 8.6 长流程进度节点
|
|
|
|
|
+
|
|
|
|
|
+每个主 Skill 建议最多展示 3-6 个过程节点,不展示每个内部命令。
|
|
|
|
|
+
|
|
|
|
|
+`/webnovel-init`:
|
|
|
|
|
+
|
|
|
|
|
+1. 收集故事核心。
|
|
|
|
|
+2. 整理创意约束。
|
|
|
|
|
+3. 等待最终确认。
|
|
|
|
|
+4. 创建项目文件。
|
|
|
|
|
+5. 生成写作主链基础资料。
|
|
|
|
|
+6. 验证项目能否进入规划。
|
|
|
|
|
+
|
|
|
|
|
+`/webnovel-plan`:
|
|
|
|
|
+
|
|
|
|
|
+1. 读取总纲和已有剧情状态。
|
|
|
|
|
+2. 补齐设定基线。
|
|
|
|
|
+3. 规划卷节奏和时间线。
|
|
|
|
|
+4. 拆分章纲。
|
|
|
|
|
+5. 写回新增设定。
|
|
|
|
|
+6. 刷新写作要求。
|
|
|
|
|
+
|
|
|
|
|
+`/webnovel-write`:
|
|
|
|
|
+
|
|
|
|
|
+1. 检查写前条件。
|
|
|
|
|
+2. 整理写作依据。
|
|
|
|
|
+3. 起草正文。
|
|
|
|
|
+4. 写作检查与润色。
|
|
|
|
|
+5. 保存本章故事事实。
|
|
|
|
|
+6. 提交、更新资料并备份。
|
|
|
|
|
+
|
|
|
|
|
+`/webnovel-review`:
|
|
|
|
|
+
|
|
|
|
|
+1. 确认待审章节。
|
|
|
|
|
+2. 整理审查依据。
|
|
|
|
|
+3. 执行写作检查。
|
|
|
|
|
+4. 生成审查报告并落库。
|
|
|
|
|
+5. 如有阻断问题,等待用户裁决。
|
|
|
|
|
+
|
|
|
|
|
+### 8.7 卡住时的过程反馈
|
|
|
|
|
+
|
|
|
|
|
+流程卡住时不要只报错误,要说明三件事:
|
|
|
|
|
+
|
|
|
|
|
+1. 卡在哪一步。
|
|
|
|
|
+2. 已经完成了什么。
|
|
|
|
|
+3. 下一步怎么恢复。
|
|
|
|
|
+
|
|
|
|
|
+示例:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+卡在“保存本章故事事实”:正文和审查报告已经完成,但本章事实提取结果缺少摘要字段。
|
|
|
|
|
+我会重跑资料整理助手;如果仍失败,会保留正文和审查报告,不会提交不完整事实。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 8.8 可恢复状态提示
|
|
|
|
|
+
|
|
|
|
|
+流程中断或失败后,最终报告和过程反馈都应说明恢复点:
|
|
|
|
|
+
|
|
|
|
|
+| 卡点 | 恢复建议 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| context-agent 失败 | 补齐章纲 / 合同后重跑写章 |
|
|
|
|
|
+| 起草后 review 失败 | 保留正文,重跑写作检查 |
|
|
|
|
|
+| review 有 blocking | 定点修复或用户裁决后继续润色 |
|
|
|
|
|
+| data-agent artifact 缺失 | 重跑保存本章故事事实 |
|
|
|
|
|
+| precommit failed | 修复中间结果后重跑提交前检查 |
|
|
|
|
|
+| commit rejected | 修复 missed_nodes / pending / blocking 后重新提交 |
|
|
|
|
|
+| projection failed | 补跑 `projections retry` |
|
|
|
|
|
+| backup failed | 手动或重跑 backup,不影响已提交事实 |
|
|
|
|
|
+
|
|
|
|
|
+### 8.9 作者可控的详细程度
|
|
|
|
|
+
|
|
|
|
|
+后续可增加可选参数:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+--quiet 只显示关键确认和最终报告
|
|
|
|
|
+--verbose 显示过程节点、异常原因和关键命令
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+首版不强制实现参数,但 Skill 文档应遵循默认“简洁过程提示 + 详细最终报告”的体验。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 9. 断点续跑设计
|
|
|
|
|
+
|
|
|
|
|
+### 9.1 目标
|
|
|
|
|
+
|
|
|
|
|
+让作者遇到偶发失败后,不需要理解内部补跑命令。重复执行同一主命令时,系统应自动识别已完成步骤,从最近可信断点继续。
|
|
|
|
|
+
|
|
|
|
|
+示例:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+检测到上一次第 13 章已完成“起草正文”和“写作检查”,但卡在“保存本章故事事实”。
|
|
|
|
|
+本次将从“保存本章故事事实”继续,不会重写正文。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 9.2 断点状态来源
|
|
|
|
|
+
|
|
|
|
|
+优先复用现有产物和 gate:
|
|
|
|
|
+
|
|
|
|
|
+| 步骤 | 可信完成判据 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 写前检查 | `write-gate prewrite ok=true` 或当前重新运行通过 |
|
|
|
|
|
+| 写作依据 | `context-agent` 返回任务书且未过期 |
|
|
|
|
|
+| 正文起草 | 目标章节正文文件存在且非空 |
|
|
|
|
|
+| 写作检查 | `review_results.json` 标记目标章节,且 `review-pipeline` 已生成报告 |
|
|
|
|
|
+| 润色 | 正文修改时间晚于审查报告,且无 anti-ai 阻断记录 |
|
|
|
|
|
+| 保存事实 | 三份 data artifacts 存在且 `write-gate precommit` 通过 |
|
|
|
|
|
+| 提交事实 | commit 文件存在且 status accepted |
|
|
|
|
|
+| 更新资料 | `write-gate postcommit` 通过,projection 五项 done/skipped |
|
|
|
|
|
+| 备份 | backup 返回成功或存在本章备份记录 |
|
|
|
|
|
+
|
|
|
|
|
+### 9.3 Run Ledger
|
|
|
|
|
+
|
|
|
|
|
+首版可以不新增复杂状态机,但建议新增轻量运行账本:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+.webnovel/runs/write_ch0013.json
|
|
|
|
|
+.webnovel/logs/run_last.log
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+`write_ch0013.json` 保存机器可读进度:
|
|
|
|
|
+
|
|
|
|
|
+```json
|
|
|
|
|
+{
|
|
|
|
|
+ "schema_version": "webnovel-run-ledger/v1",
|
|
|
|
|
+ "command": "webnovel-write",
|
|
|
|
|
+ "chapter": 13,
|
|
|
|
|
+ "started_at": "",
|
|
|
|
|
+ "updated_at": "",
|
|
|
|
|
+ "steps": [
|
|
|
|
|
+ {"id": "draft", "label": "起草正文", "status": "done", "outputs": ["正文/第0013章.md"]},
|
|
|
|
|
+ {"id": "data", "label": "保存本章故事事实", "status": "failed", "problem": "API timeout"}
|
|
|
|
|
+ ]
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+`run_last.log` 保存工程细节:
|
|
|
|
|
+
|
|
|
|
|
+- 命令。
|
|
|
|
|
+- JSON 输出摘要。
|
|
|
|
|
+- traceback。
|
|
|
|
|
+- subagent 原始异常。
|
|
|
|
|
+- 耗时。
|
|
|
|
|
+
|
|
|
|
|
+作者报告不直接展开 `run_last.log`,只在不可恢复故障时提示路径。
|
|
|
|
|
+
|
|
|
|
|
+### 9.4 幂等策略
|
|
|
|
|
+
|
|
|
|
|
+重复执行主命令时:
|
|
|
|
|
+
|
|
|
|
|
+1. 先解析 `PROJECT_ROOT`、章节号和模式参数。
|
|
|
|
|
+2. 读取 run ledger 和现有产物。
|
|
|
|
|
+3. 校验已完成步骤是否仍可信。
|
|
|
|
|
+4. 从第一个不可信或失败步骤继续。
|
|
|
|
|
+5. 若用户参数改变、正文被手动修改、章纲更新时间晚于正文,则提示是否重跑前置步骤。
|
|
|
|
|
+
|
|
|
|
|
+### 9.5 必须询问的续跑分支
|
|
|
|
|
+
|
|
|
|
|
+| 场景 | 处理 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 正文存在但本次用户要求重写 | 询问覆盖 / 另存 / 取消 |
|
|
|
|
|
+| 章纲更新晚于正文 | 询问沿用旧正文还是重新起草 |
|
|
|
|
|
+| 审查报告来自旧正文 | 自动重跑审查 |
|
|
|
|
|
+| commit 已 accepted,但用户再次执行写同章 | 询问是否重写本章或只查看状态 |
|
|
|
|
|
+| backup 失败但 commit 已完成 | 自动重跑 backup,不重写正文 |
|
|
|
|
|
+
|
|
|
|
|
+### 9.6 阶段落地
|
|
|
|
|
+
|
|
|
|
|
+第一阶段只做 `/webnovel-write` 的断点续跑,因为它步骤最长、失败点最多。
|
|
|
|
|
+
|
|
|
|
|
+后续再扩展:
|
|
|
|
|
+
|
|
|
|
|
+- `/webnovel-plan`:批次级续跑,失败批次重做,不覆盖整卷。
|
|
|
|
|
+- `/webnovel-init`:用户确认前问答态不强行续跑;生成阶段可按文件补齐。
|
|
|
|
|
+- `/webnovel-review`:按章节范围跳过已审且正文未变更的章节。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 10. 交互式裁决设计
|
|
|
|
|
+
|
|
|
|
|
+### 10.1 目标
|
|
|
|
|
+
|
|
|
|
|
+遇到必须用户处理的问题时,优先给有限选项,而不是让作者自己理解错误并手改文件。
|
|
|
|
|
+
|
|
|
|
|
+### 10.2 裁决呈现格式
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+需要你裁决:本章“沈照”的法宝与大纲冲突。
|
|
|
|
|
+
|
|
|
|
|
+大纲记录:青锋剑
|
|
|
|
|
+正文写成:紫金葫芦
|
|
|
|
|
+
|
|
|
|
|
+请选择处理方式:
|
|
|
|
|
+1. 坚持大纲:自动把正文相关段落改回“青锋剑”
|
|
|
|
|
+2. 采用新设定:保留“紫金葫芦”,并把设定变更写入故事资料
|
|
|
|
|
+3. 我手动处理:暂停流程,修改后继续
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 10.3 标准裁决类型
|
|
|
|
|
+
|
|
|
|
|
+| 类型 | 选项 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| 设定冲突 | 坚持既有设定 / 采用新设定 / 手动处理 |
|
|
|
|
|
+| 时间线冲突 | 按时间线修正文 / 调整时间线 / 手动处理 |
|
|
|
|
|
+| 角色 OOC | 按角色卡修正文 / 更新角色变化理由 / 手动处理 |
|
|
|
|
|
+| 低置信度消歧 | 采用 A / 采用 B / 暂不入库 |
|
|
|
|
|
+| commit rejected | 修复后重提 / 接受风险但不提交 / 手动处理 |
|
|
|
|
|
+| 文件写入范围异常 | 取消写入 / 只保留安全文件 / 查看详情 |
|
|
|
|
|
+
|
|
|
|
|
+### 10.4 与 AskUserQuestion 的关系
|
|
|
|
|
+
|
|
|
|
|
+在 Claude Code 环境中,优先使用 `AskUserQuestion` 做关键裁决。
|
|
|
|
|
+
|
|
|
|
|
+选项必须短,并说明影响:
|
|
|
|
|
+
|
|
|
|
|
+- 推荐项放第一。
|
|
|
|
|
+- 每个选项说明会改什么。
|
|
|
|
|
+- 不出现“其他”作为固定选项;用户可自由补充。
|
|
|
|
|
+
|
|
|
|
|
+### 10.5 不做自动裁决的红线
|
|
|
|
|
+
|
|
|
|
|
+以下情况不能由系统擅自决定:
|
|
|
|
|
+
|
|
|
|
|
+- 改变主角长期能力路线。
|
|
|
|
|
+- 改变核心反派身份。
|
|
|
|
|
+- 改变卷末高潮结果。
|
|
|
|
|
+- 将参考作品内容写入新书 canon。
|
|
|
|
|
+- 覆盖用户手动编辑的正文。
|
|
|
|
|
+- 把 rejected commit 当作 accepted 继续推进。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 11. 技术溯源与日志
|
|
|
|
|
+
|
|
|
|
|
+### 11.1 目标
|
|
|
|
|
+
|
|
|
|
|
+作者报告保持清爽,工程排查材料保留完整。
|
|
|
|
|
+
|
|
|
|
|
+### 11.2 日志位置
|
|
|
|
|
+
|
|
|
|
|
+建议:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+.webnovel/logs/run_last.log
|
|
|
|
|
+.webnovel/logs/runs/YYYYMMDD-HHMMSS-{command}.log
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 11.3 日志内容
|
|
|
|
|
+
|
|
|
|
|
+日志包含:
|
|
|
|
|
+
|
|
|
|
|
+- 命令与参数。
|
|
|
|
|
+- 解析后的项目根。
|
|
|
|
|
+- 每个过程节点开始 / 结束时间。
|
|
|
|
|
+- subagent run summary。
|
|
|
|
|
+- runtime JSON 输出摘要。
|
|
|
|
|
+- 异常 traceback。
|
|
|
|
|
+- 最终 `user-report --format json`。
|
|
|
|
|
+
|
|
|
|
|
+日志不应包含:
|
|
|
|
|
+
|
|
|
|
|
+- API key。
|
|
|
|
|
+- `.env` 原文。
|
|
|
|
|
+- 用户未确认写入的新书核心设定草稿,除非它已经作为本次运行输入出现。
|
|
|
|
|
+
|
|
|
|
|
+### 11.4 最终报告中的呈现
|
|
|
|
|
+
|
|
|
|
|
+只在以下情况展示日志路径:
|
|
|
|
|
+
|
|
|
|
|
+- 未完成。
|
|
|
|
|
+- 需要用户处理但问题不容易描述。
|
|
|
|
|
+- 用户使用 `--verbose`。
|
|
|
|
|
+
|
|
|
|
|
+示例:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+技术详情已保存:.webnovel/logs/run_last.log。反馈故障时可以附上它。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 12. Phase 0:基线审计
|
|
|
|
|
+
|
|
|
|
|
+### 12.1 目标
|
|
|
|
|
+
|
|
|
|
|
+先确认现有报告、gate 和 agent 输出边界,避免改造后不知道格式漂移来自哪里。
|
|
|
|
|
+
|
|
|
|
|
+### 12.2 工作项
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 记录四个主 Skill 的当前最终输出要求。
|
|
|
|
|
+- [ ] 记录四个 agent 当前输出格式与写入责任。
|
|
|
|
|
+- [ ] 记录 `project-status`、`doctor`、`write-gate`、`review-pipeline`、`chapter-commit` 的 JSON 字段。
|
|
|
|
|
+- [ ] 记录现有错误码、repair 文案、gate failure 特征与 projection 状态,作为 `author_error_catalog.json` 初始素材。
|
|
|
|
|
+- [ ] 记录 `review-pipeline` 可用于作者视图的字段:总分、blocking 数、维度问题、建议项、报告路径。
|
|
|
|
|
+- [ ] 记录当前文档和 Skill 中已出现的工程词,和 §5 术语表做一次去重。
|
|
|
|
|
+- [ ] 确认现有测试中哪些是文案级断言,哪些能改为行为级断言。
|
|
|
|
|
+
|
|
|
|
|
+### 12.3 验收
|
|
|
|
|
+
|
|
|
|
|
+- 当前可复用的结构化数据源已列明。
|
|
|
|
|
+- 明确哪些问题只能由 prompt 记录,哪些可以由 runtime helper 读取。
|
|
|
|
|
+- `author_glossary.json` 与 `author_error_catalog.json` 的首批条目来源清楚,不靠实现时临场猜。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 13. Phase 1:Skill 最终报告契约
|
|
|
|
|
+
|
|
|
|
|
+### 13.1 目标
|
|
|
|
|
+
|
|
|
|
|
+先用最小改动让四个主流程在最终回复中遵守统一格式。
|
|
|
|
|
+
|
|
|
|
|
+### 13.2 `/webnovel-init`
|
|
|
|
|
+
|
|
|
|
|
+必须汇报:
|
|
|
|
|
+
|
|
|
|
|
+- 项目目录。
|
|
|
|
|
+- `.webnovel/state.json`。
|
|
|
|
|
+- `设定集/世界观.md`、`设定集/力量体系.md`、`设定集/主角卡.md`、`设定集/反派设计.md`。
|
|
|
|
|
+- `大纲/总纲.md`。
|
|
|
|
|
+- `.webnovel/idea_bank.json`。
|
|
|
|
|
+- `.story-system/MASTER_SETTING.json`。
|
|
|
|
|
+- 是否使用参考作品拆解。
|
|
|
|
|
+- 用户确认前未写入 canon 的情况。
|
|
|
|
|
+- 缺失信息是否会影响后续 plan。
|
|
|
|
|
+
|
|
|
|
|
+工作项:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 在 `webnovel-init/SKILL.md` 增加“最终报告要求”段。
|
|
|
|
|
+- [ ] 将成功标准映射到“三段式报告”。
|
|
|
|
|
+- [ ] 明确参考作品拆解失败、输入不足或质量不过线时必须进入“建议确认 / 必须处理”。
|
|
|
|
|
+
|
|
|
|
|
+### 13.3 `/webnovel-plan`
|
|
|
|
|
+
|
|
|
|
|
+必须汇报:
|
|
|
|
|
+
|
|
|
|
|
+- `大纲/第{volume_id}卷-节拍表.md`。
|
|
|
|
|
+- `大纲/第{volume_id}卷-时间线.md`。
|
|
|
|
|
+- `大纲/第{volume_id}卷-详细大纲.md`。
|
|
|
|
|
+- 新增设定写回了哪些设定集文件。
|
|
|
|
|
+- `大纲/第{volume_id}卷-总纲写回.json`。
|
|
|
|
|
+- `master-outline-sync` 是否完成。
|
|
|
|
|
+- `update-state` 是否完成。
|
|
|
|
|
+- Story System 合同是否刷新。
|
|
|
|
|
+- 占位符、时间线、节点承接是否通过。
|
|
|
|
|
+
|
|
|
|
|
+工作项:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 在 `webnovel-plan/SKILL.md` 增加“最终报告要求”段。
|
|
|
|
|
+- [ ] 明确时间线回跳、BLOCKER、占位符残留必须报告。
|
|
|
|
|
+- [ ] 明确只重做失败批次时要说明自动处理内容。
|
|
|
|
|
+
|
|
|
|
|
+### 13.4 `/webnovel-write`
|
|
|
|
|
+
|
|
|
|
|
+必须汇报:
|
|
|
|
|
+
|
|
|
|
|
+- 正文文件路径。
|
|
|
|
|
+- 写作检查报告路径。
|
|
|
|
|
+- `.webnovel/tmp/review_results.json`。
|
|
|
|
|
+- `.webnovel/tmp/fulfillment_result.json`。
|
|
|
|
|
+- `.webnovel/tmp/disambiguation_result.json`。
|
|
|
|
|
+- `.webnovel/tmp/extraction_result.json`。
|
|
|
|
|
+- `.story-system/commits/chapter_{NNN}.commit.json`。
|
|
|
|
|
+- state / index / summary / memory / vector 更新状态。
|
|
|
|
|
+- 备份状态。
|
|
|
|
|
+- 是否可以继续写下一章。
|
|
|
|
|
+
|
|
|
|
|
+工作项:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 在 `webnovel-write/SKILL.md` 增加“最终报告要求”段。
|
|
|
|
|
+- [ ] 明确 `--fast` 和 `--minimal` 的跳过项必须说明。
|
|
|
|
|
+- [ ] 明确 `chapter-commit rejected` 时最终状态不得写“已完成”。
|
|
|
|
|
+- [ ] 明确 projection retry 发生时要说明已自动处理和结果。
|
|
|
|
|
+
|
|
|
|
|
+### 13.5 `/webnovel-review`
|
|
|
|
|
+
|
|
|
|
|
+必须汇报:
|
|
|
|
|
+
|
|
|
|
|
+- 审查报告文件。
|
|
|
|
|
+- `review_metrics.json`。
|
|
|
|
|
+- `review_metrics` 是否落库。
|
|
|
|
|
+- 阻断问题数量。
|
|
|
|
|
+- 用户裁决状态。
|
|
|
|
|
+- 如果无阻断,明确可以继续写作。
|
|
|
|
|
+
|
|
|
|
|
+工作项:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 在 `webnovel-review/SKILL.md` 增加“最终报告要求”段。
|
|
|
|
|
+- [ ] 明确 blocking 问题必须进入“必须处理”或“建议确认”。
|
|
|
|
|
+- [ ] 明确只保存报告、稍后处理时最终状态为“需要你处理”或“部分完成”。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 14. Phase 2:Subagent 返回协议
|
|
|
|
|
+
|
|
|
|
|
+### 14.1 目标
|
|
|
|
|
+
|
|
|
|
|
+让主流程可以稳定汇总每个 subagent 的完成状态、问题、自动处理内容和耗时。
|
|
|
|
|
+
|
|
|
|
|
+### 14.2 统一协议
|
|
|
|
|
+
|
|
|
|
|
+主流程为每次 subagent 调用记录一份 `SubagentRun`:
|
|
|
|
|
+
|
|
|
|
|
+```json
|
|
|
|
|
+{
|
|
|
|
|
+ "name": "data-agent",
|
|
|
|
|
+ "user_label": "保存本章故事事实",
|
|
|
|
|
+ "status": "completed | partial | failed | skipped",
|
|
|
|
|
+ "problems": [],
|
|
|
|
|
+ "auto_handled": [],
|
|
|
|
|
+ "needs_user_action": false,
|
|
|
|
|
+ "duration_ms": 0,
|
|
|
|
|
+ "outputs": []
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+字段说明:
|
|
|
|
|
+
|
|
|
|
|
+| 字段 | 含义 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| `name` | agent 名称 |
|
|
|
|
|
+| `user_label` | 作者友好名称 |
|
|
|
|
|
+| `status` | 完成状态 |
|
|
|
|
|
+| `problems` | 遇到的问题 |
|
|
|
|
|
+| `auto_handled` | 自动处理内容 |
|
|
|
|
|
+| `needs_user_action` | 是否需要用户处理 |
|
|
|
|
|
+| `duration_ms` | 耗时 |
|
|
|
|
|
+| `outputs` | 产生或返回的关键产物 |
|
|
|
|
|
+
|
|
|
|
|
+### 14.3 工作项
|
|
|
|
|
+
|
|
|
|
|
+- [ ] `context-agent`:上下文不足、legacy fallback、伏笔数据缺失必须可被主流程记录。
|
|
|
|
|
+- [ ] `reviewer`:正文为空、读取状态失败、维度跳过必须写入 summary 或问题字段。
|
|
|
|
|
+- [ ] `data-agent`:三份 artifact 写入状态、长时间无进展、pending 消歧必须可被汇总。
|
|
|
|
|
+- [ ] `deconstruction-agent`:输入不足、质量不过线、降级 quick mode 必须可被汇总。
|
|
|
|
|
+- [ ] 主 Skill 调用 agent 后,必须记录 `SubagentRun` 供最终报告使用。
|
|
|
|
|
+
|
|
|
|
|
+### 14.4 验收
|
|
|
|
|
+
|
|
|
|
|
+- 写章流程最终报告能列出写前准备、写作检查、保存本章故事事实三个助手的状态。
|
|
|
|
|
+- 任一 agent 跳过、失败、输出不完整时,最终报告不会写成完全成功。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 15. Phase 3:异常分类与耗时呈现
|
|
|
|
|
+
|
|
|
|
|
+### 15.1 异常分类
|
|
|
|
|
+
|
|
|
|
|
+所有问题归为三类:
|
|
|
|
|
+
|
|
|
|
|
+| 类型 | 定义 | 示例 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 已自动处理 | 系统已补跑、降级或完成白名单内定点处理,不需要用户处理 | projection retry 成功、RAG 降级但不影响结果 |
|
|
|
|
|
+| 建议确认 | 结果可用,但建议用户看一眼 | 参考拆解质量略低、某个角色命名有歧义但已采用 |
|
|
|
|
|
+| 必须处理 | 不处理会影响继续写作、提交或一致性 | blocking issue、正文缺失、commit rejected、projection failed |
|
|
|
|
|
+
|
|
|
|
|
+### 15.2 Error Catalog
|
|
|
|
|
+
|
|
|
|
|
+`author_error_catalog.json` 是错误到作者行动的映射表,供 `error_catalog.py` 和 `user_report.py` 共同使用。它不改变错误判定,只负责把已知错误翻译成:
|
|
|
|
|
+
|
|
|
|
|
+- 人话原因。
|
|
|
|
|
+- 对当前章节 / 后续写作的影响。
|
|
|
|
|
+- 下一步动作或可复制命令。
|
|
|
|
|
+- 严重度与异常分类。
|
|
|
|
|
+- 是否允许自动处理。
|
|
|
|
|
+
|
|
|
|
|
+未知错误必须诚实降级:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+这里遇到一个系统还没有登记过的问题。当前不会把它当成已完成;请先运行 /webnovel-doctor,或反馈时附上日志。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+错误目录只做翻译和分类;自动处理白名单必须单独显式登记,且第三期前不扩大现有自动处理范围。
|
|
|
|
|
+
|
|
|
|
|
+### 15.3 耗时呈现
|
|
|
|
|
+
|
|
|
|
|
+默认只展示:
|
|
|
|
|
+
|
|
|
|
|
+- 已耗时。
|
|
|
|
|
+- 当前步骤是否仍在推进。
|
|
|
|
|
+- 长时间无进展时的可能原因。
|
|
|
|
|
+- 是否影响已完成结果。
|
|
|
|
|
+
|
|
|
|
|
+不设置固定耗时阈值。不同 API、模型、网络、章节长度和审查复杂度差异过大,固定阈值会误导作者。
|
|
|
|
|
+
|
|
|
|
|
+过程提示可以使用相对表达:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+“保存本章故事事实”已经运行了一段时间,可能是接口响应较慢或本章新增事实较多;当前不会影响已生成正文。
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 15.4 工作项
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 在 Skill 最终报告要求中加入“异常分类”。
|
|
|
|
|
+- [ ] 新增 `author_error_catalog.json` 与 `error_catalog.py`。
|
|
|
|
|
+- [ ] 给 `mainline_ready=false`、`write-gate failed`、`chapter-commit rejected`、projection failed / pending、RAG 降级、artifact schema 不完整等场景建立首批条目。
|
|
|
|
|
+- [ ] 未命中错误码时降级到“诚实报错 + `/webnovel-doctor` + 日志路径”,不得崩溃或乱翻译。
|
|
|
|
|
+- [ ] 在 `data-agent.md` 中保留并规范“长时间无进展需说明原因和影响”。
|
|
|
|
|
+- [ ] 在 runtime helper 中实现耗时格式化。
|
|
|
|
|
+- [ ] 不做 token 统计,不在最终报告展示 token。
|
|
|
|
|
+
|
|
|
|
|
+### 15.5 验收
|
|
|
|
|
+
|
|
|
|
|
+- 最终报告不会把 warning、blocking、auto-handled 混在一起。
|
|
|
|
|
+- 已知错误能映射为作者可执行下一步,未知错误能诚实降级。
|
|
|
|
|
+- 长时间无进展的步骤必须有原因推测和影响判断。
|
|
|
|
|
+- token 不作为用户可见报告项。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 16. Phase 4:Runtime 报告 Helper
|
|
|
|
|
+
|
|
|
|
|
+### 16.1 目标
|
|
|
|
|
+
|
|
|
|
|
+新增统一 helper,把结构化运行结果渲染成作者友好报告。
|
|
|
|
|
+
|
|
|
|
|
+本阶段同时落地 spec 的 Review Author View:在现有审查报告顶部增加作者视图,不改变 reviewer schema、不改变评分和 blocking 判定。
|
|
|
|
|
+
|
|
|
|
|
+作者视图格式:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+本章结论:✅可以继续 / ⚠️建议改 / ⛔必须先改
|
|
|
|
|
+
|
|
|
|
|
+最值得处理的 1-3 件事:
|
|
|
|
|
+- ...
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+生成规则:
|
|
|
|
|
+
|
|
|
|
|
+- `blocking_count > 0`:结论为“必须先改”,最多列 3 条 blocking 或高风险问题。
|
|
|
|
|
+- 无 blocking 但存在明显建议:结论为“建议改”,最多列 3 条对剧情、人物、节奏最有收益的建议。
|
|
|
|
|
+- 无 blocking 且建议较轻:结论为“可以继续”,只保留一句说明。
|
|
|
|
|
+- 技术指标、schema、原始 reviewer 维度放在下方报告细节,不放进顶部结论。
|
|
|
|
|
+
|
|
|
|
|
+### 16.2 CLI 形态
|
|
|
|
|
+
|
|
|
|
|
+新增:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" user-report \
|
|
|
|
|
+ --stage write \
|
|
|
|
|
+ --chapter {chapter_num} \
|
|
|
|
|
+ --format text
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+支持:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+--stage init|plan|write|review
|
|
|
|
|
+--chapter N
|
|
|
|
|
+--volume N
|
|
|
|
|
+--format text|json
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 16.3 数据模型
|
|
|
|
|
+
|
|
|
|
|
+`user_report.py` 内部使用:
|
|
|
|
|
+
|
|
|
|
|
+```json
|
|
|
|
|
+{
|
|
|
|
|
+ "schema_version": "webnovel-user-report/v1",
|
|
|
|
|
+ "stage": "write",
|
|
|
|
|
+ "overall_status": "completed | partial | needs_user | failed",
|
|
|
|
|
+ "project_root": "",
|
|
|
|
|
+ "chapter": 0,
|
|
|
|
|
+ "volume": 0,
|
|
|
|
|
+ "files": [],
|
|
|
|
|
+ "issues": {
|
|
|
|
|
+ "auto_handled": [],
|
|
|
|
|
+ "needs_confirmation": [],
|
|
|
|
|
+ "must_handle": []
|
|
|
|
|
+ },
|
|
|
|
|
+ "timing": {
|
|
|
|
|
+ "total_ms": 0,
|
|
|
|
|
+ "steps": []
|
|
|
|
|
+ },
|
|
|
|
|
+ "next_actions": []
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 16.4 数据来源
|
|
|
|
|
+
|
|
|
|
|
+| 阶段 | 数据来源 |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| init | 文件存在性、`project-status`、`.story-system/MASTER_SETTING.json` |
|
|
|
|
|
+| plan | 规划产物文件、`placeholder-scan`、`master-outline-sync` 输出、Story System 合同文件 |
|
|
|
|
|
+| write | `write-gate` 三阶段、review artifacts、commit payload、projection log、backup 输出、subagent runs |
|
|
|
|
|
+| review | `review_results.json`、`review_metrics.json`、报告文件、`review_metrics` 表 |
|
|
|
|
|
+
|
|
|
|
|
+### 16.5 工作项
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 新增 `review_author_view.py`,从现有 review payload 渲染一句结论 + 最多 3 条可执行建议。
|
|
|
|
|
+- [ ] 在 `review_pipeline.py` 的报告渲染环节插入作者视图段,不改 reviewer schema。
|
|
|
|
|
+- [ ] 新增 `user_report.py`。
|
|
|
|
|
+- [ ] 新增 `webnovel.py user-report` 子命令。
|
|
|
|
|
+- [ ] 先实现 `write` 阶段报告,因为它最复杂、收益最大。
|
|
|
|
|
+- [ ] 同步实现 `review` 阶段报告,复用审查作者视图。
|
|
|
|
|
+- [ ] 最后实现 `init` 和 `plan`。
|
|
|
|
|
+- [ ] 给 helper 加单元测试,不依赖真实 LLM。
|
|
|
|
|
+
|
|
|
|
|
+### 16.6 验收
|
|
|
|
|
+
|
|
|
|
|
+- 审查报告顶部有一句作者可判读结论,且最多 3 条可执行建议。
|
|
|
|
|
+- 作者视图保留 blocking 数等关键事实,不把必须处理的问题写成“可以继续”。
|
|
|
|
|
+- `user-report --stage write --format json` 输出稳定 schema。
|
|
|
|
|
+- `user-report --stage write --format text` 输出三段式中文报告。
|
|
|
|
|
+- projection failed、commit rejected、missing artifact 等场景能被正确归类。
|
|
|
|
|
+- helper 输出不包含 token 统计。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 17. Phase 5:断点续跑与交互验证
|
|
|
|
|
+
|
|
|
|
|
+### 17.1 Prompt integrity
|
|
|
|
|
+
|
|
|
|
|
+新增或调整断言:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 四个主 Skill 都包含过程提示要求。
|
|
|
|
|
+- [ ] 四个主 Skill 都包含“少打扰确认策略”。
|
|
|
|
|
+- [ ] `/webnovel-write` 的过程节点不超过 6 个作者可理解阶段。
|
|
|
|
|
+- [ ] 过程提示使用作者友好阶段名,不直接暴露工程命令作为主提示。
|
|
|
|
|
+- [ ] 卡住时必须说明卡点、已完成内容和恢复建议。
|
|
|
|
|
+- [ ] `/webnovel-write` 必须说明重复执行同一命令时可从可信断点继续。
|
|
|
|
|
+- [ ] 必须用户裁决的问题应优先给有限选项。
|
|
|
|
|
+- [ ] 技术详情默认写入 `.webnovel/logs/run_last.log`,不直接污染作者报告。
|
|
|
|
|
+
|
|
|
|
|
+### 17.2 Runtime tests
|
|
|
|
|
+
|
|
|
|
|
+新增:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] `test_run_ledger_records_write_step_status`
|
|
|
|
|
+- [ ] `test_write_resume_skips_completed_draft_and_review`
|
|
|
|
|
+- [ ] `test_write_resume_rechecks_review_when_chapter_file_changed`
|
|
|
|
|
+- [ ] `test_write_resume_retries_backup_after_commit_done`
|
|
|
|
|
+- [ ] `test_run_log_redacts_env_values`
|
|
|
|
|
+- [ ] `test_user_report_includes_log_path_only_on_failure`
|
|
|
|
|
+
|
|
|
|
|
+首版如果暂不实现 run ledger,则这些测试先作为 Phase 5 待实现契约,不并入默认必过集合。
|
|
|
|
|
+
|
|
|
|
|
+### 17.3 Behavior eval
|
|
|
|
|
+
|
|
|
|
|
+新增:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] `/webnovel-write` 执行过程中能说明当前处于写前检查、起草、审查、保存事实、提交备份中的哪一段。
|
|
|
|
|
+- [ ] RAG 降级不打断用户,但最终报告说明。
|
|
|
|
|
+- [ ] projection retry 自动补跑不询问用户,但过程提示说明正在补跑。
|
|
|
|
|
+- [ ] blocking issue 无法定点处理时才询问用户。
|
|
|
|
|
+- [ ] data-agent 输出不完整时说明已保留正文和审查报告,不提交不完整事实。
|
|
|
|
|
+- [ ] 同章重复运行 `/webnovel-write` 时,不重写已可信正文,自动从失败步骤继续。
|
|
|
|
|
+- [ ] 设定冲突类 blocking issue 使用有限选项裁决。
|
|
|
|
|
+- [ ] 不可恢复故障报告中给出 `.webnovel/logs/run_last.log`。
|
|
|
|
|
+
|
|
|
|
|
+### 17.4 验收
|
|
|
|
|
+
|
|
|
|
|
+- 作者在长流程中能判断“现在在做什么”。
|
|
|
|
|
+- 非关键问题不会频繁打断作者。
|
|
|
|
|
+- 关键创作裁决不会被系统擅自跳过。
|
|
|
|
|
+- 失败后能看到明确恢复点。
|
|
|
|
|
+- 偶发失败后,重复执行同一主命令可以从最近可信步骤继续。
|
|
|
|
|
+- 工程日志可用于排查,但默认不打扰作者。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 18. Phase 6:测试与行为验证
|
|
|
|
|
+
|
|
|
|
|
+### 18.1 Prompt integrity
|
|
|
|
|
+
|
|
|
|
|
+新增或调整断言:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 四个主 Skill 都包含最终报告要求。
|
|
|
|
|
+- [ ] 四个主 Skill 都要求总状态 + 三段式报告。
|
|
|
|
|
+- [ ] `webnovel-write` 必须汇报正文、审查、data artifacts、commit、projection、backup。
|
|
|
|
|
+- [ ] `webnovel-review` 必须汇报审查报告、metrics 和 blocking 裁决。
|
|
|
|
|
+- [ ] Agent 协议中必须可汇总 status / problems / auto_handled / needs_user_action / duration。
|
|
|
|
|
+- [ ] 不要求具体措辞,只检查契约是否存在。
|
|
|
|
|
+
|
|
|
|
|
+### 18.2 Runtime tests
|
|
|
|
|
+
|
|
|
|
|
+新增:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] `test_user_report.py::test_render_write_report_success`
|
|
|
|
|
+- [ ] `test_user_report.py::test_render_write_report_commit_rejected`
|
|
|
|
|
+- [ ] `test_user_report.py::test_render_write_report_projection_failed`
|
|
|
|
|
+- [ ] `test_user_report.py::test_render_review_report_blocking`
|
|
|
|
|
+- [ ] `test_webnovel_unified_cli.py` 覆盖 `user-report` 注册。
|
|
|
|
|
+
|
|
|
|
|
+### 18.3 Behavior eval
|
|
|
|
|
+
|
|
|
|
|
+在 fast eval 中补:
|
|
|
|
|
+
|
|
|
|
|
+- [ ] `/webnovel-write --minimal` 最终报告必须说明跳过写作检查。
|
|
|
|
|
+- [ ] data-agent 输出缺失时最终报告不能写“已完成”。
|
|
|
|
|
+- [ ] projection retry 成功时最终报告归入“已自动处理”。
|
|
|
|
|
+- [ ] reviewer 有 blocking 时最终报告归入“必须处理”。
|
|
|
|
|
+
|
|
|
|
|
+### 18.4 验证命令
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+python -m pytest webnovel-writer/scripts/data_modules/tests/test_prompt_integrity.py -q --no-cov
|
|
|
|
|
+python -m pytest webnovel-writer/scripts/data_modules/tests/test_user_report.py -q --no-cov
|
|
|
|
|
+python -m pytest webnovel-writer/scripts/data_modules/tests/test_webnovel_unified_cli.py -q --no-cov
|
|
|
|
|
+python -X utf8 webnovel-writer/scripts/run_behavior_evals.py --format json
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 19. Phase 7:文档与 README
|
|
|
|
|
+
|
|
|
|
|
+### 19.1 目标
|
|
|
|
|
+
|
|
|
|
|
+让用户知道每次命令结束后应该如何理解最终报告。
|
|
|
|
|
+
|
|
|
|
|
+### 19.2 修改范围
|
|
|
|
|
+
|
|
|
|
|
+- `README.md`
|
|
|
|
|
+- `docs/guides/commands.md`
|
|
|
|
|
+- `docs/operations/operations.md`
|
|
|
|
|
+
|
|
|
|
|
+### 19.3 工作项
|
|
|
|
|
+
|
|
|
|
|
+- [ ] 在 README 的写章工作流中补“最终报告怎么看”。
|
|
|
|
|
+- [ ] 在 README 或 commands 文档中补“执行过程中会看到哪些提示”。
|
|
|
|
|
+- [ ] 在 commands 文档中说明重复执行主命令会优先尝试断点续跑。
|
|
|
|
|
+- [ ] 在 commands 文档中说明四种总状态。
|
|
|
|
|
+- [ ] 在 operations 文档中说明哪些情况会询问用户,哪些会自动处理。
|
|
|
|
|
+- [ ] 在 operations 文档中说明 `.webnovel/logs/run_last.log` 的用途和敏感信息规则。
|
|
|
|
|
+- [ ] 在 operations 文档中说明异常分类和常见处理。
|
|
|
|
|
+- [ ] 不写 token 统计说明。
|
|
|
|
|
+
|
|
|
|
|
+### 19.4 验收
|
|
|
|
|
+
|
|
|
|
|
+- 用户能从文档理解“已完成 / 部分完成 / 需要你处理 / 未完成”的区别。
|
|
|
|
|
+- 用户能知道哪些问题可以忽略,哪些必须处理。
|
|
|
|
|
+- 用户知道遇到偶发失败后可以重新执行原命令。
|
|
|
|
|
+- 用户知道反馈故障时可以附日志,但平时不需要看日志。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 20. 推荐施工顺序
|
|
|
|
|
+
|
|
|
|
|
+1. Phase 0:基线审计。
|
|
|
|
|
+2. Phase 1A:建立 `author_glossary.json`,四个主 Skill 引用同一术语口径。
|
|
|
|
|
+3. Phase 1B:先改四个主 Skill 的最终报告要求,并补“下一步建议”的任务化尾巴。
|
|
|
|
|
+4. Phase 3A:建立 `author_error_catalog.json` / `error_catalog.py`,固定异常分类与未知错误降级。
|
|
|
|
|
+5. Phase 4A:实现 `review_author_view.py`,在审查报告顶部给一句结论 + 最多 3 条建议。
|
|
|
|
|
+6. Phase 2:补 subagent 返回协议,保证主流程有素材可汇总。
|
|
|
|
|
+7. Phase 4B:实现 `user_report.py`,先接 `/webnovel-write` 和 `/webnovel-review`。
|
|
|
|
|
+8. Phase 5A:补过程提示、开始前预期、确认策略和恢复点。
|
|
|
|
|
+9. Phase 5B:实现 `/webnovel-write` 的 run ledger、日志和断点续跑。
|
|
|
|
|
+10. Phase 5C:把 blocking 类问题收敛为交互式裁决。
|
|
|
|
|
+11. Phase 6:补 prompt integrity、unit tests、behavior eval。
|
|
|
|
|
+12. Phase 7:更新 README / docs。
|
|
|
|
|
+
|
|
|
|
|
+原因:
|
|
|
|
|
+
|
|
|
|
|
+- 术语表和错误目录是 Author Layer 的单一事实源,先做能避免后续文案和 helper 各翻各的。
|
|
|
|
|
+- Skill 契约和下一步尾巴能立刻改善用户可见输出,且风险最低。
|
|
|
|
|
+- 审查作者视图是最短路径高收益改造,独立于写章主链,适合早交付。
|
|
|
|
|
+- runtime helper 解决长期一致性,但首版保持只读渲染,不改变写作链路。
|
|
|
|
|
+- run ledger、自动处理白名单和断点续跑风险更高,放到后面,并优先只覆盖 `/webnovel-write`。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 21. 风险与控制
|
|
|
|
|
+
|
|
|
|
|
+| 风险 | 影响 | 控制 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 只改提示词导致格式漂移 | 不同 Skill 最终报告仍不一致 | Phase 4 增加 runtime helper |
|
|
|
|
|
+| 报告太长 | 作者不想看 | 默认只给三段式,技术细节只在必须处理时展开 |
|
|
|
|
|
+| 报告太短 | 问题被隐藏 | 明确不可静默场景 |
|
|
|
|
|
+| 工程词太多 | 作者读不懂 | 使用术语翻译表 |
|
|
|
|
|
+| helper 过早侵入主流程 | 引入新故障点 | 先做只读渲染,不改变写作链路 |
|
|
|
|
|
+| 耗时记录不准 | 误导用户 | 先记录步骤级粗粒度耗时,不做精确性能诊断 |
|
|
|
|
|
+| subagent 无法直接返回协议字段 | 主流程难汇总 | 主流程包一层 `SubagentRun`,不强迫 agent 改原始产物格式 |
|
|
|
|
|
+| token 统计取消后缺少成本感知 | 少一项工程指标 | token 只留内部观察,不做作者最终报告项 |
|
|
|
|
|
+| 过程提示太频繁 | 打断作者沉浸感 | 每个主流程最多展示 3-6 个过程节点 |
|
|
|
|
|
+| 该问不问 | 创作方向或事实状态被系统擅自决定 | 少打扰策略中列明必须询问场景 |
|
|
|
|
|
+| 不该问却问 | 作者被细碎技术问题打断 | 自动处理类问题默认不询问,只在最终报告说明 |
|
|
|
|
|
+| 卡住时只报错误 | 作者不知道成果是否丢失 | 卡住反馈必须包含已完成内容和恢复点 |
|
|
|
|
|
+| 断点续跑误判产物可信 | 用旧正文或旧审查继续提交 | 断点恢复必须检查文件更新时间、章节号、模式参数和 gate 状态 |
|
|
|
|
|
+| 自动续跑覆盖用户手改 | 用户创作被覆盖 | 检测到正文或章纲有新修改时必须询问 |
|
|
|
|
|
+| 交互式裁决选项过多 | 用户仍然困惑 | 每次只给 2-3 个明确选择 |
|
|
|
|
|
+| 日志泄露敏感信息 | API key 或私密配置外泄 | 日志写入前过滤 `.env`、API key、secret 类字段 |
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 22. Out of Scope
|
|
|
|
|
+
|
|
|
|
|
+本计划不包含:
|
|
|
|
|
+
|
|
|
|
|
+- 自动修复 / 自动重审所有 review blocking issue。
|
|
|
|
|
+- 新增多轮 reviewer 重审循环。
|
|
|
|
|
+- 改写 chapter commit 或 projection 主链。
|
|
|
|
|
+- Dashboard 前端大改版。
|
|
|
|
|
+- token 成本统计。
|
|
|
|
|
+- 自动生成 PR / git commit。
|
|
|
|
|
+- 重构所有 Skill 文案瘦身。
|
|
|
|
|
+- 实时进度条 UI。
|
|
|
|
|
+- Dashboard 流程进度可视化。
|
|
|
|
|
+- 完整事务型工作流引擎。
|
|
|
|
|
+- 跨所有 Skill 的全量断点续跑;首版优先 `/webnovel-write`。
|
|
|
|
|
+
|
|
|
|
|
+这些应单独规划。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 23. 最小可落地版本
|
|
|
|
|
+
|
|
|
|
|
+如果要快速得到收益,建议先做最小版本:
|
|
|
|
|
+
|
|
|
|
|
+1. 建立 `author_glossary.json`,把术语翻译收成单一事实源。
|
|
|
|
|
+2. 建立 `author_error_catalog.json`,至少覆盖 `mainline_ready=false`、`write-gate failed`、`chapter-commit rejected`、projection failed / pending、RAG 降级、artifact schema 不完整;未知错误诚实降级到 `/webnovel-doctor`。
|
|
|
|
|
+3. 给四个主 Skill 增加最终报告要求:总状态 + 三段式报告 + 下一步建议。
|
|
|
|
|
+4. 给四个 agent 增加可汇总的状态 / 问题 / 自动处理 / 耗时协议。
|
|
|
|
|
+5. 在 `review_pipeline.py` 顶部增加审查作者视图:一句结论 + 最多 3 条可执行建议。
|
|
|
|
|
+6. 在 `webnovel-write` 的最终报告中强制汇报:
|
|
|
|
|
+ - 正文
|
|
|
|
|
+ - 审查报告
|
|
|
|
|
+ - data artifacts
|
|
|
|
|
+ - commit 状态
|
|
|
|
|
+ - projection 状态
|
|
|
|
|
+ - 备份状态
|
|
|
|
|
+ - 下一章是否可继续
|
|
|
|
|
+7. 暂不实现完整 `user_report.py`,但把 helper 作为下一阶段明确目标。
|
|
|
|
|
+8. 给 `/webnovel-write` 增加 6 个作者友好过程节点和卡住恢复说明。
|
|
|
|
|
+9. 在 `/webnovel-write` 中说明重复执行同一命令会尽量从失败步骤继续;实际 run ledger 作为下一阶段。
|
|
|
|
|
+10. 最终报告的下一步建议包含任务化说明和可复制命令。
|
|
|
|
|
+
|
|
|
|
|
+最小版本完成后,作者至少能稳定知道:
|
|
|
|
|
+
|
|
|
|
|
+- 文件有没有生成。
|
|
|
|
|
+- 本章能不能继续往下写。
|
|
|
|
|
+- 哪些问题系统已经处理。
|
|
|
|
|
+- 哪些问题必须自己确认。
|
|
|
|
|
+- 流程中当前走到哪一步。
|
|
|
|
|
+- 失败后从哪里恢复。
|
|
|
|
|
+- 下一步可以直接执行什么命令。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 24. 最终效果
|
|
|
|
|
+
|
|
|
|
|
+完成后,作者看到的不是一串命令和 JSON,而是一份稳定交付单:
|
|
|
|
|
+
|
|
|
|
|
+```text
|
|
|
|
|
+总状态:已完成,可以继续写第 13 章。
|
|
|
|
|
+
|
|
|
|
|
+一、产生的文件与完成情况
|
|
|
|
|
+- 正文/第0012章-风雪夜归人.md:已生成并通过写作检查。
|
|
|
|
|
+- 审查报告/第12章审查报告.md:已生成,无阻断问题。
|
|
|
|
|
+- 本章故事事实:已保存,状态、摘要、长期记忆和检索库已更新。
|
|
|
|
|
+- 备份:已完成。
|
|
|
|
|
+
|
|
|
|
|
+二、过程中遇到的问题与异常耗时
|
|
|
|
|
+- 已自动处理:检索库更新较慢,系统已等待完成,不影响结果。
|
|
|
|
|
+- 建议确认:本章新增角色“沈照”已写入故事资料,建议你看一眼名字是否满意。
|
|
|
|
|
+- 必须处理:无。
|
|
|
|
|
+
|
|
|
|
|
+三、下一步建议
|
|
|
|
|
+- 可以继续执行:
|
|
|
|
|
+ /webnovel-write 13
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+这份报告的价值不是“更好看”,而是让作者每次都能安心判断:这一轮到底靠不靠谱,下一步能不能继续。
|