OpenCode 如何通过 ACP 协议让你的编辑器更智能
如果你正在使用 OpenCode,可能会想:能不能直接在我常用的编辑器里使用它,而不是每次都切换到终端?好消息是,OpenCode 现在支持 ACP 协议了,这意味着你可以在 Zed、JetBrains、Neovim 等编辑器中无缝使用 OpenCode 的所有功能。
什么是 ACP 协议
ACP(Agent Client Protocol)是一个开放协议,它的作用是让代码编辑器和 AI 编码助手能够"说同一种语言"。想象一下,以前每个编辑器都有自己的一套对接方式,开发者要适配不同编辑器就得写很多重复代码。有了 ACP,就像大家约定了一个统一的接口标准,编辑器和 AI 工具之间的沟通变得简单多了。
如果你想深入了解 ACP 协议的技术细节和设计理念,可以查看这篇文章:什么是 ACP。
OpenCode 的 ACP 支持能带来什么
通过 ACP 协议,你可以直接在编辑器里调用 OpenCode,不需要在终端和编辑器之间来回切换。更重要的是,OpenCode 通过 ACP 使用时,功能和在终端里用是完全一样的——所有内置工具、自定义命令、MCP 服务器配置、项目规则等都能正常工作。
唯一需要注意的是,目前有几个内置命令(像 /undo 和 /redo)暂时还不支持,不过这不影响日常使用的核心功能。
如何在你的编辑器中配置 OpenCode
配置的核心其实很简单:让编辑器运行 opencode acp 这个命令。这个命令会把 OpenCode 作为一个子进程启动,然后通过 JSON-RPC 协议在标准输入输出(stdio)上和编辑器通信。听起来有点技术化,但实际配置起来只需要改几行配置文件。
下面我们来看看不同编辑器的具体配置方法。
各编辑器的具体配置方法
Zed 编辑器
如果你用的是 Zed,打开配置文件 ~/.config/zed/settings.json,加入这段配置:
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
配置好之后,在命令面板里执行 agent: new thread 就能启动 OpenCode 了。
如果你想更方便一点,还可以给它绑定一个快捷键。编辑 keymap.json 文件:
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]
这样按 Cmd+Alt+O(Mac)就能快速启动 OpenCode 了。
JetBrains 系列 IDE
用 IntelliJ IDEA、PyCharm 或其他 JetBrains IDE 的话,需要在 acp.json 文件里添加配置。注意这里的 command 需要写 OpenCode 的绝对路径:
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
记得把 /absolute/path/bin/opencode 替换成你实际安装 OpenCode 的路径。配置完成后,在 AI Chat 的代理选择器里就能看到 OpenCode 选项了。
Avante.nvim
如果你是 Neovim 用户,并且用的是 Avante.nvim 插件,配置方式是这样的:
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
如果你需要传递 API Key 之类的环境变量,可以这样配置:
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}
CodeCompanion.nvim
另一个 Neovim 插件 CodeCompanion.nvim 的配置稍有不同,需要在 setup 函数里指定:
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
这里默认使用的是 claude-sonnet-4 模型。如果你需要配置环境变量,可以参考 CodeCompanion.nvim 官方文档中关于"配置适配器:环境变量"的部分。
功能支持情况
通过 ACP 使用 OpenCode,你能用到的功能包括:
- 文件操作、终端命令等内置工具
- 你自己定义的工具和斜杠命令
- OpenCode 配置中的 MCP 服务器
- 项目里 AGENTS.md 文件定义的规则
- 自定义的代码格式化和检查工具
- 完整的代理和权限系统
目前唯一的限制是,/undo 和 /redo 这两个命令暂时还不能用。不过对于日常的代码编写、重构、调试等工作来说,这个限制影响不大。
开始使用
配置完成后,你就可以在编辑器里直接和 OpenCode 对话了。体验上和在终端里用基本一样,但更方便的是,你不需要离开编辑器就能完成所有操作。
如果你还没试过 OpenCode 的 ACP 支持,不妨花几分钟配置一下。对于经常需要在编辑器和终端之间切换的开发者来说,这个功能能省下不少时间,让你的工作流程更流畅。