GitHub 发布 CC0-1.0 开源多语言仓库级数据集,覆盖 README、Issue 和 PR
Getting more from each token: How Copilot improves context handling and model routing
GitHub 推出一个新的仓库级数据集,采用 CC0-1.0 许可证,旨在帮助研究人员和开发者发现跨 README、Issue 和 Pull Request 的多语言开发者内容,加速多语言 AI 开发。
GitHub 发布了一个多语言开发者内容数据集,CC0 许可,对于训练跨语言代码模型和辅助翻译有直接价值,做多语言 Copilot 的团队应该会关注。
随着 Copilot 承担更多智能体工作——从规划、编辑到调试、审查,以及在更长会话中调用各类工具——效率的含义已不只是使用更少的 token,而是更聪明地使用它们。
提升效率的第一步,是减少 Copilot 在每一轮之间必须重复的内容,包括上下文、工具定义和缓存状态。接下来则是为任务选择合适的模型。一段简短的解释、一次聚焦的编辑,以及一项复杂的多文件改动,不应被一视同仁。
我们正在两方面同时推进:改进 Copilot 的运行框架,让每次会话中有更多部分用于任务本身;以及扩展 Auto,让 Copilot 能够挑选适合当前工作的模型,而无需开发者每次都亲自做出这一选择。本文重点介绍 GitHub Copilot for VS Code 中运行框架的改进,以及正在推进的、将 Auto 扩展到 Copilot 各个界面的工作。
增强的提示词缓存与延迟加载工具
在 VS Code 中较长的 GitHub Copilot 会话里,运行框架会为模型准备大量反复出现的信息:指令、仓库上下文、对话历史、可用工具以及任务的当前状态。其中一些上下文是必需的,另一些则可以缓存、延迟加载,或仅在变得相关时才加载。
GitHub Copilot for VS Code 中的两项改进承担了这里的大部分工作。提示词缓存帮助 Copilot 复用重复提示词前缀的模型状态,而不是在每次请求时重新计算相同的前缀。工具搜索则让模型按需加载工具定义,而不是在每一轮都把每个完整的工具 schema 都发送到上下文中。
随着智能体使用更多工具,这一点变得更加重要。一个会话可能需要访问 MCP 工具、终端命令、文件操作、工作区搜索以及产品特定的操作。即便只有少量工具与任务相关,预先加载每一个完整的工具定义也会给每一轮增加固定开销。借助工具搜索,Copilot 可以保持可用工具集的广度,同时向模型发送更少不必要的工具 schema。
如需更深入地了解技术实现细节,包括提示词缓存、缓存控制断点、各提供商特定的工具搜索,以及这些改动如何在长时间运行的智能体会话中发挥作用,请阅读VS Code 技术深度解析。
GitHub Copilot 自动模型选择适用于何处
Auto 回答了一个实际问题:此刻哪个模型最适合这项任务?
在你发出第一个提示词后,Copilot 会利用任务意图和当前模型健康状况,选择最适合该任务的模型。不同类型的工作,例如快速解释、聚焦式编辑或多文件改动,并非都能从同等程度的推理中获益,因此 Auto 会替你做出这一判断,而无需你调整模型设置。
在我们的评估中,没有任何单一模型能在各类任务上持续表现最佳。在许多情况下,一个更高效的模型也能达到相同的结果,而当任务需要更深层的推理时,更强的模型才最为关键。Auto 会学习在何处更强的推理能改善结果。当任务需要时,它会向上路由;当不需要时,它会保持更高效。目标不是以质量换取成本,而是使用最适合这项工作的模型。
Auto 如何选择正确的模型
Auto 综合了两个信号:当前哪个模型健康且可用,以及 Copilot 被要求执行的是什么类型的工作。
- 实时模型健康状态:一个动态引擎会追踪模型的可用性、利用率、速度、错误率和成本。一个模型可能有能力处理某项任务,但这并不意味着它此刻就是最佳选择。Auto 会考虑当前的系统状况,从而让 Copilot 能够路由到一个既有能力又随时可以响应的模型。
- 借助 HyDRA 实现任务感知路由:这是一个路由模型,会考虑推理深度、代码复杂度、调试难度和工具编排需求等因素。HyDRA 会先识别出能够达到该任务质量标准的模型,然后从中选出最合适的一个。


