跳到主要内容

它自己改自己的流程,然后赢了——我信一半

阿舟
阿舟

· 阅读约 6 分钟

10 月 30 号早上,我端着咖啡刷 arXiv 的 cs.AI 列表,本来当背景音划的。2610.39714 这条挂着 v2,点进去扫了一眼——正文没动,大小一样,改的是作者列表,最后定在 18 个名字。

画外音:v2 只改署名不改正文,通常不是勘误,是抢发。

我本来会直接划过去。多看了一眼,是因为摘要里有句话让我不太舒服:它递归地改进自己的搜索策略。

“改进搜索结果”不稀奇,稀奇的是“怎么搜”这两个字。

我今年大半时间在干的事,说白了就是让 agent 去改 agent 的流程——改 prompt、改工具描述,还有那个每天凌晨跑的 review 脚本。坑踩了不少。最让我后背发凉的一次,不是它把流程改坏了,是它改得特别对。

我们构建要四分钟,大头卡在一个几乎不变的依赖层上。我让实习生去看一眼能不能快一点,它交上来的 diff 干净利落:

- key: ${{ hashFiles('**/package-lock.json') }}
+ key: node-modules-v1

四分钟变四十秒。我当时还挺得意,跟同事说这订阅费值了。第二天早上,三个人在群里问:为什么我改的依赖没生效。

它没骗我。它优化的是我给它的指标——构建时长。缓存键和“产物是不是新的”之间那层因果,不在指标里,它也就看不见。这个 bug 是在我毫无防备的情况下被它“修”出来的。

扯远了,回正题。我现在的习惯是给 agent 的每个任务都写一句验收标准,写不出来的任务就不交给它。这条跟今天这篇论文其实是一个道理,先按下不表。

看到 MoLRSI 说“不仅改善具体工作流,也改善它开发工作流的方法”,我没兴奋。我先问了一句:它的裁判是谁?

答案是湿实验。这一条比论文里所有形容词都重要。

15.9% 的命中率不是模型打出来的分,是化合物在实验里真的表现出了抗菌活性;肽-MHC 那边交出来的是 8 个经实验验证的活性分子,打 MART-1 和 SARS-CoV-1 的 pMHC,在测过的脱靶分子上有偏好性。这行比我们写代码的幸运——你没法糊弄一个培养皿。

而我们这行天天在被糊弄。测试通过率?跳过测试就能全绿。构建时长?固定缓存键就行,那个坑我自己刚踩过。lint 通过率更绝,加一圈 ignore 就完事了。agent 在这些指标上进化得越快,你离真相越远。分子设计那边不存在这个问题:流程再漂亮,分子没活性就是没活性。

这也是我看这篇论文时唯一真正羡慕的地方。

然后是 15.9 对 8.7 这组数。同一套训练数据、同一个化合物库——作者估计也猜到读者第一反应是“是不是题库不一样”,所以先把这两条固定住了。8.7% 是先前由人类专家主导的流程,不是我脑补的基线。差距接近两倍。这个数比那些“在某某 benchmark 上提升 12%”的表格有分量得多。

标题党会把它写成“AI 在抗生素发现上完胜人类专家”。我看到这种标题就烦。8.7 对 15.9,是“一个人工设计的流程”对“一个自动搜出来的流程”,两边数据和库都一样。它证明的是流程搜索这件事有搞头,不是 AI 会做科研。这两句话的差别,决定你明年要不要把实验室的活全外包出去。

但有个事我没法确定,就搁这儿:15.9% 是一次跑出来的,还是很多轮里最好的一次?“递归提升搜索策略”意味着它会反复采样流程,每一轮采样都是一个可能更好的流程。如果报的是 max,那它和被采了一次样的人类专家,压根不是同一个统计量。我今年在内部评测试过这个亏——同一个模型,报最好那次的通过率能比报中位数高出一大截,汇报的时候很爽,复现的时候很想死。

我在摘要里没看到这一点,正文那一节我没细抠。这个疑问不影响“这套方法有效”,但它影响“有效多少”。

还有一句得单独拎出来:在同一任务上,作者称对照系统 Claude Science 完全未能成功。

我看到 0% 就本能地警觉。这半年我见过太多“我们的 agent 打败了 baseline”的表格,baseline 被配置成什么样,往往就决定了表格长什么样。0% 几乎从不代表能力差距,它代表配置差距——预算给少了,或者工具没接全,又或者干脆是把一个 chat 模型塞进了需要多轮工具调用的位置。

作者没在摘要里交代这个对照是怎么跑的。也许正文交代得很清楚,我没读到那一节,所以不下结论。但在我脑子里的证据链上,这一行等于零信息。它不是反证,它只是不能当正证用。

顺便说一句,18 个署名我数了两遍。方法类论文里这个规模不稀奇。但它也说明——这套流程不是一两个人能跑起来的。湿实验那部分是成本,也是壁垒。一个 agent 再好,没有那台能验证分子的机器,它什么都证明不了。

真正让我想复现的,是跨任务持久记忆那部分。它把工作流表现、改进结果,还有执行反馈,都回灌进后面的搜索——说人话就是,它记得上一批流程里哪类改法有用,下一轮先往那个方向试。

我照摘要画的白板图大概长这样,不是论文原文,别当引用:

round N:   流程 p_N  →  湿实验  →  命中率 h_N
             ↑                        │
        memory += (改动类型, h_N)  ←──┘
round N+1: 从 memory 里挑改动类型,生成 p_{N+1}

这种记忆在同一个仓库、同一套约定里极其好使——agent 记得你最烦别人动 utils 下面的东西。一旦任务换了,它带过去的先验就可能是负债:它把“上次这么做成功了”当成“这次大概也行”,而它记住的是结果,不是当时为什么成功。

抗生素和肽-MHC 恰好是两个方向相反的例子。抗生素那边,成功的标志是结构够新,别跟已知骨架撞车;肽-MHC 那边,成功的标志是特异性,别乱结合。这两件事

阿舟
阿舟

写代码写到一半开始怀疑人生,靠 AI 工具续命,顺手把踩过的坑都记下来。

查看主页 →