Qwen3 + Continue.dev 配置教程:tabAutocomplete 和 chat 的 apiBase 要分开填,踩坑记录全在这了
上周三我把 Continue.dev 里的模型从 GPT-4 切到 Qwen3,想省点钱顺便试试通义最新的模型。chat 对话用旗舰模型,tab 补全用轻量模型控成本——结果折腾了大半天。chat 对话没问题,但 tab 补全死活不出东西,光标闪一下就没了,也不报错。最后发现是 tabAutocompleteModel 和 chat model 的 apiBase 路径配置方式不一样,文档压根没提这茬。Qoder 平台的免费 Key 前缀跟阿里云 DashScope 官方 Key 不同,填错了报 401 但错误信息只说"Invalid API-key provided",不告诉你是哪边的 Key。这篇把我踩的坑全记下来,照着配一遍就能跑通。
这篇适合谁
- 已经在用 Continue.dev 做代码补全,想换成 Qwen3 系列模型省钱的
- 第一次配 Continue.dev 接第三方 API,被
config.json搞晕的 - 拿到 Qoder 平台免费 Key 但一直 401 报错的
- 想在 VS Code 里同时用 Qwen 做 chat + tab 补全,但补全不生效的
整体流程
- 拿到 API Key(DashScope 官方 or Qoder 平台,注意区分)
- 先用 Python 脚本验证 Key 和网络通不通
- 配置 Continue.dev 的 chat model
- 单独配置 tabAutocompleteModel(这步最容易错)
- 重启 VS Code,验证两边都能出结果
graph TD
A[获取 API Key] --> B[Python 脚本验证连通性]
B --> C[config.json 配 chat model]
C --> D[config.json 配 tabAutocompleteModel]
D --> E[重启 VS Code]
E --> F{tab 补全出结果?}
F -->|是| G[搞定]
F -->|否| H[检查 apiBase 路径是否混用]
先说结论
| 配置项 | apiBase 路径 | 用途 |
|---|---|---|
| models(chat) | https://dashscope.aliyuncs.com/compatible-mode/v1 |
对话、解释代码 |
| tabAutocompleteModel | https://dashscope.aliyuncs.com/compatible-mode/v1 |
tab 补全 |
两者路径完全相同,坑不在路径本身,而在于:如果你手动在 apiBase 末尾加了 /chat/completions 后缀(有些教程会这么写),chat 能用但 tab 补全会静默返回空。原因见第三步详解。
注意:
https://dashscope.aliyuncs.com/compatible-mode/v1不支持直接用浏览器访问(会返回 404),这是正常现象——该地址需通过 SDK 或带完整路径的 POST 请求才能访问,用浏览器打开看到 404 不代表地址填错了。
第一步:拿 Key 并验证
DashScope 官方 Key:阿里云目前提供两个管理入口,建议以官方最新文档为准——历史上 Key 管理位于 dashscope.console.aliyun.com,近期也可通过百炼控制台 https://bailian.console.aliyun.com/ 的 API-KEY 管理页面创建。两个入口在整合过渡期间均可能有效,建议直接查阅阿里云官方文档确认当前入口。DashScope Key 前缀目前为 sk-,但平台可能随时调整,以实际申请到的 Key 为准。
Qoder 平台 Key:Qoder 为第三方平台,其 Key 前缀格式(据用户反馈类似 qd- 开头)无法从公开权威文档核实,以实际申请到的 Key 为准。两者的 base_url 不同,不可混用。
先跑这段确认网络没问题(以下两段代码需在同一 Python 环境中连续执行):
from openai import OpenAI
client = OpenAI(
api_key="sk-你的DashScope Key",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
resp = client.chat.completions.create(
model="qwen-max",
messages=[{"role": "user", "content": "回复OK"}]
)
print(resp.choices[0].message.content)
如果输出 OK,说明 Key 和网络都没问题。如果报这个:
Error: 401 Unauthorized
{"code":"InvalidApiKey","message":"Invalid API-key provided."}
大概率是你把 Qoder 的 Key 填到了 DashScope 的 base_url 里,或者反过来。报错不会告诉你"你的 Key 是 Qoder 的但 URL 是 DashScope 的",只说 Invalid,挺烦人的。
第二步:配 Continue.dev chat model
打开 ~/.continue/config.json(Windows 是 %USERPROFILE%\.continue\config.json),在 models 数组里加:
{
"title": "Qwen-Max",
"provider": "openai",
"model": "qwen-max-latest",
"apiKey": "sk-你的Key",
"apiBase": "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
注意 apiBase 末尾不要加斜杠,也不要加 /chat/completions。写成 ...v1/ 会触发:
TypeError: Failed to fetch
这个报错也很迷惑,看起来像网络问题,其实就是多了一个 /。
第三步:单独配 tabAutocompleteModel
这是我卡最久的地方。很多人(包括我)以为 chat model 配好了,tab 补全自动就用同一个模型。不是的。Continue.dev 的 tabAutocompleteModel 是一个独立字段,不配就走默认的本地 Ollama——然后你会看到这个:
Error: connect ECONNREFUSED 127.0.0.1:11434
看起来像网络问题对吧?其实是 Continue.dev 还在试图连本地 Ollama,因为你没覆盖 tabAutocomplete 的配置。
在 config.json 顶层加这个字段(跟 models 同级):
"tabAutocompleteModel": {
"title": "Qwen3-8B-Autocomplete",
"provider": "openai",
"model": "qwen3-8b",
"apiKey": "sk-你的Key",
"apiBase": "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
模型 ID 说明:
qwen3-8b为撰写本文时 DashScope 文档中的模型 ID,建议以 DashScope 模型列表页为准,模型 ID 可能随版本更新变化。
这里用轻量模型而不是 qwen-max——tab 补全对延迟敏感,轻量模型响应更快,成本也低很多。具体定价以 DashScope 官方定价页为准,价格随时可能调整。qwen-max 用来做 chat 就够了。
关键坑:如果你之前从别的教程抄了 apiBase: "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"(把完整端点路径写进去了),chat 模型能正常工作(Continue.dev 对 chat 请求直接使用你提供的 URL),但 tab 补全会静默返回空。原因是 Continue.dev 内部对 tabAutocomplete 请求会在你提供的 apiBase 基础上自动拼接 /completions 路径(可参考 Continue.dev 源码),你写了完整路径它就拼成了 .../v1/chat/completions/completions,DashScope 那边返回 404 但 Continue.dev 吞掉了这个错误,不在 UI 上显示。
这个行为我觉得是 Continue.dev 的 bug——至少应该把错误 log 出来。
第四步:重启验证
保存 config.json,Cmd+Shift+P 搜 "Reload Window" 重启 VS Code。打开一个 .py 文件随便打几个字符,看 tab 补全有没有灰色提示出现。
如果 chat 能用但 tab 还是没反应,打开 VS Code 的 Output 面板,选 "Continue" channel 看日志。
不同场景怎么选
以下月成本为个人实测估算,仅供参考,实际费用取决于每天编码时长、补全触发频率等因素。模型定价以 DashScope 官方定价页为准。
| 场景 | chat model 建议 | tab 补全 model 建议 | 月成本估算(个人参考) |
|---|---|---|---|
| 个人项目,写写小工具 | qwen-max-latest | qwen3-8b | ¥15-30/月 |
| 正经业务开发,需要 thinking | qwen3-235b-a22b | qwen3-8b | ¥80-150/月 |
| 团队多人用,要控成本 | 走聚合平台统一管理 | qwen3-8b 或 qwen-turbo | 看用量 |
qwen3-235b-a22b为 Qwen3 MoE 旗舰模型(235B 总参数、22B 激活参数),模型 ID 和可用性以 DashScope 官方页面为准。
团队场景下如果十几个人都要用,每个人单独注册 DashScope 账号比较麻烦。可以用 OpenRouter 或 ofox.io 这类聚合 API 平台统一管理——ofox.io 是大模型云厂商官方授权服务商,0% 加价对齐官方价格,管理后台能看到每个人调了哪些模型、花了多少钱,改个 base_url 就能切。config.json 里把 apiBase 换成聚合平台的地址就行,其他不用动。
踩坑记录 / 常见问题 FAQ
Q: Continue.dev 配置 Qwen API 后模型列表不显示怎么办?
检查 config.json 是不是合法 JSON(少个逗号就完蛋),apiBase 末尾不要加斜杠,保存后必须 Reload Window。我第一次就是多了个尾逗号,VS Code 不报语法错,Continue 直接忽略整个配置。
Q: Qoder 平台的 Key 和 DashScope 官方 Key 能混用吗?
不能。Qoder 的 Key 只能配合 Qoder 自己的 base_url 用,填到 DashScope 的 URL 里就是 401。反过来也一样。报错信息都是一样的 Invalid API-key provided,不会提示你 Key 来源不对,只能自己排查。
Q: tab 补全一直没反应但也不报错?
最常见原因是 apiBase 路径问题。确保写的是 https://dashscope.aliyuncs.com/compatible-mode/v1,不要带 /chat/completions 后缀,不要带末尾 /。然后检查 tabAutocompleteModel 字段有没有正确写在 config.json 顶层。
Q: Qwen3 的 thinking 模式在 Continue.dev 里怎么关?
可以直接在对话时发 /no-think(Qwen3 支持的软开关指令)。也可以在 chat model 配置里通过 requestOptions 等字段控制,但字段名和用法因 Continue.dev 版本而异,建议查阅你所用版本的 Continue.dev 官方文档。tab 补全不需要 thinking 模式,用 qwen3-8b 就别开了,白费 token。
Q: 超出 QPM 限制报 429 怎么办?
Error: 429 Too Many Requests
{"code":"Throttling.RateQuota","message":"Requests rate limit exceeded"}
DashScope 免费档 QPM 比较低,tab 补全打字快的时候很容易触发。两个办法:一是在 Continue.dev 设置里调大 tabAutocompleteOptions.debounceDelay(默认值及字段名以你所用 Continue.dev 版本的配置文档为准,可尝试从 300ms 调整到 600ms);二是升级 DashScope 的付费档。
小结
整个配置其实不复杂,就两个坑最耗时间:一是 tabAutocompleteModel 必须单独配置,不会继承 chat model 的设置;二是 apiBase 只写到 /v1,不要把完整端点路径写进去——两者路径格式相同,坑在于多写了后缀。Qoder 平台 Key 和 DashScope Key 不可混用这事,我也是 401 了三四次才反应过来——错误信息确实应该更友好一点。目前这套配置我用了一周多,chat 用 qwen-max-latest、tab 补全用 qwen3-8b,体验还行,个人实测日均花费不高(仅供参考,以官方定价页实际用量为准)。
更多推荐

所有评论(0)