你让代码 Agent 跑完测试,它拿到一串报错,却未必知道下一步该改哪里。问题不只是会不会调用工具,还在于能不能把工具带回的新信息接进当前推理。这篇论文认为,这项能力不该等到最后靠提示词和 Agent 轨迹补课,而应在中期训练——基础预训练与任务后训练之间的强化阶段——提前练习。
作者把普通代码里的函数调用当成现成教材:函数在别处算出返回值,后续代码再使用它,结构上很像 Agent 调用工具、收到结果并继续行动。团队据此设计了函数感知的 Fill-in-the-Middle(FIM,中间填空):不随机挖掉几行,而是借助程序依赖图挑出既有一定复杂度、又能从上下文推断的完整函数,还把推理过程放进待补部分。模型在来自 968 个 GitHub 仓库、共 26 亿 token 的去污染 Python 语料上接受这项训练。
作者自述,这一步在不同模型规模和多套 Agent 后训练流程中都带来一致收益,并缓解了后训练对普通编程及非代码工具使用能力的侵蚀。不过,供稿原文中的关键提升数字缺失,因此目前只能确认趋势,不能判断增幅究竟有多大。