ACP 是 OpenClaw 用于将长时/高风险操作隔离到子进程的核心机制,解决主 Agent 循环被阻塞的问题。

核心思想

主 Agent 循环是串行的。将慢操作(Azure API、Terraform apply 等)放到 ACP 子进程中执行,即使子进程挂起,主循环依然响应。本质是 进程隔离 应用于 AI Agent 编排。

两种 ACP 使用方向

方向说明
ACP sessions inside OpenClaw通过 acpx 插件将外部 harness(Claude Code、Codex、Gemini CLI)作为受监督子进程运行
OpenClaw ACP bridgeopenclaw acp CLI 命令,让 IDE 通过 stdio 将 prompt 转发到 OpenClaw Gateway

快速配置

# 安装 acpx 插件
openclaw plugins install acpx
openclaw config set plugins.entries.acpx.enabled true
 
# 验证
/acp doctor
 
# 配置
openclaw config set acp.enabled true
openclaw config set acp.backend "acpx"
openclaw config set acp.defaultAgent "claude-code"
openclaw config set acp.maxConcurrentSessions 8

权限注意:ACP session 无 TTY,默认权限模型会在文件写入/exec 时抛 AcpRuntimeError。需配置 permissionMode 和 nonInteractivePermissions。

常用命令

/acp spawn          — 启动新 session
/acp status         — 查看运行中的 session
/acp timeout <s>    — 设置超时
/acp steer          — 向运行中 session 发送指令
/acp cancel         — 终止卡住的 session
/acp close          — 正常关闭

四种非阻塞模式

模式适用场景
Exec Backgrounding已知时长的 shell 命令;exec 工具 + timeout + yieldMs
ACP Sessions复杂多步骤工作(含工具调用、文件操作、决策)
Cron Reconciliation定期检查状态,替代等待完成
Webhooks事件驱动;外部系统完成后 POST /hooks/agent

实践中四种组合使用:ACP session 处理重活,exec backgrounding 处理快命令,cron 做状态对账,webhook 做事件通知。

故障排查

症状原因解决
spawn 后立即 AcpRuntimeError非交互权限配置缺失检查 permissionMode 和 nonInteractivePermissions
Zombie sessions 占满并发槽session 完成后未正常关闭/acp status 检查,设置 runtime.ttlMinutes
主循环阻塞inline exec 调用长时操作迁移到 ACP session

相关概念