
1. 本地代码补全基准为什么要在 VS Code Remote-SSH 里跑 Ollama代码补全这件事最怕的不是模型不够强而是你没法判断它到底强不强。同一个函数今天补得顺明天换个项目就拉胯你很难说清是模型问题、prompt 问题还是网络抖动。所以我一直想搭一套可复现的补全基准固定模型、固定 prompt、固定用例把首 token 延迟和补全通过率记下来横向对比不同模型和不同 endpoint。这套方案的核心是三个东西Ollama 负责在本地或远程开发机上跑 deepseek-coderContinue 作为 VS Code 插件负责把补全请求发出去Remote-SSH 让你在远程开发机上跑同一组用例。这样做的价值在于你的评测环境是隔离的不会因为本地机器性能差异导致结果不可比。Ollama 的模型拉取和推理都在远程机器上VS Code 只负责发请求和展示结果首 token 延迟测的是真实链路。适合谁如果你正在选代码补全模型或者想验证某个 endpoint 的补全质量这套流程可以直接跟做。deepseek-coder 系列在代码补全上表现稳定6.7b 适合快速验证33b 适合追求质量v2 则在两者之间找平衡。Continue 的配置文件可以随时切换模型不用改代码。Remote-SSH 则保证你在远程开发机上跑用例时环境变量、模型路径、端口都一致。我试过在本地笔记本上直接跑 Ollama结果 33b 模型加载就吃掉大半内存补全延迟高得没法用。后来把模型放到远程开发机本地只跑 VS Code 和 Continue延迟立刻降下来。所以这套基准的关键不是模型本身而是把推理和编辑分离让评测可复现。2. TaoToken 前置把 endpoint 抽象成可切换的配置项在搭基准之前先想清楚一件事你的补全请求最终发到哪里。Ollama 本地推理是一个 endpointTaoToken 的 API 是另一个 endpoint。Continue 的配置里provider 和 model 决定了请求走向。如果你只测本地 Ollama那配置很简单但如果你想做对照验证就需要把 endpoint 抽象出来方便切换。TaoToken 在这里的角色是提供一个可对照的 API endpoint。它的 API 地址是 https://taotoken.net/api你可以在 Continue 的配置里把它写成 openai 兼容的 provider。这样同一组用例你可以先跑 Ollama 本地再跑 TaoToken对比首 token 延迟和补全通过率。注意TaoToken 不是替代 Ollama而是作为另一个可选的推理后端让你在评测时有参照系。前置准备包括一个远程开发机或者本地机器也行但远程更接近真实开发环境Ollama 已安装Continue 插件已装好以及一个 TaoToken 的 API Key。API Key 可以在 https://taotoken.net/api-keys 获取拿到后先存好后面配置里要用。如果你还没决定用哪个模型可以先从 deepseek-coder:6.7b 开始体积小、加载快适合跑通流程。这里要提醒一点Ollama 默认监听 127.0.0.1:11434如果你在远程开发机上跑VS Code 通过 Remote-SSH 连接后Continue 发出的请求需要能访问到这个端口。通常 Remote-SSH 会自动做端口转发但如果你改了 Ollama 的监听地址就要确保 Continue 配置里的 endpoint 和实际一致。TaoToken 的 endpoint 则是公网地址不需要端口转发但需要 API Key 鉴权。3. 可复制配置Continue config.json Ollama 拉取命令 固定 prompt 模板这一节直接给可复制的配置。先看 Ollama 的模型拉取命令。在远程开发机上执行# 拉取 deepseek-coder 6.7b适合快速验证 ollama pull deepseek-coder:6.7b # 拉取 deepseek-coder-v2平衡质量和速度 ollama pull deepseek-coder-v2:latest # 如果需要更高精度可以拉 33b但显存要求高 ollama pull deepseek-coder:33b-instruct-fp16拉取完成后用ollama list确认模型存在。然后启动 Ollama 服务注意模型存储路径避免默认路径空间不足export OLLAMA_MODELS/root/autodl-tmp/models/ollama export OLLAMA_FLASH_ATTENTION1 export OLLAMA_NUM_PARALLEL16 export OLLAMA_MAX_LOADED_MODELS1 nohup ollama serve /root/autodl-tmp/log.ollama.log 21 接下来是 Continue 的配置文件。在 VS Code 中Continue 的配置文件通常位于~/.continue/config.json。下面是一个可复制的片段同时包含 Ollama 本地和 TaoToken 两个 provider{ models: [ { title: deepseek-coder-6.7b (Ollama), provider: ollama, model: deepseek-coder:6.7b, apiBase: http://127.0.0.1:11434 }, { title: deepseek-coder-v2 (Ollama), provider: ollama, model: deepseek-coder-v2:latest, apiBase: http://127.0.0.1:11434 }, { title: deepseek-coder (TaoToken), provider: openai, model: deepseek-coder, apiKey: 你的_TaoToken_API_Key, apiBase: https://taotoken.net/api } ], tabAutocompleteModel: { title: deepseek-coder-6.7b (Ollama), provider: ollama, model: deepseek-coder:6.7b, apiBase: http://127.0.0.1:11434 }, tabAutocompleteOptions: { maxPromptTokens: 1024, debounceDelay: 300 } }注意tabAutocompleteModel是控制 Tab 补全的模型models列表里的模型用于聊天和编辑。如果你只想测补全重点配置tabAutocompleteModel。TaoToken 的 provider 写成openai因为它是 OpenAI 兼容接口apiBase填https://taotoken.net/apiapiKey填你申请到的 Key。固定 prompt 模板方面Continue 的补全 prompt 是自动生成的但你可以通过tabAutocompleteOptions控制上下文长度和延迟。为了可复现建议固定maxPromptTokens和debounceDelay这样每次补全的输入条件一致。如果你要测聊天式续写可以在 Continue 的聊天窗口里用固定 prompt比如请根据以下代码上下文补全下一个函数。只输出代码不要解释。 上下文 def calculate_total(items): total 0 for item in items: total item.price return total def apply_discount(total, discount_rate):这个 prompt 模板可以保存成文件每次评测时粘贴使用。关键是保持上下文和指令一致这样不同模型的结果才有可比性。4. 验证请求记录首 token 延迟与补全通过率配置完成后先做一次验证请求。在 VS Code 里打开一个 Python 文件输入部分代码看 Continue 是否触发补全。如果没反应检查 Ollama 服务是否在跑以及 Continue 的日志。你可以打开 Continue 的输出面板看请求是否发到了http://127.0.0.1:11434。首 token 延迟的测量最直接的方法是在 Continue 的日志里看时间戳。但更可控的方式是用 curl 直接请求 Ollama 的 API记录从发送到收到第一个 token 的时间。比如time curl -s http://127.0.0.1:11434/api/generate -d { model: deepseek-coder:6.7b, prompt: def calculate_total(items):\n total 0\n for item in items:\n total item.price\n return total\n\ndef apply_discount(total, discount_rate):, stream: false, options: { num_predict: 64 } } | head -c 200这个命令会返回补全结果time会给出总耗时。但首 token 延迟需要流式请求才能测准。你可以用stream: true然后看第一个 chunk 到达的时间。在 Continue 里补全延迟通常体现在 UI 上但为了精确建议用脚本记录。补全通过率的定义可以自己定比如补全结果能直接运行不报错或者补全的函数签名和预期一致。我一般准备 20 个用例每个用例有标准答案然后人工或脚本判断补全结果是否通过。记录表格如下用例编号模型首 token 延迟(ms)补全通过备注1deepseek-coder:6.7b320是函数签名正确2deepseek-coder:6.7b280否缺少参数校验3deepseek-coder-v2450是逻辑完整跑完 Ollama 后把tabAutocompleteModel换成 TaoToken 的配置再跑同一组用例。注意 TaoToken 的 endpoint 是https://taotoken.net/apiprovider 是openaimodel 填deepseek-coder。这样你就能得到两组数据对比本地推理和 API 推理的差异。验证时如果遇到 401说明 API Key 不对或没填。如果遇到local proxy failed检查 Remote-SSH 的端口转发是否正常。如果日志里出现reading choices相关错误通常是响应格式不匹配检查 provider 是否写成了openai。这些报错在下一节详细说。5. 常见错排查401、local proxy failed、reading choices、OAuth这一节列几个真实会遇到的报错和排查方法。第一个是 401 Unauthorized。如果你在 Continue 里用 TaoToken 的 endpoint但没填 API Key 或填错了就会报 401。解决方法是检查config.json里的apiKey字段确保和 https://taotoken.net/api-keys 里生成的一致。注意不要有多余空格。第二个是local proxy failed。这个通常出现在 Remote-SSH 场景下Continue 试图访问127.0.0.1:11434但端口没有正确转发。解决方法是确认 VS Code 的 Remote-SSH 是否自动转发了 11434 端口。你可以在远程终端里执行curl http://127.0.0.1:11434/api/tags如果能返回模型列表说明 Ollama 正常。然后在本地 VS Code 的终端里也执行同样的 curl如果失败就是端口转发问题。可以在 VS Code 的端口面板手动添加 11434。第三个是reading choices相关错误。这通常发生在用 OpenAI 兼容 provider 时响应格式和预期不符。比如 TaoToken 返回的 JSON 里没有choices字段或者 Continue 解析失败。解决方法是检查apiBase是否写成了https://taotoken.net/api不要多加/v1或斜杠。同时确认 model 名称是否正确TaoToken 的模型 ID 可以在模型对话页面查看。第四个是 OAuth 相关报错。如果你在 Continue 里配置了需要 OAuth 的 provider但没完成授权就会报错。对于 Ollama 和 TaoToken 的 API Key 方式一般不会触发 OAuth。如果你看到 OAuth 错误检查是否误选了需要 OAuth 的 provider比如某些云厂商的默认配置。改成ollama或openai即可。另外如果你在配置里同时写了 Ollama 和 TaoToken切换模型时要注意tabAutocompleteModel是否同步更新。Continue 的 Tab 补全只认tabAutocompleteModel聊天模型在models列表里选。如果你发现补全没走 TaoToken检查tabAutocompleteModel的 provider 和 apiBase 是否改对了。还有一个坑是模型名称。Ollama 的模型名称必须和ollama list里显示的一致比如deepseek-coder:6.7b不能写成deepseek-coder-6.7b。TaoToken 的模型 ID 则要看它的文档通常和官方名称一致。如果模型名称写错会报模型不存在。6. 语义一致 CTA把 endpoint 切到 TaoToken 做对照验证跑完本地 Ollama 的基准后把tabAutocompleteModel改成 TaoToken 的配置再跑同一组用例。这一步的目的是对照验证同样的 prompt、同样的用例本地推理和 API 推理在首 token 延迟和补全通过率上有什么差异。TaoToken 的 API 地址是 https://taotoken.net/api你可以在 https://taotoken.net/api-keys 生成 Key然后在 Continue 配置里把 provider 改成openaiapiBase 填https://taotoken.net/apimodel 填deepseek-coder。如果你更关注长期编码和 Agent 场景可以了解 Coding Planhttps://taotoken.net/coding-plan。如果你只是想快速验证模型对话效果可以用模型对话页面https://taotoken.net/models。接入文档在 https://taotoken.net/doc里面有详细的配置说明。Claude Code 相关的接入可以参考 https://taotoken.net/claude-code。对照验证时建议把两组数据放在同一张表里对比首 token 延迟和通过率。如果 TaoToken 的延迟更低说明 API 推理链路更优如果通过率更高说明模型版本或推理参数有差异。无论结果如何这套基准都能让你在选型时有数据支撑而不是凭感觉。最后一步是固化配置。把config.json备份把用例和 prompt 模板存成文件下次换模型或换 endpoint 时直接复用。这样你的补全基准就是可复现的而不是一次性的测试。