AI News HubLIVE
站内改写4 分钟阅读

从每个 Token 中获取更多价值:Copilot 如何改进上下文处理与模型路由

GitHub Copilot 通过提示缓存和按需工具加载减少冗余上下文,并引入 Auto 模型选择功能,根据任务意图和模型实时健康状态自动选择最佳模型,从而在保持质量的同时节省 AI 积分。

来源GitHub AI & ML作者: Natalie Guevara

随着 Copilot 承担更多智能体工作,从规划、编辑到调试、审查以及在更长的会话中调用工具,效率的提升不仅仅意味着使用更少的 Token,更要考虑如何更智能地使用它们。

提升效率的第一步是减少 Copilot 在每次交互中需要重复的内容,包括上下文、工具定义和缓存状态。接着是选择适合当前任务的模型。快速解释、精准编辑和复杂的多文件更改不应采用同一种处理方式。

我们正在从两方面入手:改进 Copilot 的底层架构,使更多会话资源用于实际任务;扩展 Auto 功能,让 Copilot 能自动选择最合适的模型,无需开发者每次都手动选择。本文将聚焦于 VS Code 中 GitHub Copilot 的架构改进,以及 Auto 在各 Copilot 界面上的扩展工作。

增强的提示缓存与按需工具加载

在 VS Code 的较长 GitHub Copilot 会话中,底层架构会为模型准备大量重复信息:指令、仓库上下文、对话历史、可用工具和当前任务状态。其中部分上下文是必要的,但有些可以被缓存、延迟加载,或仅在需要时加载。

GitHub Copilot for VS Code 的两项改进在这方面发挥了主要作用。提示缓存帮助 Copilot 重用重复提示前缀的模型状态,而不是在每次请求时重新计算相同的前缀。工具搜索则允许模型按需加载工具定义,而不是在每次交互时将所有完整工具模式发送到上下文中。

随着智能体使用更多工具,这一点变得愈发重要。一个会话可能需要访问 MCP 工具、终端命令、文件操作、工作区搜索和特定产品操作。每次交互时预先加载所有完整工具定义会带来固定成本,即使只有少数工具与当前任务相关。通过工具搜索,Copilot 可以保持广泛的可用工具集,同时减少不必要的工具模式传递给模型。

关于实现的更多技术细节,包括提示缓存、缓存控制断点、特定提供商的工具搜索以及这些变化如何在长时间运行的智能体会话中工作,请阅读 VS Code 技术深度文章。

GitHub Copilot 自动模型选择的作用

Auto 解决了一个实际问题:当前任务最适合哪个模型?

在您的第一个提示之后,Copilot 使用任务意图和当前模型健康状态来选择最适合任务的模型。不同类型的工作,如快速解释、精准编辑或多文件更改,并不都受益于相同级别的推理能力,因此 Auto 会做出决定,而无需您调整模型设置。

在我们的评估中,没有单一模型在所有任务上持续表现最佳。在许多情况下,更高效的模型可以达到相同的结果,而更强的模型在任务需要更深推理时才至关重要。Auto 学习了何时更强的推理能改善结果。当任务需要时,它会路由到更强的模型;当不需要时,它保持高效。目标不是在质量和成本之间取舍,而是使用最适合工作的模型。

Auto 如何选择正确的模型

Auto 结合了两个信号:当前哪个模型健康且可用,以及 Copilot 被要求做什么工作。

实时模型健康:一个动态引擎跟踪模型可用性、利用率、速度、错误率和成本。一个模型可能能够处理某项任务,但这并不意味着它是当时的最佳选择。Auto 考虑当前系统条件,以便 Copilot 路由到既胜任又准备好响应的模型。

任务感知路由(HyDRA):一个路由模型,考虑推理深度、代码复杂性、调试难度和工具编排需求等因素。HyDRA 识别能够满足任务质量标准的模型,然后在其中选择最佳匹配。

图 1:三个 HyDRA 操作点展示了可调性:(峰值)超过 Sonnet,节省 12.9%;(激进)平衡质量,节省 72.5%。

图 2:HyDRA(保守)在解决率(70.8%)上与 OpenRouter Auto 持平,但节省 3.3 倍。HyDRA(激进)优于 Azure Foundry 的两种操作模式。

综合来看,这些信号使 Auto 避免了千篇一律的方法。关键不是将每个任务发送给最大的模型,也不是每个任务发送给最便宜的模型,而是选择适合工作的模型。

让 Auto 在实际中发挥作用

在评估中做好路由只是问题的一部分。为了使 Auto 在实际工作流程中有用,我们还必须考虑开发者实际使用 Copilot 的方式:对话变长、上下文积累、任务变化以及开发者使用多种语言。

缓存感知路由。每次交互都切换模型听起来很灵活,但这可能会损害效率。当对话停留在同一模型上时,提示前缀可以在交互之间缓存和重用。在对话中途切换模型会破坏该缓存,这可能导致比路由改变节省更多的成本。Auto 通过在自然缓存边界处路由来避免这种情况:首轮(没有缓存可丢失)和压缩后(Copilot 总结较旧的回合并重置提示前缀)。在这些点之间,选定的模型保持不变,以便缓存继续构建。

跨语言路由。Copilot 服务全球开发者,因此路由必须适用于英语以外的语言。我们使用跨 16 个语系(包括 CJK、欧洲等)的对话训练了路由模型。在评估中,路由准确性在不同语言组中保持在英语基线的四个百分点以内,没有统计上显著的质量差距。

图 3:智能路由保持在英语基线的 4 个百分点以内。基于来自生产 VS Code 聊天遥测的 19 种语言保留评估集的模型评估,涵盖英语、欧洲、CJK 和其他文字家族。

学习何时升级更重要。我们没有简单地将任务标记为“简单”或“困难”,而是训练路由器学习模型实际出现差异的地方。对于每个训练查询,评估来自能力较弱模型和较强模型的响应在多个质量维度上的得分。路由器学习何时更强的模型能增加价值,以及何时更高效的模型也能产生同样好的结果。对于较长智能体会话中依赖上下文的消息,路由器在完整的多轮对话上进行训练,包括原始用户意图、最近的助手响应和对话元数据。

带有任务意图的 Auto 正在扩展

带有任务意图的 Auto 已在 Visual Studio Code、github.com 和移动端上线。它给 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 在整个系统中更高效,以便更多积分用于有用工作,而无需您自己调整每个模型选择。