当前位置:首页 > 技术 > 正文内容

在 IntelliJ IDEA 中通过 ACP 协议集成 Claude Code 的完整实践指南

访客 技术 2026年10月21日 1

JetBrains 自 2025 年底起在 AI Assistant 插件中正式引入对 Agent Client Protocol(ACP) 的原生支持,标志着 IDE 级 AI 集成进入标准化新阶段。该能力允许开发者将任意兼容 ACP 的外部 AI Agent(如 Claude Code、Gemini CLI 或 Docker cagent)无缝接入 IntelliJ IDEA、PyCharm 等 IDE,无需依赖定制插件或 Web UI 中转。

什么是 ACP?

ACP 是一种基于 JSON-RPC 2.0 的开放通信协议,由 Zed Industries 主导设计,旨在统一 AI Agent 与代码编辑器之间的交互方式。其核心目标是解耦:IDE 作为客户端(Client),Agent 作为独立服务端(Server),双方仅需遵循同一消息规范即可互通。这类似于 LSP(Language Server Protocol)之于语言功能,但聚焦于 AI 智能体的上下文感知、工具调用与任务执行能力。

为什么 ACP 改变了开发体验?

传统方式下,每个 AI 工具需为不同 IDE 单独开发适配层——Claude Code 要写 IDEA 插件,Cursor 要做 VS Code 扩展,维护成本高且更新滞后。ACP 将适配逻辑下沉至 Agent 侧:只要 Agent 实现 ACP Server 接口,它便天然兼容所有支持 ACP 的 IDE;反之亦然。这种"一次实现,多端可用"的范式显著提升了生态互操作性。

当前主流支持情况

  • IDE 端:IntelliJ Platform(2024.2+)、Zed 编辑器、VS Code(通过扩展)
  • Agent 端:Claude Code(via @zed-industries/claude-code-acp)、Google Gemini CLI、Docker cagent、Kimi CLI、Qoder CLI
  • 基础设施:Docker Desktop 自 2025.11 起内置 cagent 运行时,并启用 ACP 接口,支持容器内托管 AI Agent 服务

底层通信模型

ACP 使用标准 stdin/stdout 流进行进程间通信,Agent 启动后作为一个长期运行的 JSON-RPC Server 进程,IDE 通过本地管道与其交换结构化请求与响应。该设计确保 Agent 完全独立于 IDE 生命周期,便于调试、版本管理及资源隔离。

前置准备

  1. IDE 版本:IntelliJ IDEA 2024.2 至 2025.3.x(推荐使用 2025.2 或更高构建)
  2. 插件状态:已安装并启用 JetBrains AI Assistant 插件(v2025.12+)
  3. 运行时环境:Node.js 18+ 与 pnpm(或 npm/yarn)已全局配置
  4. Claude Code:本地可执行命令 claude-code 已通过官方方式安装并验证可用

集成步骤详解

1. 启用 ACP 配置界面

打开 AI Assistant 面板(快捷键 Ctrl+Shift+X 或点击右下角图标),点击右上角模型选择器 → 选择 "配置智能体服务器",IDE 将自动生成并打开项目根目录下的 acp.json 文件。

2. 安装 ACP 适配器

执行以下命令安装 Zed 提供的官方桥接器:

pnpm add -g @zed-industries/claude-code-acp

安装完成后,可通过 which claude-code-acp 确认二进制路径(例如:/Users/alex/.local/share/pnpm/claude-code-acp)。

3. 编写 acp.json 配置

在 acp.json 中定义 Agent Server 实例。示例配置如下(支持多 Agent 并存):

{
  "agent_servers": {
    "Claude-Task": {
      "command": "/Users/alex/.local/share/pnpm/claude-code-acp",
      "args": ["--model", "claude-4.5-sonnet"],
      "env": {
        "CLAUDE_API_KEY": "${env.CLAUDE_API_KEY}",
        "HTTP_PROXY": "${env.HTTP_PROXY}"
      }
    },
    "Gemini-Pro": {
      "command": "gemini-acp",
      "args": ["--model", "gemini-2.0-flash"]
    }
  }
}

注意:env 字段支持变量注入,可用于安全传递敏感凭据;args 可覆盖默认模型或启用调试模式。

功能特性对比

能力维度 ACP 集成(Claude Code) 内置 JetBrains Claude 插件
MCP(Model Context Protocol)工具链 ✅ 全面支持文件读写、Git 操作、Shell 执行、自定义 HTTP API 调用 ❌ 仅限有限 IDE 内部 API,不支持本地系统级工具
执行模式 ✅ 原生 Plan/Act 分阶段工作流,适合复杂重构或跨文件任务 ⚠️ 以对话轮次为主,缺乏显式任务规划层
模型切换自由度 ✅ 支持任意 Claude 官方模型 + 第三方中转服务(如 OneAPI、FastGPT) ⚠️ 绑定插件预设模型列表,扩展需修改源码
部署灵活性 ✅ Agent 可运行于容器、远程服务器或本地沙箱 ❌ 强依赖 JetBrains 云服务或本地插件进程

常见问题排查

  • "Command not found" 错误:检查 command 路径是否绝对且可执行;若使用相对路径,请确保已加入 $PATH;也可改用 sh -c "exec /full/path/claude-code-acp" 包装
  • Agent 启动后无响应:在终端手动运行配置命令,确认输出是否含 ACP server listening on stdin;检查 IDEA 日志(Help → Show Log in Finder)中是否有 JSON-RPC 解析错误
  • MCP 工具未生效:确认 claude-code 本身已启用对应 MCP 插件(如 fs-mcp, git-mcp),ACP 适配器会自动透传其能力

未来演进方向

ACP 协议目前处于活跃迭代期,社区关注的重点包括:
– JetBrains 正在开发 per-project 级别的 .acp.json 支持,实现工程粒度的 Agent 配置隔离;
– Cursor、Windsurf 等商业 AI IDE 已宣布将在 Q2 2026 发布 ACP Server 实现;
– 开源社区正推动 MCP 工具注册中心(MCP Hub),支持一键发现与安装跨平台工具包。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。