1. 为什么要在 IDEA 里接本地 agent
如果你已经在终端里用顺手了 claude code cli,或者用 npm 全局装过某个 agent 包,大概率会冒出一个念头:能不能不切窗口,直接在 IntelliJ IDEA 里把活干完?答案是可以的,靠的就是 acp(Agent Client Protocol)这套约定。它做的事情说白了很简单——把「IDE」和「本地已经装好的 agent 进程」用一层标准协议连起来,IDE 负责发指令、收结果,agent 负责真正跑模型、改文件、执行命令。
这篇要解决的就是这个场景:本地 agent 已经装好,但 IDEA 里识别不到、或者识别到了却连不通。我会把 settings.json 的骨架、TaoToken 统一 Key/API 通道该填在哪、以及怎么用一次最小请求确认「IDE 真的调通了本地 agent」讲清楚。适合两类人:一是刚装完 claude code cli 想搬进 IDEA 的;二是配了 acp 但启动日志报错、不知道从哪查的。全程按「能复制、能跑通」来写,不绕概念。
需要先说明一点:acp 本身只是通道,agent 能不能干活,取决于它背后的模型通道是否可用。所以下面会把「本地 agent 配置」和「模型 API 通道」分开讲,避免你把两类问题混在一起排查。
2. 前置准备:本地 agent 与 TaoToken 通道
2.1 确认本地 agent 已安装
先确认你终端里能直接跑起来。以 claude code cli 为例,装完之后在终端执行一次,能看到交互界面或版本信息,就说明本地这层没问题。acp 服务本身通常通过 npm 全局包提供,比如@agentclientprotocol/claude-agent-acp这类适配包,它的作用是把 claude code cli 包装成 acp 能识别的服务进程。
这里有个容易踩的点:IDEA 调 acp 时,本质是去启动一个子进程,所以它依赖的是「命令能不能在非交互环境下被找到」。你在终端里能跑,不代表 IDEA 启动子进程时也能找到,尤其是 Windows 下npx和npx.cmd的区别,后面配置里会专门处理。
2.2 TaoToken 统一 Key/API 通道的接入位置
本地 agent 要真正产出结果,得有可用的模型通道。TaoToken 在这里的角色是提供统一的 Key 和 API 入口,你不需要在多个 agent 之间来回换配置,把通道信息集中放一处即可。它的 API 地址是https://taotoken.net/api,Key 在控制台的 API Keys 页面生成。
接入位置有两个选择:一是写进 agent 自己的环境变量(推荐,隔离性好),二是通过 acp 的env字段透传给子进程。我一般用后者,因为 settings.json 本身就是集中管理的地方,改一处就生效。生成 Key 的入口在这里:
控制台 API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
如果你还没决定用哪个模型,可以先在模型对话页试一下通道是否通,再回来配 acp:
模型对话:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite
3. 可复制的 settings.json 骨架
3.1 配置文件放哪
IDEA 的 acp 配置一般走项目级或用户级的 settings.json。项目级的好处是跟着仓库走,团队里其他人拉下来就能用;用户级的好处是全局生效,不用每个项目配一遍。我建议先用项目级验证,跑通后再决定要不要提到用户级。
文件位置通常在项目根目录下的配置目录里,具体路径以你 IDEA 版本弹出的 acp 配置入口为准——从设置里点进 acp 那一项,它会告诉你当前读取的是哪个文件。别自己猜路径,直接看 IDE 提示的最稳。
3.2 骨架内容
下面这份是可以直接改的骨架,重点看command、args、env三块:
{ "default_mcp_settings": {}, "agent_servers": { "Claude Code": { "command": "npx.cmd", "args": ["@agentclientprotocol/claude-agent-acp"], "env": { "ACP_PERMISSION_MODE": "bypassPermissions", "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "你的TaoTokenKey" }, "use_idea_mcp": true, "use_custom_mcp": true } } }几个参数逐个说清楚:
command在 Windows 下写npx.cmd,macOS/Linux 写npx。这是最常见的「终端能跑、IDEA 报找不到命令」的根因,因为 Windows 的进程启动不认npx这个无扩展名形式。
args指向 acp 适配包。如果你装的是别的 agent,把包名换成对应的适配包即可,结构不变。
env里ACP_PERMISSION_MODE控制权限模式,bypassPermissions表示不再逐条弹确认,适合本地可信环境;如果你想要更谨慎,可以改成需要确认的模式,代价是每次操作都要点一下。
ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY就是 TaoToken 通道的接入点。把 Key 换成你在控制台生成的那串即可。注意这里用的是环境变量透传,agent 子进程启动时会读到。
use_idea_mcp和use_custom_mcp决定是否复用 IDEA 自带的 MCP 能力,保持true一般没问题。
3.3 多 agent 并存怎么写
如果你本地装了不止一个 agent,agent_servers下可以并列多个键,每个键是一套独立的 command/args/env。IDEA 会让你选择用哪个。这样切换 agent 不用改文件,选一下就行。
4. 验证请求与成功结果
4.1 重启并确认识别
改完 settings.json 后重启 IDEA,这一步不能省,因为 acp 服务是在启动阶段拉起的。重启后在 agent 选择入口里应该能看到你配置的名字,比如Claude Code。如果看不到,先别急着怀疑配置内容,八成是文件路径不对或者 JSON 语法有错。
4.2 看启动日志
IDEA 的 acp 相关日志会记录子进程的启动命令和返回。重点看两件事:一是子进程有没有被成功拉起,二是env有没有被正确传入。如果日志里出现「command not found」类信息,回到 3.2 检查command的平台写法;如果出现鉴权失败,检查 Key 和 BASE_URL。
4.3 一次最小请求
识别成功不代表通道通。发一个最小请求验证:让 agent 做一个不涉及文件改动的简单任务,比如「用一句话说明当前工作目录是什么」。这个请求会走完整链路——IDEA 发指令、acp 转发、agent 调模型、结果回传。
成功的结果是:你能在 IDEA 里看到 agent 的回复,且回复内容合理。如果卡住不动,多半是模型通道没通,回到 2.2 确认 Key 和地址。这一步跑通,说明「IDE → acp → 本地 agent → TaoToken 通道」整条链路是活的。
5. 本篇常见错排查
5.1 报错找不到 npx
现象是启动日志里提示命令不存在。原因基本是平台写法问题。Windows 用npx.cmd,macOS/Linux 用npx。如果你在 Windows 上写了npx,子进程启动会失败。
5.2 识别到 agent 但请求无响应
这种最常见。链路前半段(IDE 到 agent)是通的,卡在后半段(agent 到模型)。检查env里的ANTHROPIC_BASE_URL是否写成https://taotoken.net/api,以及 Key 是否有效。可以先去模型对话页单独验证通道,排除是通道问题还是配置问题。
5.3 JSON 语法错误导致整份配置不生效
settings.json 对语法很敏感,多一个逗号、少一个引号都会让整份配置被忽略,表现就是「改了跟没改一样」。建议用编辑器的 JSON 校验功能过一遍,或者贴到在线校验里确认。
5.4 权限模式导致操作被拦
如果你把ACP_PERMISSION_MODE设成了需要确认的模式,agent 每次动文件都会等你点确认,看起来像「卡住」。本地可信环境下用bypassPermissions更顺,但要清楚这意味着 agent 可以自主改文件。
5.5 全局包版本不匹配
acp 适配包和 agent 本体版本差太多时,可能出现协议字段对不上。表现是启动日志里有解析类报错。处理方式是更新到较新的版本,或者按适配包文档对齐版本。
6. 长期编码与 Agent 场景的通道选择
如果你只是偶尔在 IDEA 里让 agent 帮个小忙,按上面的配置就够了。但如果你打算把 agent 当成日常编码的主力——比如让它长时间跑任务、做多轮重构、接进自动化流程——那通道的稳定性和额度管理就变得重要。这种情况下更适合用 Coding Plan 这类面向长期编码场景的方案,而不是每次临时配 Key。
Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
接入文档里有更完整的字段说明和不同 agent 的适配写法,遇到骨架里没覆盖的参数可以去查:
接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
最后给一个我自己的习惯:settings.json 里别把 Key 硬编码进版本库。项目级配置提交前,把 Key 换成占位符,本地用环境变量覆盖,这样团队协作时不会互相泄露。跑通一次最小请求后,把那份能用的配置存一份到本地笔记,下次换机器直接复制,比重新排查快得多。