## 观察到的问题 **v0.10.64** 中 verification gate 仍然误杀代码完全正确的任务。R4 评测中 8 个高复杂度任务有 2 个因此 exit=1,但代码测试 98-100% 通过。 ### 复现 使用 `blade --headless --permission-mode=yolo --output-format=jsonl <prompt>` 运行多文件 TypeScript 项目(≥3 个源文件 + 测试)。 ### 具体案例 #### Case 1: task3-crdt(G-Counter + OR-Set + Vector Clock) - **代码测试通过率:28/28 (100%)** - **Agent exit code:1** - **错误消息**:`Independent verification did not produce a fresh PASS before the retry limit.` - 代码架构:`g-counter.ts`、`or-set.ts`、`vector-clock.ts`、`index.ts`,4 个测试文件全通过 - Verifier 子代理运行了但未输出宿主 gate 期望的精确 `## Verification Result: PASS` 标题 #### Case 2: task2-regex-nfa(Thompson NFA 正则引擎) - **代码测试通过率:51/52 (98%)**(唯一失败是测试自身的 `{n}` vs `{n,}` 语义歧义) - **Agent exit code:1** - **错误消息**:`Stopped after 16 repeated Task calls without observable progress.` - 代码架构:`ast.ts`、`lexer.ts`、`parser.ts`、`nfa.ts`、`simulator.ts`、`matcher.ts`、`token.ts`、`index.ts`,8 个源文件 - Agent 反复调用 verification Task(16 次),每次 verifier 可能返回了不同格式的结果但不被 gate 识别 ### 对比成功案例(exit=0) | 任务 | 测试通过率 | exit | 说明 | |---|---|---|---| | task1-binary-codec | 32/32 (100%) | 0 | verifier 正确输出 PASS | | task4-dag-scheduler | 20/20 (100%) | 0 | verifier 正确输出 PASS | | task5-streaming-json | 35/36 (97%) | 0 | verifier 接受了(有 1 个测试失败但 exit=0) | | task6-pratt-evaluator | 64/64 (100%) | 0 | verifier 正确输出 PASS | | task7-radix-router | 21/21 (100%) | 0 | verifier 正确输出 PASS | ### 根因分析 1. **Verifier 的 12-turn 预算内,有时在 Bash 测试全通过后没有输出结构化 PASS 标题**(turns 全部用于 Read/Bash/Glob,没有剩余 turn 写最终 verdict) 2. v0.10.64 新增的 "16 repeated Task calls without observable progress" 保护机制成功防止了无限循环,但**仍然把代码正确的任务判为 exit=1** 3. Gate 的判断逻辑过于依赖 verifier 输出的精确文本格式,而非 verifier 实际执行的测试结果 ### 建议修复 1. 当 verifier 的 Bash tool_result 明确显示 `npm test` exit=0 且所有测试通过时,gate 应自动推断 PASS,不要求精确文本标题 2. Verifier 的 12-turn 预算应保留至少 1 turn 用于输出 verdict(在第 11 turn 时强制要求输出结论) 3. 当 verifier 重试次数耗尽但项目测试命令全通过时,应降级为 PARTIAL 而非 fail(exit code 0 但附带 warning) ### 影响 CI/评测场景中,代码完全正确的任务有约 25%(2/8)的概率因 verifier 输出格式问题被误判为失败。这使得 headless exit code 不能可靠反映代码质量。 ### 环境 - blade-code v0.10.64(npm 全局安装) - macOS arm64, Node v22.23.1 - 命令:`blade --headless --permission-mode=yolo --output-format=jsonl` - verification-agent 使用默认(enabled=true)
Activity
fix(agent): keep verifier verdicts at the turn limit
fix(agent): ask verifiers for structured verdicts only
echoVic commentedon Sep 27, 2026
已在 main 修复(6dcfe216、1b1ab569),将随下一个版本发布。
修复内容
fix(agent): keep verifier verdicts at the turn limit(根因 1 / 建议 2)max_turns_exceeded失败。StructuredOutput并强制提交;同时提醒 verifier 只能基于已收集的证据下结论,证据不足时不得判 pass。fix(agent): ask verifiers for structured verdicts only(根因 3)## Verification Result文本标题。这条要求与 verifier 的 StructuredOutput 契约冲突,会额外消耗纠正轮次。Case 2 中父代理反复重跑 verification Task,是因为 verifier 在轮次边界失败、结论丢失;修复后不会再因为这个原因重跑。
未采纳
补充
| head/| tail命令被拒导致的轮次浪费,已在 v0.10.65 修复。