Qwen Code 如何认证:OAuth 与 API 密钥配置指南
【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code
Qwen Code 是跑在终端里的开源 AI 编码代理,装完第一次启动,第一件事就是让它通过认证——否则所有模型调用都无从谈起。这条链路里有两套思路:一套是 OAuth 设备码登录(现已停止新增,但机制还值得了解),一套是 API 密钥接入(当前推荐)。下面从"怎么选、怎么配、底层怎么转、哪里容易翻车"四个角度讲清楚。
认证怎么选:三个入口对号入座
启动qwen后敲/auth,菜单顶层就是三条路:
| 入口 | 适合谁 | 说明 |
|---|---|---|
| Alibaba ModelStudio | 个人与团队,官方推荐 | 子菜单三选一:Coding Plan(个人开发者,含周配额)、Token Plan(团队按量计费、专用端点)、Standard API Key(已有百炼密钥直接接) |
| Third-party Providers | 手里已有第三方密钥 | 内置 DeepSeek、Grok、MiniMax、Z.AI、Kimi、Idealab、ModelScope、OpenRouter、Requesty |
| Custom Provider | 自托管服务、代理网关 | 手动填 OpenAI / Anthropic / Gemini 兼容端点 |
一个必须知道的现状:Qwen OAuth 免费额度已于 2026-04-15 停止。它从/auth菜单里消失了,旧缓存令牌可能还能用一阵子,但新登录一律被拒。所以新装用户请直接走 API 密钥路线,别在 OAuth 上花时间。
交互式接入:/auth 三步走完
- 终端跑
qwen,输入/auth。 - 选 Alibaba ModelStudio,子菜单点 Coding Plan,选区域,把控制台里
sk-sp-开头的密钥贴进去。 - 认证通过。想看还有哪些模型可用,用
/model切换——Coding Plan 下能选 qwen3.5-plus、qwen3-coder-plus、glm-5、kimi-k2.5、MiniMax-M2.5 等一串,选择会自动持久化到下次会话。
如果你同时在好几个终端干活,也可以跳过菜单直接指定:
qwen --model "qwen3.5-plus"无交互接入:环境变量与单文件配置
CI、容器、SSH 里没法弹浏览器,全靠配置文件说话。旧的qwen auth coding-plan子命令已删除,现在只有两种姿势。
环境变量(最快)
export BAILIAN_CODING_PLAN_API_KEY="sk-sp-xxxxxxxxx" export OPENAI_BASE_URL="https://coding.dashscope.aliyuncs.com/v1" export OPENAI_MODEL="qwen3-coder-plus"注意端点区分:国内北京用https://coding.dashscope.aliyuncs.com/v1,国际站用https://coding-intl.dashscope.aliyuncs.com/v1。写错这一行是新手最常见的翻车点。
settings.json(一站式)
把配置写进~/.qwen/settings.json,以后启动免菜单:
{ "modelProviders": { "openai": [ { "id": "qwen3-coder-plus", "name": "qwen3-coder-plus (Coding Plan)", "baseUrl": "https://coding.dashscope.aliyuncs.com/v1", "envKey": "BAILIAN_CODING_PLAN_API_KEY" } ] }, "env": { "BAILIAN_CODING_PLAN_API_KEY": "sk-sp-xxxxxxxxx" }, "security": { "auth": { "selectedType": "openai" } }, "model": { "name": "qwen3-coder-plus" } }四个字段各司其职:modelProviders按协议声明可用模型;env是密钥兜底值(优先级最低);security.auth.selectedType指定启动协议,省掉交互式/auth;model.name定默认模型,必须与某个id对得上。
密钥到底从哪读:优先级排好序
同一台机器上密钥来源可能打架,Qwen Code 的裁决顺序是:
- CLI 参数(如
--openai-api-key)——永远赢 - 系统环境变量(
export) .env文件settings.json的env字段——最低
.env的查找是从当前目录逐级往上走,先找.qwen/.env再找.env,找不到才回落到~/.qwen/.env和~/.env。只加载第一个命中的文件,不会跨文件合并——所以.qwen/.env更干净,不容易和其他工具串味。
协议与默认环境变量的对应关系(未配envKey时的兜底):OpenAI 协议读OPENAI_API_KEY,Anthropic 读ANTHROPIC_API_KEY,Gemini 读GEMINI_API_KEY,Vertex AI 读GOOGLE_API_KEY。这些逻辑在 packages/cli/src/config/auth.ts 里做启动前校验,缺了哪一环会在报错里直接点名。
进阶:OAuth 设备码流程在转什么
就算你现在用 API 密钥,理解 OAuth 这条链路也有好处——它解释了令牌为什么会过期、为什么有时候会被要求重新登录。核心实现在 packages/core/src/qwen/qwenOAuth2.ts。
- PKCE 先行:客户端在本地随机生成 code verifier,再算出 SHA-256 的 code challenge 一起提交,服务端换令牌时要求回填原始 verifier,防止中间人拿着授权码冒领。
- 设备码 + 轮询:拿到
device_code后终端每 2 秒轮询一次令牌端点;服务端返回authorization_pending就继续等,返回slow_down就按 1.5 倍拉长间隔(上限 10 秒)。设备码本身有有效期,超时只能重走流程。 - 刷新与清理:日常用刷新令牌换新访问令牌;一旦刷新收到 400/401,说明刷新令牌已废,程序会直接清掉本地凭据并提示你用
/auth重新认证——不会拿一个半死的令牌继续硬试。 - 落盘即加密权限:凭据文件是全局
~/.qwen目录下的oauth_creds.json,以 0600 权限写入,且先写临时文件再原子改名,确保文件在任何瞬间都不会以宽松权限暴露给同机其他用户。
常见问题:一张表排掉八成错误
| 症状 | 原因 | 解法 |
|---|---|---|
启动报xxx environment variable not found | 对应协议没找到密钥 | export环境变量,或在modelProviders条目里把envKey指对 |
| 提示 refresh token expired / invalid | 缓存令牌作废 | 运行/auth重新认证 |
| 容器/CI 里卡在授权页面 | 非交互环境走不了浏览器流程 | 放弃 OAuth,改走 API 密钥 +settings.json |
| 连得上但报鉴权失败,端点反复重试 | 北京/国际站端点混用 | 核对baseUrl后缀,国际站走coding-intl域名 |
/model里找不到刚配的模型 | model.name与modelProviders的id拼写不一致 | 两者必须逐字符相等 |
| 不知道当前认证状态 | — | 会话内跑/doctor |
最后两条安全习惯:密钥永远别提交进版本库,项目级机密放.qwen/.env并加进.gitignore;settings.json的env字段是明文存储,同步到坚果云或 dotfiles 仓库之前先掂量一下。细节参考 官方认证文档 与 模型供应商参考。
【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考