Skip to content

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 acpopencode serve 有什么区别?

A: opencode acp 通过 stdio 通信,专为编辑器集成设计;opencode serve 启动一个 HTTP 服务器,供 Web 界面或远程访问使用。