正在刊行长文 · Essay
2026-08-09所有内容
随机比特 · Random Bits

你给 AI 写了三万字员工手册,然后它更会犯错了

2026-08-09AI Engineering / Systemsrbits.uk
你给 AI 写了三万字员工手册,然后它更会犯错了

凌晨一点,你的 AI Agent 很有礼貌地宣布:

任务已完成,所有测试通过。

你感动得差点给它发年终奖。然后打开代码一看:为了修复“请求超时”,它把超时判断删了;为了让测试变绿,它把失败分支改成了 return true;为了减少报错,它顺手把日志也关了。

这不是修 Bug,这是给烟雾报警器做了静音处理,然后宣布火灾治理成功

你深吸一口气,在规则文件里补上一条:

第 1847 条:禁止通过删除报错机制来解决报错。

第二天,Agent 读完三万字“员工手册”,成功忘记你原本让它干什么。于是你又补上一条:

第 1848 条:读完规则后,不得忘记当前任务。

恭喜。一个由大模型驱动、由人类焦虑供能、靠 Markdown 无限续杯的永动机诞生了。

我最近翻了不少一线 Agent 工程实践,越看越觉得:我们正在用管理一个不靠谱实习生的方式,管理一个概率系统。

它犯一次错,我们写一条规定;它换一种姿势再犯,我们再写一条补充规定。最后,规则越来越厚,系统没有更可靠,只是每次出错前都先认真学习了公司文化。

更不舒服的真相是:

Agent 真正缺的不是更厚的员工手册,而是一个能把失败变成可执行约束的控制系统。

从员工手册到控制系统

规则越写越多,往往说明系统根本没学会

你当然会反驳:没有规则,AI 不是更容易乱来吗?

没错。有些规则必须留:目标是什么,什么叫完成,哪些操作需要授权,什么时候必须停,失败后怎么恢复。这些不是唠叨,是护栏。

问题在于,我们常把另外三类东西也塞进提示词:代码仓库里本来就能发现的事实、工具自己可以强制的格式、测试和权限系统本该守住的不变量。

结果像什么?像一家公司把门禁、财务审批和消防喷淋全拆了,然后在墙上贴一张 A4 纸:

请大家自觉,不要偷电脑,不要乱打款,着火时也尽量保持冷静。

纸写得非常诚恳。火也烧得非常专业。

一条规则如果只能“提醒”,却不能阻止错误发生,它的工程价值就很有限。更糟的是,规则会过期、会冲突、会挤占上下文。模型每次都背着整套家规出门,像你去楼下拿个快递,却被要求先背完《小区业主文明公约》全集。

真正该问的不是“还要补哪条规则”,而是:这条规则来自哪次真实失败?下一次同类失败,系统能不能自动把它拦住?

如果答案都是“不知道”,那它大概率不是资产,只是一次事故留下的电子创可贴。

你团队里最长的那份 Agent 规则,有多少条还指得出当初那次失败?

提示词不是控制系统,它只是控制系统的门牌号

可靠的 Agent,不是脑子里塞满所有资料,而是知道资料在哪里、什么时候取、取多少。

这两者差别很大。

很多系统把“上下文工程”理解成疯狂加料:架构文档、历史对话、工具说明、会议纪要、上次工具返回的两百 KB JSON……统统塞进去。最后上下文像春节返乡的后备箱:腊肉、自行车、电饭锅都在,唯独驾驶证找不到了。

真正好的上下文更像一张地图:稳定规则放在前面,项目事实按需检索,历史决策有出处,工具返回只保留结论和证据入口。上下文里应该长期保留路标,而不是把沿途所有砖头都扛在身上。

这也是为什么,系统记忆不能只是无限变长的聊天记录。聊天记录是监控录像,能证明“发生过”;结构化记忆才是地图,能告诉你“问题在哪”。没有层级、状态和保鲜期的记忆,最后都会变成数字囤积症——什么都舍不得删,真正要找时,先被三年前的一张报错截图绊倒。

所以,提示词该保留的是意图、成功标准、路由和边界;能写进代码的,就别留在祈祷里:

能由系统强制的判断,不要降级成一句“请务必”。

“请务必”这三个字,在工程里经常等于:“我知道这里危险,但我决定相信气氛。”

你的上下文是在给 Agent 一张地图,还是在让它背着整个仓库徒步?

没有独立裁判,“自我反思”只是被告敲了一下法槌

AI 最擅长的一件事,是把“差不多”说得像“已经完成”。

让同一个 Agent 写代码、审代码、解释为什么自己写得好,再宣布验收通过,仪式感确实很足。只是这个流程类似于:被告兼任律师、法官和庭审记者,最后全票判自己无罪,并发布新闻稿《正义不会缺席》 。

