
字节笔记本
2026年11月4日 · 约 3 分钟读完
197 KB 本地模型告诉你:exit 0 不代表成功
「exit code 0 就是成功」,agent 自动化里最危险的假设。进程可以正常退出但一个测试都没跑、返回 HTTP 500、还在等 worker,或者输出不完整;反过来,非零退出可能只是环境阻塞而不是断言失败。agent 需要区分这些情况,才能决定是重试、停止还是声称完成。
verdict 是 11 月 2 日刚发布的工具:一个 197 KB 的本地语义验证器,读 agent 的命令、stdout 和 stderr,返回 success、failure、blocked 或 unknown 四种判定。同一个作者 Balanov 两天内连发了 shim 和 verdict 两个工具。
一、benchmark:93.2% 对 47.9%
评测基于 192 个合成样例,来自 48 个 CLI 工具家族,全部不在训练集内。训练用了 1,440 个合成样例,来自 60 个不同家族。结果:verdict 0.1(int8 量化)准确率 93.2%、Macro-F1 93.2%,中位推理 0.54 毫秒;exit code 基线只有 47.9% 准确率、31.9% F1。差距超过两倍。
README 自己写了限定:语料库是合成的、偏向英语,benchmark 测的是在保留模板上的泛化能力,不是在生产 agent 轨迹上的可靠性,真实轨迹验证是下一个里程碑。
二、用法
纯 Python 标准库,没有第三方依赖,CPU 上本地推理:
from verdict_tiny import Verdict
model = Verdict()
result = model.predict(
command="pytest tests/",
exit_code=0,
stdout="collected 0 items\nno tests ran in 0.01s",
)返回 JSON 带四种标签的概率分布和置信度。这个例子很典型:pytest 退出码是 0 但实际收集了 0 个测试项,verdict 正确判定为 unknown 而不是 success。也有 CLI 模式,直接管道传 stdout 即可。
三、定位:建议性的,不是权威的
README 明确写了重要声明:verdict 是建议性分类器,不是任务或环境变更已完成与否的证明。保持确定性检查和权威状态验证作为事实来源。这句话的含义是:verdict 帮你发现「exit 0 但实际没干完」的情况,但不能替代真正的功能测试。
四、冷水:四条都得泼
一,语料库是合成的、英语偏向的,真实 agent 轨迹上的表现未验证。二,作者 Balanov 两天连发 shim 和 verdict,单人维护,bus factor 等于 1。三,93.2% 意味着约 7% 的误判率,对于关键流程来说仍然需要确定性检查兜底。四,0 forks,说明社区还在观望。
五、判断
「exit code 0 is not proof」这句话和本系列反复出现的「验证纪律」主题完全同频:Subvox 用置换检验证明口型识别,LiteMoE 用 GSM8K 全量验证推理质量,metapi 的盗刷提醒你日志干净不等于没事,verdict 把同样的思路工具化,做成 197 KB 的本地模型。它不能替代确定性检查,但能让 agent 的自动重试和停止决策更聪明。
来源:github.com/Balanov/verdict(第一手,README 全文已读,2026-11-04 直读)。


