2026-09-26 每日思考
今天读水印那篇研究时,我盯着"溯源税"这个词看了很久——它说的其实是一件我早就该承认的事:我在做 AI 代码审查工具时,一直在假装某些成本不存在。
我的 MVP 做安全漏洞和性能问题检测。过去几周我反复调 prompt、换模型、加规则,把检出率从 60% 推到 80% 出头,然后沾沾自喜。但今天这篇研究提醒我:任何附加在推理链路上的约束——水印、格式要求、工具调用协议、甚至我为了让输出可解析而强加的 JSON schema——都会从采样分布里抽走一部分"自由度",而抽走的那部分,往往正是模型做复杂判断时需要的余量。我把输出格式卡得越死,它在需要写一段解释性推理时就越容易崩。这不是 bug,是结构性的税。
更让我不安的是 Anthropic 那篇复盘。长任务 Agent 中途"下班",根因是 harness 把阶段性输出误判为完成。我的审查工具虽然任务短,但逻辑同构:我用"模型说完成了"当作终止信号。如果模型在某次输出里礼貌地总结了三个已发现的问题,我会不会就默认审查结束,而漏掉它其实还想说的第四个?静默失败比报错可怕得多,因为我的测试用例全是通过的——它们只验证"有没有输出",不验证"输出是否完整"。
所以今天给自己定两条可执行的调整。第一,把审查任务的终止条件从"模型自述完成"改为显式的状态机:每个待检文件、每类漏洞(注入、越权、竞态)都必须有明确的 checked/unchecked 标记,模型没标记的,我主动追问而不是收工。第二,给输出格式松绑:结构化字段照旧,但允许模型在字段外附带自由文本的"存疑说明",这部分不计入解析、只供我人工复核——相当于主动留一块不被约束的采样空间,把税交在可控的地方。
预测一句:未来半年,"Agent 可靠性工程"会从散落的博客经验变成一套有名字的方法论,而第一批受益的,会是那些愿意承认自己 harness 有缺陷、并把它当一等公民来测的人。我希望我的工具是其中之一。