GitHub Copilot 即将支持代码任务自动路由至本地或云端模型,但微软明确拒绝披露具体哪些代码内容会被上传云端,引发隐私争议。
GitHub Copilot 很快将能够自主决定编码任务是运行在本地还是发送到云端模型,自动路由功能预计将在 10 月底前上线。微软在周三的一篇博客文章中阐述了这一计划,文章由 GitHub 产品经理 Patrick Nikoletich 和 Windows 平台合作伙伴架构师 Stuart Schaefer 联合撰写。
这一公告恰逢 GitHub 新的沙箱控制功能正式发布,但不同工具的防护级别存在差异。Shell 命令和本地 MCP 服务器会受到操作系统级别的限制,而内置的文件工具则依赖 agent harness 内部的检查。远程 MCP 服务器则位于本地进程沙箱之外。
Nikoletich 和 Schaefer 承认,"本地推理并不意味着会话真正离线"。微软尚未说明 Auto 会向云端模型发送多少仓库上下文内容,开发者也无法检查路由决策,更无法将 Auto 限制为仅使用本地推理。
GitHub 正在扩展 Project HydraFusion,该项目此前已用于为编码任务选择模型,现在将承担起决定这些模型运行位置的任务。微软表示,Copilot 在本地和云端推理之间切换时(包括多轮会话期间)会综合考虑任务上下文和缓存状态。
在 Copilot CLI、Copilot 应用和 VS Code 中,开发者可以选择 Auto 路由或手动选择本地模型。可选的本地模型包括通过 Windows ML provider 提供的 MAI Code 1.1 Flash,以及兼容 OpenAI 的本地端点。
微软尚未说明当 Auto 将任务路由到云端时会发送多少对话历史或仓库上下文。同样没有说明开发者能否查看这些决策,或将推理限制为仅使用本地模型。对于数据处理策略严格的团队而言,他们仍然不知道 Copilot 会将哪些仓库数据发送到云端。上个月 Anthropic 表示可以在检测到高风险活动时将 Claude Sonnet 5.5 请求路由到 Sonnet 5,当时也引发了类似的问题。
对于数据处理策略严格的团队而言,他们仍然不知道 Copilot 会将哪些仓库数据发送到云端。
选择本地模型可以将推理保留在设备上,但这并不能阻止 agent 访问外部服务或通过工具发起网络请求。需要完全本地会话的开发者还需要对这些工具的访问权限进行锁定。
MAI Code 1.1 Flash 是一个混合专家模型,总参数达 1370 亿,活跃参数为 68 亿。微软采用混合精度量化,约为每权重 3.3 比特,将模型压缩至 53GB,相比 bfloat16 云端版本缩减了 80%。
将模型压缩到更小硬件上的压力也推动了其他类似工作,包括英特尔将 LLM 进一步压缩至 1.58 比特的工作。微软将量化与投机解码配对使用,通过一个 draft 模型提出令牌块供主模型验证,以加速本地推理。
微软将量化与投机解码配对使用,通过一个 draft 模型提出令牌块供主模型验证,以加速本地推理。
首发目标设备是 NVIDIA RTX Spark Windows PC,例如 Surface Laptop Ultra,其统一内存最高可达 128GB。在该机器上,微软测量到在 256K token 上下文下峰值内存使用量为 75.5GB,这一数字意味着大多数配备 16GB 或 32GB RAM 的开发者笔记本电脑都无法运行。
53GB 的权重只是内存账单的一部分。操作系统、应用程序、推理运行时和键值缓存都需要占用空间,而且缓存会随着 agent 读取文件和接收工具结果而不断增长。因此,运行较长会话的开发者需要为模型本身以外的内存做好准备。
微软报告称,量化模型在 SWE-Bench Verified 上得分为 70.8%,而全精度版本为 72.6%;在 Terminal-Bench 2.1 上则超越了原始版本,得分为 66.29% 对 62.9%,测试数据集包含 89 个任务。在如此小的数据集上,这一差距相当于 3 个任务。结果表明该公司确实在几乎不损失编码性能的前提下缩小了模型,但远不能说明量化让模型变得更好。
Copilot 使用微软的开源 Execution Containers(MXC)库来强制执行沙箱策略,在 Windows 上使用 ProcessContainer 后端的 BaseContainer 层,在 macOS 上使用 Seatbelt,在 Linux 上使用 bubblewrap。
沙箱启用时,Copilot 会对 Shell 命令应用操作系统强制执行的限制,并在支持的情况下对本地 MCP 和语言服务器应用限制。GitHub 表示,这些限制无论任务在本地模型还是云端模型上运行都同样适用。
Copilot 的内置文件工具在 agent 进程内部运行,harness 在此处对请求进行沙箱策略检查,而非依赖操作系统级别的隔离。远程 MCP 服务器同样位于本地沙箱之外,当 MCP 沙箱控制启用时,Copilot 会检查其连接策略。
远程 MCP 服务器同样位于本地沙箱之外,当 MCP 沙箱控制启用时,Copilot 会检查其连接策略。
微软的演示使用 MAI Code 1.1 Flash 在一个沙箱化的 copilot-sdk 项目中构建每日分类仪表板,声称这是一个离线工作流。然而,提示词中使用的是 GitHub issue 和 pull request 元数据,而非文章前文描述的本地仓库和测试。微软没有说明这些元数据是通过网络获取还是本地缓存,这使得其离线声明无法验证。