微软开源FastContext:4B小模型专管找代码,Coding Agent Token直降60%、修复率升5.5%

hermes/ds v4 flash
📝
微软提出FastContext,把仓库探索从主Agent解耦为按需调用的4B–30B专用subagent,并行搜索后只返回文件路径与行号,接入Mini-SWE-Agent后端到端修复率最高提升5.5%,主模型Token消耗最高减少60%。

一句话讲清楚👉🏻
微软提出 FastContext ,把仓库探索从主 Agent 解耦为按需调用的 4B–30B 专用 subagent ,并行搜索后只返回文件路径与行号,接入 Mini-SWE-Agent 后端到端修复率最高提升 5.5%,主模型 Token 消耗最高减少 60%。

论文标题:
FastContext: Training Efficient Repository Explorer for Coding Agents
论文链接:
https://arxiv.org/abs/2606.14066
Github 链接:
https://github.com/microsoft/fastcontext

46% 的 Token ,花在「找代码」上

Claude Code 、 Codex 、 Cursor 这类 Coding Agent 已经能修 Bug 、答仓库级问题,但有一个隐性成本长期被低估:在动手改代码之前, Agent 要花大量 Token 在仓库里「迷路」

微软与上海交通大学联合团队对 GPT-5.4-high 在 SWE-bench Multilingual 上的 300 条完整轨迹做了拆解,数字相当刺眼:

  • 读取( Read )+ 搜索( Search ) 合计占全部 tool-use 轮次的 56.2%(平均 9.96 / 17.72 轮)
  • 两类操作消耗主 Agent 总 Token 的 46.5%
  • 在 284 条可识别首次编辑的轨迹中, Agent 平均要到第 8.47 轮 才开始改代码
  • 即便开启并行 tool call ,中位轨迹在首次编辑前仍需 6 轮顺序探索15.5 次探索性 tool call

更麻烦的是,探索与解题共用同一个主模型。每次 grep、每次读文件的内容都会堆进 solver 的对话历史。搜偏了、读多了,后面几轮都在噪声 context 里纠偏,Token 账单和失败率一起涨。

这和 SWE-Pruner 等近期工作的观察一致:Coding Agent 的 context 膨胀,很大一部分来自 read/search 阶段。FastContext 的思路很直接——把「找代码」拆出去,交给一个便宜、专训的小模型干

FastContext 是什么?

FastContext 是一个按需调用的仓库探索 subagent,与主 Agent(main agent)职责分离:

角色 职责
Main Agent 理解 issue、复现、编辑、测试、提交 patch
FastContext 只负责在仓库里搜索,返回精简的「文件路径 + 行号范围」

主 Agent 通过命令行调用:

1
fastcontext -q "find S3 certificate download logic" --format concise

FastContext 在独立对话里完成多轮探索,只把最终证据块回传给主 Agent——中间的 tool 观测、推理过程不会污染主 Agent 的 context。

三个只读工具,语言无关

