Dspilot
Dspilot

最近我把自己一直在用的一个想法落地成了 VSCode 插件:Dspilot(扩展 ID XiaoHanys.deepseek-autocomplete)。它能用 DeepSeek 或任意 OpenAI 兼容模型,在编辑器里提供 AI 内联代码补全——请求直接发往你自己配置的服务端点,不需要订阅 GitHub Copilot。

为什么做这个插件

Copilot 们的补全体验确实好,但有两个绕不开的问题:订阅费和代码去向。而 DeepSeek 的 API 价格便宜、代码能力有口皆碑,本地跑一个 Qwen Coder 之类的补全模型也完全可行。于是我写了这个插件:模型、端点、密钥全部由自己掌控,API 请求直连你配置的地址,中间不经过任何第三方服务器。

功能一览

  • 内联补全(FIM):根据光标前后的代码、项目中相似文件与最近编辑构造上下文,以幽灵文本(ghost text)形式给出建议,支持单行和多行补全。
  • 少花冤枉钱:请求防抖、过期请求自动取消、本地缓存命中直接复用,重复输入或已经打出来的建议不会浪费一次 API 调用。
  • Next-edit 建议(可选):预测你的下一处修改,需要 VS Code 的 inlineCompletionsAdditions 提议 API。
  • 用量统计:鼠标悬停右下角状态栏图标,即可查看本次会话的请求数、缓存命中数、防抖省下的请求数和 token 用量。
  • 默认安全:.env、私钥、证书等敏感文件永远不参与补全。

快速开始

安装插件后,打开设置搜索 @ext:XiaoHanys.deepseek-autocomplete,或点击 VSCode 右下角的状态栏图标,填好三项配置即可开工:

1
2
3
4
5
{
"deepseekAutocomplete.completion.baseUrl": "https://api.deepseek.com/beta",
"deepseekAutocomplete.completion.apiKey": "sk-...",
"deepseekAutocomplete.completion.model": "deepseek-chat"
}

然后在任意文件里正常打字,建议会以灰色幽灵文本出现,按 Tab 采纳。

提示

留空 model 时插件不会发送任何请求;本地匿名服务(如 Ollama)把 apiKey 留空即可。

不止 DeepSeek:任意 OpenAI 兼容服务

只要服务兼容 OpenAI 接口,都可以接入:OpenAI、Ollama(http://localhost:11434/v1)、vLLM、LM Studio、OpenRouter 等等。两类模型的接法稍有区别:

  • 原生代码补全模型(如 Qwen Coder base 模型):把 apiType 设为 completions,并选择匹配的 fimTemplate。
  • 对话模型:把 apiType 设为 chat-completions。

baseUrl 只需要写到版本前缀(如 /v1),插件会自动补上 /completions 或 /chat/completions。

配置项一览

所有设置以 deepseekAutocomplete.completion. 为前缀,改完即时生效,无需重启 VS Code。

配置项 默认值 说明
enabled true 总开关
baseUrl https://api.openai.com/v1 OpenAI 兼容 API 基础地址
apiKey 空 API 密钥(明文存于用户设置,切勿提交到仓库)
model 空 模型 ID
apiType completions completions 或 chat-completions
fimTemplate suffix-param FIM prompt 格式:suffix-param / fim / codegemma / qwen2.5-coder
maxTokens 256 单次请求最大输出 token
candidateCount 1 循环切换建议时的候选数量
temperature 0 采样温度
timeoutMs 10000 请求超时时间(毫秒)
debounceMs 150 停止输入后的防抖等待时间,0 为关闭
extraHeaders {} 额外 HTTP 头,${APIKEY} 会被替换为密钥
extraBody {} 合并进请求体的额外字段
disabledGlobs [] 关闭补全的文件匹配规则
enabledLanguages {"*": true} 按语言开关,例如 {"markdown": false}
respectSelectedCompletionInfo true 参考当前选中的 IntelliSense 项
nes.enabled false 启用 next-edit 建议
nes.model 空 next-edit 专用模型,留空沿用 model
nes.maxTokens 4096 next-edit 最大输出 token
nes.cursorPrediction false 预测下一步光标位置
nes.eagerness auto 主动程度:auto / low / medium / high
nes.strategy copilotNesXtab next-edit prompt 格式
安全设计

连接类配置(baseUrl、apiKey、timeoutMs、extraHeaders、extraBody)仅限用户级,工作区无法把携带你密钥的请求重定向到其他地址;apiKey 和 extraHeaders 也被排除在 Settings Sync 之外。

状态栏与用量统计

右下角图标会实时反映插件状态:就绪、已禁用、配置有误、生成中。悬停即可看到当前会话统计。token 用量仅在 API 返回 usage 时显示——流式响应默认不带这个字段,如果你的服务端支持 stream_options,可以通过 extraBody 加上。

开发与构建

源码构建(VSIX) 仓库使用 TypeScript 开发,本地构建 VSIX 只需两条命令。

1
2
npm install
npm run package # compile and build a .vsix

运行环境要求 VS Code 1.115.0 及以上;常规补全只用稳定 API,next-edit 建议需要 inlineCompletionsAdditions 提议 API,不可用时会自动跳过。

最后

插件还在早期阶段,功能与配置项会持续打磨。如果你也想在不依赖 Copilot 的情况下用上 AI 补全,或者手上正好有 DeepSeek / 本地模型的 API,欢迎装上试试。遇到问题或有想法,直接在 GitHub 开 Issue 即可。

又是把「自己想要的功能」造出来的一次小实践——AI 时代写工具的成本,比想象中低得多。

站内搜索

没有找到内容!