【开源】Unify Chat Provider —— 为 VS Code 接入任何代码补全算法和模型

SmallMain 2026-07-25 13:26 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

  • 以上选择我承诺是永久有效的,接受社区和佬友监督:


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出




上一个 帖子 是 Unify Chat Provider 首次发布时撰写的,距今已经过去七个月,迭代了一百二十个版本。


从一开始,该扩展就是为了完全可定制、最大化模型性能而开发的。


在此期间,我也陆陆续续用该扩展完成了几十个模型的十几个评测帖子,感谢佬们的支持!


本次 v8.x 发布新开一贴,是因为这次终于加入了多次 Issue 请求的功能 —— 代码补全。


有种 49 年入国军的感觉?现在维护一个项目的开发恐怕都不需要打开任何 IDE 了。


不过我觉得代码补全依然有市场,除了古法编程外,文档、提示词的撰写还是不能完全交给 AI,但 Github Copilot 自带的补全效果实在不尽如人意。


所以本次添加代码补全功能,依然是为了完全可定制、最大化补全性能


接下来分享一些我的开发经验,如果你想直接开始使用,请直接转至 太长不看。


VS Code 补全接口规则


VS Code 提供了代码补全接口,所有扩展都可以添加一个代码补全 Provider,官方内置的代码补全也是注册了两个Providercompletionsnes


经典的行内补全(FIM)是 completions 负责,而类似 Cursor Tab 的补全被 VS Code 称为 NES(Next Edit Suggestions),由 nes 负责。


当同时存在多个 Provider,VS Code 会同时请求所有 Provider,并只使用其中最快的 Provider 返回的补全结果。


所以包括内置补全在内,安装多个代码补全扩展其实是可以共存的,只是只有一个 Provider 会最终生效,其它 Provider 消耗了模型额度但不会得到显示,哪怕是作为候选项。


扩展也会(且只会)注册一个 Provider,并且默认会屏蔽 VS Code 内置的代码补全功能,但你可以在扩展设置里关闭这个行为。


扩展架构


既然扩展的目标是:



  • 完全可定制

  • 最大化补全模型的性能


那么首先得设计一个足够通用的接口。


各家 FIM 补全模型的接口都比较统一,使用 prompt(光标之前的代码) + suffix(光标之后的代码)作为输入,输出预测两者之间的代码。


但是对于类似 Cursor Tab 的跨行、跨文件的编辑预测模型,现在各家的接口都并不统一。


不统一主要出现在要用哪些数据作为上下文这一点上:


有的模型需要 LSP 诊断信息;


有的模型需要最近编辑过的代码文件;


有的模型需要最近用户的编辑序列;


连数据内容都达不成统一,就跟别提数据格式了。


鉴于现在这个情况,我将代码补全抽象出了补全算法、调度策略、补全模型三个部分。


每个部分都提供公开接口,然后扩展再将三者组合起来。


补全算法


截止发帖,扩展支持五种补全算法:



  • Simple(FIM)

  • Copilot (Replica)

  • Zed Edit Prediction (Zeta)

  • Inception (Mercury Edit 2)

  • Mistral (Codestral)


Simple 即 FIM,不过多介绍。


Copilot (Replica) 是在 VS Code 公开的 chat-lib 库的基础上,对内置补全算法进行完全复刻的版本。


上面两种算法,你不仅可以配合支持 FIM 的模型使用,还支持兼容模式:通过在 System Prompt 中向模型设定输入、输出的内容与格式,使得可以实验任意模型的补全和编辑预测效果。


当然,经过我的测试,未对补全进行针对性训练的模型效果都非常差,你写下一个类名,GPT-5.6 能为你补出几百行代码;你写下一行注释,Opus 4.8 能帮你写好整个项目的开发计划。


Zed 是为数不多在现在这个 Vibe 到 IDE 都不打开的时候,还愿意继续迭代编辑预测模型的开发商了。


在今年五月 Zed 还开源了 Zeta 2.1 编辑预测模型,该模型效果应该不错。


并且 Zed 还未止步迭代,现在通过 Zed 账号登录本扩展的话,能够使用 Zeta Cloud 这个未发布的、疑似将作为 Zeta 3 发布的模型。


Inception 今年三月发布的 Mercury Edit 2 编辑预测模型,官方基准测试能比 Zeta 2 的准确率高出 10%,也值得尝试。


Mistral 发布的 Codestral 模型就没那么有必要尝试了,是一个老式的 FIM 补全模型。


太长不看


仓库 README 提供了每个算法的快速配置指南:这里


简单介绍下如何配置本地 Zeta2.1 模型:



  1. 安装扩展 并允许启用 Proposal API。

  2. 安装 LM Studio 并添加 ton-An/zeta-2.1-mlx-4Bit MLX 格式的量化模型(适合 Mac)。

  3. 在扩展中 一键配置 LM Studio Local 模型供应商(需注意即使你在 LM Studio 中未设置 API 要求验证,请求时依然需要携带任意 API Key)。

  4. 打开 Unify Chat Provider: 代码补全设置 -> 从当前供应商列表添加 -> Zed,并选择刚才添加的本地模型。

  5. 点击 保存 按钮即可。


如果你不想本地部署,也可以在扩展中直接登录 Zed Cloud 账号,免费账户有 2,000 次补全额度。




如果本扩展对你有所帮助,请给我一个 Star!


如果有佬友了解至今有效的 Cursor Tab to API 实现的话求教,我有兴趣将其移植到扩展中。


仓库地址

最新回复 (4)
  • Yjl Debug 07-25 13:38
    1

    大佬的,模型测评还更新吗,特别喜欢佬的模型测评,希望佬能继续更新 ^-^

  • Google 07-25 13:40
    2

    大佬,可不可以实现zed登录然后反代出预测模型给好几个人用呢?或者中转一下预测模式?和本项目无关,只是想听一下佬的看法,和实现的可行性分析

  • SmallMain 楼主 07-25 14:19
    3

    可以的,扩展其实等于是做了这个事,只是没直接 2api 出来

  • SmallMain 楼主 07-25 14:20
    4

    会的会的,最近会发,包括 ds v4 正式版

* 帖子来源Linux.do
返回