代码智能体需要把工具返回结果接入当前上下文,再继续推理和修改代码。标准从左到右预训练主要接触顺序生成,未必充分训练这种“先发起调用、再接收外部结果”的条件结构。这项工作把智能体的动作—观察—继续循环,与代码中的函数调用建立对应关系,并尝试从互联网规模的普通代码中提取训练信号。

从函数依赖构造 FIM 任务

作者提出 function-aware fill-in-the-middle(FIM)中期训练。其核心不是随机遮盖代码片段,而是借助程序依赖图选择函数,再按照复杂度与可推断性两项标准进行筛选。调用方绑定参数、被调用函数在别处计算返回值、后续代码消费结果,这一结构与智能体调用工具后处理返回值的过程相似。模型通过恢复被遮盖函数,学习围绕外部计算结果组织上下文。该方法属于自监督训练,不要求额外标注智能体轨迹。

多条后训练流水线均有提升

实验以 Qwen2.5-Coder-Instruct 7B、14B 和 Qwen3-8B 为基础,在来自 968 个 GitHub 仓库、经过污染清理的 26 亿 token Python 语料上进行中期训练,之后接入已有智能体后训练流程。SWE-Bench-Verified 分别提升 2.8、3.0 和 3.2;SWE-Bench-Lite 分别提升 3.7、4.0 和 5.4。增益覆盖 R2E-Gym、SWE-Smith 两条流水线,也出现在采用 SWE-Lego 的 Qwen3-8B 上。作者还报告,中期训练缓解了智能体后训练对 LiveCodeBench,以及 tau-bench、BFCL 等非代码工具使用评测造成的能力侵蚀。

我的判断

这项工作的价值,在于把代码智能体所需的工具结果整合能力,转化为普通代码中可规模化提取的自监督目标。相比完全依赖昂贵的智能体交互数据,这条路径更容易复用现有代码语料;跨后训练流水线的结果,也说明增益不只绑定单一流程。不过,现有摘要只覆盖 Python 语料和 Qwen 系列模型,尚不足以判断对其他语言、模型架构及更复杂工具环境的泛化程度。材料也未给出训练成本与关键筛选策略的消融,因此目前更适合把它视为有效的训练阶段设计,而不是已经充分验证的通用方案。