muse-agent-example/docs/plans/2026-08-22-阶段E-生产链切换-第一部分-授权终态.md

4.0 KiB
Raw Blame History

阶段 E:生产链切换(第一部分:授权终态合同)

日期:2026-08-22 总 plan:2026-08-22-agent-example整体收敛总plan.md 状态:第一部分完成并提交;第二部分(写作/检测智能体接入框架派发、授权后继续的接线、真实生产烟测)另行启动,真实模型调用需人工授权。

1. 意图

删除补证/重写的业务硬上限(补证≤3 / 重写≤2),改为授权终态:检查发现缺口后系统停在结构化报告,由主代理转述给人,人授权后以新运行继续。技术保护(超时、预算、取消)保留在执行策略层。

2. 合同设计(本部分核心决策)

授权门只挡昂贵的模型重调用,不挡廉价的确定性检索:

语义检查发现证据缺口
  → 确定性检索(evidence_provider,只读、无模型开销)
      ├─ 零命中 = 新设定提案 → 升格 passed 进人闸(原行为保留)
      └─ 命中 = 需要模型重写 → AUTHORIZATION_REQUIRED 授权终态
           携带:缺口清单、机械/语义检查快照、下一 attempt、重组上下文哈希
           人授权后:编排方以新运行继续(新候选版本,会话可复用)

依据:CAS 链按运行唯一(ON CONFLICT (run_id) DO NOTHING),同运行不能开新轮;授权后的继续天然是新运行,与"一章复用同一写作智能体会话"通过框架会话续接(阶段 D 能力)组合。

3. 文件台账

处置 文件 原因
修改 run_writer_pipeline.py 删除 MAX_EVIDENCE_REQUESTS/MAX_REWRITES 常量、自动补证/重写循环与两个上限错误码;缺口分支改为"检索→零命中升格/命中授权终态";单次收敛文档化。CAS 基元(含 start_next)保留,状态机闭集不动
修改 produce_next_chapter.py AUTHORIZATION_REQUIRED 显式分支:输出结构化缺口报告与授权指引;模块头口径同步
修改 test_run_writer_pipeline.py 两个自动补证测试改写为授权终态合同(缺口停终态、授权报告落结果文件);provider 改为真实检索推进
修改 test_production_evidence_reassemble.py 命中重写测试改为授权终态(写手单次调用、details 带 nextAttempt 与重组上下文哈希);零命中升格测试不变
修改 test_candidate_cas.py CAS 上的补证环测试改为授权终态链断言(create→CHECKING→REJECTED,revision=3)
修改 test_writer_acceptance.py 失败码 fixture 对齐(REWRITE_LIMIT_REACHED → AUTHORIZATION_REQUIRED)
修改 05-创作流程领域、write-next-chapter/SKILL.md、dashboard/server.py 注释 补证口径全仓同步(检索语义不变、命中停授权终态)
保留 production_evidence_reassemble.py 确定性检索是新合同的组成部分(授权前置检索),职责不变
保留 start_next 等 CAS 基元 总 plan 不重造状态机;续跑走新运行的 create 链
遗留 授权后继续的编排接线(新运行 + 重组上下文 + 会话续接) 阶段 E 第二部分
遗留 写作/检测智能体框架派发接入 阶段 E 第二部分;真实烟测需人工授权

4. 验证

  • 管线测试:10 项通过(含授权终态 2 项新合同测试)。
  • 补证重组装测试:5 项通过(命中授权终态 + 零命中升格)。
  • CAS 测试:离线全通过;真实库集成测试(PostgresCasStateStore)全部通过。
  • 候选接受测试:通过(失败码对齐后)。
  • 全量离线清单:102 通过、8 项外部依赖阻断、0 失败。
  • 技能严格审计:58 个 Skill,阻断 0;索引一致性、架构门禁、git diff --check 通过。
  • 旧口径零残留:补证≤3 / 重写≤2 / EVIDENCE_REQUEST_LIMIT / REWRITE_LIMIT 全仓检索无生产代码引用(写手篇幅适配器的"≤3 遍重抽"是独立技术重试合同,不属于补证/重写,保留)。