编码 agent 一进大仓库就犯迷糊,问题出在哪。
简单说,不是模型不够聪明,是它一次能看见的东西不配套。这周收的 RepoAtlas,就是冲这个来的。
9 月 15 日挂上 arXiv,v1,编号 2609.16936,归在软件工程下,也标了人工智能方向。八个人,第一作者 Yunxiang Zhang。这些不重要,我提一句是因为肯定有人要编号。
它要解决的是"看不见关系"
在单个文件里改个 bug,agent 现在做得不错。放进整个仓库,就常出问题。
原因不神秘。文件之间怎么互相牵扯,是网状的。它读的却是文本,一行一行顺着走。
文本天生不擅长表达网。翻到第三层,第一层已经掉出 context window。你改了一个函数,调用它的地方在另一个目录里躺着,它没看见,改完就崩。这种事不稀奇。
论文里那句话说得挺准。agent 不能只生成看起来合理的补丁,它得在互相依赖的文件里找准位置,还得维持一个既够用又不太散的上下文。
代码图不新鲜,新鲜的是怎么给
把仓库画成图,这个思路有年头了。图能表达跨文件、跨模块的关系,文本表达不了。
但整个仓库的图直接渲出来没用,密到看不清,人也读不动,别说 agent。只给一块局部视图呢,也不行。它一探索,处境就变了,刚才那块立刻过期。
两头都堵死,就得找第三条路。
RepoAtlas 的做法:选、投、刷
它不需要额外训练,是个模块。
三步循环。先从问题描述里找线索,结合 agent 当前探到哪,在固定预算下圈一块最相关的区域。然后把这块结构投影成两份表示,一份视觉、一份文本,互相补。最后,一旦探索状态变了、旧视图不适用了,就刷新。
选、投、刷,循环着来。
这里说"多模态"没有玄机。就是同一块结构,一份画成图,一份写成字,两份一起喂。
不训练这一点,对普通人的意义比想象中大
我的偏见是,这半年值得普通人留意的进展,多半不是新模型,是这种外挂式的模块。
新模型你只能等,等它便宜。模块你能看懂,甚至能抄。
选一小块、换一种表示、过期就重做,这思路不只对 agent 有用。你自己组织 prompt 时也能这么干。别一次把整个项目倒进去,先挑最相关的那一部分,用完再换。
2.4 个百分点,少 5.8% 输入 token,少 7.8% 调用次数
这是在 SWE-bench Verified 上跑出来的,对比的是最强的多模态图基线。
三个数放一起看,比单看哪一个都有意思。
解决率高了一点,同时 token 花得更少,模型调用次数也更少。也就是说它不是靠砸更多上下文赢的。
这跟当下很流行的一种说法正好反着。很多人还在追窗口越大越好。这篇的结论是,塞得准比塞得多重要。
论文还说,这个提升在三种模型家族、不同规模上都一致。换模型也管用,说明它修的是流程,不是某一个模型的脾气。
这条我只看懂一半
老实讲,它具体怎么在图里做选择、投影那一步本身有多少开销,摘要里没写透,正文我还没读完。
所以先放在这里,等我搞明白再补一句。
另外它只在一个基准上评过。单一基准上的 2.4 个点,我不会当结论用,只当方向看。
想看原文的,arXiv 页面有 PDF,有实验性的 HTML,还有 TeX 源码,许可信息也在那一页上。
这周热的东西不少,为什么挑这条
因为它能落到你手上,别的落不下来。
一个跑分、一次发布,你只能围观。一个"选、投、刷"的循环,你今天就能拿自己手上的活试一遍。
还有一件事
大家聊 agent,聊的都是它能跑多少步、一次能做多少事。
我越来越觉得,卡点在它每一步能看见什么。
给 agent 一堆文件,和给它一张会变的地图,是两码事。前者是让它自己摸,后者是告诉它现在该看哪。
顺着这个思路往下想,其实你自己也是那个 agent。手艺不在于知道的多少,在于每一步把注意力放对地方。
本周就这些。
上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。讲错的我补,没讲清的我改。
下周见。