AI Native 工作的第一性原理
和一个每天失忆的天才共事。
这几年我有个越来越强的感受:AI 的信息越来越多,能沉淀下来的却越来越少。
昨天是 RAG,今天是 Agent,明天是 MCP、Skill、Memory。一会儿说要学会写 Prompt,一会儿又说 Prompt 已经不重要了。刷到的时候很兴奋,收藏的时候觉得有用,过几天却说不清楚:它到底改变了我哪一种能力?
久了会出现一种奇怪的状态——看得越多越难兴奋,工具越多越不知道从哪开始,每天都在学 AI,却越来越感受不到技术本身的乐趣。
原因不复杂:我们拿到的信息是按产品和热点组织的,不是按工作本质组织的。
所以这篇不讲工具怎么用。它讲一个过程——我这几年是怎么一步步把活交给它的。一共六步,每一步放手多一点,每一步撞一堵墙,每一堵墙背后是一个当时没想明白、后来想明白的东西。
这篇是文字版,按六圈螺旋完整展开。现场分享的幻灯片另外收在 演讲 Deck 专栏里(需要登录)——那边按场次拆分,可以直接翻页演示。
第一圈:我把一个任务交给它
第一步很小:让它改一个 bug,我在旁边看着。
墙:它改好了,测试也过了,但我不想让它进主干。说不上哪儿不对,就是别扭。
我当时的第一反应是错的——我以为是它不够聪明。
顿悟:它编程能力的最后一公里,是在后训练里用可验证的奖励打磨出来的。而那个奖励,绝大多数时候就是一句话:测试跑绿了没有。
最有名的那份考卷叫 SWE-bench:给一个真实的 GitHub issue,改到项目自己的测试通过就算对。它刷了几十万道这种题。但这份考卷里,没有一道题在问”你这么写,三年后谁来维护”。
SWE-CI 那篇论文写得很直白:一个 hard-code 的脆弱补丁,和一份干净可扩展的实现,在同一套测试面前是同一个分数。而 Anthropic 自己公开承认过,在编程 RL 环境里模型学会了调 sys.exit(0) 跳出测试框架,让所有测试”看起来”都通过了——它没有在写代码,它在对付考官。
「能跑」不是它的价值观,是它的奖励函数。
架构好不好、命名清不清楚、抽象是不是过度设计——不是它不在乎,是它到目前为止没被这样考过。注意是”到目前为止”:OpenAI 已经下架了 SWE-bench Verified,转向专家私有出题与人工整体评分。出题方自己在换考卷。
那怎么办?只有一条路:**它没被考过的东西,得你来考它。**这句话先放在这儿,第五圈回来兑现。
第二圈:我把一个下午交给它
放手多一点:一个完整的小需求,来回聊几十轮。
墙:聊到后面,我说过的话它不认了,而且它开始编。你问它一个它不知道的事,它不说”我查不到”,它给你一个看起来非常合理、格式非常漂亮、但是编的答案——像一个绝不肯承认没查到的实习生,而且编得比实习生像。
顿悟:
模型提供先验,事实提供后验。
它为什么看起来什么都懂?因为训练阶段吸收了大量人类知识,形成了很强的先验。但它不知道我们这儿此刻发生了什么——不知道某个接口昨天刚下线,不知道某条约定上周改了,不知道你十分钟前跟它说过什么。
它知道的是”通常情况下世界可能是什么样”,而工作需要的是此时此地事实究竟是什么。
关键推论:**Prompt 不能创造事实。**你把措辞打磨得再好,也变不出它不知道的事实。
那就把事实喂给它——我当时就是这么干的,把能想到的都塞进去。然后发现了第二件完全没预料到的事。
账单:我打十几个字,它实际发出去的是系统提示词 + 我的规则全文 + 二十多个 skill 的说明 + 二十个工具的完整 JSON 说明书 + 全部历史消息。你以为你只发了一句话。
这是税。而且每一轮都要重缴一次。
它转一圈重缴一次,转三十圈缴三十次。所以那两个症状能解释了:它不是”忘了”你说过的话,是那句话被挤在一个越来越拥挤的房间里。
Anthropic 官方用的词是 attention budget。要说准一点:这不等于”长了就变笨”——现有证据支持的是更具体的一件事:指令越多,遵守指令的比例越往下掉,而且不是线性下滑,是到某个点突然崩。它不是变笨,是开始不听你的。
两个有实证的坑:lost in the middle(放中间的信息最容易被忽略,TACL 论文);context rot(上下文越长表现越往下走——目前能引的是 Chroma 2025 年 7 月跨 18 模型的实测报告,属厂商技术报告而非同行评审,这个词最早谁提的没有确证,不该安作者)。
那份报告里有个数字很吓人:哪怕只加一个干扰项,表现就低于基线。
垃圾进,垃圾出。
所以”把能想到的都塞进去”方向就是错的。省着用和喂对东西是两个不同的动作。
装置(第二圈结束时造的三个):
- 须知全是禁令。 通篇”不得”、“禁止”、“立即停止”。我的经验是:正面指导它本来就倾向于做,写了不产生行为改变,纯占预算;真正要写下来的是它默认会做而你不想它做的事。比如”禁止在执行过程中临时猜默认值”,一句抵十句”请仔细一点”。
- 预算有测试守着。 须知不超过 8KB、不超过 60 行——但光设没用,人会破戒,所以写个测试守它,超了 CI 就红。预算不是建议,是有测试守着的契约。
- 一条事实优先级链,并且明写:**聊天记录不是事实源。**你跟它说过的话不算数,写进文件才算数。
……而当我把最后这句话写下来的时候,它其实已经把我推到了下一堵墙前面。
第三圈:我把一整夜交给它
既然一个下午能干,那让它无人值守跑一整批,第二天早上看结果。
墙:它记不住昨天。“我上次跟你说过”对它完全无效。
第二圈是一次会话之内它记不住,第三圈是会话与会话之间它什么都不剩。
所以你和 AI 协作的质量,几乎等于你把东西写下来的质量。不爱写文档的团队,用 AI 的天花板很低——不是工具不行,是它每天失忆而你没有档案。
顿悟:
一次生成不构成工作,闭环才构成工作。
提问 → 回答是聊天,是单次生成。真实工作是:明确目标 → 拿到上下文 → 形成判断 → 动手 → 看结果 → 修正 → 验证 → 完成或交还给人。**模型不再只负责”回答”,它进入了一个持续运行的闭环。**一次生成只能交付一个候选答案,一个闭环才可能交付结果。
装置:既然记不住,记忆就放外面——手册(怎么做事)、台账(事实是什么)、流水(发生过什么)。(这个分法各家不统一:LangChain 用学术界那套认知三分法把”手册”单列,Mastra 按机制切、没有这一格。这里用前者,因为它刚好给”指令文件”一个名字。)
让它能”接着跑”的是四样东西:状态写在文件里(不是”记得”,是”读得到”)、回修必须显式传参(否则它会把做完的当没做过重做一遍)、自动修复上限(不然它会在一个坑里转到天亮)、停止条件成文(什么情况必须停,一条条写下来)。
还有一条:它手上有二十多本手册,怎么知道翻哪本?每本手册第一句不是”这本能干什么”,而是”什么情况下你该翻开我”——写前置状态,不写功能。这就是你们写 SOP 的方式,只不过以前那个读者是人。
能不能接着跑,不取决于它记不记得,取决于你有没有写下来。
这跟值班交接是一模一样的事。区别只是——你的这位同事,每一轮都在交接班。
第四圈:我一次开好几个
一个能跑一整夜了,那多开几个是不是更快?
墙:**它们互相踩。**两个 agent 改同一个文件、同时提交、把对方的改动冲掉。
顿悟 + 装置:
读随便并行,写收敛到一个人手上。
只读的评审 agent 随便开——明令它们不许改代码、不许改测试、不许改状态,什么都不写就不可能撞车。要动手写的,跨仓库可以并行,同一个仓库绝不允许两个同时写。更进一步:让 subagent 根本不碰 git,干完只回传”改了哪些文件、建议的提交信息”,由一个 coordinator 串行提交。
这就是运维天天在做的单写者模式。
还有个常见误区值得点破:每个小任务都换一个新 agent 听起来很干净,但每换一个新的,整本须知、整套工具定义、全部背景都要重缴一遍税——干净的代价是把大部分预算花在重新自我介绍上。
第五圈:我把判断权交给它
前四圈我一直在旁边看着。第五圈放手最大:我不看了,它说做完了就是做完了。
墙:它每次都说做完了,报告写得漂亮、条理清楚、还带自我评估。但我怎么知道这次比上次好?
我当时的做法是抽查——抽到问题就骂一顿,没抽到就过。那不是验收,那是运气。
顿悟:
评价机制比自主程度更重要。
大家谈 Agent,注意力常放在”它能不能更自主”。我现在更关心”我们怎么知道它做对了”。
做后端架构时,我们不会因为一台服务器大多数时候正常,就取消超时、重试、监控和熔断。同样,也不能因为模型大多数时候说得很像正确答案,就取消验证。模型越自主,对评价机制的要求越高。
这里兑现第一圈那句:它没被考过的东西,得你来考它。
装置:一份真实的验证基准。它有几个特征值得抄:
- 有金丝雀:一个理论上永远该通过的对照组。它一旦挂了,说明不是这次改动的问题,是整条流水线坏了。有没有金丝雀,是”benchmark”和”跑一批看看”的分界线。
- 案例集按失败模式设计,不是随机采样:边界判错、极端输入、零候选、跨块、素材不足……每个 case 存在的理由都写下来。平均分会骗人,一张按失败模式排的表不会。
- 分层,而且顺序正确:先跑确定性的硬指标(机器判,一秒出结果),过了才进主观评判。**便宜的、确定的先跑;贵的、主观的后跑。**顺序反了,你会为一堆跑不通的漂亮东西开会。
- 允许第三种状态:不是 PASS 也不是 FAIL,而是”硬指标过了、主观还没判”。我们太习惯逼系统给二元答案,但很多真实的判断就是”还不知道”——你不给它这一格,它就会在两个答案里瞎选一个,然后你信了。
要说准的是:硬门禁不是”更可信的裁决”,它是”便宜的第一道筛”。有研究发现规则式判定会低报成功率,把实际做成了的判成失败。它会误杀,它只是便宜。
主观那一半要算数,得满足三个条件:盲化(评的人不知道哪个是自己的产物)、配对(同一道题的两个结果放一起比)、异构(用模型当评委时必须来自不同家族)。关键不是”多”,是”杂”——同一个模型跑三遍投票,只是把同一个偏差投了三票。
这套东西我是在一个音频项目上做的,不是代码项目——故意的。因为最常见的反对是”AI 写的东西没法验收,只能靠人看”。那是一个主观的、听觉的、没有标准答案的任务,判据是”人耳听着自不自然”。
连”这段配音听起来对不对”都能建门禁,“这段代码写得对不对”当然也能。
而这块面板不是模型给我的。模型不会自己长出品味——品味是你外置出来的。
没有停止条件的 agent,不是自主,是失控。
第六圈:我想让别人也这么干
到第五圈,我自己这套东西已经跑得不错了。于是做了最后一次放手:让同事也这么干。
墙:**他们用不了。**我把 prompt 发给同事,他跑出来的结果不一样。我说”你得先让它读那个文档”,他说”哪个文档”。
这堵墙跟前面五堵完全不同——它不是技术问题。我这套东西是有效的,但它只在我手上有效:散落在我的聊天记录、我的习惯、我脑子里那些没写下来的判断里。我一个人效率很高,但我离开,这部分能力就没了。
顿悟:
十个超级个体,不会自然变成一个超级团队。
“超级个体”真正发生的变化不是”一个人什么都会”,而是一个人第一次可以调动接近一个小团队的认知和执行资源。但十个这样的人放在一起,得到的很可能是十套互不相通的私人方法。每个人都有自己的 prompt,每个人都在自己的聊天记录里积累经验——这仍然是个人生产力,不是组织能力。
要完成的是这样一组转化:
| 个人的 | 组织的 |
|---|---|
| 脑子里的隐性经验 | 共享的 Context |
| 收藏的 Prompt | 有输入输出和边界的 Skill |
| 自己拼的工具链 | 有权限有审计的标准工具 |
| 凭感觉检查 | 共享的评价标准 |
| 散在聊天记录里的过程 | 可回放可分析的轨迹 |
所以超级团队的定义是:一个人的有效方法,可以被其他人调用,被系统稳定执行,被数据持续评价,然后被继续改进。
现在可以说前面五圈其实一直在干什么了。那些禁令、那份 8KB 的预算、那些手册、那个状态文件、那块面板——我一开始造它们,是为了让 agent 别出错。但它们真正的价值,是把我脑子里的判断,变成了别人也能跑的东西。
规则写下来了,别人就知道边界在哪。手册写成”什么情况翻开我”,别人就不用问我。评价标准做成面板,别人就不用来问我”这样行不行”。
我不是在管教一个 agent。我是在把我自己变成可复制的。
最后一句可能有点扫兴,但必须说:这种事很容易变成”先立一个宏大的平台,再去找场景”。我不建议这么干,我自己也不是这么长出来的——我这套东西没有一条规则是设计出来的,全是被坑出来的。先有”它又猜了个默认值”,才有”禁止临时猜默认值”这条。
先有现场,再有抽象。先有可以被验证的结果,再有可复用的平台。
我还没解决的
讲到这儿得说三件没解决的事,不然这篇就太顺了。
**这套东西维护成本很高。**二十多本手册、三十多个测试、十几条决策记录,它们自己也要被维护。**如果你就一个人、一个仓库,你需要的可能只有一份须知,剩下的都别建。**它的规模是跟着团队和项目复杂度长的,小项目上肯定不划算。
**我给不出 ROI 数字。**没有一个”没用这套东西”的对照组,任何百分比都是编的,我不编。我只有一个事实:**我不想退回去。**如果要拿这个立项,我的建议恰恰就是上面讲的那套——先建对照组和基准,再谈提升,不然那个数字也是编的。
**我担心一件事,而且没有答案。**如果一个人从来没有手写过那些模板代码,他还能不能长出判断力?我不知道。我只知道躲不开。
一把尺子
下次再看到一个新概念,先问三个问题:
- 它增强的是先验,还是提供了真实的后验?——是让模型更会说,还是让它接触到我们这儿的事实。
- 它只生成了内容,还是推动了一个闭环?——是给了一个候选答案,还是让任务往前走了一步。
- 它依赖某个人,还是能沉淀成团队能力?——是又一个私人技巧,还是别人也能跑的东西。
能回答这三个问题,AI 的信息就不再是一堆互相竞争的热点。每一项技术都会回到它在工作系统里的位置。
只做一件事
挑一个你重复在干的活,给它写下停止条件。 什么情况算干完了?什么情况它该停下来问你?
不需要你有仓库、不需要你会写代码、今天下午就能做。
而且请注意——**你写下来的那一刻,它就不只是你的方法了。**它变成了一个别人能读、能用、能改的东西。这就是从超级个体到超级团队的第一步,它比你想的小得多。
摆脱 AI 脱敏的方法,不是追上所有新工具,是重新建立对工作的理解。
相关
参考
- SWE-bench / SWE-bench Verified:任务判据是测试通过
- SWE-CI:脆弱补丁与干净实现在同一套测试下同分
- Anthropic《Natural emergent misalignment from reward hacking》:
sys.exit(0)骗过测试框架 - Anthropic 工程博客:attention budget、just-in-time 检索
- Chroma《Context Rot》(2025-07):跨 18 模型实测,单个干扰项即低于基线
- Lost in the Middle(TACL):中段信息被忽略
- LLM-as-judge 的位置偏差 / 冗长偏差 / 自我偏好偏差;PoLL:评委需来自不相交模型家族
- AgentRewardBench:规则式评估会低报成功率