
Qwen Code × Zed Editor基于 ACP 协议的编辑器集成实战与源码解析【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code本文基于仓库中的 Zed 集成文档docs/users/integration-zed.md与 Zed 扩展包源码packages/zed-extension/完整讲解如何在 Zed 编辑器中接入 Qwen Code 作为 AI 编码代理包括官方注册表安装与手动自定义代理两种方式的完整配置、--acp模式在 Qwen Code CLI 源码中的真实调用链、环境变量与~/.qwen配置的继承机制以及出现代理不出现服务意外退出等问题时的日志定位方法。读完后你可以在 Zed 里直接打开 Agent 面板与 Qwen Code 对话并能从源码层面解释集成是如何运作的。一、集成原理Qwen Code 通过 ACP 协议嵌入 ZedZed 通过 Agent Client ProtocolACP提供对 AI 编码代理的原生支持。Qwen Code 在此集成中扮演Agent Server代理服务端角色Zed 负责 UI、文件上下文与会话管理Qwen Code 作为独立子进程被 Zed 拉起双方通过 stdio 上的 JSON 帧通信。集成带来的核心能力包括原生代理体验AI 助手面板直接内嵌在 Zed 界面中无需额外浏览器窗口或插件宿主完整 ACP 支持支持 ACP 协议定义的高级 IDE 交互工具调用、权限请求等文件管理通过文件名将文件加入对话上下文会话历史可在 Zed 内访问过往对话。从源码结构看qwen --acp是这条集成链路的入口开关。CLI 启动文件 cli.ts 中将--experimental-acp列入快速启动标志KNOWN_FAST_PATH_FLAGS当检测到--acp或--experimental-acp参数时会动态加载 ACP 启动性能剖析器。参数解析在 config.ts 中argv.acp与argv.experimentalAcp两个布尔字段并存且 ACP 模式会置位experimentalZedIntegration标志——从命名可以看出当前 ACP 通道正是为 Zed 这类编辑器集成设计的。真正启动代理逻辑的地方在 llm.tsxconst isAcpMode argv.acp || argv.experimentalAcp; // ... const { runAcpAgent } await import(./acp-integration/acpAgent.js); await runAcpAgent(config, settings, argv, { /* ... */ });即--acp推荐写法与--experimental-acp历史实验开关等价二者都会动态导入并执行 acpAgent.ts 中的runAcpAgent。该文件基于 ACP SDK 的AgentSideConnection建立连接connection new AgentSideConnection((conn) { ... })负责把 Zed 发来的newSession、prompt等帧分发到内部 Session.ts 会话实现再把消息、工具调用、计划等事件通过 emitter 回传给 Zed 渲染。由于 ACP 会话通过管道 stdio非 TTY运行CLI 在 llm.tsx 中对非交互输入做了专门豁免只有当 stdin 非 TTY、输入格式不是stream-json且不是ACP 模式时才报错——这保证了 Zed 拉起进程时管道通信不会被视为异常。二、准备工作与前置要求两种方式共同的前置条件安装 Qwen Code CLInpm install -g qwen-code/qwen-code安装最新版 Zed 编辑器。此外根据 Zed 扩展包的 README作为 agent server 运行 Qwen Code 还要求Node.js 22扩展包会直接以node为可执行文件拉起cli.js不依赖 npm 全局安装的 bin 链接。三、方式一从 ACP Registry 安装推荐安装 CLI同上npm install -g qwen-code/qwen-code安装 Zed Editor在 Zed 中点击右上角设置按钮选择Add agent再选择Install from Registry找到Qwen Code点击Install。仓库中的 packages/zed-extension/extension.toml 就是这个注册表分发的扩展清单可以看到它声明了完整的四平台矩阵id qwen-code name Qwen Code version 0.1.0 description Qwen Code Agent Server Extension for Zed [agent_servers.qwen-code] name Qwen Code icon qwen-code.svg [agent_servers.qwen-code.targets.darwin-aarch64] archive https://registry.npmjs.org/qwen-code/qwen-code/-/qwen-code-0.10.0.tgz cmd node args [./package/cli.js, --acp] # 另有 darwin-x86_64 / linux-x86_64 / windows-x86_64 三个同等 target几个值得注意的实现细节每个平台 target 都指定了cmd node与args [./package/cli.js, --acp]。也就是说 Zed 会把 npm 发布的 tarball 解包后直接用 node 执行包内 CLI 入口并附带--acp参数这与手动方式中command: qwen, args: [--acp]是同一语义只是拉起路径不同全局 bin vs 解包产物这也解释了为何扩展要求本机有 Node.js进程模型是node ./package/cli.js --acp从 README 的说明看官方仍在开发单文件可执行版本以摆脱对 Node.js 运行时依赖。除注册表外也可以直接用 Zed 扩展面板安装打开 Extensions 面板macOS 为cmd-shift-xLinux/Windows 为ctrl-shift-x搜索 Qwen Code 并点击 Install或在命令行执行zed --install-extension qwen-code安装后切换到Agent Server标签页确认 Qwen Code 处于启用状态。四、方式二手动创建自定义 Agent如果不走注册表可以在 Zed 中点击设置按钮 →Add agent→Create a custom agent添加如下 JSON 配置Qwen Code: { type: custom, command: qwen, args: [--acp], env: {} }逐项说明字段取值含义typecustom声明为自定义命令拉起的代理commandqwen全局安装的 Qwen Code CLI 可执行文件名依赖npm install -g qwen-code/qwen-code产生的 binargs[--acp]关键参数触发isAcpMode分支进入runAcpAgent以 ACP Agent Server 模式运行env{}附加环境变量可留空或按下一节注入这段配置的command args与extension.toml中node ./package/cli.js --acp对应的是同一个代码路径只要argv.acp为真llm.tsx 就会跳过交互式 TUI 分支直接进入 ACP 会话循环。另外源码中对参数组合有明确的约束--worktree与--acp/--experimental-acp互斥启动时会报错--worktree cannot be combined with --acp / --experimental-acp因此在 Zed 场景下不要给 agent 追加--worktree参数。五、日常使用与配置继承安装完成后开始对话在 Zed 中打开 Agent 面板macOS 为cmd-shift-aLinux/Windows 为ctrl-shift-a在代理列表中选择 Qwen Code开始对话。实用技巧用filename在消息中引用文件把文件纳入上下文代理可以读取、写入、编辑工作区文件可以用自然语言要求它解释代码、提出改进建议或辅助调试。关于运行环境的配置继承Zed 扩展 README 明确说明了以下行为进程继承 Zed 的环境变量会读取/创建~/.qwen目录存放运行时配置复用~/.qwen/settings.json中已有的模型与鉴权配置首次登录除外——即如果你已在终端里用qwen完成过模型配置与认证Zed 中的代理无需重复登录。如需为代理进程注入额外环境变量在 Zed 设置的agent_servers中配置即可{ agent_servers: { qwen-code: { env: { QWEN_DEBUG_LOG_FILE: 1, YOUR_CUSTOM_VAR: value } } } }其中QWEN_DEBUG_LOG_FILE是文档给出的调试日志开关示例排查问题时建议优先开启。六、排障指南集成文档与扩展 README 合起来覆盖了三类典型故障按症状 → 动作整理如下1. 代理不出现Agent not appearing在终端运行qwen --version确认 CLI 已正确安装且 PATH 可达手动方式依赖qwen可执行名注册表方式依赖本机 node检查自定义 JSON 配置是否合法引号、逗号、花括号配对重启 Zed Editor。2. Qwen Code 无响应not responding检查网络连接代理需要访问模型服务在终端直接运行qwen确认 CLI 本身可正常工作、模型与鉴权配置无误若问题依旧在项目仓库提交 issue 反馈。3. 服务意外退出 / 使用中出现异常扩展 README 补充这里的关键是先取日志再反馈进程级异常如 server shut down unexpectedly按cmdshiftpmacOS或ctrlshiftpLinux/Windows打开命令面板选择Zed: Open Log重点查看与 agent server 或 Node.js 相关的日志行进程存活但行为异常同样打开命令面板选择Dev: Open ACP Logs查看 ACP 帧级别日志中的报错反馈问题时附上对应的日志片段。从源码视角补充一个定位抓手ACP 模式启动时会经过独立的启动剖析链路acp-startup-profiler在 cli.ts 中按--acp/--experimental-acp触发若怀疑是启动阶段卡住或失败结合QWEN_DEBUG_LOG_FILE1的输出与 ACP Logs 一起分析会更快收敛。七、小结Qwen Code 与 Zed 的集成本质上是一个协议层 进程模型的干净组合协议层采用 ACPQwen Code 侧由--acp参数驱动runAcpAgent启动AgentSideConnection进程模型上Zed 以node ./package/cli.js --acp扩展方式或qwen --acp自定义代理方式拉起子进程并完整继承~/.qwen下的模型与鉴权配置。推荐优先走 ACP Registry / 扩展安装路径手动自定义 JSON 作为离线或定制场景的兜底排障时优先区分进程没起来Zed: Open Log与协议层异常Dev: Open ACP Logs两个层面。相关仓库入口Zed 集成用户文档Zed 扩展包 README 与 extension.toml 清单ACP 模式启动入口 llm.tsxACP Agent 实现 acpAgent.tsACP 会话实现 Session.ts【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考