x

智能子Agent协作详解

delegate_task 是 Hermes Agent 的并行多智能体任务分发机制,允许一个主 Agent(Parent)同时 Spawn 多个子 Agent(Children)并行处理独立子任务。

架构原理

主 Agent(Parent)
    │
    ├── delegate_task(task="分析销售数据")
    │       └── 子Agent-A:分析销售趋势
    │
    ├── delegate_task(task="生成报表")      ← 并行同时执行
    │       └── 子Agent-B:生成图表
    │
    └── delegate_task(task="发送通知")
            └── 子Agent-C:发送邮件/微信

关键机制

机制 说明
ThreadPoolExecutor 子 Agent 在独立线程中并行运行
隔离上下文 每个子 Agent 有独立 conversation history,不继承父 Agent 的中间过程
工具限制 子 Agent 禁用 delegate_taskclarifymemory(写)、send_messageexecute_code
文件系统协调层 并发子 Agent 共享文件系统时,通过文件锁协调避免写冲突
Interrupt 传播 父 Agent 的 interrupt() 会级联传播到所有子 Agent

两种角色

角色 说明 嵌套能力
leaf(默认) 叶子节点,只能执行任务,不能再分派 ❌ 不能再 spawn
orchestrator 编排者,可以 spawn 自己的 worker ✅ 可嵌套(需 max_spawn_depth >= 2

配置参数

delegation:
  max_concurrent_children: 3   # 单批次最大并行子Agent数
  max_spawn_depth: 1           # 1=flat,2=orchestrator可嵌套
  orchestrator_enabled: true    # 全局开关
  subagent_auto_approve: false  # 子Agent危险命令是否自动批准

使用方式

单任务分发

delegate_task(
    goal="帮我分析这份销售数据,找出Top10商品",
    context="数据在 /data/sales.csv",
    toolsets=["file", "terminal"]
)

批量并行分发

delegate_task(tasks=[
    {"goal": "分析销售数据", "context": "文件1"},
    {"goal": "分析库存数据", "context": "文件2"},
    {"goal": "分析客户数据", "context": "文件3"},
])

真实案例

案例1:五金门店日报并行分析

delegate_task(tasks=[
    {
        "goal": """你是销售分析Agent。请分析今天销售数据,给出:
        1) 销售额/订单数
        2) Top5爆款商品
        3) 与昨日对比
        4) 异常预警""",
        "context": "数据库: wujin_db, 表: orders, 日期: 2026-04-29",
        "toolsets": ["terminal", "file"]
    },
    {
        "goal": """你是库存分析Agent。请分析今天库存数据,给出:
        1) 安全库存预警(低于安全线的商品)
        2) 今日出库TOP10
        3) 需要补货的商品列表""",
        "context": "数据库: wujin_db, 表: inventory, 日期: 2026-04-29",
        "toolsets": ["terminal", "file"]
    },
    {
        "goal": """你是员工绩效Agent。请分析今天员工表现,给出:
        1) 每位员工的订单数和销售额
        2) 业绩排名
        3) 是否有迟到早退""",
        "context": "数据库: wujin_db, 表: employees, 日期: 2026-04-29",
        "toolsets": ["terminal", "file"]
    }
])

案例2:竞品调研(orchestrator 嵌套场景)

delegate_task(
    goal="你是一个调研编排者。帮我调研竞品A/B/C的以下信息:价格体系、热销产品、营销策略。每个竞品分配一个子Agent,最后汇总成对比报告",
    context="竞品列表:品牌A、品牌B、品牌C",
    role="orchestrator"   # 允许继续分派
)

案例3:批量文档处理

delegate_task(tasks=[
    {"goal": "总结这份合同的关键条款", "context": "文件: /contracts/合同A.pdf"},
    {"goal": "总结这份合同的关键条款", "context": "文件: /contracts/合同B.pdf"},
    {"goal": "总结这份合同的关键条款", "context": "文件: /contracts/合同C.pdf"},
    {"goal": "总结这份合同的关键条款", "context": "文件: /contracts/合同D.pdf"},
])
# 4个合同同时处理,比串行快4倍

五金AI智能体实际应用

你之前做的五金AI智能体分析体系(Agent-01到Agent-06)实际上就是这种模式的雏形:

主控Agent
    ├── Agent-01 数据采集 ──┐
    ├── Agent-02 每日分析   ──┼── ClickHouse ── Agent-06 预警推送
    ├── Agent-03 库存预测   ──┘
    ├── Agent-04 供应商分析
    └── Agent-05 财务月报

delegate_task 把这个能力内置成原生工具,可以在一个对话内自动完成协作编排。

Left-click: follow link, Right-click: select node, Scroll: zoom
x