VSCode + ollama + DeepSeek 低成本代码编辑器:把 Continue 的 Base URL 改到 TaoToken 1. 为什么要在 VSCode 里同时挂 ollama 和 DeepSeek很多人第一次配 Continue 的时候都会遇到一个尴尬局面本地 ollama 跑着deepseek-r1:8b补全速度还行但一遇到复杂重构就明显吃力想切到云端 DeepSeek 吧又得单独去官网开 Key、改配置、重启插件来回折腾。更麻烦的是Continue 的config.json里每个模型都要写一遍apiKey和provider模型一多配置文件就变成一坨复制粘贴。我自己的做法是把 Continue 当成一个「模型路由器」本地 ollama 负责日常 Tab 补全和轻量问答云端 DeepSeek 负责长上下文重构和代码解释而所有云端请求统一走一个兼容 OpenAI 协议的通道。这样配置文件里只需要维护一份 Base URL 和一份 Key换模型只改model字段不用动其他东西。这篇就按这个思路来先装 Continue再配 ollama 本地模型然后把云端 DeepSeek 的 Base URL 改到 TaoToken 统一通道最后用一次补全请求验证连通性和生成效果。全程在 VSCode 里完成不需要额外装客户端。适合谁看已经在用 VSCode 写代码、想低成本搭一套「本地云端」双模型代码编辑器的人或者你之前配过 Continue但被config.json里一堆 provider 搞晕了想找个更省事的接法。核心检索词先摆出来VSCode ollama DeepSeek Continue 低成本代码编辑器本质就是用 Continue 插件把本地模型和云端模型串起来本地负责快、云端负责强Base URL 统一后维护成本最低。2. 前置准备ollama 拉模型与 TaoToken 通道2.1 先把 ollama 跑起来ollama 的安装不复杂官网下载对应系统版本装完在终端确认一下ollama --version然后拉两个常用尺寸的 DeepSeek 蒸馏模型。8B 适合补全14B 适合问答显存够就都拉ollama pull deepseek-r1:8b ollama pull deepseek-r1:14b拉完用ollama list看一眼模型名要和后面config.json里的model字段完全一致大小写、冒号都不能错。这一步踩过的坑是有人写deepseek-r1但实际拉的是deepseek-r1:8bContinue 会报模型找不到。ollama 默认监听http://localhost:11434Continue 的 ollama provider 会自动识别这个地址一般不用手动填。如果你改过端口记得在配置里补apiBase。2.2 TaoToken 通道准备云端这部分我用 TaoToken 作为统一入口。它兼容 OpenAI 的/v1/chat/completions协议所以 Continue 里可以直接用openai这个 provider把apiBase指过去就行。先去控制台拿 Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole创建完 Key 复制保存页面关掉就不再显示。然后确认一下你要用的模型 IDDeepSeek 系列在模型列表里能看到比如deepseek-chat、deepseek-coder这类。模型对话页面可以先手动发一条消息确认通道本身是通的https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel_chatAPI 文档在这里配置字段有疑问可以对照https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc如果你后面要长期跑 Agent 或大量补全可以看下 Coding Plan比按量更省心https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_planKey 管理页在这里方便你随时轮换https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keysBase URL 统一用https://taotoken.net/api注意这个地址不带任何查询参数直接填在 Continue 的apiBase里。3. Continue 的 config.json 可复制配置3.1 装插件并打开配置文件VSCode 扩展面板搜Continue安装后侧边栏会出现 Continue 图标。点开右上角齿轮进入设置或者直接点「Add Chat model」它会引导你生成config.json。配置文件路径一般在~/.continue/config.jsonWindows 下是C:\Users\你的用户名\.continue\config.json。这个文件是 Continue 的核心所有模型、补全、上下文提供者都在这里定义。3.2 完整可复制片段下面这份是我实测能跑的配置本地 ollama 两个模型 云端 DeepSeek 走 TaoToken 通道。把apiKey换成你自己的{ models: [ { title: 本地 DeepSeek R1 8B, model: deepseek-r1:8b, provider: ollama, apiBase: http://localhost:11434 }, { title: 本地 DeepSeek R1 14B, model: deepseek-r1:14b, provider: ollama, apiBase: http://localhost:11434 }, { title: DeepSeek 云端 Coder, model: deepseek-coder, provider: openai, apiBase: https://taotoken.net/api, apiKey: 你的 TaoToken Key, contextLength: 128000 } ], tabAutocompleteModel: { title: 本地 DeepSeek R1 8B 补全, model: deepseek-r1:8b, provider: ollama, 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: 导出当前会话为 markdown }, { name: cmd, description: 生成 shell 命令 }, { name: commit, description: 生成 git commit message } ], allowAnonymousTelemetry: false }几个关键点解释一下。provider写openai而不是deepseek是因为 TaoToken 兼容 OpenAI 协议用openaiprovider 最稳字段名也统一。apiBase填https://taotoken.net/apiContinue 会自动拼/v1/chat/completions。tabAutocompleteModel我单独抽出来指向本地 8B因为补全请求频率高走本地不消耗云端额度延迟也低。如果你机器性能一般可以把补全也指到云端但那样每次敲键盘都会发请求成本会上去。contextLength给云端模型设 128000Continue 会按这个长度做上下文裁剪。本地模型不用设ollama 自己管。3.3 模型 ID 对照用途providermodelapiBase本地补全ollamadeepseek-r1:8bhttp://localhost:11434本地问答ollamadeepseek-r1:14bhttp://localhost:11434云端重构openaideepseek-coderhttps://taotoken.net/api改完保存Continue 会自动重载配置。侧边栏模型下拉里应该能看到三个选项切换即可。4. 验证请求一次补全看连通与生成4.1 先验证云端通道打开 Continue 对话框模型选「DeepSeek 云端 Coder」输入一句用 Python 写一个快速排序要求带类型注解和单元测试如果配置正确几秒内会返回完整代码。这一步验证的是 Base URL、Key、模型 ID 三件套是否对齐。返回内容里应该有def quick_sort(arr: list[int]) - list[int]:这样的签名。如果没返回先看 Continue 输出面板的日志常见的是 401 或 model not found。4.2 验证本地补全新建一个.py文件输入def fibonacci(n):停一下等 Continue 的 Tab 补全触发。本地 8B 应该会补出递归或迭代实现。按 Tab 接受。这一步验证 ollama 是否在跑、模型名是否匹配。如果补全不出来终端执行ollama list确认模型存在再curl http://localhost:11434/api/tags看服务是否响应。4.3 验证上下文引用在对话框里输入codebase然后问codebase 这个项目里有哪些地方用了 requests 库Continue 会扫描工作区把相关文件片段拼进上下文再发给模型。云端模型上下文长适合这种跨文件检索。本地模型也能做但 8B 在长上下文下容易丢信息。实测下来云端 DeepSeek 在 128k 上下文下回答跨文件问题比较稳本地 14B 适合单文件内的解释和重构。5. 常见报错排查5.1 401 Unauthorized日志里出现Error: 401 Unauthorized原因通常是 Key 没填、填错或者apiBase写成了带/v1的地址导致路径重复。检查config.json里apiKey字段确认没有多余空格。TaoToken 的 Base URL 就是https://taotoken.net/api不要再加/v1。5.2 local proxy failed / connection refusedError: local proxy failed: dial tcp 127.0.0.1:11434: connect: connection refused这是 ollama 没启动。终端执行ollama serve或确认 ollama 后台进程在跑。Windows 下 ollama 装完一般自启Mac 下需要手动开一次。5.3 reading choices: unexpected end of JSONError: reading choices: unexpected end of JSON input这个多半是模型返回了空响应或流式中断。先确认模型 ID 在 TaoToken 模型列表里存在再检查contextLength是否设得过大导致请求被截断。把contextLength降到 64000 试试。5.4 OAuth / 登录态问题如果你之前用 Continue 登录过官方账号配置里可能残留 OAuth 相关字段和自定义apiBase冲突。解决办法是清掉~/.continue下的缓存重新生成config.json只保留上面那份手动配置。5.5 模型名不匹配Error: model deepseek-r1 not foundollama 的模型名必须和ollama list输出完全一致。deepseek-r1:8b和deepseek-r1是两个不同 tag写错就找不到。6. 后续怎么用更顺手配置跑通之后日常使用有几个小技巧。补全走本地问答走云端这是成本最低的分工。你可以在 Continue 设置里把tabAutocompleteModel固定成本地 8B对话框默认选云端 Coder需要离线时再手动切回本地 14B。codebase和docs这两个上下文提供者很实用。前者扫工作区后者可以挂官方文档 URL比如把 Python 官方文档挂上去问 API 用法时模型会优先引用。如果你要接 Claude Code 或做更重的 Agent 任务TaoToken 的接入文档里有对应说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdocClaude Code 相关入口https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude_code最后提醒一句config.json改完一定要保存并等 Continue 重载有时候 VSCode 窗口需要重新聚焦才会触发。如果模型下拉没更新命令面板执行Continue: Reload Config强制刷新。