乐于分享
好东西不私藏

OpenClaw 核心技术深度解析(七):子 Agent 与 ACP 协议

OpenClaw 核心技术深度解析(七):子 Agent 与 ACP 协议

OpenClaw 不只是一个 Agent,它是一个 Agent 编排平台。通过子 Agent 系统和 ACP(Agent Communication Protocol)协议,OpenClaw 实现了任务委派、多 Agent 协作和跨框架互操作。


子 Agent 系统:任务委派的架构

子 Agent 系统的核心实现位于 src/agents/subagent-registry.ts,提供完整的子 Agent 生命周期管理:

核心能力

功能
实现
说明
生成sessions_spawn
 工具
创建独立的子 Agent 会话,拥有独立的工作区和工具集
注册表
内存 + 磁盘双存储
跟踪所有子 Agent 的运行状态
生命周期
Pi Agent 事件监听
监听启动/完成/错误事件
清理
可配置策略
删除或保留已完成的子 Agent 数据
通知
完成回调
子 Agent 完成时通知父 Agent
跨进程
Gateway RPC
使用 Gateway WebSocket 跨进程等待子 Agent

子 Agent 的工具集继承

子 Agent 的工具集遵循最小权限原则

父 Agent 工具集(24+ 工具)
    → 8 层策略过滤
    → Subagent 策略层额外限制
    → 子 Agent 最终工具集(通常 8-15 个工具)

子 Agent 永远不会拥有比父 Agent 更多的权限。这确保了任务委派不会成为权限提升的途径。

实际场景:多 Agent 协作

假设你对 OpenClaw 说:"写一篇关于 Rust 异步编程的技术博客"

父 Agent 的编排过程:

步骤
Agent
任务
工具
1
父 Agent
分析任务,制定计划
无(纯推理)
2
子 Agent A(研究)
搜索 Rust 异步编程的最新资料
web_search, web_fetch, read, write
3
子 Agent B(写作)
基于研究资料撰写博客
read, write, edit
4
子 Agent C(审校)
检查文章质量和技术准确性
read, web_search
5
父 Agent
汇总结果,输出最终文章
read, message

每个子 Agent 在独立的会话中运行,拥有独立的上下文窗口。这意味着:

  • 研究 Agent 的大量搜索结果不会污染写作 Agent 的上下文
  • 每个 Agent 可以使用最适合其任务的模型(研究用快速模型,写作用高质量模型)
  • 子 Agent 的失败不会影响其他子 Agent

ACP 协议:Agent 间通信标准

ACP(Agent Communication Protocol)是一个新兴的 Agent 间通信标准,OpenClaw 在 src/acp/ 中实现了它。

ACP 的核心设计

ACP 使用 stdio(NDJSON) 作为传输层:

IDE/客户端 ←→ [stdin/stdout NDJSON] ←→ OpenClaw ACP Bridge ←→ [WebSocket] ←→ Gateway

正如 CurateClick 的分析所说:OpenClaw ACP 是一个命令行工具,实现了 Agent Client Protocol,作为 IDE 和 OpenClaw Gateway 实例之间的桥梁。它通过 stdio 说 ACP 协议,将提示转发到 Gateway 的 WebSocket,并维护会话映射,使 AI 对话在编辑器重启后仍然持续。

ACP 消息格式

{"type""prompt""session""abc123""content""帮我重构这个函数"}
{"type""tool_call""tool""read""params": {"path""src/main.py"}}
{"type""tool_result""result""...文件内容..."}
{"type""response""content""我已经分析了这个函数,建议..."}

ACP 的价值

ACP 的最大价值在于跨框架互操作

场景
说明
IDE 集成
VS Code、Cursor 等编辑器通过 ACP 与 OpenClaw 通信
跨框架协作
不同框架的 Agent 通过 ACP 互相调用
自动化管道
CI/CD 管道通过 ACP 触发 Agent 任务
监控和审计
通过 ACP 流监控 Agent 的所有操作

ACP Provenance(来源追踪)

OpenClaw 2026.3.8 版本引入了 ACP Provenance 功能:

  • Agent 保留来源上下文,注入与会话追踪 ID 绑定的可见收据
  • 防止未授权的任务执行
  • 提供取证级的可追溯性
  • 在多 Agent 或定时任务并发运行的企业场景中尤为重要

子 Agent 的调度策略

OpenClaw 的子 Agent 调度支持多种模式:

串行模式

父 Agent → 子 Agent A → 完成 → 子 Agent B → 完成 → 汇总

适合有依赖关系的任务(如先研究再写作)。

并行模式

父 Agent → 子 Agent A ─┐
         → 子 Agent B ─┤→ 全部完成 → 汇总
         → 子 Agent C ─┘

适合独立的任务(如同时搜索多个主题)。

混合模式

父 Agent → 子 Agent A(研究)→ 完成
         → 子 Agent B(研究)→ 完成
         → 汇总研究结果
         → 子 Agent C(写作)→ 完成
         → 子 Agent D(审校)→ 完成
         → 最终输出

实际场景中最常用的模式。


与其他编排方案的对比

特性
OpenClaw 子 Agent
CrewAI
AutoGen
LangGraph
编排模式
父子委派
角色分工
对话式
图状态机
通信协议
ACP (NDJSON)
内部 API
消息传递
状态传递
跨框架
✅ ACP 标准
❌ 封闭
⚠️ 有限
❌ 封闭
权限隔离
✅ 工具集继承
❌ 共享
❌ 共享
❌ 共享
独立上下文
✅ 每个子 Agent 独立
⚠️ 部分共享
❌ 共享
⚠️ 取决于节点
来源追踪
✅ ACP Provenance

总结

OpenClaw 的子 Agent 系统和 ACP 协议代表了 AI Agent 编排的一个重要方向:标准化的 Agent 间通信。通过 ACP,不同框架的 Agent 可以互相协作;通过子 Agent 系统,复杂任务可以被分解为独立的子任务并行执行。这种设计为构建大规模 Agent 系统奠定了基础。


参考链接

  • CurateClick - 2026 Complete Guide: OpenClaw ACP
  • AICost - OpenClaw 2026.3.8 Release: ACP Provenance
  • Blockchain News - OpenClaw 2026.3.2: ACP Subagents Enabled by Default
  • Ken Huang - OpenClaw Design Patterns
  • Moely - OpenClaw Source Code Review