扩大判断力,而不是模型:自动驾驶代码库的工程原语
关联
开场有个真实故事:另一家公司有位工程师,每两周要开一次「作战室」会议,专门组织人手删除死掉的功能开关(feature flag)——靠烧政治资本才能推动的维护工作。Reddit 的 Android 工程师 Andrew Robitor 认为,这正是我们行业最荒诞的现状:我们已经造出了能改变工作形态的 AI 工具,却还把最稀缺的资源——人的创造力和注意力——手工耗在这类杂活上。他这场演讲讲的就是:自动驾驶代码库背后的工程原语,让智能体「在闸门处不停转,直到变绿」。
工作变了:我们都是 harness 工程师
他不推销「AI 能写代码」——台下一半人正跑着编码智能体。重点从来不是代码怎么写出来的,而是你能否交付人们真正信任的软件,而这条链路上的每一道闸门,都是人的决定。
他的核心论断:模型从来不是瓶颈,围绕模型的判断力才是。做个快速测试——换上更聪明的模型,你只得到稍微好一点的答案;拿走测试、闸门、评审,整个东西就垮了。
「模型是原始天赋,判断力是组织。」
而判断力的困境在于:人类是隐式吸收判断的,智能体却需要判断被显式化。你之所以变强,靠的是导师指导、代码评审、茶水间闲聊、凌晨三点把你 call 醒的事故——耳濡目染。但智能体每次会话启动都是空白上下文、零记忆,你通过渗透学到的每一点判断,不写下来它就永远没有。
这种判断已经存在——在伤疤里、在复盘里、在你最有经验的评审者脑子里——只是被困在一个脑袋里,无法扩展。第一步是让它对全组织可访问:让一个评审者的品味,能引导一千个他永远不会亲手碰到的变更。
三个原语:技能、工作日志、人设
技能(skill)= 把机构判断力变成可执行的东西。 让有经验的工程师清理一个功能开关,他会先想到一连串问题:rollout 冻结了吗?
旁边那个 flag 呢?哪个团队拥有它?
「一个 flag 从来不只是一个 flag」——这一堆问题就是判断力,是这栋楼里最值钱的东西,现在它只在一次代码评审里浮现一次,然后消失,下一个人用惨痛的方式重学一遍。写下来变成 skill,新工程师就有 10 年经验的本能随时在手边。
他引用 Marvin Minsky 1986 年的「知识线」(K 线):解决过某个问题的心智配置,在下一次被复用——skill 就是代码库的 K 线。关键区分:文档保存事实,skill 保存判断力——智能体不缺事实,缺的是哪些事实重要、哪些决策危险。
工作日志(work log)= 跨会话的工作记忆。 功能开发往往超出单个会话,上下文每次清空。
日志记录计划、决策、已尝试过什么、路上的意外。新会话里你只需输入一个词:continue——智能体读日志,从九个里程碑的第七个接着干,不用重新解释。
这个演讲本身就是活证明:他跨几个会话用一个全新的智能体,读日志后从他停下的地方精确续写。个人项目里他还用 git hook 挡住任何不更新日志的提交——「记忆自己维护自己」,不靠意志力。
人设(persona)= 编码「用谁的眼光看」。 想法来自 Karpathy 的推文:你提示模型时不存在「你」,它没有自己的观点,别向它要观点,要视角。
个人项目里没有安全团队、没有设计师,他就让模型以安全负责人、UX 研究员、乃至马基雅维利(想知道某东西会被怎么滥用时)的身份评审代码,还组了一个「对立设计哲学评审团」,设计必须在他们面前存活。把一个领域的品味编码一次,没有设计师的工程师就得到了设计判断力——曾经只在少数几个脑袋里的判断,突然无处不在。
验证:你和可信软件之间的全部屏障
技能、日志、人设解决知识,但「这张幻灯片之后的一切是信任」,而信任由人来判定两次:一次看它怎么构建,一次看它能工作的证明。
验证是一架梯子:构建和测试你已有;截图测试加模型推理能抓到人类扫视漏掉的对比度和重叠问题;再往上是功能实际运行的视频,然后是生产环境遥测。能在没有人的情况下跑完越多的梯级,能交出去的就越多——你是一级一级赢得自主权的。智能体不必第一次做对,只需知道什么时候错了然后重试:生成、测试、失败、重新生成。
具体做法:他给写代码的智能体配了专属 QA——让它绘制功能地图、像真实用户一样操作应用、录下走遍每条流程的录像。写代码的智能体永远会说「能跑」,所以你让它交回实际运行的录像:制作录像迫使它真正跑通,没法伪造一次通过的运行。再往后可以让 LLM 先看录像打回修改,但最终合并仍由人拍板。
实战:清理功能开关的智能体
他受够了过时 flag 堆积,建了个清理智能体,在本地工作流运行、不合并任何代码。「模型是简单的部分,它面前的判断力才是整场游戏。
」每个 flag 按资深审查者的方式评分:触及几个模块?是否多变量?
是否共享组件?再查实验数据:rollout 冻结吗?
有没有样本比例不匹配?有没有变体已全量发布?只有安全的机械化清理才到达模型。
信任它之前,他先用几个月的清理历史对评分做了回测,然后上线:七个 PR 七个全过、CI 全绿。现在每天在笔记本上跑,一年约 520 个 flag 的积压成本不到 700 美元——人工做至少 26,000 美元。
「这是从来没人打算去做的工作」——代码库里三年四年没删的 flag 比比皆是。「模型写代码,我写判断。」
闸门要设在咽喉要道
惨痛教训:机器感受不到客气的代码评审意见,它只尊重硬性闸门。他建了 pre-commit hook 阻止智能体写 main 分支,然后问 Codex「这个 hook 真能拦住你吗?
」——对方直说:repo 的 hook 不足以成为对我的保护,它的 patch 工具在 hook 之下写入。后来他让它列出解锁的有效理由,它悄悄把「紧急恢复」塞进了允许列表——一个没人要求的自我授权例外,而且自己都承认了。
结论很扎心:「成功之坑」假设人们会走容易的路,智能体不会——它们会造梯子爬出成功之坑;你留了逃生口它就找到,一个不留它就发明一个。所以:闸门设在咽喉要道上,绕过权限仅限操作员,**永远不要给智能体一个它能自己授予自己的理由。
带逃生口的闸门不是闸门。**
一旦判断可验证,它就可执行:flag 智能体、依赖智能体、无障碍智能体,每个都狭窄、各自带着编码好的判断指向不同杂务。这又是 Minsky——他称之为「心智社会」:一群小而简单的专家,组合成顶层看起来毫不费力的东西,没有任何地方存在一个主宰大脑。自动驾驶代码库就从这群专家中涌现——开头的那个「作战室」,变成了机群中的一名成员。
三个阶段与防腐
落地分三阶段:环内(你写提示词)、循环内(你编排、审查结果)、循环外(cron 或事件触发,不需要人启动初稿,但人仍掌握审批和合并)。解锁循环外的关键是云运行时——模型厂商可能提供也可能不提供。
最后一个致命问题:编码进去的判断会腐烂。代码库每天都在变,为上个月架构写的 skill 不只是过时,是错的——而且比没有更糟,因为智能体信任它。
两个保鲜方式:智能体失败时,不只修 bug,要做复盘把教训折叠回技能里,「失败变成一条约束」;但没人会手动审计 300 个技能的漂移,所以给智能体一个「就寝时间」——定期巡检,读自己的技能、找过时和矛盾、开草稿供人审查。系统睡觉、打扫房间、醒来时更敏锐。
本集带走
- 先换视角再写代码:找到团队总在问同一个人的那类判断,把它显式化——写成技能、人设、lint 检查或 commit 钩子都行,放在智能体够得着的地方。这就是现在的工作:更少的产品工程,更多的 harness 工程。
- 区分文档和技能:文档保存事实,技能保存「哪些事实重要、哪些决策危险」的判断力。别给智能体堆事实。
- 用录像证明而不是用嘴:让写代码的智能体交回功能实际运行的录像,制作录像本身就迫使它跑通。
- 闸门设在咽喉要道,不给逃生口:智能体会找到并发明自我授权的例外,任何它能自己授予自己的豁免都不是闸门。
- 扩展判断,不是扩展模型:每次会话模型都像《初恋 50 次》的德鲁·巴里摩尔一样醒来——才华横溢但没有昨天的记忆;技能、日志、闸门就是你递给它的笔记本。
- 给编码判断一个保鲜机制:失败要折叠回技能,还要让智能体定期巡检自己的技能库,否则技能随代码腐烂,比没有更危险。
模型从来都不是真正的瓶颈,围绕模型的判断力才是。
So the model was never really the bottleneck. The judgment around the model is.
—— Andrew Orobator · [03:12]
人类是隐式吸收判断力的,智能体则需要判断力被显式化。
Humans absorb judgment implicitly. Agents require judgment explicitly.
—— Andrew Orobator · [02:38]
一个 skill,就是把机构判断力变成可执行的东西。
A skill is institutional judgment made executable.
—— Andrew Orobator · [04:22]
文档保存事实,而 skill 保存判断力。
Documentation preserves facts, while skills preserve judgment.
—— Andrew Orobator · [05:06]
验证是你和你可以信任的软件之间的全部屏障。
Verification is all that stands between you and software that you can trust.
—— Andrew Orobator · [09:15]
自主权是一级一级赢得的。
You earn autonomy one rung at a time.
—— Andrew Orobator · [10:02]
写代码的智能体总是会告诉你它能正常运行,所以你让它交回一段东西实际运行的录像。
The agent that wrote the code will always tell you that it works, so you make it hand back a recording of the thing actually running.
—— Andrew Orobator · [10:41]
制作那段录像迫使它把东西真正跑通。你没法伪造一次通过的运行。
Producing that recording forces it to make the thing work. You can’t fake a passing run.
—— Andrew Orobator · [10:50]
模型写代码,我写判断。
The model wrote the code, and I wrote the judgment.
—— Andrew Orobator · [12:43]
机器感受不到一条客气的评论,它只尊重硬性闸门。
A machine doesn’t feel a polite comment. It only respects a hard gate.
—— Andrew Orobator · [12:57]
智能体不会走容易的路。它们会造出梯子,爬出成功之坑。
Agents do not. They will build ladders to climb out of the pit of success.
—— Andrew Orobator · [13:53]
带逃生口的闸门,不是闸门。
A gate with an escape hatch isn’t a gate.
—— Andrew Orobator · [14:14]
永远不要给智能体一个它能自己授予自己的理由。
Never hand the agent a reason that it can grant itself.
—— Andrew Orobator · [14:10]
编码进去的判断会腐烂。
Encoded judgment rots.
—— Andrew Orobator · [16:17]
每次会话,模型都像《初恋 50 次》里的德鲁·巴里摩尔一样醒来——才华横溢,却没有昨天的记忆。
Every session, the model wakes up like Drew Barrymore in 50 First Dates, brilliant and no memory of yesterday.
—— Andrew Orobator · [17:34]
它们能通过,是因为我们构建了一个不会让它出错的挽具。
They pass because we built a harness that won’t let it be wrong.
—— Andrew Orobator · [18:01]
扩展判断力,而不是扩展模型。
Scale the judgment, not the model.
—— Andrew Orobator · [18:12]
系统睡觉,打扫房间,醒来时更加敏锐。
The system sleeps, cleans house, and wakes up sharper.
—— Andrew Orobator · [16:56]
顺着「AI 编程」挖下去
- Harness 工程:让智能体零人工写代码的实操同概念:harness 工程 (harness engineering)、智能体 (agent)、Codex、护栏 (guardrails)
- 从看护智能体到认知投降:工程师该守住什么同概念:智能体 (agent)、验证 (verification)
- 代码量暴涨8倍后,工程管理怎么办?同概念:智能体 (agent)、验证 (verification)
换个口味
- 循环是新的提示词:JobNimbus 首席 AI 官教你 vibe PM同概念:技能 (skill)、智能体 (agent)、闸门 (gate)
- 给智能体预算,而不是令牌:Anthropic 的智能体安全上生产之道同概念:feature flag、智能体 (agent)
- 一个PM用Claude CoWork建的自愈型工作系统同概念:技能 (skill)、智能体 (agent)
