Qwen Code 部署上手:3 条路径从终端装到生产
【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code
Qwen Code 是跑在你终端里的开源 AI 编码助手,一套框架同时支持 Qwen、OpenAI、Anthropic、Gemini 等模型协议。这篇文章面向普通使用者、贡献者和运维同学,讲清三件事:怎么装、两条构建链路各管什么、容器和 CI 怎么接。读完你可以按自己的角色直接照做,不用再去翻散落的文档。
一、先别急着装:按你的角色选唯一路径
四种角色,四种装法,先对号入座。
普通使用者:装全局 npm 包。只要本机有 Node 22+,一条命令搞定:
npm install -g @qwen-code/qwen-code装完任何目录敲qwen启动交互界面,进会话后先执行/auth配置模型和 API Key。如果只是想临时试一次、不想污染全局环境,用npx @qwen-code/qwen-code直接跑最新版,用完即弃。
贡献者:从源码跑,别装发布版。你改的就是发布前的代码,装 npm 包反而会测到旧逻辑:
git clone https://gitcode.com/GitHub_Trending/qw/qwen-code cd qwen-code && npm ci && npm run start这里有个坑:npm run start是开发模式,热启动但链路不完整;如果你要在自己的生产工作流里验证本地构建(比如 CI 里引用本地包),改用npm link packages/cli链接 CLI 包,行为才接近真实安装。
运维同学:容器是默认隔离方案。Qwen Code 会执行 shell 命令这类有副作用的工具,官方默认思路就是把它关进容器。不用自己写镜像,拉官方沙箱镜像即可:
docker run --rm -it ghcr.io/qwenlm/qwen-code:0.22.3标签号对应 CLI 版本,建议锁死版本,别用latest——沙箱里的行为要和线上 CLI 严格对齐。本地已装好的话,也可以加--sandbox标志(qwen -s)让 CLI 自己拉起沙箱容器执行。
CI 集成:无头模式(headless,即不带界面的批处理模式)+ npx。流水线里不做全局安装,每次拉新包执行一次性任务,既干净又免维护:
qwen -p "检查本次 diff 的测试覆盖"完整接法见第三节。
二、看懂它怎么跑:两个包、两条流水线
先说结论:这个项目是个 monorepo(多包仓库),但对使用者来说只需记住两个主角,其他几十个 workspace(IM 通道、SDK 等)都是配角。
@qwen-code/qwen-code(CLI 包):外壳。终端界面、命令解析、面向用户的交互全在这里。@qwen-code/qwen-code-core(核心包):引擎。发 API 请求、管认证、做本地缓存。
为什么要拆开?因为 SDK(TypeScript / Python / Java)和外部工具只想依赖"引擎",不想拖着整个终端 UI。这个分层决定了后面两条发布链路长什么样。
链路一:npm 包,标准编译。TypeScript 源码用 tsc 逐文件编译成标准 JS,产物是dist/目录,带类型声明。走这条链路的消费者是npm install,他们需要完整的依赖树和类型提示,所以产物是"一整个目录"。
链路二:npx 自包含产物,esbuild 打包。触发点是package.json里的prepare脚本——你从仓库地址直接npx时,npm 会自动跑它。esbuild 把整个应用连同依赖打成一个自包含 JS 文件。走这条链路的消费者是"随手一跑",要的是零依赖、秒级启动,不需要类型声明,所以能压成一个文件。
两条链路版本同源、同时发布,只是形态不同:一个给依赖管理,一个给即时执行。看懂这一点,你就明白为什么沙箱镜像里可以直接npm install一个本地 tgz——它本质是链路一的产物。
三、上生产的完整路径
容器化:只保留可执行结论。生产上跑沙箱镜像,把项目目录挂进去,后台常驻:
docker run -d --name qwen-code \ -v /your/project:/workspace \ ghcr.io/qwenlm/qwen-code:0.22.3注意:--sandbox标志和docker run二选一,别在容器里再套一层沙箱。如果你的服务是多客户端共享一个 agent 会话(比如 Web 端 + IDE 同时接),用qwen serve起 daemon 模式,协议细节见 docs/users/qwen-serve.md。
CI 流水线:npx + 沙箱 + 无头模式。最小可用的 GitHub Actions 风格配置:
steps: - name: Run Qwen Code run: | npx -y @qwen-code/qwen-code --sandbox -p "运行仓库测试并汇总失败项"要点就三条:用-p进无头模式保证非交互;加--sandbox隔离副作用;API Key 走 CI Secret 注入环境变量,不落盘。
四、版本怎么选,开了遥测能看到什么
三档版本,适用时机分得很清楚:
| 档位 | 发布节奏 | 给谁用 |
|---|---|---|
| 稳定版(默认) | 常规节奏 | 生产环境,所有人默认装这个 |
预览版@preview | 每周二 UTC 23:59 | 想在正式发版前提前踩新功能的团队 |
夜间版@nightly | 每日 UTC 午夜 | 前沿开发,用来复现和验证最新行为 |
npm install -g @qwen-code/qwen-code@preview遥测:内置 OpenTelemetry 集成(OpenTelemetry 是一套通用的可观测性协议,管日志/指标/链路追踪)。在.qwen/settings.json里打开:
{ "telemetry": { "enabled": true, "target": "qwen" } }开完能看到什么?三类东西:团队间的交互模式和功能采用情况(谁在用、用得多深)、响应时间和 token 消耗(性能与成本基线)、错误与故障模式(排障线索)。内网部署对数据外发敏感的话,这一步建议先关着,只在灰度环境开。
五、上线自检清单
照单过一遍再放量:
- 版本号验证:
npx -y @qwen-code/qwen-code@latest --version,发布后冒烟第一步 - 本机 Node 版本 ≥ 22(engines 硬性要求,低了直接报错)
- 沙箱镜像 tag 与 CLI 版本一致,
latest只出现在个人机器上 - CI 里 API Key 走 Secret,沙箱标志未与容器环境双重嵌套
- 贡献者提交前跑过
npm run preflight(仓库内置的完整本地门禁:清理、格式化、lint、构建、类型检查、测试) - 遥测在灰度环境验证过数据链路,再决定是否全量开启
- 装完重启过终端(环境变量生效)
决策要点:
- 普通用户只有一条正路:Node 22+ 下全局装 npm 包,其他都是变体。
- 有副作用的操作一律进沙箱,沙箱镜像 tag 必须与 CLI 版本锁死。
- 贡献者验证生产行为用
npm link,开发调试用npm run start,两者别混。 - 预览版给尝鲜、夜间版给复现、稳定版给生产——版本号就是承诺等级。
- 遥测先灰度后全量,开之前确认数据流向可接受。
【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考