Appearance
OpenCode 支持 Agent Client Protocol(ACP),这是一个开放协议,用于标准化代码编辑器与 AI Coding Agent 之间的通信。配置后,编辑器可以把 OpenCode 当作子进程启动,通过 JSON-RPC/stdio 进行交互,功能与终端 TUI 完全一致。
OpenCode 支持 Agent Client Protocol(ACP),让你可以在任意兼容编辑器中直接使用它,无需切换到终端。
ACP 是一个开放协议,通过 JSON-RPC over stdio 标准化编辑器与 AI Coding Agent 的通信方式。
提示:查看支持 ACP 的编辑器和工具列表,可以参考 ACP 进展报告。
配置方法
在编辑器中配置 opencode acp 命令即可启用 ACP 模式。
该命令会将 OpenCode 作为 ACP 兼容子进程启动,通过 stdio 与编辑器进行 JSON-RPC 通信。
Zed
在 Zed 的配置文件(~/.config/zed/settings.json)中添加:
json
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}通过 Command Palette 执行 agent: new thread 打开 OpenCode 面板。
也可以在 keymap.json 中绑定快捷键:
json
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]JetBrains IDEs
在 JetBrains IDE 的 acp.json 中按照官方文档配置:
json
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}配置后,在 AI Chat 的 agent 选择器中选择 "OpenCode" 即可使用。
Avante.nvim
在 Avante.nvim 配置中添加:
lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}如果需要传入环境变量:
lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}CodeCompanion.nvim
在 Neovim 配置中添加:
lua
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})如需传入环境变量,参考 CodeCompanion.nvim 文档。
支持的功能
通过 ACP 使用 OpenCode 时,功能与终端 TUI 完全一致:
- 内置工具(文件操作、终端命令等)
- 自定义工具和 Slash 命令
opencode.json中配置的 MCP 服务器- 项目
AGENTS.md中的规则 - 自定义代码格式化工具
- Agents 和权限系统
注意:部分内置 Slash 命令(如
/undo、/redo)目前在 ACP 模式下不可用。
常见问题
Q: ACP 模式和直接在终端用 OpenCode 有什么区别?
A: 功能完全相同,ACP 只是把 OpenCode 嵌入到编辑器里,让你不必在编辑器和终端之间来回切换。
Q: 我的编辑器不在上面的列表里,能用 ACP 吗?
A: 只要编辑器支持 ACP 协议,都可以通过 opencode acp 命令接入。可以查看 ACP 进展报告 了解支持情况。
Q: opencode acp 和 opencode serve 有什么区别?
A: opencode acp 通过 stdio 通信,专为编辑器集成设计;opencode serve 启动一个 HTTP 服务器,供 Web 界面或远程访问使用。