1. Copilot 换成本地模型卡在哪一步Copilot 能换成本地吗能而且换完之后你的代码补全、对话问答、仓库级检索都可以跑在自己的机器上敏感代码不出内网。但真正动手时多数人会卡在三个地方一是本地模型跑起来了VS Code 里却连不上二是每个插件都要单独填一遍 API 地址和 Key换台机器就得重配三是补全延迟高、上下文短用两天就退回 Copilot。这篇聚焦一个更省事的思路用 TaoToken 作为统一的 Key/API 通道把本地大模型和云端模型都收敛到同一套配置里再通过 VS Code 的 Continue 插件接入。这样你只需要维护一份 settings.json 骨架本地模型走本地地址需要更强推理时切到统一通道不用在多个插件之间反复粘贴 Key。适合谁看已经装过 Ollama 或准备装、想把 Copilot 替换掉、又不想被一堆 API Key 管理拖住的开发者。下面从环境准备讲到可复制的配置、连通性验证再到常见报错排查每一步都能直接跟做。2. 前置准备本地引擎与统一 Key 通道2.1 本地模型引擎先跑起来本地大模型需要一个推理引擎Ollama 是目前上手成本最低的选择。安装完成后终端执行拉取命令按你的内存选模型# 8GB-16GB 内存7B 级别代码模型性价比高 ollama run qwen2.5-coder:7b # 24GB 以上显存可以上更大的参数 ollama run qwen2.5-coder:14b拉取完成后Ollama 默认在http://localhost:11434提供服务这就是你的本地推理端点。先用一条命令确认它活着curl http://localhost:11434/api/tags返回模型列表就说明本地引擎没问题。这一步很关键因为后面 VS Code 连不上时要先排除是引擎没起还是配置写错。2.2 统一 Key 通道解决什么问题本地模型不需要 Key但实际开发里你往往还要用云端模型补足复杂推理。如果每个插件、每台机器都单独配一遍Key 散落各处轮换和审计都很麻烦。TaoToken 的作用是把这些调用收敛到一个统一入口本地模型继续走localhost云端模型走统一 API 地址插件侧只认一套配置格式。先到控制台创建 Key入口在这里https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole创建后复制出来形如sk-开头的一串字符。API 基础地址统一用https://taotoken.net/api注意这个地址不带任何查询参数直接填在配置的apiBase字段里。Key 的管理页面在 API Keys 区域后续要轮换或查看用量都从这里进https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys注意Key 只放在本地配置文件或环境变量里不要提交到 Git 仓库。建议把 Continue 的配置文件加入.gitignore。3. 可复制配置settings.json 与 Continue 骨架3.1 安装 Continue 插件在 VS Code 扩展市场搜索 Continue 安装。它开源、支持多模型后端是目前替代 Copilot 比较成熟的方案。安装后侧边栏会出现 Continue 图标点开设置会生成一个配置文件通常在用户目录下的.continue/config.json新版也可能叫config.yaml。VS Code 自身的settings.json主要用来控制编辑器行为比如是否禁用内置 Copilot 补全、是否开启内联建议。两者配合使用下面分别给出骨架。3.2 VS Code settings.json 关键项打开命令面板输入Preferences: Open User Settings (JSON)加入以下配置先把内置 Copilot 的补全关掉避免和本地模型打架{ github.copilot.enable: { *: false, plaintext: false, markdown: false }, editor.inlineSuggest.enabled: true, editor.quickSuggestions: { other: true, comments: false, strings: true }, continue.enableTabAutocomplete: true }editor.inlineSuggest.enabled保持开启因为 Continue 的补全也是以内联建议形式呈现的。关掉 Copilot 只是停用它自己的请求不影响其他插件。3.3 Continue 配置骨架本地 统一通道下面是核心配置把本地 Ollama 模型和统一通道的云端模型放在同一个models数组里切换时只改model字段{ models: [ { title: Local Qwen2.5 Coder 7B, provider: ollama, model: qwen2.5-coder:7b, apiBase: http://localhost:11434 }, { title: TaoToken Unified, provider: openai, model: claude-3-5-sonnet, apiKey: sk-你的Key, apiBase: https://taotoken.net/api } ], tabAutocompleteModel: { title: Local Tab Autocomplete, provider: ollama, model: qwen2.5-coder:7b, apiBase: http://localhost:11434 }, embeddingsProvider: { provider: ollama, model: nomic-embed-text, apiBase: http://localhost:11434 }, contextProviders: [ { name: code, params: {} }, { name: diff, params: {} }, { name: codebase, params: {} } ] }几个字段说明tabAutocompleteModel专门管 Tab 补全指向本地模型保证零延迟embeddingsProvider负责代码库索引需要额外拉一个嵌入模型ollama pull nomic-embed-textcontextProviders里的codebase就是仓库级检索能力配合本地索引问问题时它会先搜你的代码再交给模型。3.4 参数对照表配置项本地模型统一通道providerollamaopenai 兼容apiBasehttp://localhost:11434https://taotoken.net/apiapiKey不需要sk- 开头 Key适用场景Tab 补全、隐私代码复杂重构、架构设计延迟毫秒级本地取决于网络4. 验证请求与成功结果4.1 先验证本地端点配置写完后不要急着在编辑器里试先用命令行确认本地模型能正常返回curl http://localhost:11434/api/generate -d { model: qwen2.5-coder:7b, prompt: 写一个 Python 快速排序函数, stream: false }返回 JSON 里response字段有代码内容说明本地链路通。4.2 验证统一通道再用一条请求确认统一通道的 Key 和地址可用curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet, messages: [{role: user, content: 回复 ok}] }返回结构里有choices字段即表示通道正常。如果这里报 401多半是 Key 复制时带了空格报 404 则检查apiBase是否多写了/v1后缀配置里只填到/api。4.3 在编辑器里做端到端测试回到 VS Code打开 Continue 侧边栏在模型下拉里选中Local Qwen2.5 Coder 7B输入一句「解释当前文件的作用」。如果它开始流式输出说明插件到本地引擎的链路完整。接着测试 Tab 补全新建一个.py文件输入def calculate_停顿一秒看是否出现灰色内联建议。有建议且按 Tab 能接受补全就通了。最后测仓库级检索在对话框输入Codebase 这个项目的入口函数在哪它会先建索引再回答。首次建索引会花一点时间取决于仓库大小。5. 本篇常见错排查5.1 补全不出现或一直转圈先看 Ollama 进程是否还在curl http://localhost:11434/api/tags有没有响应。如果引擎正常检查 Continue 配置里tabAutocompleteModel的apiBase是否写成了https本地服务是http写错会静默失败。另一个高频原因是模型名不匹配。ollama list看实际拉下来的名字配置里的model字段必须和它完全一致包括:7b这样的标签。5.2 统一通道报 401 或 403Key 失效或权限不足。到 API Keys 页面重新生成一个替换配置里的apiKey。注意 JSON 里字符串不能有换行粘贴时容易带上不可见字符建议手动敲一遍前缀再粘贴后半段。5.3 内存溢出、VS Code 卡死本地模型吃内存很凶。8GB 内存跑 7B 模型已经是上限再大就会触发交换分区整个编辑器卡住。判断方法任务管理器看 Ollama 进程内存占用接近物理内存上限就换更小的模型。另外.continueignore要配好把node_modules、dist、二进制文件排除否则索引阶段会拖垮机器node_modules/ dist/ build/ *.log *.bin5.4 补全结果和项目风格不符本地模型看不到全局代码时会瞎猜。确认embeddingsProvider已配置且索引已建完再在提问时用Codebase显式带上仓库上下文。索引没建完就提问等于让模型闭卷考试。6. 后续怎么用分流与长期配置日常写业务逻辑Tab 补全和简单问答交给本地 7B 模型零延迟、不花钱、代码不出机器。遇到复杂重构、跨文件架构设计在 Continue 下拉里切到统一通道的模型用完再切回来。这种混合策略比追求 100% 本地化更实际既保住了隐私底线又不牺牲复杂任务的完成度。如果你打算长期把编码助手跑在本地建议把 Continue 配置纳入 dotfiles 管理Key 用环境变量注入而不是硬编码。需要更系统的接入说明可以看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc想把模型对话能力单独拿出来调试用模型对话页面直接试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat如果你的工作流已经偏向 Agent 式长任务编码Coding Plan 提供了更贴合这种场景的额度与配置方式https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan配置这件事第一次跑通最费时间之后就是复制粘贴。把这份 settings.json 骨架存好换机器时改一下 Key 就能复用。
