跳到主要内容
判断一个 agent 靠不靠谱,我现在只问它梯子几级

判断一个 agent 靠不靠谱,我现在只问它梯子几级

摸鱼办主任
摸鱼办主任

· 阅读约 5 分钟

车间里那台气缸要是在错误的时间伸出来,它不弹异常,它只是继续伸。

这就是我不太愿意把“部署”这两个字跟网页项目放在一起聊的原因。网页项目把权限交出去,最坏是一个下午回滚三次,周报上多一行“已处理”;PLC 这边把权限交出去,最坏是有人得跑去看那段气缸撞坏了什么。

【灯光渐暗,一个下午回滚三次的人,正在给车间讲什么叫“影响面可控”】

所以两周前 arXiv 上那篇讲 PLC 编程助手的论文,我本来打算扫一眼标题就划走。ETFA 的会、PLC、copilot,三个词叠一块儿,预期就是一篇“我们也接上大模型了”的应景文章。10 月 20 号挂 v1,27 号更 v2——一周一版这个手速,比我们组改需求的响应还快。

真让我停下来的是它把“逐级放开的工具访问阶梯”摆在了主要贡献那一层,跟装置知识摄取、对话优先调试并列。梯子从纯对话起步,往上依次是解释代码、改代码、提交、碰部署;任何会产生现实世界影响的环节,工程师保留最终控制权。

这句话看着像免责声明,其实是全篇唯一一个需要动脑子的地方。

另外两条说白了都是“把更多上下文塞进去”的体力活。方向对,工程量大,但不需要跟谁吵架。第三条不一样,它承认了一件所有 agent demo 都在假装没发生的事:权限不是一个开关,是一段楼梯。

先说它骂得最准的那处。

现在的 coding agent 默认形态就是一根管子:prompt 灌进去,diff 流出来,人对着 diff 点个头或者骂一句,收工。这套东西对“这台机器是谁、这个厂出过什么事、上一次为什么把那段互锁改成那样”没有任何记忆。换个人接手,或者换个车间,从零开始。

【灯光渐暗,一个不记得你昨天为什么改那行逻辑的东西,正在很自信地建议你改回去】

作者管这叫“一次性流水线”,用词挺客气。我见过更生动的版本:同一个模块的上下文重新喂到第七遍,第七遍给出的方案和第一遍一字不差——它不是在帮你,它是在重新认识你。

(这个同行是我瞎编的。但你是不是觉得很有代入感。代入感的意思就是,它真的发生过。)

装置感知那块论文没细到落地形态,我脑补的是把 IO 表、电气图纸、历史故障记录、安全规范一起灌进去,让它对“这一台”有记忆。这事在 PLC 上比在 CRUD 上值钱一整档,因为工厂的知识本来就散在三个互不相通的地方:厂商手册的某一页、老师傅的脑子里、上一任走人前留下的那行注释。这三个地方都不在版本库里,也都不在上下文窗口里。

顺便,plant-aware 我第一眼读成了“植物感知”,还以为终于有人管管我桌上那盆绿萝。

这个包袱有点冷,你们自己脑补笑一下。

说回对话优先。调试第一步从“读一遍报错”变成“把报错粘进对话框”,这个动作迁移早就悄悄完成了,没人开会宣布,也没人觉得奇怪——这才是最好笑的地方。在这行收益比别处大,因为报错长成“驱动器 F00745”这样,你不翻手册根本不知道它在抱怨什么。所以对话优先在这边算刚需,在 CRUD 那边只是习惯。

然后是阶梯。我得说清楚我为什么觉得它是全篇唯一硬的东西。

大多数 agent 框架的权限设计只有两档:能不能调工具。这套思路在网页项目上凑合能用,因为最坏情况是一个下午。搁工厂里,两档等于没有档——“能调工具”和“能让一条产线停四十分钟”是同一个开关,中间那二十级台阶全被抹平了。

所以“阶梯”这个词用得对。不是开关,不是白名单,是阶梯。每一级都得单独回答几个问题:这一级它能读到什么、能写什么、写错了谁先发现、发现之后退不退得回去。而且每一级的默认值应该不一样,越往上,默认越关。

写到这儿我犹豫了一下,是不是把阶梯抬得太高了,毕竟论文主体还在讲怎么让模型更懂工厂。想了想还是坚持:模型懂不懂工厂是能力问题,下一代模型迟早抹平;阶梯是产品问题,模型再强也替你想不出来。一个能写出编译通过的 ST 代码的模型,和一个敢让它直接下装的系统,中间隔的不是参数量,是那二十级台阶。

顺便吐个槽,这篇同时挂了软件工程、人工智能、机器学习三个分类。现在的论文挂分类跟简历写“精通”差不多,多挂一个不吃亏。

打住,扯远了。

我现在看到哪个 agent 宣称自己“可以自主部署”,第一反应已经不问它模型多大、上下文多长,改问它阶梯几级、哪一级需要人签字。答不上来的,就还是流水线,只不过流水线尽头挂了个绿色的“已部署”,绿灯后面没有人。

(友情提示:下次谁再跟你演示自主部署,别问模型多大,问阶梯几级。答不上来的,建议先让他把家里扫地机器人的权限收回来练练手——那玩意儿也挺自信的,撞了墙也不认错,只是继续撞。)