我们如何在保证任务质量的同时让 AI 编码更具成本效益
GitHub 博客介绍了 Copilot 降低 AI 编码成本的四个实践:不要只看单次工具调用的 token 数,而应从完整任务出发。通过选择性压缩噪音输出、删除不再使用的行号格式、用行为测试保护提示词压缩、以及批量直接交付后台完成结果,团队在离线/在线实验中让推理成本或 token 用量下降约 1–5%,且未出现质量回退。
在与 AI 编程代理协作时,真正的高效不是让单次交互的 token 更少,而是以恰到好处的上下文推动整个任务完成。GitHub Copilot 团队在官方博客中表示,如果一次简洁的工具返回遗漏了代理需要的信息,模型可能重读原始输出或重跑命令。虽然单次响应变短,整个任务却可能更慢更贵,因此要从“用户请求到最终结果”的完整任务来评估效率。
GitHub 的做法是先使用 agentic coding benchmark 做离线评估,再用受控在线实验验证最有希望的改动。文章提到的例子来自 Copilot CLI,但 Copilot 应用和 Copilot code review 等产品也共用同一套底层机制。第一个案例是 RTK,一个会在代理读取前缩短 shell 输出的工具。基准测试发现,RTK 确实缩短了一些响应,但如果被删掉的内容很关键,模型有时会重新打开原始输出或重跑命令来恢复信息。这些恢复步骤增加了交互轮次,并把更多上下文带入后续流程,结果是工具响应虽然变短,任务平均 token 消耗和耗时反而增加。团队强调这不是说所有 RTK 配置或输出压缩无效,而是说明“每次工具调用的 token 数”不是正确的优化目标,必须在完整任务上衡量。
更有效的方向是保留有用上下文、压缩重复噪音。对基准运行的分析显示,install、build、test、lint 输出往往包含重复噪音,而 cat、git diff、git show 等源码类输出以及任意脚本的结果更可能包含代理需要的信息。GitHub 据此为 Copilot 设计了一个选择性输出压缩器。早期版本因为太激进而失败,例如曾压缩 git diff,但代理为了恢复缺失信息会重新打开完整原文,导致端到端成本不降反升。最终采用的三部分策略是:源码类和任意命令输出原样保留;grep 等搜索结果重新组织但不丢失内容;安装、构建、测试和进度输出只在节省明显时才做压缩。压缩器还会保留完整原始输出的恢复路径,让代理在需要时直接取用。在触发压缩的离线任务中,没有发现统计显著的任务成功率下降,代理极少打开保存的原文;在线实验中平均成本微微下降,质量指标没有实质回退。
另一项优化是移除 view 工具中的行号。之前每次向模型展示文件内容时都会给每一行加数字前缀。旧的文件编辑工具依赖行号定位修改点,但当前工具改写为匹配周围代码,已经不再使用行号。虽然每行前缀很小,但会在每次文件读取中累积并占用上下文窗口。去掉行号后,离线 agentic 编码基准里的模型推理成本下降约 5%,成功率和编辑失败率没有明显变化;Copilot CLI 在线实验里,每用户每日平均推理成本下降约 3%,质量和满意度指标没有实质退化。这个改动不需要给模型新增指令,也不需要恢复任何被删除的信息,文件内容实际上还是原样进入模型。
提示词压缩则需要注意行为保留。Copilot 的 task tool 会启动专用子代理并行执行任务,其指导语分散在工具描述、schema、代理定义、系统指令和配套工具中,积累了越来越多内容。团队用元提示循环让 Copilot 自己迭代改写提示词,成功把提示词减少约一半。但第一次在线实验就暴露了离线评估没有发现的回退:原本表示“谨慎并行”的指导被改写成了硬性调度策略,导致互相独立的自定义代理被串行执行。团队立即停止实验,针对这个行为补充回归测试,并用一句更短、限制更少的话替换显式的允许/禁止列表:“独立代理可以并行运行;请考虑副作用。”此后新行为测试通过,已有测试也未失败。出厂的提示词每轮大约减少 1,300 个任务工具 token,相当于每个会话总提示词减少约 1.8%,每活跃小时标准化成本降低约 2.9%,没有发现质量退化。
后台工作交付也有可压缩的浪费。代理经常会同时运行长命令和子代理调查;旧方案中,后台工作完成时通知里并不包含结果,代理还要额外花一轮去取 Copilot 已经收到的输出。当多个任务接连完成时,这种绕路会重复出现。现在 Copilot 会把符合条件的完成通知批量合并,并直接以既有工具结果格式返回完成结果。对仍在运行的任务,显式读取行为保持不变。优化前,两个后台任务全部完成需要四次模型调用——每个任务先请求一次结果再处理一次;优化后,一次调用即可同时处理两个结果,同时避免把完整会话上下文带进不必要的调用。按 AI Credits 计量,平均 token 相关用量下降约 2.3%。
GitHub 也提醒,某个改动在一种 Copilot 工作流中省钱,换一种工作流却可能更贵。比如一组更紧凑的文件工具指令在代码审查中效果很好,但放到 Copilot CLI 在线实验反而增加成本,因此没有上线;相反,去掉行号前缀和选择性压缩输出在大量 Copilot 代码审查任务中分别让每条审查的平均提示词 token 减少约 5%。这与更早迁移到共享文件工具、配合审查指令调优使代码审查成本下降约 20% 的改动相互独立。核心经验是:优化“完成的任务”,而不是“工具调用”;更短的输出并不一定更便宜,每个改动都应该在实际运行的工作流中测量。