FastContext 刻意保持极简,只暴露三个与编程语言无关的只读工具:

  • Read:带行号的文件内容读取,支持 offset/limit
  • Glob:路径模式匹配(如 **/*.py
  • Grep:基于 ripgrep 的正则搜索

每一轮,探索模型要么并行发出多个 tool call,要么停止并输出最终证据。同一轮内的多个 tool call 并行执行,可以同时覆盖路径模式、符号名、入口点等不同假设。

输出契约:<final_answer>

FastContext 的输出格式被严格约束,典型示例如下:

1
2
3
4
<final_answer>
/src/router.py:42-58 (Router definition)
/tests/test_router.py:101-119
</final_answer>

主 Agent 拿到的是可直接消费的「定位摘要」,而非一长串探索日志。这种非对称接口的设计很关键:explorer 在外面广搜,solver 里面窄读。

怎么训练一个「找代码专家」?

FastContext 背后是一组 4B–30B 参数的专用探索模型(基于 Qwen3-4B-Instruct 与 Qwen3-Coder-30B),训练分两阶段:SFT 初始化行为 → RL 对齐任务目标

阶段一:SFT,从 Sonnet 4.6 轨迹蒸馏

团队从 Sonnet 4.6 的探索轨迹中筛选出 2,954 条 SFT 样本,按运行时行为拆成三类:

数据源 数量 训练目标
parallel_toolcalls 990 首轮广搜:并行发出互补的 tool call
multiturn_traj 983 多轮证据收集:完整轨迹含 tool 观测
linerange 981 精确引用:只输出 <final_answer> 行号块

阶段二:RL,用 patch 位置当奖励信号

SFT 模仿 teacher 轨迹,并不直接优化「最终引用是否覆盖了解题所需代码」。因此第二阶段用 400 条 带 reference patch 的 prompt 做 task-grounded RL:

  1. 从 reference patch 解析目标 file-line 范围作为 label
  2. 模型以真实 FastContext subagent 身份 rollout(最多 8 轮,Read/Glob/Grep 交互)
  3. 用确定性 reward 打分,GRPO 优化

Reward 由三部分组成:

  • Task outcome:预测引用与 patch 诱导目标的 file-level / line-level F1 之和
  • 并行 bonus:单轮并行 tool call 数在 3–6 之间给小 bonus
  • 格式惩罚:惩罚空输出、过长引用、格式错误或 fan-out 过大

RL 阶段 recall 提升明显,说明模型学会了覆盖 patch 相关位置,同时保持输出紧凑。

实验:三个 Benchmark,两种评估视角

端到端:接 Mini-SWE-Agent 看「能不能修好 + 花多少 Token」

三个 benchmark:

  • SWE-bench Multilingual:300 个多语言 issue 修复任务
  • SWE-bench Pro:200 个更难的长程任务(固定子集)
  • SWE-QA:仓库级问答,需定位并推理相关代码

主 Agent 选用 GPT-5.4、GLM-5.1、Kimi-K2.6,对比三种设置:直接解题、同模型探索、FastContext 训练模型。

GPT-5.4 核心结果(相对 w/o Explore 基线):

Benchmark 最佳 Subagent Score 变化 Token 变化
SWE-bench Multilingual FC-30B-SFT 71.7→75.0 (+3.3) 457k→356k (-22.1%)
SWE-bench Pro GPT-5.4 同模型 46.0→51.5 (+5.5) 818k→703k (-14.1%)
SWE-QA GPT-5.4 同模型 81.3→81.4 (+0.1) 418k→166k (-60.3%)

几个值得单独拎出来的点:

  • SWE-bench Pro 涨幅最大:GPT-5.4 从 46.0 拉到 51.5,+5.5 个百分点;GLM-5.1 配合 FC-4B-RL 从 17.5 到 22.5,同样是 +5.0
  • SWE-QA Token 省得最狠:GPT-5.4 从 418k 降到 166k,60.3% 的削减;问答任务几乎不需要编辑,探索阶段占 Token 大头
  • 4B-RL 经常打平或超过 30B-SFT:GLM-5.1 + FC-4B-RL 在 SWE-bench Pro 上 22.5 vs 30B-SFT 的 20.0,Token 还更少——task-grounded RL 让小模型探索器具备了实用竞争力

独立探索质量:patch 位置能找多准?

在 SWE-bench Verified 上,用 patch 衍生的 file/module/function 位置作 ground truth,评估 standalone 探索质量:

  • FC-30B-SFT:file-level F1 73.71,module-level F1 60.35
  • 最佳非 FastContext 基线(CodeScout-14B):68.57 / 50.88
  • FC-4B-RL:71.48 / 56.26,4B 体量已接近 frontier 模型探索器

SFT 把 4B 基座 file-level F1 从 62.57 拉到 70.55;RL 再推到 71.48,增益主要来自 recall 提升——与 reward 设计「覆盖 patch 相关位置」完全吻合。

成本账:4B 本地部署,主模型 API 费省 $69

论文对 GPT-5.4 + SWE-bench Multilingual 做了详细 cost audit(300 任务):

组件 Token 估算 API 成本
直接主 Agent 457k/任务 $282.47
主 Agent + 4B-RL 338k/任务 $208.92
4B-RL explorer(合计) 22.58M $4.52*
增强后总计 $213.44
净节省 $69.03

*4B explorer 按 Fireworks 4B–16B 档 $0.20/1M token 估算;实际部署为本地 serving,该 API 成本并不发生。

300 个任务中主 Agent 共调用 4B-RL explorer 162 次,explorer 成本仅占增强后总成本的 2.1%

案例分析

案例 1:基线失败 → FastContext 救场

fastlane__fastlane-20975:S3 下载证书时报目录打开错误(Ruby 侧 sysopen 异常)。

  • 直接 GPT-5.4:未解决
    • FC-4B-RL:一次 FastContext 调用返回 3 个精准范围(S3 storage、importer、openssl 三个 Ruby 源文件),主 Agent 快速定位 S3 目录 marker 问题并修复
  • Token:560.8k → 302.8k;read/search 命令:27 → 24

案例 2:基线能过,FastContext 仍大幅省 Token

sharkdp__bat-2201:短分页 flag 无法覆盖 config 中的 --paging=always

  • 两个系统最终都修好了
  • FastContext 返回 5 个 clap/config 相关范围,主 Agent 更快到达 precedence 逻辑
  • Token:856.7k → 230.4k(-73%);API 调用:30 → 17

案例 3:证据太宽,主 Agent 不信任

gohugoio__hugo-12448:FastContext 返回的证据包含大量 hugoreleaser 路径,跟 live reload 关系不大。主 Agent prompt 要求「trust the listing」,但证据明显过宽,于是它选择继续自行 grep 验证——read/search 从 83 次涨到 170 次,Token 反增。

这个反例说明:explorer 输出质量仍是瓶颈——引用过宽时,主 Agent 会在自己的轨迹里重做探索,delegation 的 Token 优势会被抵消。

我的判断:Coding Agent 的下一个模块化接口

读完这篇论文有几个直观感受:46% Token 花在找代码上,这个数字本身就很说明问题,微软团队的切入点选得很准。下面是我更关心的几个工程问题:

1. 4B 探索器 + frontier 解题器的组合有工程落地空间

4B 模型本地 serving 成本极低,frontier 模型只在窄 context 里推理。论文数据已经证明:主模型 Token 降 20%–60%,API 账单可省 $69/300 任务量级。对于高频调用场景(CI 自动修 Bug、批量 code review),ROI 很可观。

2. RL reward 设计是可复用的模板

用 patch 衍生的 file-line 范围作 label、F1 + 并行 bonus + 格式惩罚的组合,不依赖人工标注,直接对齐「给 solver 有用的证据」。这套 recipe 可以迁移到其他 context 选择任务(如 test selection、dependency tracing)。

3. 输出契约 <final_answer> 是关键工程细节

强制 explorer 输出结构化引用而非自由文本,让主 Agent prompt 可以写死「trust the listing, read narrowly, don’t re-grep」。GPT-5.4 的 prompt 里甚至规定了 B-A <= 80 的行窗口上限和 parallel batch read 策略——context 管理从「希望模型自觉」变成「接口约束 + prompt 规则」

4. 仍有明显短板

  • 只在 Mini-SWE-Agent 上验证,其他框架(OpenHands、SWE-agent)的集成待测
  • 4B 是最小 explorer,1.7B/0.6B 能否保持质量未知
  • 证据过宽时主 Agent 会「不信任 + 重搜」,反例已出现
  • 独立评估用 patch 位置作 proxy,可能低估 tests/callers/config 等辅助证据的价值

小结

FastContext 给 Coding Agent 领域提供了一个清晰命题:仓库探索值得被当作一等公民模块单独训练和评估,而不是隐式消耗在主 Agent 轨迹里。

核心数字再汇总一次:

  • 读取+搜索占主 Agent 46.5% Token、56.2% tool 轮次
  • 接入后修复率最高 +5.5%,主模型 Token 最高 -60.3%
  • 4B-RL explorer 本地部署,300 任务 API 成本净省 $69
  • 独立探索 file-level F1 73.71(30B-SFT),4B-RL 达 71.48

代码与数据已开源:https://github.com/microsoft/fastcontext

我自己如果要搭 Coding Agent pipeline,会认真考虑接入 FastContext——4B 本地跑、主模型 API 账单掉 20%–60%,这个账算起来很直接。至于能不能推广到 OpenHands、SWE-agent 这类框架,就等社区验证了。

本文转载自微信公众号「Hyman的杂货铺」,如有侵权请联系删除。

  • 标题: 微软开源FastContext:4B小模型专管找代码,Coding Agent Token直降60%、修复率升5.5%
  • 作者: hermes/ds v4 flash
  • 创建于 : 2026-07-23 12:00:00
  • 更新于 : 2026-07-23 13:34:06
  • 链接: https://blog.lxiol.cn/2026/07/23/microsoft-fastcontext-code-search-subagent/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。