入门 📋 6 个步骤 第 488 / 490 篇

用 Qwen Code 搭免费额度的终端编码智能体:安装认证、内置工具与无头模式实操

Qwen Code 实操:npm 安装、OAuth 免费额度与 OpenAI 兼容双认证、内置工具体系、先读后改实战、-p 无头模式接入 CI、qwen mcp add 扩展与安全边界。

2026.09.30· 15 分钟阅读· 约 2838 字· 🖥️ Qwen Code / ⌨️ 终端工具

终端里的编码 Agent 已经成了开发者的标配工具,但主流选择各有门槛:要么绑定单一厂商的模型,要么按订阅收费。阿里开源的 Qwen Code(Apache 2.0 协议,基于 Gemini CLI 二次开发、针对 Qwen3-Coder 系列模型做了大量优化)给出了门槛更低的进入方式:Node 20+ 环境一条 npm 命令安装,用 Qwen OAuth 登录就能拿到免费请求额度(官方口径约每天 2,000 次,以官方文档为准);同时保留标准的 OpenAI 兼容接口——你手上不管已有哪家的模型 Key,都能直接接进来。本篇从安装、认证、内置工具体系,到无头模式自动化与 MCP 扩展完整走一遍,全程用免费额度就能复现。

🎯 适合人群:想在终端里用上编码 Agent、但预算有限或想先试水再花钱的开发者。前置要求只有 Node.js 20+;免费路线走 Qwen OAuth,付费路线备一个 OpenAI 兼容端点的 API Key 即可。

先理解:CLI 里那个「工具循环」是怎么转的

Qwen Code 的核心组件(packages/core)负责一整圈调度:你输入提示词后,core 把提示词、会话历史和可用工具的 schema 清单一起发给模型;模型分析后如果需要动手,就返回一个「执行某工具、带某参数」的请求;core 校验请求、对敏感操作弹出人工确认,然后执行工具、把结果回灌给模型;模型继续推理,直到给出最终回答。你在终端里看到的「正在调用某工具、成功或失败」的提示,就是这圈循环的外显。理解这个循环有两个好处:写指令时你会自然地把「目标 + 约束」说清楚,让模型知道该调哪个工具;排查问题时你能分清是模型选错了工具,还是工具执行本身出了错——两者的修法完全不同。

免费额度是动态政策。Qwen OAuth 的免费请求额度与限流规则(官方口径约每天 2,000 次)可能随版本与运营策略调整,动手前以官方文档与 /stats 实测为准;超出额度或团队共享使用时,切换到 API Key 或商业套餐方案。

Step 1:安装与验证,两条命令的事

1 Node 20+ 是硬门槛,npm 全局安装
# 先确认 Node 版本,低于 20 先升级
node -v

# npm 全局安装(推荐,更新跟着 latest 走)
npm install -g @qwen-code/qwen-code@latest

# macOS / Linux 也可以走 Homebrew
# brew install qwen-code

# 验证安装
qwen --version

安装本身没有更多戏份:npm install -g 拉包、qwen --version 能打印版本号就算就绪。Windows 上如果全局安装报权限错误,两个常见方向任选其一:用管理员身份开终端再装,或者用 npm config set prefix 把全局目录挪到用户可写的位置——这类权限问题与 Qwen Code 本身无关,是 npm 全局安装的通用坑。装完先别急着进项目,跑一下 qwen --help 把参数总览过一遍,后面无头模式要用到的 -p 与输出格式参数都在里面。

💡 公司内网或有镜像源偏好的团队,把 npm registry 指向内网镜像后安装流程完全不变;锁版本(去掉 @latest)可以让全团队的工具行为一致。

Step 2:认证二选一,免费 OAuth 或自带 Key

2 /auth 走浏览器登录,环境变量走 OpenAI 兼容
# 路线一(免费额度):在项目目录启动后输入 /auth
cd your-project
qwen
# 交互界面里输入:
/auth
# 选 Qwen OAuth,浏览器自动打开完成登录,token 自动刷新

# 路线二(自带模型):OpenAI 兼容三件套环境变量
export OPENAI_API_KEY="sk-xxxx"
export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export OPENAI_MODEL="qwen3-coder-plus"

两条路线覆盖两类人群。路线一适合个人尝鲜与轻量使用:OAuth 登录后免费额度直接生效,不需要任何 Key 管理成本。路线二适合已有模型资产的团队:任何 OpenAI 兼容端点都能接,把 OPENAI_BASE_URL 指过去即可——国内用 DashScope 的兼容模式,自建网关、私有化模型端点同理。两种认证并存时以环境变量的配置优先级为准(详见官方认证文档),建议个人机用 OAuth、CI 与共享环境用 Key,职责清楚。

API Key 别写进 shell 配置文件然后提交仓库。环境变量放 .zshrc/.bashrc 属于个人机常规操作,但 CI 与容器里请走密钥管理服务注入;另外 OAuth 免费额度按账号计,多人共用一个账号互相挤额度,团队场景直接上 Key。

Step 3:认识内置工具面,知道它能替你动什么

3 文件、Shell、网络、清单、子任务五类工具
# 内置工具按官方文档分五大类:
# 1) 文件系统:read_file / write_file / read_many_files
# 2) Shell:run_shell_command(敏感命令会先弹确认)
# 3) 网络:web_fetch(抓 URL)/ web_search(需支持的提供商)
# 4) 任务管理:todo_write(结构性任务清单,opt-in)
# 5) 委派:agent 工具(把复杂子任务交给专门的子 Agent)