综合来看,这些信号让 Auto 能够避免一刀切的做法。关键不在于把每项任务都交给最大的模型,也不在于把每项任务都交给最便宜的模型,而在于选择适合这项工作的模型。
让 Auto 在实践中发挥作用
在评估中把路由做对只是问题的一部分。要让 Auto 在实际工作流中真正有用,我们还必须考虑开发者实际使用 Copilot 的方式:对话会变长,上下文会不断累积,任务会发生切换,而且开发者会使用多种语言。
缓存感知路由。每一轮都切换模型听起来很灵活,但这可能会损害效率。当对话保持在同一个模型上时,提示词前缀可以被缓存并在多轮之间复用。在对话中途切换模型会破坏该缓存,其代价可能超过路由切换所节省的开销。Auto 通过在自然的缓存边界进行路由来避免这一点:在第一轮,此时没有缓存可失去;以及在压缩之后,此时 Copilot 会总结较早的轮次,提示词前缀会重置。在这些节点之间,所选模型保持不变,以便缓存能够持续累积。
跨语言路由。 Copilot 服务于世界各地的开发者,因此路由必须在英语以外的语言中也能正常工作。我们在涵盖 16 个语系的对话上训练了路由模型,包括 CJK、欧洲语系及其他语系。在评估中,各语言组的路由准确率与英语基线相差不超过 4 个百分点,且没有统计上显著的质量差距。

学习何时升级才重要。我们没有简单地把任务标记为“简单”或“困难”,而是训练路由器去学习模型究竟在哪些地方产生分歧。对于每个训练查询,能力较弱的模型和能力较强的模型给出的回答都会按照多个质量维度进行评分。路由器会学习何时更强的模型能带来增益,以及何时更高效的模型也能产出同样出色的结果。对于较长的智能体会话中依赖上下文的消息,路由器会在完整的多轮对话上进行训练,包括原始用户意图、最近的助手回复以及对话元数据。
带任务意图的 Auto 正在扩展
带任务意图的 Auto 已在 Visual Studio Code、github.com 和移动端上线。它让 Copilot 获得更多关于你正在从事何种工作的信号,无论是编码、调试、规划还是使用工具,从而能够为任务做出更好的模型选择。
我们正在继续将这一体验扩展到整个 Copilot。接下来,我们将把带任务意图的 Auto 带到更多界面,并增加更多方式让团队将 Auto 设为默认。
- 带任务意图的 Auto 即将登陆 Copilot CLI、GitHub App 以及更多 IDE。
- Copilot Free 和 Student 方案将简化,仅以 Auto 作为唯一的模型选择选项。
- 管理员控制功能将允许组织将 Auto 设为默认,或强制将 Auto 作为唯一选项。
从你的 AI 额度中获取更多价值
Copilot 默认变得更高效了,但一些习惯可以帮助你的额度用得更久。
- 从 Auto 开始。Auto 对许多任务来说是强有力的默认选择,因为它会根据你想做的事情来选择模型,而无需你每次都手动挑选。
- 保持上下文聚焦。当你切换任务时开启新会话,在需要时压缩长时间运行的会话,并且当你已经知道相关代码在哪里时,直接说明你希望 Copilot 使用哪些文件。更少的无关上下文意味着会话中有更多部分用于实际工作。
- 避免在会话中途更改模型或设置。切换模型、推理级别、上下文大小或工具配置可能会破坏缓存复用,并让 Copilot 重建上下文。按你想要的方式设置好会话,然后把相关的工作放在一起进行。
- 在并行化之前先规划。对于较大的任务,先让 Copilot 进行规划。当工作确实可以拆分时,并行智能体会很有用,但它们也会并行消耗额度,因此要有意识地使用它们。
- 只使用你需要的工具。工具和 MCP 服务器很强大,但宽泛的工具集可能会增加额外的上下文。启用与任务相关的内容,关闭你不需要的内容。查看 GitHub Copilot 中的 agent finder,帮助简化你的工具使用。
- 检查你的用量。你的 AI 用量页面会显示额度在各功能和模型之间的去向。在 Copilot CLI 中,会话级用量还能帮助你在工作时发现开销高昂的使用模式。
完整指南请参阅如何更充分地利用你的 AI 额度。
自动模型选择现已在受支持的 Copilot 体验中全面可用。如需了解更多,请参阅自动模型选择文档。你也可以在Copilot 讨论区分享反馈。
我们正在持续提升 Copilot 在整个系统中的效率,让更多额度用于有价值的工作,而无需你亲自调整每一个模型选择。
本文包含 Nhu Do 和 Aashna Garg 的贡献。
来源:GitHub Blog · github.blog