1. 本地 DeepSeek 在 VS Code 里为什么总差一口气
Visual Studio Code 接入本地化部署 DeepSeek,这件事本身不新鲜。Ollama 拉个deepseek-coder或deepseek-r1的量化版本,Continue 插件里选一下 provider,聊天框就能出字。但真把它当日常主力用上一周,问题会集中冒出来:模型端点散落在每个插件的配置里,Continue 一套、Cline 一套、Roo Code 又一套;换台机器或者重装插件,Key 和 Base URL 得重新填一遍;本地服务端口一改,所有插件集体失联,你还得挨个翻 settings.json 找是哪一行写死的。
更麻烦的是"我到底连的是谁"。本地 DeepSeek 和云端模型混着用的时候,请求发出去,返回速度飞快,你以为是本地 3090 在跑,其实可能悄悄走了别的通道。代码质量忽高忽低,排查半天发现是端点根本没对上。
这篇要解决的就是这个:用 TaoToken 做统一 Key 和 API 通道,把 VS Code 里所有 AI 编码插件的模型入口收敛到一处,本地 DeepSeek 作为其中一个可切换的模型挂上去。配置落在settings.json里,可复制、可版本管理、可迁移。适合已经在本地跑起 DeepSeek 推理服务、想让代码补全和对话质量稳定下来的开发者。
TaoToken 在这里的角色是统一网关:官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口 https://taotoken.net/api 。它不替代你的本地推理,而是把"用哪个模型、走哪个端点"这件事从各个插件里抽出来,集中管理。
2. 前置准备:本地 DeepSeek 服务与 TaoToken Key
2.1 确认本地 DeepSeek 已经能独立响应
在碰 VS Code 之前,先用命令行确认本地服务活着。假设你用 Ollama 部署,默认端口 11434:
curl http://localhost:11434/api/tags返回里应该能看到类似deepseek-coder:6.7b或deepseek-r1:7b的条目。再发一条真实推理请求:
curl http://localhost:11434/api/chat -d '{ "model": "deepseek-coder:6.7b", "messages": [{"role": "user", "content": "写一个 Python 快排"}], "stream": false }'能拿到message.content就说明本地端点没问题。这一步别跳过,后面 VS Code 连不上时,你得先排除是本地服务挂了还是配置写错了。
如果你用的是 vLLM、LM Studio 或 llama.cpp server,端点路径会不同,比如 vLLM 是http://localhost:8000/v1/chat/completions,LM Studio 是http://localhost:1234/v1。记下你的实际 Base URL,下一步要用。
2.2 拿 TaoToken Key 并确认通道
登录 TaoToken 控制台,在 API Keys 页面创建一个新 Key。地址走这个:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
创建时给它起个能认出来的名字,比如vscode-local-deepseek,方便以后按用途吊销。Key 只在创建时完整显示一次,复制到安全的地方。
TaoToken 的 API Base URL 统一是https://taotoken.net/api,注意这个地址不带任何查询参数。所有插件的 Base URL 都填它,模型名按 TaoToken 侧的命名填。
注意:本地 DeepSeek 的端点是你自己机器上的
localhost,TaoToken 的端点是taotoken.net。两者不是一回事,配置时别混。TaoToken 负责统一 Key 和路由,本地服务负责实际推理。
2.3 装好 Continue 插件
VS Code 扩展市场搜Continue,安装。它是目前对settings.json和自定义 provider 支持最完整的开源编码助手之一,配置可读性好,适合做统一入口的载体。
装完先别急着配,把 VS Code 完全退出一次,确保插件加载干净。
3. 可复制的 settings.json 配置骨架
3.1 配置文件放哪
Continue 的配置有两个位置:全局在~/.continue/config.json(新版也支持config.yaml),项目级在.continue/config.json。我建议把统一模型入口放全局,项目特殊需求再在项目级覆盖。
VS Code 自身的settings.json(Ctrl+Shift+P→Preferences: Open User Settings (JSON))主要用来控制插件行为,比如是否启用、快捷键、默认模型选择。模型端点本身写在 Continue 的配置里。
3.2 Continue 配置骨架
下面这份可以直接复制,把YOUR_TAOTOKEN_KEY换成你的真实 Key:
{ "models": [ { "title": "TaoToken 统一通道", "provider": "openai", "model": "deepseek-chat", "apiKey": "YOUR_TAOTOKEN_KEY", "apiBase": "https://taotoken.net/api/v1" }, { "title": "本地 DeepSeek (Ollama)", "provider": "ollama", "model": "deepseek-coder:6.7b", "apiBase": "http://localhost:11434" } ], "tabAutocompleteModel": { "title": "本地 DeepSeek 补全", "provider": "ollama", "model": "deepseek-coder:6.7b", "apiBase": "http://localhost:11434" }, "embeddingsProvider": { "provider": "ollama", "model": "nomic-embed-text", "apiBase": "http://localhost:11434" } }几个关键点解释一下。provider填openai是因为 TaoToken 兼容 OpenAI 协议,apiBase指向https://taotoken.net/api/v1,注意末尾的/v1不能少。本地那条用ollamaprovider,apiBase指向你本机的 11434。
tabAutocompleteModel单独拎出来,是因为代码补全对延迟极敏感,走本地 DeepSeek 比走网络通道快得多。对话和复杂推理可以走 TaoToken 统一通道,按需切换。
3.3 VS Code settings.json 里的开关
在 VS Code 用户settings.json里加上:
{ "continue.enableTabAutocomplete": true, "continue.enableConsole": false, "editor.inlineSuggest.enabled": true, "editor.quickSuggestions": { "other": true, "comments": false, "strings": false } }continue.enableConsole关掉是为了减少无关日志干扰。editor.inlineSuggest.enabled必须为 true,否则 Tab 补全不显示。
3.4 参数对照表
| 配置项 | 本地 DeepSeek | TaoToken 统一通道 |
|---|---|---|
| provider | ollama | openai |
| apiBase | http://localhost:11434 | https://taotoken.net/api/v1 |
| model | deepseek-coder:6.7b | deepseek-chat |
| apiKey | 不需要 | TaoToken Key |
| 适用场景 | Tab 补全、低延迟对话 | 复杂推理、多模型切换 |
| 网络依赖 | 无 | 需要 |
4. 验证请求确实走了本地 DeepSeek
4.1 用 Continue 侧边栏发一条测试
保存配置后重启 VS Code。打开 Continue 侧边栏,模型下拉里应该能看到"本地 DeepSeek (Ollama)"和"TaoToken 统一通道"两条。选本地那条,发一句:
用一句话解释什么是闭包能正常返回,说明 Continue 到本地 Ollama 的链路通了。
4.2 从服务端日志确认请求来源
光看返回不够,要确认请求真的打到了本地。Ollama 启动时如果带了OLLAMA_DEBUG=1,日志会打印每条请求。更直接的办法是看 Ollama 的访问记录:
# Linux/macOS 查看 Ollama 日志 journalctl -u ollama -f # 或者直接看进程输出 tail -f ~/.ollama/logs/server.log然后在 Continue 里再发一条消息,日志里应该立刻出现POST /api/chat或/v1/chat/completions的记录,带上模型名。如果发了消息日志没动静,说明请求根本没到本地,八成是配置里apiBase写错或者插件选了另一条模型。
4.3 用 curl 模拟插件请求
想更精确地验证,直接用 curl 打本地端点,参数和插件里填的一致:
curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-coder:6.7b", "messages": [{"role": "user", "content": "print hello"}], "stream": false }'返回结构里choices[0].message.content有内容,就证明这个端点和模型名组合是有效的。插件里填的必须和这里完全一致,包括模型名的冒号和版本号。
4.4 验证 TaoToken 通道
切到"TaoToken 统一通道",同样发一条消息。这次看的是 TaoToken 侧的调用记录,在控制台的用量页面能看到请求计数和模型名。如果本地日志没新增、TaoToken 用量涨了,说明切换生效,请求走了统一通道。
这一步的意义在于:你能明确知道每条请求的归属。补全走本地、对话走通道,各司其职,出问题时排查范围立刻缩小一半。
5. 本篇常见错排查
5.1 模型下拉里看不到本地 DeepSeek
最常见的原因是 Ollama 服务没启动,或者模型名写错。先curl http://localhost:11434/api/tags确认服务活着且模型在列表里。如果 Continue 配置里写的模型名和tags返回的不一致,下拉里就不会出现。模型名要完整复制,包括:6.7b这种 tag。
另一个原因是 Continue 配置 JSON 格式错误。JSON 不允许尾随逗号,少个引号整个文件就废了。用 VS Code 自带的 JSON 校验看一眼,有红色波浪线就先修。
5.2 补全不触发或延迟极高
先确认editor.inlineSuggest.enabled是 true。然后看tabAutocompleteModel是否指向了本地端点。如果指向 TaoToken 通道,网络往返会让补全慢到没法用。
本地模型太小也会导致补全质量差。6.7B 的 coder 模型在简单补全上够用,复杂上下文里容易胡编。可以换deepseek-coder:33b的量化版,但显存要够。实测下来,补全场景 7B 量化版在 8G 显存上能跑,33B 量化至少 24G。
5.3 请求报 401 或 404
401 基本是 Key 问题。检查 TaoToken Key 有没有复制完整,有没有多余空格。404 多半是apiBase路径写错,TaoToken 通道必须是https://taotoken.net/api/v1,本地 Ollama 的 OpenAI 兼容路径是http://localhost:11434/v1,少写/v1就会 404。
5.4 改了配置不生效
Continue 的配置改动有时需要完全重启 VS Code,不是重载窗口。Ctrl+Shift+P→Developer: Reload Window有时不够,直接退出进程再开。另外检查是不是项目级.continue/config.json覆盖了全局配置,项目级优先级更高。
5.5 本地和通道模型名冲突
TaoToken 侧的模型名和本地 Ollama 的模型名可能重名,比如都叫deepseek-coder。配置里用title区分显示名,实际请求按provider+model组合走。如果发现切了模型但行为没变,检查是不是两条配置的model字段填成了同一个值。
6. 把统一入口用起来
配置跑通之后,日常用法是这样的:Tab 补全默认走本地 DeepSeek,延迟低、不消耗通道额度;遇到需要长上下文推理的任务,在 Continue 侧边栏切到 TaoToken 统一通道,按需选模型。两套入口共用一份settings.json,换机器时把配置文件和 Key 一起迁移,插件重装也不用重新填端点。
如果你后面要接更多模型,或者把编码 Agent 也挂到统一通道上,可以看下 Coding Plan 的接入方式:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
模型对话的调试入口在这里,用来快速验证某个模型名在通道侧是否可用:
https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
接入文档里有各语言 SDK 和 OpenAI 兼容协议的完整说明,配其他插件时对着查参数:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
最后留一个我踩过的坑:本地 Ollama 默认只监听127.0.0.1,如果你在 WSL 或容器里跑 VS Code,localhost指向的不是宿主机,得把 Ollama 的OLLAMA_HOST设成0.0.0.0并在配置里填宿主机的实际 IP。这个不解决,配置怎么写都连不上。