驾驭难以预测的天才
模型是任何人都能复制的 AI 产品中唯一的一部分。真正的优势来自其余部分的总和。

把你的工作流程交给 AI,意味着你是在一个强大却并不总会按你指令行事的东西之上搭建系统。解决办法看起来像是资深用户的小技巧。但这恰恰是最具野心的 AI 产品所围绕的同一个问题,也指向了真正持久优势所在之处。
今年大部分时间里,我都写下一条规则,但我的 AI 智能体却不断违反它。这条规则放在一个文件里,Claude 在每次 Claude Code 会话开始时都必须先读取它,内容写得很直白:不要做这件特定的事。它读了这条规则,也认同这条规则,但还是时不时会去做那件事。于是我把这条规则从文档里移出,写进一段会自行运行的代码中;一旦条件满足,它就会立刻拦截这一动作。模型对这段代码没有决定权。代码只是运行着,而它所禁止的事情也就不再发生。
在 《核实税》 一文中,我把让 AI 处理你大部分工作所付出的成本称为:你花在检查输出结果上的时间。要降低这项成本,靠的不是增加更多下游审查,而是做好上游工程。这篇文章讲的,就是承担这项工程的那套结构。那条在被挪动位置前一直失效的规则,正是这一理念的缩影。一年来,我只靠自己和手头的工具,在模型周围搭建起尽可能小的一套控制系统。
我构建的控制体系是一个分层堆栈,而只有最上层负责强制执行
可以把它看作四个层级,从控制力最弱到最强。最底层是模型本身(例如 Claude Opus 4.8、GPT-5.5)。它很强大,但也难以预测:同样的问题问两次,可能会得到两个不同的答案,而任何指令都无法彻底改变这一点。模型之上运行的是控制框架 (例如 Claude Code、Codex、OpenClaw),即负责操作模型并决定它能看到什么的程序。控制框架可以引导它,但只能做大方向上的引导。再往上是文档 (例如 CLAUDE.md 和 AGENTS.md):我的偏好、项目的背景与规则,以及过去几个月里我不断补充给它的修正内容。这确实能产生影响,但模型仍然保有一定决定权。它会读取我写下的内容,把这些信息与其他一切进行权衡,有时还是会自行其是——我的那个正是如此。最上层是钩子 。钩子是一段代码,用来监测某一种特定情形,并自行采取行动。当代理试图调用我已禁止的命令时,钩子就会将其拦下,不管模型是否同意。

