过去,为 Zed、JetBrains IDE 和 Neovim 分别接入 AI 编码代理,往往意味着维护三套插件、三种配置和三套权限逻辑。OpenCode 适配 Agent Client Protocol,也就是 ACP 之后,编辑器只负责提供交互界面,OpenCode 则作为统一代理处理上下文、工具调用与项目规则。真正值得关注的并不是“多支持了几个编辑器”,而是团队终于可以围绕同一个代理入口建立一致的开发体验。
ACP 为什么能统一代理体验
ACP 是代码编辑器与 AI 编码代理之间的开放通信协议。使用时,编辑器启动 opencode acp 子进程,并通过标准输入输出上的 JSON-RPC 与其通信。这样一来,Zed、JetBrains 和 Neovim 不需要分别理解 OpenCode 的内部实现,只要能够作为 ACP 客户端发送会话、上下文和工具请求即可。具体机制可参考 OpenCode ACP 官方文档。
统一协议不等于三个编辑器的界面完全相同。Zed 更强调原生代理面板,JetBrains 将代理放进 AI Chat,Neovim 通常通过 Avante.nvim 或 CodeCompanion.nvim 提供交互层。但在这些不同入口之后,实际运行的仍是同一个 OpenCode,因此模型选择、项目规则、MCP 服务、格式化工具、权限体系和自定义命令可以尽量复用。
先建立共享的 OpenCode 基线
要获得一致体验,应先保证三种编辑器调用的是同一个 OpenCode 可执行文件。团队可以统一安装版本,并通过系统 PATH、版本管理工具或固定启动脚本暴露命令。JetBrains 配置通常更适合填写绝对路径,以避免图形界面启动时读取不到终端中的 PATH;Zed 与 Neovim 则可以直接使用命令名,但也应确认命令解析结果一致。
第二步是把公共能力放回 OpenCode,而不是散落在编辑器插件中。例如,将仓库级协作约定写入 AGENTS.md,把外部工具放进统一的 MCP 配置,把格式化、检查和代理权限集中管理。这样开发者从 Zed 切换到 IntelliJ IDEA,或者临时在 Neovim 中修改文件时,代理仍能遵循相同的目录规则、测试流程和操作边界。
Zed:使用原生代理入口
Zed 用户可以从 ACP Registry 安装 OpenCode,也可以在 settings.json 的 agent_servers 中注册自定义代理,命令设置为 opencode,参数设置为 acp。完成后,通过命令面板中的新建代理线程操作即可启动会话。经常使用时,还可以在 keymap.json 中绑定快捷键,把代理入口纳入日常键盘工作流。Zed 对 OpenCode 的登记信息可查看 Zed ACP Registry。
Zed 配置的重点不是堆叠快捷键,而是确保打开的工作区、传给代理的上下文以及 OpenCode 的项目根目录一致。如果在多仓库目录中工作,应避免从过高层级启动编辑器,否则代理可能接收到无关文件,也可能无法准确匹配项目规则。
JetBrains:处理好路径与会话入口
JetBrains IDE 可以在相应的 acp.json 中添加 OpenCode agent server,并将 command 指向 OpenCode 的绝对路径,参数仍为 acp。配置生效后,可在 AI Chat 的代理选择器中选择 OpenCode。对于同时使用 IntelliJ IDEA、PyCharm 或 WebStorm 的团队,应明确配置究竟是按 IDE、用户还是项目分发,避免成员误以为所有产品会自动共享同一份设置。
JetBrains 的常见问题来自环境差异。IDE 从桌面启动时,可能拿不到 Shell 初始化脚本中的 API Key、代理地址或自定义 PATH。更稳妥的做法是使用统一启动脚本,只向 OpenCode 传递必要变量,并避免把密钥直接提交到仓库。排障时应先在 IDE 可见的环境中验证 OpenCode 路径,再检查 ACP 配置结构,最后确认 AI Chat 是否成功加载代理。
Neovim:统一后端,不强求统一前端
Neovim 可以通过 Avante.nvim 或 CodeCompanion.nvim 连接 OpenCode。前者可在 acp_providers 中声明命令与参数,后者则可把 OpenCode 配置为聊天适配器。选择哪一个主要取决于现有插件体系、快捷键习惯和上下文组织方式,没有必要为了“统一”而强制所有人使用同一个前端。
真正需要统一的是代理名称、启动命令、环境变量来源和项目规则。建议把 ACP 相关配置封装成独立 Lua 模块,再由个人配置按需加载。这样既能保留 Neovim 用户对窗口布局和键位的控制,也能降低插件升级后修改多处配置的成本。
让三端行为真正接近
- 统一版本:在团队文档或开发环境配置中固定 OpenCode 的最低版本,并在升级前验证三种客户端。
- 统一规则:将编码规范、测试命令、禁改目录和提交要求写入仓库级规则文件。
- 统一权限:对文件写入、终端命令和外部工具调用采用相近的授权策略,不因编辑器不同而降低限制。
- 统一验证:准备一个小型测试仓库,检查读取文件、修改代码、运行测试、调用 MCP 服务和取消任务等流程。
- 统一故障信息:记录 OpenCode 版本、编辑器版本、插件版本、启动命令和日志位置,方便复现问题。
需要接受的能力边界
ACP 解决的是通信标准化,并不会抹平编辑器本身的差异。上下文选择、差异预览、确认窗口、快捷键和会话展示仍由客户端决定。根据官方说明,OpenCode 通过 ACP 可以使用文件操作、终端命令、自定义工具、MCP 服务、项目规则以及代理权限等能力,但部分内置斜杠命令,例如 /undo 和 /redo,目前可能不受支持。因此,团队应优先依赖编辑器自身的撤销机制和版本控制,而不要把代理会话当作唯一恢复手段。
总结
OpenCode 适配 ACP 后,统一 Zed、JetBrains 与 Neovim 体验的正确思路,是“共享代理核心,保留编辑器习惯”。只要三端都启动同一个 opencode acp,并共同使用一致的项目规则、工具配置、环境变量与权限边界,就能显著减少重复维护。界面可以不同,快捷键也可以不同,但代理理解项目、执行任务和接受约束的方式应当一致,这才是 ACP 带来的实际价值。