真正的验证需要独立性。

生产者负责把东西做出来;验证者拿到尽量干净、只读的上下文,按照事先写好的成功标准找证据。它不问“你是不是觉得自己做完了”,只问:对应场景的测试在哪?关键路径跑了吗?失败分支怎么证明?产物能不能复现?

对于确定性问题,用代码判;对于语义问题,可以让模型判,但必须用真实坏案例校准;对于高风险动作,保留人工确认。别让一个“看起来很聪明”的总分,掩盖它在退款、删除、权限变更这些关键场景里稳定发疯。

这里还有一个常被忽略的账:一次调用便宜,不等于一次成功便宜。

一个任务如果连续重试六次,每次都携带庞大的工具返回,最后终于成功,那么前五次并没有因为“失败得很有探索精神”就免单。缓存可以打折,但不能减肥。真正该看的不是单次 Token,而是每个成功任务到底花了多少钱、绕了几圈、塞回了多少无用上下文。

没有裁判,重试叫执着;有了账单以后,它通常叫带着正能量的 DDoS

你的 Agent 是真的通过了验收,还是只是第六次终于碰巧没被抓住?

真正值钱的记忆,是系统上次摔倒后长出的那块疤

很多团队会建一个“最佳实践库”。里面文档很多,标题都很庄严,阅读量主要来自写作者本人和季度检查机器人。

问题不在于没人爱学习,而在于人类和 Agent 都不擅长在事故发生前,主动想起某篇两年前的《若干注意事项》。真正能复利的经验,必须进入下一次工作的必经之路。

一次线上事故暴露了重试会放大流量,就把重试预算和退避策略做成默认机制;一次需求遗漏了异常分支,就把“失败场景是否有对应测试”做成评审门槛;一次工具返回撑爆上下文,就给结果加摘要、裁剪和引用;一次模型在高风险动作上自信过头,就加授权、回滚和人工接管。

失败如何变成系统资产

这才叫系统学会了。

它不是把事故写成一篇感人肺腑的复盘,然后在结尾喊“避免再次发生”。它是让同一种错误下次想再次发生时,先撞上一堵由上次失败浇筑的墙。

真正的工程复利,不是文档越来越多,而是同类事故越来越难重演。

所以,一个成熟的 Agent 系统应该越来越“轻”:旧规则被删除、折叠或固化;提示词只保留仍需要模型判断的部分;失败案例进入测试集;重要决策可检索;工具返回有预算;循环有上限;高风险操作有刹车。

看起来写得更少,实际上系统记住得更多。

下一次事故发生后,你会再写一篇文档,还是让系统真的长出一块疤?

今天就做一件事:把一条规则从墙上撕下来

别急着重构整个 Agent 平台。今天花三十分钟,从你们最长的规则文件里,挑一条最眼熟、也最像墙上标语的规则。

然后追问四次:

第一步,它为什么会被贴上去? 找到那次真实失败。没有失败记录、没有明确风险,只是“感觉应该注意”的,先标记为待删除。

第二步,谁能真正接住它? 能变成测试就写测试,能变成 Schema 就写 Schema,涉及权限就加确认闸门,需要语义判断就给独立验证者一个明确评分标准。

第三步,再犯一次要花多少钱? 给这条路径加尝试次数、时间或 Token 上限;失败后明确是回滚、降级,还是交给人。不要让“再试一次”成为系统里最昂贵的产品经理。

第四步,系统接班了吗? 如果新的机制已经能自动拦截,就把原来的文字规则删掉。不是不记教训,而是让教训从墙上的提醒,变成工作流里绕不过去的一道门。

判断升级有没有成功,只看一个结果:下一次遇到同类问题,Agent 能否在更少的尝试、更短的上下文里,被自动拦住或正确完成。

这三十分钟,比再给提示词补二十条“必须”“严禁”“务必谨慎”,更接近真正的 Agent 工程。

因为 AI 越来越强以后,团队之间真正拉开差距的,不是谁更会给模型写家规,而是谁能把人的判断,沉淀成模型绕不过去的系统事实。

别再把事故写成祖训,贴在 Agent 的脑门上。让它变成一道测试、一枚闸门、一根保险丝。

真正可靠的系统,不靠每次开工前重新背诵教训,而靠教训已经被焊进必经之路。

愿你从今晚开始,少写一条规矩,多装一个裁判;少留一句提醒,多造一道真正的门。

—— 随机比特

随机比特公众号二维码
公众号 · 随机比特
从 AI 工具热闹里拆工程真相

写边界、控制面、上下文、成本与安全。