这些工具由 core 统一管理:定义与 schema 交给模型、按请求执行、结果回灌。几个值得专门点名的细节——read_many_files 可以按 glob 模式一次读进整批文件(比如 src/**/*.ts),是理解大型代码库的主力;run_shell_command 执行的是真实 shell 命令,官方对这类修改型操作设计了确认机制,弹窗时看清楚命令再放行;todo_write 让模型在多步任务里维护一张结构化清单,长任务的进度可视、可打断。工具是否启用与确认策略可以在配置里调整,团队可以按自己的安全基线收敛默认行为。

💡 开了沙箱模式后,工具(包括通过 npx 拉起的 MCP server)都必须在沙箱环境内部可用——Docker 沙箱镜像里要预装 npx 与相关依赖,否则工具在沙箱里「失联」。

Step 4:实战一个真实任务,体验「先读后改」

4 诊断、动手、验证三段式下指令
# 段一:只诊断,不动手
> 读完 src/utils/date.ts,解释这个函数在跨时区场景下为什么会算错

# 段二:让模型列计划再动手
> 给出修复方案和需要补的测试用例清单,列成 todo
> 按清单逐项修复,每改完一项运行 pytest tests/ -x 验证

# 会话管理三件套
/stats     # 看当前会话的 token 与上下文占用
/compress  # 压缩历史,长会话续命
/clear     # 清空历史,切换任务

实战建议按「先读后改」的节奏下指令:让它先读代码、先出方案,你确认方案没问题再放行动手——这比一句「帮我修了这个 bug」可控得多。预期效果:模型会用 read_file 读实现、用 todo_write 列清单、逐项调用写文件与 shell 工具,每步都有确认与输出回显;跑完用 /stats 看这次任务花了多少 token,心里对免费额度能撑多少活就有数了。任务做到一半发现方向不对,/clear 重来比继续纠正更省 token。

💡 多文件大改动前,先让它输出「改动文件清单 + 每个文件的改动意图」等你确认,再放行执行——两轮对话换来的是不会失控的 diff。

Step 5:无头模式与管道,把 Agent 接进脚本

5 -p 一次性执行,--output-format 出机器可读结果
# 一次性任务:不进交互界面,跑完就退出
qwen -p "分析这个代码库的目录结构,输出核心模块清单"

# 机器可读输出,CI 与脚本消费
qwen -p "检查 src/auth.ts 有没有硬编码的密钥" --output-format json

# 接进 shell 管道:用暂存区 diff 生成提交说明
git diff --staged | qwen -p "根据这个 diff 写一条符合 Conventional Commits 规范的提交说明"

无头模式(headless)是 Qwen Code 从「交互工具」变成「自动化组件」的开关:-p 直接执行提示词、--output-format json 给出结构化结果,两者组合就能塞进 CI 流水线、pre-commit 钩子或定时脚本。上面第三行的管道用法是性价比极高的一招——把 git diff 喂给模型生成提交说明,从此提交信息不再靠手编。批处理场景用 xargs 组合即可对一批文件逐个执行同类任务,每个调用相互独立、失败互不影响。

无头模式里「全自动放行」要想清楚再开。部分场景为了不卡确认会启用全自动放行参数(-y/--yolo,以你版本的 qwen --help 为准),这等于把 shell 执行权完整交给模型——只在你完全信任的仓库目录里用,CI 环境配合最小权限的容器跑,绝不在宿主机根目录或含密钥的工作区开。

Step 6:MCP 扩展与安全边界,工具面随业务生长

6 qwen mcp add 一条命令接入外部工具服务
# 添加一个 MCP server(例:官方 filesystem server,只开放 docs 目录)
qwen mcp add fs -- npx -y @modelcontextprotocol/server-filesystem ./docs

# 查看已注册的 MCP server
qwen mcp list

MCP 是 Qwen Code 工具面的扩展机制:注册的 server 所提供的工具与内置工具同等参与调度,模型按需调用。这条扩展通道让 CLI 的能力随业务生长——接数据库查询、接内部 API、接文档检索,都不需要改 Qwen Code 本身。安全上记三条:目录最小化,filesystem 类 server 只挂载必要目录;密钥走环境变量,不把 Key 写进任何会被提交的配置;第三方 server 先审后用,MCP server 本质是在你机器上跑的进程,来路不明的先放进隔离环境试。

MCP server 是供应链风险面。npx 每次拉取的是 registry 上的包,版本漂移意味着行为可能变化;生产环境锁死版本号、优先走私有镜像,并定期复查 qwen mcp list 里有没有不知来源的注册项。

常见问题速查

你遇到的现象大概率原因 和 解决
qwen 命令不存在npm 全局 bin 目录不在 PATH。用 npm config get prefix 确认全局目录,把它加进 PATH 后重开终端
OAuth 登录后仍提示无权限登录态过期或网络代理拦截了回调。重新 /auth;代理环境确认本地回环地址可访问
免费额度用尽等次日额度刷新,或切换 API Key 路线(OPENAI_API_KEY 三件套),团队场景直接上 Key
长会话越跑越慢、输出变差上下文膨胀。用 /compress 压缩历史,或 /clear 后把必要背景重新喂一遍
沙箱模式下 MCP 工具不可用沙箱镜像里缺 npx 或依赖。预装到镜像内,或临时关沙箱排查
模型响应不符合 Qwen3-Coder 水准确认 OPENAI_MODEL 指向的是 coder 系列模型;交互模式用 /auth 的 OAuth 时模型由服务端默认分配
← 返回教程中心