人工智能

GitHub 解释如何在不牺牲编程任务质量的情况下降低 Copilot 成本

GitHub 指出,减少每次调用中的令牌并不一定意味着降低整个任务的成本,因为这可能促使模型重新执行命令或检索已删除的输出。该公司介绍了 Copilot 中的四项改进,包括压缩重复输出、删除无用格式、缩短指令,以及直接交付后台任务结果。

2026-09-02
2 分钟阅读
15 浏览量
فريق تحرير certi.news
GitHub 解释如何在不牺牲编程任务质量的情况下降低 Copilot 成本

GitHub 认为,仅根据单次调用中的令牌数量来衡量编程代理的效率,可能会得出误导性结论。较短的输出可能迫使模型重新运行命令或请求已删除的信息,从而增加整个任务层面的轮次、时间和成本。因此,该公司重新评估了 GitHub Copilot 的改进,以任务最终结果为依据,而不是单个工具响应的大小。

在埃里克·克里斯滕森和纳巴利斯·克莱修斯于2026年9月2日发布的一篇博文中,GitHub 解释称,他们通过使用代理编程任务评估基准进行离线测试,开发了四项变化,随后又通过面向用户的受控实验对其进行了验证,然后才发布。这些变化涉及 Copilot 的多个产品,包括 GitHub Copilot 应用和代码审查,它们使用相同的基础架构;而博文中的示例来自 GitHub Copilot CLI。

为什么更短的响应还不够?

GitHub 测试了 RTK(Rust Token Killer)工具的影响,该工具会在 shell 输出呈现给代理之前对其进行压缩。在所使用的测试设置中,删除某些重要文本会导致重新打开原始输出或重新运行命令。因此,工具响应的本地大小虽然下降了,但任务平均需要更多令牌和更长时间。

该公司强调,这一结果针对的是其测试过的集成方式和工作负载,并不代表对所有 RTK 配置或所有输出压缩方法的判断。实际经验是,评估标准应从用户请求一直延伸到最终结果,并计算恢复和返工轮次。

有选择地压缩输出

GitHub 的解决方案是在保留代理所需信息的同时,压缩重复噪声。运营分析显示,安装、构建、测试和 lint 操作的输出通常包含大量重复内容,而类似代码的输出和任意命令的结果可能包含必要信息。

发布的版本采用了三点策略:

  • 保持类似代码的输出和任意结果不变,包括catgit diffgit show等命令以及任意脚本。
  • 重新整理搜索结果,例如grep结果和文件列表,但不删除任何结果。
  • 仅在节省幅度较大时压缩安装、构建、测试和进度输出。

Copilot 还保留了直接检索完整原始输出的路径。GitHub 继续将该路径作为安全机制,并将其作为压缩是否删除了有用信息的指标。在启用压缩的离线任务中,该公司没有观察到任务成功率出现具有统计显著性的下降;而在线实验略微降低了平均成本,同时所跟踪的质量指标没有出现实质性下降。

删除不必要的格式

GitHub 通过view工具实现了最明显的节省之一,该工具会向模型展示文件内容。该工具过去会为每一行添加行号,尽管当前的编辑工具依赖匹配周围代码,并且在常规工作流中不使用这些编号。因此,该公司从文件读取结果中删除了这些前缀,同时在差异和短片段中保留有用的行号。

这一变化使离线代理编程任务基准中的模型推理成本降低了约5%,成功率仍处于预期波动范围内,编辑错误也没有增加。在面向 Copilot CLI 用户的在线实验中,每位用户的平均每日推理成本下降了约3%,而 GitHub 测量的质量或满意度指标没有出现实质性下降。

在不改变行为的情况下缩短指令

task工具的指令通过工具描述、模式、代理定义和系统指令不断累积。GitHub 使用自动优化指令的循环,将文本缩短了约一半,然后测试了希望保留的行为。

然而,首次在线实验发现了离线评估中未出现的问题:谨慎并行执行的指导方针变成了严格的调度策略,导致独立的专用代理按顺序运行。GitHub 终止了该实验,加入了针对这一行为的回归测试,然后用一句话取代允许和禁止列表:“独立代理可以并行工作;请考虑副作用。”

最终版本在每一轮中减少了任务工具指令约1300个令牌,相当于每个会话的指令总令牌数下降约1.8%,按活动小时归一化的成本下降2.9%;在所测评估中没有观察到质量下降。

取消不必要的检索轮次

代理有时会在后台执行独立工作,例如在子代理进行调查的同时并行运行较长的 shell 命令。过去,这些工作的完成通知只会发送通知,而不会包含结果本身,因此代理不得不额外调用以检索 Copilot 已经获得的输出。现在,系统会收集符合条件的完成通知,并将已完成的结果以现有工具结果格式发送。

在同时包含 shell 命令和子代理的示例中,过去完成工作需要四次模型调用:两次调用请求结果,另外两次调用处理结果。变化之后,两项结果会一同到达,由一次调用进行处理。按 AI Credits 衡量,这使平均令牌相关使用量降低了约2.3%。

实际会发生什么变化?

GitHub 的实践为编程代理开发者提供了一个重要原则:最安全的优化不是尽可能多地删除文本,而是消除模型本来就不需要执行的工作。这包括未使用的格式、系统可以自行解决的等待和检索轮次,以及可以在提供恢复路径的同时进行压缩的重复内容。

另一方面,并非所有结果都可以推广到测试环境之外。尽管收紧文件工具指令在代码审查中取得成功,但它在 Copilot CLI 实验中增加了成本,因此 GitHub 没有发布该变化。此外,在基准测试显示代理会重新打开原始输出以恢复被删除的信息后,git diff的压缩也被移除。

本文证实的结论是,必须根据任务、工作流以及将使用该变化的产品层面进行衡量,并结合离线基准、在线实验和明确的行为测试。至于这些改进对特定用户的影响,则取决于任务类型、工具及其输出,不能仅根据令牌数量的局部下降来推断。

新闻来源
ف
作者

فريق تحرير certi.news

同一分类

你可能还喜欢

查看所有新闻