1. 为什么要在 Vscode 里同时接本地 Ollama 和统一 Key
如果你正在用 Vscode 写代码,大概率会遇到这样一个尴尬局面:Continue 插件里配了本地 Ollama 的 Qwen2.5,写业务逻辑时够用,但一旦要处理长上下文重构、跨文件分析,本地 7B/14B 模型就开始胡言乱语;想切到云端更强的模型,又得去翻另一套 Key、改另一份配置。工具越多,Key 越散,最后连自己都记不清哪个 Key 对应哪个服务。
这篇就聚焦一个具体场景:在 Vscode 的 Continue 插件里,把本地 Ollama 部署的 Qwen2.5 跑通,同时用 TaoToken 的统一 Key 接入云端模型作为补充。核心交付物是一份可直接复制的config.json骨架,以及 Continue 对话验证动作。适合已经装好 Ollama、拉过 Qwen2.5 模型,但卡在 Continue 配置这一步的开发者。读完你能得到:一个能同时管理本地模型和统一 Key 的 Continue 配置,以及一套排查「模型不响应」的检查清单。
先说清楚 Continue 的工作方式。它本质是一个 Vscode 扩展,通过读取config.json(新版是config.yaml,但 JSON 仍兼容)来决定「用哪个模型、走哪个 API 地址、带什么系统提示词」。本地 Ollama 暴露的是http://localhost:11434这样的 HTTP 接口,Continue 的provider: "ollama"就是直接打这个接口。而 TaoToken 提供的是 OpenAI 兼容接口,provider换成openai并改apiBase即可。两者可以在同一个配置文件里共存,Continue 的模型下拉框里会同时出现,切换成本几乎为零。
2. TaoToken 前置:拿统一 Key 与确认接入地址
在动config.json之前,先把云端这一侧的凭证准备好。TaoToken 的作用是把多个模型的调用收敛到一个 Key 上,你不用为每个模型单独申请账号。操作路径很直接:
打开官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,注册后进入控制台。控制台地址是https://taotoken.net/console,在左侧找到 API Keys 页面,新建一个 Key 并复制保存。这个 Key 就是后面config.json里apiKey字段要填的值。
接入地址用https://taotoken.net/api,注意这个地址不带任何查询参数,直接作为apiBase填入即可。它兼容 OpenAI 的/v1/chat/completions路径,Continue 的openaiprovider 会自动拼接。
注意:Key 只在创建时完整显示一次,建议先存到密码管理器或本地环境变量里,不要直接提交到 Git 仓库。如果你打算把
config.json纳入版本管理,把apiKey换成"${env:TAOTOKEN_API_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/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite,接入前可以先在那里试一下目标模型是否满足你的需求。API Keys 管理页https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite用来随时轮换或吊销 Key。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,遇到字段疑问优先查这里。
3. 可复制配置:Continue 的 config.json 骨架
下面这份骨架同时包含本地 Ollama 的 Qwen2.5 和 TaoToken 云端模型。先确认本地 Ollama 已经跑起来,并且模型名称和ollama list输出一致。假设你拉的是qwen2.5-coder:7b,那么配置里就写这个名称,不要凭记忆写qwen2.5。
{ "models": [ { "title": "Qwen2.5 Coder (Local Ollama)", "provider": "ollama", "model": "qwen2.5-coder:7b", "apiBase": "http://localhost:11434", "systemMessage": "You are an expert software developer. You give helpful and concise responses." }, { "title": "TaoToken GPT-4o", "provider": "openai", "model": "gpt-4o", "apiKey": "${env:TAOTOKEN_API_KEY}", "apiBase": "https://taotoken.net/api", "systemMessage": "You are an expert software developer. You give helpful and concise responses." } ], "tabAutocompleteModel": { "title": "Tab Autocomplete (Local)", "provider": "ollama", "model": "qwen2.5-coder:7b", "apiBase": "http://localhost:11434" }, "contextProviders": [ { "name": "code", "params": {} }, { "name": "docs", "params": {} }, { "name": "diff", "params": {} }, { "name": "terminal", "params": {} }, { "name": "problems", "params": {} }, { "name": "folder", "params": {} }, { "name": "codebase", "params": {} } ], "slashCommands": [ { "name": "share", "description": "Export the current chat session to markdown" }, { "name": "cmd", "description": "Generate a shell command" }, { "name": "commit", "description": "Generate a git commit message" } ] }几个关键点解释一下。models数组里第一个是本地 Ollama,apiBase指向http://localhost:11434,这是 Ollama 默认端口,如果你改过端口就同步改这里。第二个是 TaoToken 云端模型,provider必须是openai,因为 TaoToken 走的是 OpenAI 兼容协议,apiBase填https://taotoken.net/api,apiKey用环境变量引用,避免明文。
tabAutocompleteModel单独配置,因为代码补全对延迟敏感,用本地 Qwen2.5 更合适,不消耗云端额度。contextProviders决定了 Continue 能读取哪些上下文,codebase和folder对跨文件理解帮助最大,建议保留。slashCommands里的commit和cmd是高频操作,留着不碍事。
如果你用的是新版 Continue 的 YAML 配置,字段名基本一致,把 JSON 转成 YAML 缩进即可,apiBase和apiKey的写法不变。
4. 验证请求:让 Continue 真正跑起来
配置写完后,保存config.json,Continue 会自动重载。如果没重载,点 Continue 窗口右上角的齿轮图标,或者按Ctrl+Shift+P输入Continue: Reload手动触发。
验证分两步。第一步验证本地 Ollama 是否可达。在终端执行:
curl http://localhost:11434/api/tags如果返回一串 JSON,里面能看到qwen2.5-coder:7b,说明 Ollama 服务正常。如果报连接拒绝,说明 Ollama 没启动,执行ollama serve后再试。
第二步验证 Continue 对话。在 Vscode 里打开 Continue 侧边栏,模型下拉框应该能看到「Qwen2.5 Coder (Local Ollama)」和「TaoToken GPT-4o」两个选项。先选本地模型,在对话框输入:
用 Python 写一个读取 CSV 并统计每列空值数量的函数正常情况会在几秒内返回代码块。如果本地模型响应慢,属于正常现象,7B 模型在消费级显卡上首 token 延迟通常 1-3 秒。接着切换到 TaoToken 模型,输入同样的问题,应该能更快返回,且代码风格略有不同。这一步同时验证了本地链路和云端链路。
再测一下代码补全。在任意.py文件里输入def,停顿一下,应该出现灰色补全建议,按 Tab 接受。如果没出现,检查tabAutocompleteModel的apiBase是否和 Ollama 实际端口一致。
5. 本篇常见错排查
错误一:Continue 报ECONNREFUSED 127.0.0.1:11434。这是 Ollama 没启动或端口不对。先ollama serve,再ollama list确认模型存在。如果 Ollama 跑在 Docker 里,localhost在容器内指向容器自身,需要把apiBase改成宿主机的实际 IP,或者用host.docker.internal。
错误二:模型下拉框里只有本地模型,没有 TaoToken。检查provider是否写成了openai,apiBase是否是https://taotoken.net/api,apiKey环境变量是否真的在 Vscode 进程里可见。Vscode 启动时继承的是系统环境变量,如果你在.bashrc里 export 的,需要从终端启动 Vscode 才能读到。更稳妥的做法是直接在config.json里临时填明文 Key 测试,通了再换回环境变量。
错误三:TaoToken 返回 401。Key 复制时带了空格,或者 Key 已被吊销。去 API Keys 页面重新生成一个,注意复制完整字符串。另外确认apiBase没有多写/v1,Continue 的 openai provider 会自己拼/v1/chat/completions,你写https://taotoken.net/api就够了。
错误四:本地模型返回乱码或截断。多半是 Qwen2.5 的上下文长度设置问题。Ollama 默认num_ctx是 2048,对长文件不够。可以在 Ollama 的 Modelfile 里调大,或者启动时用ollama run qwen2.5-coder:7b --parameter num_ctx 8192。Continue 侧不用改,它只负责发请求。
错误五:代码补全不触发。检查tabAutocompleteModel是否配置,以及 Vscode 设置里continue.enableTabAutocomplete是否为 true。有些主题或快捷键冲突会拦截 Tab,换个快捷键试试。
6. 后续怎么用这套配置
日常写业务代码时,我习惯把 Continue 的默认模型设为本地 Qwen2.5,补全和简单问答走本地,零延迟零成本。遇到需要跨文件重构、写复杂 SQL、或者本地模型明显答偏的时候,手动在下拉框切到 TaoToken 的云端模型。切换动作在 Continue 窗口顶部,一次点击的事,不需要改配置文件。
如果你要长期跑 Agent 类任务,比如让 Continue 自动读多个文件并生成修改建议,建议把云端模型设为默认,本地模型只保留补全。因为 Agent 流程对推理深度要求高,本地小模型容易在中间步骤跑偏。TaoToken 的 Coding Plan 页面有针对这类场景的额度方案,可以去https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite看具体说明。
最后提醒一点:config.json里的apiKey如果用环境变量引用,记得在 Vscode 的settings.json里也确认没有覆盖。有些团队会统一推送 Vscode 配置,可能把 Continue 的配置路径改了。遇到配置不生效,先按Ctrl+Shift+P执行Continue: Open Config,确认你改的是 Continue 实际读取的那个文件。