正文
调试所有从输入到服务端响应的过程;
优化逻辑、提交问题、贡献代码。
换句话说,微软希望复制 VS Code 本身开源成功的路径。在一个市场逐渐成熟的时候,开源能帮助开发者更深入地参与讨论、提出想法,而不只是等着项目发起团队实现。微软认为,这一时机现在已经成熟。
“像 Cursor 这样的新对手让我有点‘眼红’。”如今已经 64 岁的 VS Code 创始人 Eric 在采访中不止一次提到。
Eric 认为,一个原生 AI 编辑器不应该把 AI 功能“挂载”在 VS Code 上,而应该是核心的一部分。用户编写开源软件时,它就在那里,不需要安装任何东西。因此,团队现在要做的就是把 AI 彻底变成核心的一部分,而不是额外安装的插件。
现在所有关于 prompt 构造、模型交互的逻辑都还藏在 Copilot 扩展中,Eric 希望将这些开源后能吸引更多开发者的关注和贡献。这样也更安全,对开发者来说也更透明。
“我喜欢这个变化的另一个原因是,我们之前在开源和闭源之间来回切换其实挺痛苦的。”Eric 补充道,“项目属性不同,我们的说话方式也不同。开源社区友好热情,而闭源产品的用户则更像‘客户’,要求多、没啥耐心。能把整个工作流程都统一为开源,对我们开发团队本身来说也是一种‘解压’。”
Eric 还提到,将 AI 部分开源的一个原因是从一些组织那里听到的反馈——他们真的不喜欢闭源的 IDE。将其他部分也开源就满足了这些企业的需求,他们可以选择闭源,也可以选择开源。
值得注意的是,Copilot 是有免费选项的,开发者可以直接注册并免费使用,但会受到调用高级模型的请求次数等限制。Copilot 中有一个没有调用限制的基础模型。如果用户有自己的 API Key,也可以用“Bring Your Own Key”(BYOK)方式接入,直接使用指定的模型服务,而非通过 GitHub 后台服务,费用开发者自己承担。
如果用户付费使用更高级的 Copilot 功能,那就和开源没有直接关系了。“
总得有人为模型的计算资源买单,这和是否开源是两码事
。”Kai 说道。
所谓开源,是用户可以看到所有客户端上发生的内容,也能看到团队发送到服务器的内容。而客户最终所支付的费用,基本上就是后端运行大模型所产生的计算费用。对于企业用户来说,还有一些附加服务,比如免责保障(indemnification)之类。
Copilot 的一个重要组成部分就是确定要将哪些信息发送给模型。如果 Copilot 开源,我们就能清楚地看到究竟哪些内容被发送给了模型,以及这些数据是如何被处理的,进而能够进行改进。
最开始时候,模型还不支持像样的工具调用(tool calling),所以 Copilot 团队几乎必须把所有需要的信息预先打包好,一起发给模型。但那时也会遇到“干草堆里找针”的问题——发得太多反而会让模型困惑。
现在,Copilot 对于生成补全的请求,还是会尽可能地将上下文预先打包,然后让模型去补全。但这里面还是有很多思考,比如该发哪些东西。比如说,打开的标签页会被用来计算额外的上下文,如果语言服务器支持的话,我们会以某种精简形式把类型信息等也一并发过去。
但也有些场景并不再那么依赖这些了,比如 Agentic 流程。
在 Agentic 流程中,Copilot 用的是内部称之为“面包屑提示”(breadcrumb prompts)的方式。比如现在问题面板里有个问题,终端里也有输出,那就只是告诉模型这些信息存在于哪里,并且给模型提供检索这些信息的工具,然后模型自己判断它是否需要这些信息。这种方式更简单。当然有时候也需要用合适的提示方式来引导,比如告诉模型在思考时该优先考虑哪些方面。但总体来说,引入工具调用之后,整个上下文处理过程简单了许多。
生成提示词方面,Copilot 现在用类似 tsx 的结构来描述提示语,而不是简单的字符串拼接。这种方式带来了灵活性,比如可以给树结构中的节点分配不同优先级,按需要添加或减少内容,这些都能根据上下文窗口灵活调整。