Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第 7 章 验证与重试:lifecycle

定位:本章是验证管线的完整手册——四层验证器、五种 verdict、重试协议与 AI caller 模式。前置依赖:第 6 章。基于 agent-spec 1.0.0。

四层确定性管线

agent-spec lifecycle specs/task.spec.md --code . --format json --run-log-dir .agent-spec/runs
graph LR
    L1["lint<br/>合同质量复检"] --> L2["StructuralVerifier<br/>Must NOT 模式匹配"]
    L2 --> L3["BoundariesVerifier<br/>变更文件 × 允许路径"]
    L3 --> L4["TestVerifier<br/>执行绑定测试"]
    L4 --> L5["AI Verifier<br/>可选,默认 off"]
    style L1 fill:#16321f
    style L2 fill:#16321f
    style L3 fill:#16321f
    style L4 fill:#16321f
    style L5 fill:#2a2440,stroke-dasharray:4

绿色四层是确定性的:零 token 成本、无假阴性。AI 层只处理机械层够不着的残余, 且默认关闭。管线里还有两个按需激活的确定性成员:Atlas 符号验证器插在边界层与 测试层之间(合同声明 ### Symbols 时激活,详见第 8 章);复杂度验证器在 合同声明质量约束且存在变更时运行。

五种 verdict

verdict含义动作
pass场景被证实
fail绑定测试跑了且失败读证据,修代码
skip测试没找到/没跑补测试或修选择器
uncertainAI 桩/待人工评审人工看或接 AI 后端
pending_review测试过了但要人签走人工签核

skip ≠ pass 是这套体系的第一铁律。is_passing 要求 total>0 且 failed=skipped=uncertain=0——任何“没验证“都不会被静默当作“验证通过“。

重试循环

sequenceDiagram
    participant A as Agent
    participant L as lifecycle
    A->>L: 第 1 次运行
    L-->>A: fail (2/5) + evidence
    A->>A: 读证据 → 修代码(不改合同!)
    A->>L: 第 2 次运行
    L-->>A: fail (4/5)
    A->>A: 再修
    A->>L: 第 3 次运行
    L-->>A: pass (5/5) ✓

--run-log-dir 记下每一次运行——explain --history 能给出“这份合同重试了 几次才过“的表格(详见第 9 章)。长合同用 --resume 跳过已过场景; --resume=conservative 全部重跑但检测回归。

逐 verdict 的重试纪律(全书唯一权威版):fail 读证据修码;skip 检查选择器 是否对得上真实测试名;uncertain 走人工或 caller 模式;同一场景连续三次失败, 停下来升级给人类;任何时候都不许为了变绿而改合同——合同真错了就显式切回写作 模式修订。

AI caller 模式

机械层覆盖不了的场景(设计意图、代码品质)可以让调用方 Agent 自己当验证器

agent-spec lifecycle specs/task.spec.md --code . --ai-mode caller --format json
# 输出含 "ai_pending": true 与 pending 请求文件
# Agent 逐场景分析后写 decisions.json(scenario/verdict/confidence/reasoning)
agent-spec resolve-ai specs/task.spec.md --code . --decisions decisions.json

合并后的报告里,skip 被 Agent 的判定替换——但 provenance 会标注这是 Inferential(推理证据),与 Computational(机械证据)在 matrix 中泾渭分明。