关于长跑智能体,此前的主流认知是「上下文不够长」「token 烧太多」。一篇来自微软研究团队的工作把这套认知倒过来:上下文不是太短,是太黏。

论文作者包括 Ziyang Cai、Christos Ziakas、Vasilis Kontonis、Tim Pearce、Siddhartha Sen、Akshay Krishnamurthy、Shivam Garg 与 Dimitris Papailiopoulos。方法叫 Fork-and-Flush,10 月中旬经 The Decoder 报道后在工程圈引发不小讨论。

它研究的对象叫 autoresearch 智能体——反复提出解法、按分数评估、再据此修改的循环。比如一个花几小时不断改进调度算法、装箱算法或密码分析攻击的智能体,边跑边保存文件和结果。任务形态与现在流行的编码智能体、长任务代理是同一类循环。

加算力不收敛,清空对话才收敛把八次运行的解按功能相似度铺开每次运行几乎只占一小块区域盆地之间分数差距很大落在低分盆地的运行,把大量剩余算力花在了把原方案磨得更细上而高分盆地早被别的运行找到被比较的四种做法(13 个长跑任务:多联骨牌装填、车间调度、密码分析、CIFAR 分类器压缩、VLIW 内核优化)单次运行 0.47 · best-of-4 0.54 · Fork-and-Flush 0.78(min-max 归一化平均分,等算力)仅清空对话、不做分支,11 个任务上从 0.45 提到 0.55(约 +22%)——大部分收益不来自并行归一化标准差 0.26 → 0.16:一致性也一起变好,这在生产里比均值更值钱单次运行时长从数小时到 100 小时以上,模型为 GPT-5.6-terra 与 GPT-5.5,经 GitHub Copilot CLI 驱动论文表述:对话历史压缩也无法消除这一模式;13 个任务中 12 个的均值最高
图|不是上下文不够长,是上下文把搜索空间钉住了——这是本轮最反直觉的一条结论。

八次运行,八个分数

研究人员把同一个智能体在同一任务上跑了八次。最终分数落在 68.3 到 100.0 之间——跨度 31.7 分。

关键的一句在后面:给这些运行多得多的算力,这个差距并没有收窄。这不是算力不足的问题。

他们把八次运行的解按功能相似度嵌入同一张二维图,让相似的解彼此靠近。结果很清晰:任何单次运行的解,几乎总是挤在一小块区域里。作者把这块区域叫做「想法盆地」(idea basins)。

接下来发生的事才是代价的来源:落进低分盆地的那些运行,会把大量剩余算力花在把原方案磨得更细上——而更好的解早被别的运行在另一个盆地里找到了。论文还验证了一件更麻烦的事:定期压缩对话历史也无法消除这个模式。也就是说,摘要、裁剪这些常规手段在这里救不了场。

解法:保留工作区,扔掉对话

Fork-and-Flush 由两个动作组成。

Fork(分叉)是把智能体拆成 K 条并行分支,每条分支继承此前的工作区——代码、文件、已保存的结果全部带走,但每条分支的对话上下文被清空,从一段新的对话开始,在已有的工作之上继续。到固定时限后,系统按分数选出最优的那条分支继续跑,其余丢弃。

保留什么、扔掉什么Fork · 分叉把智能体拆成 K 条并行分支,每条分支继承此前的工作区:代码、文件、已保存的结果全部带走但每条分支从空对话起步Flush · 清空丢弃整段对话上下文,在新对话里继续已有工作;到固定时限后按分数留下最优分支其余分支直接丢弃SLA(arXiv 2610.07625)说任何智能体都别跨调用携带对话,研究状态全交给 harness 持有目标:省 token(省下 84%)Fork-and-Flush 说主动、周期性地扔掉对话历史,工作区该留的一定要留目标:恢复搜索多样性这不是谁对谁错。SLA 处理的是「历史太贵」,Fork-and-Flush 处理的是「历史太黏」——同一个对话历史,既是账单,也是路标。要不要留,取决于你更怕烧钱还是更怕不换路补充验证:用 Qwen3.5 4B / 9B / 27B 在 MAX-3-SAT 上测,运行间方差呈倒 U 型,峰值出现在能力边缘任务
图|把「上下文是资产」改写成「上下文是负债」,是这篇论文最值钱的一句转译。

