有个开发者分享了一段经历。他让 AI 处理一个数据库字段类型变更的问题,错误信息 AI 已经读到了,问题出在哪里 AI 也知道。然后 AI 花了 47 轮,反复尝试同一条 ALTER TABLE 命令的各种语法变体。几毛钱就能解决的问题,最后交了 30 美元的学费。
还有更离谱的。有人让 AI Agent 跑了一整夜,第二天早上打开账单,437 美元。事后分析发现 Agent 陷入了一个"自己觉得有道理但其实在原地打转"的推理循环。更极端的案例里,一个 Agent 在一次运行中调用了 14000 次同一个文件列表命令。
这些不是段子,是真实的生产事故。而且它们有一个共同的特征:AI 没有在偷懒,每一轮它都在认真尝试,但它完全不知道自己在做无用功。
先区分两件事。
犯错是做错了一步。改过来就好了,代价很小。
跑偏是方向本身就不对,而且 AI 不知道方向不对。它越努力,离目标越远。每一步看起来都是合理的,连起来看是在一个大圆圈上散步。
犯错好办,跑偏要命。
因为犯错的时候,系统是有自我纠正能力的。测试告诉你哪一行报错了,你改那一行就行。但跑偏的时候,系统丧失了自我纠正能力。AI 不知道自己在跑偏,而约束机制也没有能力告诉它。
为什么约束机制告不了它?
目前主流的约束就两种:测试和提示词。
先说测试。测试只能告诉 AI "不对",但不能告诉它"往哪个方向不对"以及"偏了多远"。
打个比方。你教一个人投篮。他投偏了一寸,你说"没进"。他直接把球扔到了观众席上,你还是说"没进"。同样两个字,但第一种情况他只需要微调,第二种情况他需要从头学起。可是你给他的反馈完全一样,他怎么知道该微调还是重来?
AI 面对的就是这个处境。它偏了一点点和偏了十万八千里,收到的信号都是同一个强度的红灯。红灯亮了就改,改了还亮就再改,但它不知道自己是差一点就到了还是已经走上了一条完全错误的路。
再说提示词约束。你在 prompt 里写"不要修改不相关的文件",AI 在第一轮会乖乖遵守。但跑了 20 轮之后,上下文窗口快满了,早期的指令被挤到了窗口的远端,权重越来越低。到第 30 轮的时候,AI 可能已经把你的约束忘得一干二净了。
约束的效力随时间衰减,但跑偏的风险随时间累积。你的管束越来越松,AI 的胆子越来越大,直到某一轮它开始大刀阔斧地重构那些本来好好的代码。
所以问题不在于"AI 会不会犯错",而在于"AI 犯了错之后,现有的约束机制能不能有效地把它拉回来"。答案是:大多数时候拉不回来。
很多人的第一反应是"那就把规则写得更详细更完善"。
这条路有一个理论上的硬顶限制。
想一下:你在循环启动前写的所有规则,都是基于你对问题的当前理解。但一个复杂系统在运行过程中会产生新的状态,这些状态在启动前不存在。
你不可能在第 1 轮就知道 AI 在第 15 轮会犯什么错,因为第 15 轮的错误取决于前 14 轮的全部输出,而那些输出在你写规则的时候还没有发生。
如果你能提前预见所有可能出现的状态,那这个问题本身就已经被解决了,根本不需要 AI 来做。正是因为你不能预见,才需要 AI 去探索。但 AI 的探索会产生你没想到的新局面,而你没有为那些新局面写好规则。
这不是你不够仔细的问题,这是信息的结构性约束。系统运行中产生的信息,在运行之前不存在。你不能约束你看不见的东西。
这其实是一条老路。上世纪的 AI 研究者走过。那个时代的主流思路叫符号主义,核心理念就是"把人类知识编码成规则"。专家系统就是这么做的:请来领域专家,把他们的知识一条条写成 if-then 规则。在窄领域里效果很好,一旦面对开放世界就崩溃了。
原因不是研究者不够聪明,而是现实世界的异常情况从结构上就无法穷举。你以为你写了 100 条规则覆盖了所有情况,结果第 101 种情况在你发布的第二天就出现了。
今天的循环工程如果只靠堆规则来约束 AI,本质上是在重走符号主义的路。规则越写越多、越写越细,但永远有漏洞,而且漏洞出现的时候你不在场。
转折来了。
今天的大模型跟上世纪的符号系统有一个根本区别:大模型能做模糊理解。
符号主义时代,你必须把每一条规则写死。"如果错误代码是 ORA-02292,则先执行 ALTER TABLE DROP CONSTRAINT"。这种规则精确但僵硬,面对一个它没见过的错误代码就完全失效。
但大模型可以理解元规则。你可以说"如果连续三次尝试同一类操作都失败了,退一步,重新分析问题的根本原因,然后换一个完全不同的方向"。这里面的"同一类"、"退一步"、"根本原因"、"完全不同",全是模糊概念,符号系统处理不了,大模型可以。
这就打开了一个可能性:不是靠穷举所有具体规则来约束 AI,而是用少量的元规则来引导 AI 的行为模式。你不告诉它遇到每种错误该怎么办,你告诉它"遇到反复失败的时候该怎么调整自己的策略"。
所以最有前景的方向可能是混合模式。用硬规则处理那些可以明确判定的事情,比如测试必须通过、类型检查不能报错、构建不能失败。用 AI 的模糊判断处理灰色地带,比如"当前的方向是不是越走越偏"。然后用一套分级机制把两者串起来。
这个分级机制可以分成三个自治级别。
L1 是完全自动。AI 做完自动检查,不需要人。适用于判断标准完全确定的环节,比如跑测试、跑 lint。
L2 是自动执行加人工审批。AI 做完一个阶段,暂停,把结果呈现给人,人说"继续"才进入下一阶段。适用于有一定风险的操作,比如数据库迁移、API 变更。
L3 是人工决策。AI 搜集信息和选项,人来拍板。适用于需要判断力的关键节点,比如架构选型、方案取舍。
一个循环里完全可以混合这三个级别。写代码和跑测试是 L1,全自动跑几个小时没问题。代码合并前的审查是 L2,暂停等人过目。连续 50 轮都过不了测试是 L3 的触发条件,强制停下来交给人。
自动循环和人工介入不冲突,关键是在设计阶段就规划好:哪些节点全自动,哪些节点等人,什么条件触发升级。这个规划不是运行时临时拍脑袋的事,而是架构层面提前想清楚的事。
最后拉到更远的视角。
有人说循环工程是通向"AI 数字分身"的必备路径。你先学会写循环,然后循环越来越智能,最终变成一个能替你做所有事的数字分身。
我觉得因果关系是反的。
不是"先搞好循环工程然后走向数字分身",而是"当 AI 真正能理解你的意图和判断标准时,循环就是自然而然的副产品"。到那时候你不需要设计分级自治,不需要写元规则,不需要手动规划哪个节点等人。AI 自己就知道什么时候该继续,什么时候该停,什么时候该来问你。
就像自动驾驶。L2 需要车道保持辅助、自适应巡航、碰撞预警这一堆外部系统来给驾驶员兜底。但如果真到了 L5,车自己就能开,那些辅助系统就不需要了。不是辅助系统进化成了 L5,而是 L5 的能力让辅助系统变得多余。
我们现在做的所有这些约束手段,测试驱动、分级自治、元规则、禁止清单,本质上都是 L2 阶段的辅助系统。它们有用,在当下阶段非常有用。但它们不是终局。真正的终局是 AI 判断力本身的提升,那是模型层面的事情,不是工程层面的事情。
但在那一天到来之前,工程手段就是我们手里最实在的东西。
下一篇,我想聊一个可能让约束机制大幅升级的思路。
我建了一个AI学习研究群,目前几十来人,都是在真正动手搞AI的人。如果你也在自己跑模型、写代码、做项目,欢迎点赞关注转发一键三连,然后加我微信,备注写清"你在做的AI方向",聊得来的话我拉你进群。纯围观的和小白就不加了,有一定门槛。
