Skip to content

mirri acp 子命令 ​

mirri acp 把 Mirri Code 切换到 ACP (Agent Client Protocol) 模式:在标准输入/输出上以 JSON-RPC 形式与 ACP 客户端(如 Zed、JetBrains AI Chat 等)对话,让 IDE 直接驱动 mirri 的会话、prompt 与工具调用。

sh
mirri acp

启动后命令不会打印任何 banner,立刻等待 ACP 客户端在 stdin 上发出 initialize 请求。日志会写到标准错误(以及 ~/.mirri-code/logs/ 下的诊断日志),所以 ACP 通道本身保持干净。

谁会调用它?

你通常不需要手动跑 mirri acp——这个命令是给 IDE 的子进程入口准备的。IDE 端的配置见在 IDE 中使用。

能力矩阵 ​

下表列出当前 ACP 适配层声明的能力。agentCapabilities 字段在 initialize 响应里完整返回,IDE 端可据此调整 UI。

能力取值说明
promptCapabilities.imagetrue支持 ACP image 内容块(base64 + mimeType)
promptCapabilities.audiofalse暂不支持音频 prompt
promptCapabilities.embeddedContexttrue客户端可发送 resource/resource_link 嵌入式资源块,文本内容会以 <resource uri="...">...</resource> 形式注入 prompt;blob 资源被丢弃并写 warn
mcpCapabilities.httptrue转发 IDE 配置的 HTTP MCP 服务
mcpCapabilities.ssetrue转发 IDE 配置的旧式 SSE MCP 服务
loadSessiontrue支持 session/load 续接已有会话,加载时会同步回放历史
sessionCapabilities.list{}支持 session/list 枚举当前用户的会话

ACP 方法覆盖 ​

规范把方法分为稳定面和仍在演化的不稳定面(@agentclientprotocol/sdk@0.23.0 中以 unstable_* 前缀挂载的 handler)。两部分稳定性保证完全不同——稳定面是任何生产 ACP 客户端都会用到的方法,不稳定面覆盖实验性扩展(inline-edit 预测、document 缓冲区同步、provider 管理、elicitation 等),因此分开追踪。

概览:稳定面 agent-side 实现 10/12(83%)+ client reverse-RPC 实现 4/9(44%);不稳定面只接入了 session/set_model(1/19)。 任何正常 agent 流程所需的方法(initialize → new/load/resume → prompt → cancel + 文件 I/O + 工具审批)都已实现。

稳定面 agent-side — IDE → agent(10 / 12) ​

方法状态说明
initialize是版本协商;返回 agentInfo: { name: 'Mirri Code', version }、能力矩阵、authMethods
authenticate是托管登录已退役:不广告任何认证方法;任意 method_id 一律返回 invalidParams (-32602)
session/new是接受 cwd / mcpServers,返回 configOptions[]
session/load是恢复磁盘会话并把历史以 session/update 同步回放
session/resume是session/load 的轻量兄弟方法,跳过历史回放
session/prompt是接受 text / image / resource / resource_link 内容块,流式输出 agent_message_chunk
session/cancel是中断当前 turn
session/list是枚举磁盘会话(通过 sessionCapabilities.list = {} 公告)
session/set_mode是兼容路径,与 set_config_option({configId:'mode'}) 走同一 dispatcher
session/set_config_option是统一的 model / thinking / mode picker 分发
session/close否
logout否

稳定面 client-side reverse-RPC — agent → IDE(4 / 9) ​

方法状态说明
session/update是流式推送 agent_message_chunk / tool_call* / plan / config_option_update / available_commands_update
session/request_permission是工具审批和问题 elicitation 共用此通道
fs/read_text_file是引擎文件读取路由到客户端(通过 fsCapabilities 公告)
fs/write_text_file是引擎文件写入路由到客户端
terminal/create · output · release · kill · wait_for_exit否终端 reverse-RPC 未接,shell 命令走本地执行

不稳定面(1 / 19) ​

方法状态说明
session/set_model是兼容路径,等价于 set_config_option({configId:'model'})
其余 18 个方法否包括 session 生命周期扩展、缓冲区同步、inline-edit 预测、provider 管理等

上述未列出的方法一律返回 methodNotFound。

MCP 转发 ​

ACP 客户端在 session/new 或 session/load 中提供 mcpServers 时,适配层做如下转换:

  • http → mirri 的 transport: 'http' 配置
  • stdio → mirri 的 transport: 'stdio' 配置
  • sse → mirri 的 transport: 'sse' 配置
  • acp → 丢弃并写一条 warn 日志

引擎选择与桌面版共享 ​

mirri acp 启动时会自动探测本机正在运行的桌面版服务(Mirri Code 桌面应用的后端)。探测到时,ACP 宿主以远程客户端身份复用它——IDE 里驱动的会话直接运行在桌面版的引擎中,桌面版界面实时看到会话进展(消息增量、工具调用进度),会话也由桌面版统一存储。深度编码留在 IDE、回看整理切到桌面版时,两边看到的是同一个会话。

探测不到时自动回退为独立运行,行为与从前一致,无需任何配置:

  • 桌面版没有在运行
  • 桌面版版本过旧或连接失败
  • 桌面版中途退出后重连失败——进行中的轮次按连接错误结束,之后创建的新会话改由独立引擎继续服务

与环境变量相关的开关:

  • MIRRI_ACP_ENGINE=embedded:跳过探测、强制独立运行,适合调试或需要与桌面版完全隔离的场景
  • MIRRI_ACP_REMOTE_ENGINE:显式指定远程引擎地址并直连(优先级最高,行为与从前不变)

复用桌面版引擎时有一个目录归属要求:IDE 会话的目录必须已在桌面版中打开过(注册为工作区)。未注册的目录会被拒绝创建会话,错误提示会引导你先在桌面版中打开该目录。

下一步 ​