它和 SLA 构成一个真实的学术分歧

同一时间线上,另一条相关工作走的是相反方向。arXiv 2610.07625 的 SLA(Stateless Language Agents,来自 Stanford、CMU、UW、SambaNova 等)主张:有状态搜索、无状态智能体——任何智能体都不要跨调用携带自己的对话,研究状态全部由 harness 持有,每次调用现场重建一份针对角色的新上下文。SLA 的目标很明确:省 token,论文报告在最高十亿 token 预算下省下 84%,且 Advisor 本身只占不到 0.6% 的 token。

而 Fork-and-Flush 的做法是:主动、周期性地把对话历史扔掉,工作区该留的一定要留。它的目标不是省钱,是恢复搜索多样性。

这两篇不构成谁对谁错的反驳,因为它们处理的是不同的问题。把它们并起来读,能得到一个更有用的结论:同一份对话历史,既是账单,也是路标。它让你反复读懂自己做过什么、要花多少 token(账单功能);它也把你钉在已经想过的方向上(路标功能)。要不要留,取决于你当前更怕烧钱,还是更怕不换路。SLA 选前者,Fork-and-Flush 选后者。

数据:清空对话这一招,贡献了大部分收益

论文的评测覆盖 13 个长跑任务,包括多联骨牌装填、车间调度、密码分析、CIFAR 分类器压缩和 VLIW 内核优化。单次运行时长从数小时到 100 小时以上,智能体由 GPT-5.6-terra 与 GPT-5.5 经 GitHub Copilot CLI 驱动。

等算力下的 min-max 归一化平均分:单次运行 0.47,best-of-4 是 0.54,Fork-and-Flush 是 0.78。相对提升分别是对单次运行的 66.0% 和对 best-of-4 的 44.4%。13 个任务中有 12 个的均值最高。

更有信息量的是两个拆解。

其一,只清空对话、不做分支,在 11 个任务上把分数从 0.45 提到 0.55,约 +22%。也就是说 Fork 和 Flush 里,分支的贡献不是主要部分,扔掉对话才是。这是全文最反直觉也最实用的一条——最便宜的干预,可能就是清空聊天而保留工作文件。

其二,归一化标准差从单次运行的 0.26 降到 0.16(best-of-4 是 0.21)。也就是说一致性同时变好了。在生产环境里,一个平均分高 0.3 但方差也高的方案,和一个方差收窄一半的方案,价值并不相同——后者意味着更少的意外和更可预测的排期。

更强的模型能自己绕过去吗

论文还做了一次追问:如果模型足够强,思路够多,是不是就不容易掉进盆地?

用 Qwen3.5-4B、9B 和 27B 三个尺寸在 MAX-3-SAT 上测,运行间的方差呈倒 U 型——峰值出现在任务难度正好在模型能力边缘的位置,大致是随机猜测和参考求解器表现的中点。三个尺寸都是这个形状。

原因不难理解:太简单的任务模型几乎必过,太难的任务几乎必败,两头都不会产生分歧。分歧只发生在模型「有时行有时不行」的那条带上。

这个结果有一个不太舒服的推论。论文作者的说法是:开放研究问题恰好位于模型能力的边界附近,随着模型变强,这条边界以及边界附近的运行间方差,会一起往更难的问题上移。换句话说,换更强的模型不会让这个问题消失,只会把它推到更前面。

对工程团队来说,这篇论文最实际的价值提供了一条可以立刻试的改动:如果你在跑长任务、跑优化类任务,或者在用智能体做自动化研究,试试周期性分叉并清空对话上下文。成本是多烧一些并行算力,收益是恢复多样性。需要注意的是,论文的 arXiv 页面上未链接专门的代码仓库,目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。