只有最上层不讲条件。凡是我能做成钩子的东西,都不可能越过它,所以需要我亲自检查的就更少了。那些过去一再出现的错误,恰恰是已经彻底停止出现的那类。
暴露面缩小了,但永远不会消失。很多规则都太依赖判断,根本写不成代码。“绝不能运行这条确切的命令”这种事,代码可以检查;“别让分析在这里悄悄偏向某种细微但错误的方向”则属于判断,而唯一能作出判断的,只有另一个模型。所以,这类规则会把你直接送回你原本想要越过的那一层不可预测层。1
这也是为什么这种封装能比任何一次模型升级都更持久。少数真正能够证明自己输出正确的系统,原理其实都一样:它们用代码去核验答案,并依据人类事先写下的标准。2 但这只适用于你能精确定义“正确”究竟意味着什么的场景,而判断恰恰是无法被这样定义的东西。所以,这层封装是永久性的。它填补的是一个永远无法闭合的缺口,不管模型变得多么强大都一样。
看似只是资深用户的小技巧,其实把整个问题浓缩其中
软件之所以形成一门严谨的学科,是因为代码是可预测的。你可以决定输出应当是什么,并通过测试一步步达到这一结果。AI 原生产品打破了这一契约:它们把一个概率性引擎置于中心,而这个引擎面对同样的提示词,每次都可能给出不同的回答。Hamel Husain 一针见血地指出:软件业数十年来建立起来的测试纪律,前提是存在一个唯一正确的答案可供检验,而这恰恰是你如今已经不再拥有的东西。这个观点如今已被反复讨论。悬而未决的问题是,什么将取而代之。
一批开发者正逐渐汇聚到同一个答案上:保留这个不可预测的引擎,但在外层包裹确定性的代码——每一次都会执行完全相同行为的代码。Dex Horthy 在他的“12-factor agents”中说得最为直白:好的智能体“主要由软件构成”。Anthropic 关于构建高效智能体的指南也用自己的表述传达了同样的意思,告诉开发者要让工作流经“预定义的代码路径”,并“加入程序化检查”。
这一理念已经足够具体,以至于工具开发者如今都将其做成了产品。在 Claude Code 中,你可以让代理遵守某项条件,并选择如何进行检查:用能够自行判定通过或不通过的代码来支撑检查,这就能提供保证;或者让模型来作出判断,那得到的就是一次主观裁量。3 而我自己的配置,则是这一思路的最小化版本:我所描述的每一层,都是对 Horthy 所说“主要还是软件”的一种个人化诠释。
现在把这一点放大来看。架构并没有改变,改变的只是犯错的代价。对我个人而言,代理忽视一条规则,代价不过是浪费我几分钟时间,而我的钩子会拦住那些真正重要的问题。但在一家有两百名员工、运行着同样代理的公司里,没有人拥有私有钩子。规则都写在一个共享文件中,因此只要有一次被忽视,就可能在这个文件运行的所有地方出现,而团队的防护能力,只取决于任何人写下的最松散的那条规则。
这门技艺在于选择哪些需要保证,哪些应保持灵活
另一半最清晰的版本来自产品层面。Every 关于 agent-native architecture 的指南主张:“功能不是你编写的代码,而是你描述的结果,由在循环中运行的智能体来实现。”这确实是一种转变,而且与我的做法正相反:完全押注模型,让它即兴发挥,再围绕它产出的任何结果来设计产品。但细读之下,这份指南还是不断回到“控制”上。它告诉构建者,要把高频路径“移到代码中”,并承认某些操作“需要验证,不应交由智能体判断”。这两点都只是一笔带过,没有展开。而那个未被展开的角落——包裹在即兴模型外部、受控的代码——正是我一直身处其中的那一半。
这两派看似对立,实则是在从两个相反的端点描述同一种架构。产品构建者更倚重模型;工程师则用控制层将其包裹起来。真正的工作发生在两者之间,而这归根结底是个尺度问题:产品中有多少部分、在哪些地方要用代码锁定。锁定得太少,产品就会在本该需要保证的地方即兴发挥。这种失败,会让系统把一个自信却错误的答案交付给顾客。锁定得太多,则会走向另一端:如果把每一条路径都编码进代码里,你其实只是把普通软件重新造了一遍,而模型不过是以一种缓慢且昂贵的方式,去做原本用常规代码就能完成的事。
真正的技能在于,沿着产品的每一个具体环节,判断哪些部分需要模型的判断,哪些部分需要保证。OpenAI 团队把这称为“harness engineering”。真正值得点明的是:这种工作必须与所包裹能力的强弱相匹配,并以审慎的比例来展开。
这层包裹,就是护城河
这种比例拿捏,正是持久优势的藏身之处,因为模型本身恰恰是你最缺乏防御性的那一层。任何人都能租用同样的模型,而且它会按照实验室的节奏、而不是你的节奏,同时为所有人变得更强。真正能不断积累价值的是外层封装。 一个显而易见的反驳是:外层封装同样可以被复制。但竞争对手即便读遍你的整个代码仓库,仍然拿不到构建它的根本:你围绕自身具体业务所作出的每一个判断——哪些环节必须被保证,哪些可以保持松弛。那些判断会沉淀为模型无法逾越的层级,而读代码仓库本身并不能把这些交给别人。这种长期积累下来的记录,才是真正的护城河。
你可以公开地看到这一幕如何上演。AI 编程工具 Cursor 并没有自研模型。它在 Claude、GPT、Gemini 和 Grok 之间进行路由,把模型当作一种可租用的大宗商品。所有人原本都以为,Anthropic 自家的 Claude Code 凭借对最佳模型的优先使用权,会终结这一切。但事实并非如此。Cursor 的营收从去年 11 月的约 10 亿美元增长到 到 6 月时约 40 亿美元 。上周,SpaceX 行使了其 4 月取得的一项选择权,同意以 600 亿美元收购该公司,成为有记录以来对风投支持初创企业规模最大的一笔收购。Cursor 多年来持续积累的,从来不是更好的模型,而是外层封装:一个让你的整个代码仓库始终保持同步且可搜索的代码库索引;一个内部训练的自动补全模型,依据开发者每天在数亿次编辑中接受或拒绝哪些建议进行训练;以及如今已嵌入大多数《财富》500 强企业内部的企业级基础设施。模型公司拥有更好的模型,却依然无法占有编辑器、索引,或开发者的肌肉记忆。
几乎没有多少人构建出了 Cursor 所实现的东西。如今,大多数在工作中使用 AI 的人,甚至还没有为其构建起这一封装层中的任何一层,也尚未意识到这一层的存在。到了公司级规模,真正决定哪些 AI 原生产品能在真实使用中经受住考验、哪些不过是架设在任何人都能租用的模型之上的精彩演示的,正是构建问题。
如果你所依托构建的模型明天变成免费的,你还剩下什么?
Ground Truth 此前内容: 判决层 (当反馈回路无法闭合时,以及在无法闭合时仍能存续的东西)· 核实税 (检查 AI 输出的成本,以及上游工程如何降低这项成本)。
近期一系列研究工作为 AI 代理提供了真正的正确性保证,而它们获得这种保证的方式如出一辙:用代码根据人类编写的形式化规范对输出进行检查。SEVerA 可以保证代理的输出符合形式化契约,但契约必须预先用形式逻辑写明,而且只适用于能够以这种方式检验的领域。VeriGuard 为 LLM 代理增加了经过验证的安全性,但这种保证仍然依赖用户手动验证:由 LLM 将意图转换为形式规则,而这一步本身也是不可预测的。所有真正的保证,归根结底都建立在依据人类编写规范进行的固定检查之上。那些被宣传为“自我改进代理”的系统做的是另一回事:它们对已发生的结果打分,并将其反馈到后续过程中,使代理随着时间推移不断改进,但这并不等同于证明任何一次单独输出是正确的。