1. 为什么要在 VSCode 里接本地 DeepSeek
如果你已经在本地或内网服务器上用 Ollama 跑起了 DeepSeek,接下来最自然的想法就是:能不能在 VSCode 里直接对话、补全、改代码,而不是每次切到终端敲ollama run。Continue 插件就是干这个的,它把 VSCode 变成一个能挂多个模型的客户端,Ollama 只是其中一个 provider。
但真正动手时,问题往往不在“能不能连”,而在“连上之后怎么管”。我见过太多人的配置是这样的:Continue 里写一份 Ollama 地址,Cline 里再写一份,终端脚本里还有一份,哪天服务器 IP 变了或者要换模型,得挨个文件翻。更麻烦的是,有些工具只认 OpenAI 兼容格式,而 Ollama 原生接口和 OpenAI 接口的路径、字段并不完全一样,配错一个斜杠就报 404。
这篇要解决的,就是这条链路:VSCode + Continue 插件 + 本地 Ollama 离线 DeepSeek,同时用 TaoToken 的统一 Key 把“多工具 Key 分散”这件事收口。需要先说清楚:Ollama 跑在本机或内网,模型推理是离线的;TaoToken 在这里承担的是统一入口和 Key 管理角色,方便你在 Continue 里用一套配置去对接不同后端,而不是让你把本地模型搬到云上。两者不冲突,一个是推理侧,一个是接入侧。
适合谁看:已经在本地装好 Ollama、拉过 DeepSeek 模型,但被 Continue 的config.json写法、apiBase路径、连接报错卡住的人。下面按“先跑通、再收口、后排查”的顺序来。
2. 前置准备:Ollama 与 TaoToken 各自的位置
2.1 确认 Ollama 侧已经就绪
Continue 只是客户端,模型得先能被访问。先在终端确认 Ollama 服务在跑,并且 DeepSeek 模型已经拉下来:
ollama list正常会看到类似输出,注意模型名要和你后面配置里写的一致:
NAME ID SIZE MODIFIED deepseek-r1:7b xxxxxxxxxxxx 4.7 GB 2 days ago deepseek-coder:6.7b xxxxxxxxxxxx 3.8 GB 5 days ago如果列表为空,先拉一个:
ollama pull deepseek-r1:7b然后确认服务监听地址。默认 Ollama 只监听127.0.0.1:11434,本机 Continue 直连没问题;如果模型在另一台服务器上,需要让 Ollama 监听0.0.0.0,并确认防火墙放行对应端口。这一步是后面apiBase能不能通的前提。
# Linux 下通过环境变量调整监听地址(示例) export OLLAMA_HOST=0.0.0.0:11434 ollama serve注意:把 Ollama 暴露到内网前,确认所在网络环境可信,不要直接开到公网。
2.2 TaoToken 在这里做什么
TaoToken 的定位是统一接入层:你可以在它的控制台里生成一把 Key,然后在 Continue、脚本、其他 IDE 插件里复用同一套凭证和入口地址,避免每个工具各写一份、各错一处。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。
需要区分两个概念:Ollama 的本地地址(比如http://127.0.0.1:11434)负责离线推理;TaoToken 的 API 地址负责统一接入和 Key 校验。Continue 的配置里,这两类 provider 可以并存,你按需选用。下面第 3 节会给出两种写法。
3. Continue 的 config.json 骨架与两种接入写法
3.1 找到并打开配置文件
在 VSCode 里安装 Continue 插件后,左侧会出现 Continue 图标。点开面板,右上角有个齿轮或“配置”入口,点进去会打开config.json。不同版本路径略有差异,常见位置:
~/.continue/config.json # macOS / Linux C:\Users\<用户名>\.continue\config.json # Windows也可以直接在 VSCode 命令面板里搜Continue: Open Config。打开后是一个 JSON 对象,核心是models数组,每个元素描述一个模型来源。
3.2 直连本地 Ollama 的写法
这是最贴近“离线部署”的配置。provider选ollama,apiBase指向 Ollama 服务地址,model写ollama list里看到的模型名:
{ "models": [ { "title": "DeepSeek R1 (本地 Ollama)", "provider": "ollama", "model": "deepseek-r1:7b", "apiBase": "http://127.0.0.1:11434" } ] }如果模型在服务器上,把apiBase换成服务器内网 IP:
{ "models": [ { "title": "DeepSeek R1 (服务器 Ollama)", "provider": "ollama", "model": "deepseek-r1:7b", "apiBase": "http://192.168.1.50:11434" } ] }这里最容易错的是apiBase后面多写或少写路径。Ollama provider 下,Continue 会自己拼接/api/chat之类的路径,你只给到主机和端口即可,不要手动加/v1或/api。
3.3 通过 TaoToken 统一 Key 接入的写法
当你想让 Continue 和其他工具共用一套 Key、或者需要走 OpenAI 兼容格式时,用openaiprovider 指向 TaoToken 的 API 基址。先在控制台生成 Key,然后这样写:
{ "models": [ { "title": "DeepSeek via TaoToken", "provider": "openai", "model": "deepseek-chat", "apiKey": "你的_TaoToken_Key", "apiBase": "https://taotoken.net/api" } ] }apiBase用 https://taotoken.net/api ,不要带末尾斜杠,也不要自己补/v1,具体路径由 provider 处理。Key 的生成和管理在控制台完成:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。如果你更习惯用命令行管理凭证,API Keys 页面是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
两种写法可以同时放在models数组里,Continue 面板里会显示成两个可切换的模型。这样你本地离线调试用 Ollama,需要统一入口时切到 TaoToken,互不影响。
3.4 参数对照表
| 字段 | 直连 Ollama | 走 TaoToken |
|---|---|---|
| provider | ollama | openai |
| apiBase | http://127.0.0.1:11434或内网 IP | https://taotoken.net/api |
| model | ollama list中的名字 | 控制台可用的模型名 |
| apiKey | 不需要 | 控制台生成的 Key |
| 典型用途 | 纯离线推理 | 统一 Key、多工具复用 |
4. 验证连通性:从命令行到 Continue 面板
4.1 先用 curl 确认 Ollama 活着
在配 Continue 之前,先用命令行排除服务本身的问题。本机:
curl http://127.0.0.1:11434/api/tags服务器:
curl http://192.168.1.50:11434/api/tags返回 JSON 里能看到模型列表,说明服务可达。如果这一步就失败,Continue 里再怎么配也没用,先解决网络和监听地址。
再验证一次对话接口:
curl http://127.0.0.1:11434/api/chat -d '{ "model": "deepseek-r1:7b", "messages": [{"role": "user", "content": "用一句话说明什么是递归"}], "stream": false }'能返回message.content就说明模型推理正常。
4.2 验证 TaoToken 侧
用同一把 Key 发一个 OpenAI 兼容格式的请求:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer 你的_TaoToken_Key" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-chat", "messages": [{"role": "user", "content": "你好"}] }'返回带choices字段即表示 Key 和入口都通。如果这里报 401,检查 Key 是否复制完整;报 404,检查apiBase是否写成了带/v1的形式。
4.3 回到 Continue 面板实测
保存config.json后,Continue 面板会刷新模型列表。选中你配的 DeepSeek,在对话框里输入一句测试,比如“帮我写一个 Python 读取 CSV 的函数”。能正常流式返回,就说明整条链路通了。
如果你想先在网页端确认模型可用性,可以用模型对话入口:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。接入细节和字段说明可以查文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
5. 常见报错与排查清单
5.1 Continue 里模型列表为空
多半是config.json语法错误。JSON 不允许尾随逗号,也不允许注释。把文件贴到任意 JSON 校验工具里过一遍,或者用 VSCode 自带的 JSON 校验看波浪线。改完保存,重启一下 Continue 面板。
5.2 报 connection refused
说明apiBase指向的地址端口没人监听。分三种情况:Ollama 没启动;Ollama 只监听127.0.0.1而你在另一台机器上连;防火墙拦了 11434。按 4.1 的 curl 逐个排除。
5.3 报 404 Not Found
几乎都是路径写错。Ollama provider 下apiBase只写到端口;OpenAI provider 走 TaoToken 时apiBase写到https://taotoken.net/api,不要自己加/v1/chat/completions。多一个斜杠、少一个斜杠都会 404。
5.4 报 401 Unauthorized
只在走 TaoToken 时出现。检查apiKey字段是否填了、有没有多余空格、Key 是否已失效。重新在控制台生成一把再试。
5.5 模型名不匹配
Ollama 侧报model not found,说明model字段和ollama list里的名字对不上。注意带 tag 的写法,比如deepseek-r1:7b和deepseek-r1可能不是同一个。TaoToken 侧则要用控制台里实际可用的模型名。
5.6 响应很慢或超时
本地小显存跑大模型会慢,这是硬件问题不是配置问题。可以换更小的量化版本,或者在 Continue 配置里调低maxTokens之类的参数,减少单次生成量。服务器场景还要看内网带宽。
6. 把 Key 收口之后的工作流
配置跑通只是第一步,真正省事的是后续维护。我的做法是:Ollama 相关配置留在 Continue 里直连,负责离线、隐私敏感的代码片段;需要跨工具复用、或者临时切到更强模型时,走 TaoToken 的统一 Key。这样服务器 IP 变了只改一处,Key 轮换也只改一处。
如果你长期在 VSCode 里做编码和 Agent 类任务,可以了解一下 Coding Plan,它更适合把这类高频调用固定下来:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。Claude Code 相关的接入说明在 https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,思路和 Continue 类似,都是把入口和凭证统一。
最后留一个我踩过的坑:改完config.json一定要确认保存的是 Continue 实际读取的那个文件,有些机器上存在多个.continue目录,改错了地方会以为配置没生效。用命令面板的Continue: Open Config打开的那个,才是准的。