1. 本地 ollama 跑 deepseek R1 的真实体验与 Continue 插件改造需求ollama 是一个把大模型权重、推理引擎、模型管理打包成一条命令的本地运行工具deepseek R1 是当前中文推理与代码补全表现都很能打的模型VSCode 里的 Continue 插件则是一个可以自由切换模型通道的编程助手。把这三者串起来你就能在本地跑一个不依赖外部网络的补全与对话环境同时把 Continue 的模型通道改成 TaoToken 统一 API兼顾本地推理和云端大模型切换。这套组合适合谁适合日常写代码想平替 Github Copilot、又不想被单一模型绑死的开发者尤其是手里有 16GB 以上内存、想先本地试水再决定要不要走 API 通道的人。我自己的场景是这样的主力机是 Linux平时写 Python 和前端Copilot 的补全确实顺手但遇到内网项目或者想换模型对比输出时就不太灵活。于是我先用 ollama 把 deepseek R1 拉下来跑通确认本地推理没问题再把 Continue 的 config.json 改成双通道——本地 ollama 负责离线补全TaoToken 的 API 通道负责需要更强模型时的对话和复杂重构。这样一套配置下来Continue 里既能选本地模型也能选云端模型切换只改一个字段。这里要先说清楚一个边界ollama 负责的是本地模型运行Continue 负责的是编辑器里的交互层TaoToken 负责的是统一 API 通道和 Key 管理。三者职责不重叠配置时不要混在一起改。很多人第一次配 Continue 失败就是因为把 ollama 的地址填到了云端通道里或者把 API Key 填到了本地模型配置里。下面我会按安装、部署、配置、验证、排错的顺序把每一步的命令和参数都写清楚你跟着做就能复现。热词里提到的 Github Copilot 平替核心不是功能一模一样而是补全和对话这两个高频动作能不能稳定跑起来。Continue 的补全走的是 inline completion对话走的是 chat 面板两者在 config.json 里是分开配置的。你可以在 models 数组里放多个模型每个模型指定 provider、model、apiBase 等字段。本地 ollama 的 provider 是 ollama云端 TaoToken 的 provider 用 openai 兼容格式即可。理解这一点后面的配置就不会乱。2. TaoToken 前置准备统一 Key 与 API 通道的 Base URL 填写位置在改 Continue 的 config.json 之前先把 TaoToken 这边的 Key 和 Base URL 准备好。TaoToken 的官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址后面不加任何 UTM 参数直接填这个就行。你需要先去控制台创建一个 API Key控制台入口在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建完把 Key 复制出来后面填到 config.json 的 apiKey 字段里。模型 ID 这块要特别注意Continue 的 config.json 里 model 字段填的是模型标识不是随便写个名字就行。你可以先去模型对话页面确认一下当前可用的模型 ID入口是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 页面上会列出模型名称和对应的 ID。如果你打算长期用 Continue 做编码和 Agent 任务可以看一下 Coding Plan 的说明入口是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 里面会讲清楚额度、模型范围和适用场景。API Key 的管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 你可以在这里创建、删除、查看 Key 的使用情况。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面会给出 Base URL、鉴权方式、请求格式的完整说明。如果你用的是 Claude Code 这类工具可以参考 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentClaudeCodeAnthropicutm_campaignrewrite 这个页面里面有针对 Anthropic 协议的配置说明。不过本篇的重点是 Continue 插件所以 Claude Code 的部分你按需查看即可。这里要强调一个常见误区TaoToken 的 Base URL 是 https://taotoken.net/api 不是 https://taotoken.net/api/v1 也不是带斜杠结尾的地址。Continue 的 config.json 里 apiBase 字段填这个地址provider 用 openai 兼容格式。如果你填成别的路径请求会返回 404 或者 401。Key 的格式通常是一串以特定前缀开头的字符串复制时不要带空格也不要手动换行。填完之后先别急着重启插件下一节我会给出完整的 config.json 片段你对照着改。另外TaoToken 的 Key 是统一管理多个模型的也就是说你不需要为每个模型单独申请 Key。一个 Key 可以在 config.json 里被多个模型条目复用只要 model 字段不同就行。这一点比某些平台要方便配置时不用来回切换。如果你之前用过其他平台的 Key注意不要混用Base URL 和 Key 要配套否则会出现鉴权失败。3. Continue 的 config.json 可复制片段与 ollama 本地模型配置Continue 插件的配置文件路径在 VSCode 里可以通过命令面板打开具体操作是按 CtrlShiftPmacOS 是 CmdShiftP输入 Continue: Open Config回车后会打开 config.json。这个文件默认在用户目录下的 .continue 文件夹里Linux 和 macOS 是 ~/.continue/config.jsonWindows 是 C:\Users\你的用户名.continue\config.json。你也可以直接在 VSCode 设置里找到 Continue 的配置入口点击 Open configuration file 按钮。下面是一份可以直接参考的 config.json 片段包含本地 ollama 的 deepseek R1 和 TaoToken 的云端通道两部分。注意 JSON 格式不能有注释字段名和值都要用双引号。你复制后把 apiKey 换成自己的 Keymodel 换成自己确认过的模型 ID。{ models: [ { title: DeepSeek R1 Local, provider: ollama, model: deepseek-r1:7b, apiBase: http://localhost:11434 }, { title: TaoToken GPT, provider: openai, model: gpt-4o-mini, apiKey: 你的TaoToken Key, apiBase: https://taotoken.net/api } ], tabAutocompleteModel: { title: DeepSeek R1 Local Autocomplete, provider: ollama, model: deepseek-r1:7b, apiBase: http://localhost:11434 }, embeddingsProvider: { provider: ollama, model: nomic-embed-text, apiBase: http://localhost:11434 } }这份配置里models 数组定义了两个模型第一个是本地 ollama 的 deepseek R1第二个是 TaoToken 的云端模型。tabAutocompleteModel 单独指定了补全用的模型这里我用了本地的 deepseek R1因为补全对延迟敏感本地跑更快。embeddingsProvider 是代码索引用的嵌入模型如果你没装 nomic-embed-text可以先用 ollama pull nomic-embed-text 拉下来或者暂时删掉这个字段不影响基本补全和对话。关于 ollama 的 apiBase默认是 http://localhost:11434 如果你改过 ollama 的监听端口这里要同步改。Windows 下如果 ollama 装在 C 盘默认也是这个地址不需要额外配置。model 字段填的是 ollama 里的模型名你可以先在终端执行 ollama list 确认一下输出里 NAME 那一列就是模型名比如 deepseek-r1:7b 或者 deepseek-r1:1.5b。如果你拉的是其他尺寸把 model 字段改成对应的名字即可。TaoToken 的 provider 填 openai这是 Continue 支持的兼容格式。apiBase 填 https://taotoken.net/api apiKey 填你在控制台创建的 Key。model 字段填模型 ID比如 gpt-4o-mini 或者你在模型对话页面确认过的其他 ID。如果你要用 Claude 系列模型provider 可以改成 anthropicapiBase 同样填 https://taotoken.net/api 具体可以参考接入文档里的说明。配置改完后保存文件Continue 会自动重载如果没有重载手动重启 VSCode 或者执行 Continue: Reload 命令。这里有一个细节要注意Continue 的 config.json 里models 数组的顺序会影响模型选择器里的显示顺序但不影响功能。tabAutocompleteModel 是独立配置的如果你想让补全也用云端模型把 provider 改成 openaiapiBase 和 apiKey 填 TaoToken 的即可。不过补全请求频率高用云端模型会产生较多调用建议先用本地模型试确认效果后再决定要不要切云端。4. 验证请求与成功结果补全和对话是否生效的具体动作配置改完后先验证本地 ollama 是否正常。打开终端执行 ollama list确认 deepseek R1 的模型名和大小写一致。然后执行 ollama run deepseek-r1:7b进入交互模式后输入一句测试比如“写一个 Python 快速排序”看是否能正常输出。如果能输出说明本地模型没问题。退出交互模式按 CtrlD 或者输入 /bye。这一步很关键因为 Continue 调用 ollama 走的是 HTTP 接口如果 ollama 服务没起来Continue 会报连接失败。接着验证 Continue 的补全。在 VSCode 里新建一个 Python 文件输入 def 然后停顿一下看是否有灰色的补全建议出现。如果没有检查右下角 Continue 的状态图标点击后看模型选择器里是否选中了 tabAutocompleteModel 对应的模型。你也可以手动触发补全按 CtrlShiftSpacemacOS 是 CmdShiftSpace看是否弹出建议。如果补全出现但内容不对可能是模型太小换成 7b 或更大的版本再试。然后验证对话。按 CtrlShiftP 打开命令面板输入 Continue: Open Chat回车后打开对话面板。在输入框里输入“解释一下这段代码”选中一段代码后发送看是否返回结果。如果返回的是错误信息先看错误类型。如果是 401说明 TaoToken 的 Key 不对或者没填如果是连接超时说明 apiBase 填错了或者网络不通如果是 model not found说明 model 字段填的模型 ID 不对。你可以对照接入文档里的模型列表确认。验证 TaoToken 通道时可以单独在终端用 curl 测试一下。命令如下curl -X POST https://taotoken.net/api/chat/completions \ -H Authorization: Bearer 你的TaoToken Key \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 你好}] }如果返回 JSON 里有 choices 字段说明 Key 和 Base URL 都没问题。如果返回 401检查 Key 是否复制完整如果返回 404检查 Base URL 是否多了或少了路径。这个 curl 测试能帮你快速定位是配置问题还是网络问题。测试通过后回到 Continue 的对话面板再试一次应该就能正常返回了。最后验证模型切换。在 Continue 的对话面板顶部有一个模型选择下拉框点击后应该能看到 models 数组里定义的两个模型。切换到本地模型问一个简单问题看是否走本地推理切换到 TaoToken 模型再问一次看是否走云端。如果切换后报错检查对应模型的 provider、apiBase、apiKey 是否填对。这一步验证通过说明你的 Continue 已经同时支持本地和云端两条通道了。5. 本篇常见错误排查401、local proxy failed、reading choices、OAuth第一个常见错误是 401 Unauthorized。这个错误通常出现在 TaoToken 通道上原因是 apiKey 填错、Key 被删除、或者 Key 前面多了空格。排查方法是打开 config.json检查 apiKey 字段的值是否和 TaoToken 控制台里的一致。注意不要手动换行也不要在 Key 前后加引号以外的字符。如果确认 Key 没问题再检查 apiBase 是否填成了 https://taotoken.net/api 不要填成其他路径。改完后保存文件重启 Continue 再试。第二个常见错误是 local proxy failed 或者 connection refused。这个错误通常出现在本地 ollama 通道上原因是 ollama 服务没启动或者 apiBase 填的端口不对。排查方法是打开终端执行 ollama list如果报错说明 ollama 没装好或者没启动。Linux 下可以用 systemctl status ollama 查看服务状态Windows 下检查托盘图标是否在运行。如果 ollama 正常运行再检查 config.json 里的 apiBase 是否是 http://localhost:11434 如果你改过端口这里要同步改。第三个常见错误是 reading choices 相关的报错比如 cannot read property choices of undefined。这个错误通常是因为返回的 JSON 结构不符合预期原因可能是 model 字段填了一个不存在的模型 ID或者 provider 和 apiBase 不匹配。排查方法是先用 curl 测试一下看返回的 JSON 里有没有 choices 字段。如果没有说明请求本身失败了看返回的错误信息。如果 curl 正常但 Continue 报错检查 config.json 里对应模型的 provider 是否填对TaoToken 通道用 openai本地 ollama 用 ollama。第四个常见错误是 OAuth 相关的报错比如 OAuth token expired 或者 unauthorized client。这个错误通常出现在你之前用过其他插件的 OAuth 登录残留的凭证和当前配置冲突。排查方法是检查 VSCode 的设置里是否有其他 AI 插件的残留配置尤其是那些用 OAuth 登录的。你可以先在 VSCode 里禁用其他 AI 插件只保留 Continue然后重启 VSCode。如果问题依旧检查 Continue 的设置里是否有 OAuth 相关的字段删掉后重新配置。除了这四个还有一个容易忽略的问题是模型名大小写。ollama 的模型名是区分大小写的deepseek-r1:7b 和 DeepSeek-R1:7b 可能被当成两个不同的模型。排查方法是执行 ollama list把 NAME 那一列的值原样复制到 config.json 的 model 字段里。TaoToken 的模型 ID 同样要区分大小写建议从模型对话页面直接复制。改完后保存重启 Continue再测试补全和对话。如果以上都排查完还是不行可以看一下 Continue 的输出日志。在 VSCode 里打开输出面板选择 Continue 频道里面会打印请求的详细信息和错误堆栈。根据日志里的 URL 和状态码能更快定位问题。比如日志里显示请求的是 http://localhost:11434/api/chat但返回 404说明 ollama 的接口路径变了需要升级 ollama 或者改配置。日志是排查问题最直接的依据建议养成看日志的习惯。6. 长期使用建议与 TaoToken 通道的接入文档入口配置跑通之后日常使用中有几个点可以优化。第一是补全模型的选择如果你觉得本地 deepseek R1 的补全速度不够快可以换成更小的模型比如 deepseek-r1:1.5b或者用专门的补全模型。第二是对话模型的选择复杂重构和长上下文任务建议用 TaoToken 通道的云端模型响应质量和上下文长度都更有保障。第三是定期检查 ollama 和 Continue 的版本新版本通常会修复一些兼容性问题。如果你打算把 Continue 用在团队协作或者长期项目里建议把 config.json 纳入版本管理但注意不要把 apiKey 明文提交。你可以用环境变量替换 apiKey 字段Continue 支持从环境变量读取。具体做法是在 config.json 里写 apiKey: ${TAOTOKEN_API_KEY}然后在系统环境变量里设置 TAOTOKEN_API_KEY 的值。这样配置文件可以共享Key 不会泄露。TaoToken 的 API Key 管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 你可以在这里定期轮换 Key。接入文档是遇到问题时最应该先看的地方入口是 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面会给出 Base URL、鉴权方式、请求格式、错误码的完整说明。如果你用的是 Claude Code 或者 Anthropic 协议的工具可以参考 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentClaudeCodeAnthropicutm_campaignrewrite 。模型对话页面在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 你可以在这里快速测试模型是否可用。Coding Plan 的说明在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 适合需要长期编码和 Agent 任务的场景。最后说一个实际经验Continue 的 config.json 改动后有时候不会立即生效尤其是 tabAutocompleteModel 的改动。这时候可以执行 Continue: Reload 命令或者直接重启 VSCode。如果补全还是不生效检查一下 VSCode 的设置里是否禁用了 inline suggestion有些主题或者插件会冲突。另外ollama 的模型加载需要时间第一次请求可能会慢几秒之后会快很多。如果你用的是机械硬盘建议把模型放在 SSD 上加载速度会明显提升。这套配置的核心思路是把本地推理和云端 API 分开管理本地负责低延迟补全云端负责高质量对话。你不需要一次性把所有模型都配好先跑通一个本地模型和一个云端模型确认补全和对话都能用再按需增加。配置过程中遇到报错优先看 Continue 的输出日志和 TaoToken 的接入文档大部分问题都能在里面找到答案。