在一个openclaw中如何让一个智能体指挥另一个智能体工作
在一个openclaw中如何让一个智能体指挥另一个智能体工作
在 OpenClaw 中,让一个智能体(主 Agent)指挥另一个智能体(子 Agent)工作,主要通过 任务调度、委派协议和工具调用 实现,以下是核心方法和操作步骤:
一、核心机制
OpenClaw 支持两种主要协同模式:
- 持久化智能体(Persistent Agents):长期运行,绑定到特定渠道(如飞书群、Telegram 账号),拥有独立记忆、模型和工具权限。
- 子智能体(Sub-agents):由主 Agent 按需动态创建,用于执行特定任务,完成后归档。
要实现“指挥”,通常采用 主 Agent + 子 Agent 的架构,其中主 Agent 负责决策、拆解任务并调用子 Agent 执行。
二、实现步骤
1. 创建多个智能体
- 使用命令行添加至少两个智能体:一个作为主调度器(如 `main`),另一个作为执行者(如 `coder`、`researcher`)。
openclaw agents add --workspace ~/.openclaw/workspace-main main
openclaw agents add --workspace ~/.openclaw/workspace-coder coder
2. 配置主 Agent 为调度器
- 在主 Agent 的 `SOUL.md` 或 `AGENTS.md` 文件中定义 委派协议,明确其职责是“指挥”而非“亲自动手”。
- 示例规则(来自资料 ):
Orchestration Contract
1. You are the orchestrator (main), not a single-run responder.
2. For info-heavy, repetitive, or broad web tasks, delegate to subagent `coder`.
3. Delegation protocol:
- Send coder a clear subtask with required output format.
- Wait for coder result.
- Validate result quality and gaps.
- Produce final answer yourself.
4. Never end with a planning placeholder.
3. 启用 Agent 间通信
- 在全局配置 `~/.openclaw/openclaw.json` 中启用 `agentToAgent` 工具:
{
"tools": {
"agentToAgent": {
"enabled": true,
"allow": ["main", "coder"]
}
}
}
4. 绑定路由规则
- 确保主 Agent 是唯一入口(如绑定到用户私聊或主群),子 Agent 可通过主 Agent 调用,但不直接暴露给用户。
- 示例绑定(飞书群组):
{
"bindings": [
{
"agentId": "main",
"match": { "channel": "feishu", "peer": { "kind": "group", "id": "oc_5b6799cff4a754c15e5ff3025becc648" } }
}
]
}
5. 主 Agent 调用子 Agent
- 主 Agent 可通过 OpenClaw 内置命令(如 `sessions_send` 或 `agentToAgent` 工具)向子 Agent 发送任务。
- 示例自然语言指令(用户对主 Agent 说):
> “请用 coder 分析这段代码并优化。”
三、关键要点
- 职责分离:主 Agent 负责理解上下文、拆解任务、整合结果;子 Agent 专注执行具体操作(如写代码、查资料)。
- 成本优化:主 Agent 可使用高性能模型(如 Claude Sonnet),子 Agent 使用轻量模型(如 Haiku)以节省 Token。
- 隔离性:每个智能体有独立 workspace,避免记忆和工具权限污染。
- 验证调用:可通过日志确认子 Agent 是否被真实调用:
grep -i "provider=qwen" /tmp/openclaw/*.log
四、推荐实践
- 适用场景:复杂工作流(如开发、研究、内容创作)。
- 避免误区:不要让主 Agent “假装”调用子 Agent 而不真正执行(需通过日志验证)。
更多推荐

所有评论(0)