长程编码智能体的交互历史,常常超出模型当下能用的上下文。近年的工作开始用强化学习把「记忆控制」训进策略,但大多依赖环境特定的记忆工具——接口在预训练能力之外,要从零学起,哪怕做了后训练,智能体在长程任务里还是不会真的用记忆。
CAMG 换了个更朴素的入口:不给你专用记忆工具,而是把可执行 shell 和一个跨轮持久的工作区开放给智能体,让它自己学会「用文件来记」。在一个 episode 里,它可以建文件、改文件、搜文件、复用文件,把上下文沉淀成磁盘上的东西,而不是只在上下文窗口里打转。
CAMG 套件覆盖四个长程环境:Shop、Coding、DeepResearch、AutoResearch。每个环境除了自己的原生任务接口,还统一提供 shell 访问与持久工作区。CAMG-RL 则用一份策略跨这四个环境联合训练,靠 fully async PPO 从下游任务奖励反推,让模型学会文件型记忆行为——底座是 Qwen3.5,训出 4B 与 9B 两个尺寸。
结果有点反直觉:CAMG-RL-4B 在 SWE-bench Verified 上追平 Qwen3.5-35B-A3B 这个大得多的对照,9B 版本在 MLE-bench Lite 上追平 Qwen3.5-122B-A10B。含义很清楚——记忆能力不必靠堆参数补足,后训练能把「用文件当记忆」这一行为训进小模型,文件系统就成了不绑任何特定记忆接口的通用底座。
和另一类思路对照会更有感觉:很多记忆方案给智能体一个专门的「记忆工具」或向量库,模型要学会调用它。CAMG 反过来,直接用模型早就会的文件操作当记忆界面——建、改、搜文件本来就在预训练分布里,强化学习只需把「何时该存、何时该取」和任务奖励对齐。这降低了记忆行为的习得门槛,也免去了维护一套独立记忆系统的工程负担。
对中小团队,CAMG 的启示是:与其追更大的模型,不如把「让小模型学会用文件当长期记忆」作为后训练目标。4B 追平 35B 的编码结果,说明在长程任务上,记忆策略带来的增益有时比参数规模更实在。当然前提是任务能落到有文件系统的工作区里——纯对话场景未必吃得上这套。它点出的方向值得重视:当大家都在给智能体加记忆模块时,模型预训练阶段就见过的文件操作,或许是最现成的记忆载体。
落到具体行为上,「用文件当记忆」长什么样?智能体可能在工作区建一个 plan.md 写下分步思路,建 notes.md 攒下搜到的接口签名与报错,建 scratch.py 试跑中间结果;下一轮进来不用重读全部历史,读完这几个文件就接上了。文件天然跨轮持久,关掉会话再开,东西还在磁盘上——这点和上下文窗口的易失形成对照。它顺带解决了一个常被忽略的问题:可复现。上下文窗口里的「记忆」随会话消失,磁盘上的文件能被回看、被同事接手、被纳入代码评审,这让长程智能体的工作更像一个可审计的过程,而不是一次性的黑箱推理。
文件型记忆也有自己的麻烦:工作区会越攒越乱,要及时清理,否则小模型会被旧文件带偏;多个智能体共用一个工作区还要防互相覆盖。CAMG 在训练里让模型学「何时建、何时读、何时删」,但真实工程里仍要配一套文件治理。更现实的边界是,这要求任务能跑到有文件系统的环境里——纯对话或受限沙箱未必吃得上这套,它的增益因此集中在编码、研究这类本就有工作区的场景。
对评测也有含义:用文件当记忆后,长程任务的对照不该只看最终准确率,还要看智能体在中间轮次是不是真的减少了重读——CAMG 的增益有一部分正来自这里,而不是模型本身更强。这也提醒做基准的人,把「记忆行为有没有发生」当成可观测指标,比单纯报一个端到端分数更能说明问题。