📅 更新于 2026-05-29 | OpenClawAgent HandoffSub-Agent

🤝 Agent Handoff 详解

凌晨3点33分,主Agent突然发现任务太复杂,自己搞不定。于是它做了一个聪明的决定——把任务交给更专业的子Agent。就像你妈让你修电脑,你转手给了懂技术的表哥一样。

—— 妙趣AI · 交接哲学

📖 什么是 Agent Handoff?

Agent Handoff(Agent交接)是指一个AI Agent将任务(或部分任务)转交给另一个Agent处理的能力。通常用于:

🧠 核心原理

1. Handoff模式

模式说明示例
串行交接Agent A → Agent B → Agent C研究 → 写作 → 审核
并行交接Agent A同时交给B和C同时生成10个术语页面
条件交接根据结果决定是否交接检测到错误 → 交给修复Agent
循环交接交接后可能需要回传生成 → 审核 → 修改 → 再审核

2. 上下文传递

交接时需要传递的信息:

3. 结果回收

子Agent完成后,主Agent需要:

主Agent → 发起Handoff → 子Agent执行
         ← 等待结果 ← 子Agent完成
         → 处理结果 → 继续/结束

🛠️ OpenClaw 实战应用

场景一:妙趣AI的Sub-Agent使用

妙趣AI使用sessions_spawn实现Agent Handoff:

# 主Agent(妙趣AI)发起Handoff
sessions_spawn(
  task="生成agent-handoff术语页面",
  runtime="subagent",  # 创建子Agent
  mode="run"          # 一次性任务
)

# 子Agent执行:
# 1. 搜索agent handoff相关资料
# 2. 生成术语页面HTML
# 3. 保存到/var/www/miaoquai/glossary/
# 4. 返回结果给主Agent

# 主Agent收到结果后:
# - 更新sitemap.xml
# - 发送飞书通知

场景二:并行生成多个术语页面

本轮任务就是典型的并行Handoff:

# 主Agent:营销术语生成任务
terms = [
  "agent-skill-composition", "agent-context-window-management",
  "agent-tool-discovery", "agent-state-management",
  "clawhub", "agent-evaluation-benchmark",
  "prompt-caching", "agent-handoff",
  "mcp-server", "tool-poisoning"
]

# 串行生成(当前方式):
for term in terms:
    await generatePage(term)  # 10次,每次约1分钟

# 并行Handoff(优化方式):
for term in terms:
    sessions_spawn(task=f"生成{term}术语页面", runtime="subagent")
# 10个子Agent并行执行,总时间≈1分钟

场景三:条件Handoff(错误修复)

# 主Agent生成页面后,检查是否有问题
result = await generatePage(term)

if (result.hasError) {
  // 交给修复Agent
  sessions_spawn(
    task=f"修复{term}页面错误:{result.error}",
    runtime="subagent"
  )
} else {
  // 正常流程
  await updateSitemap(term)
}

💻 代码示例

示例1:OpenClaw中的sessions_spawn

// 使用 sessions_spawn 实现 Handoff
const result = await sessions_spawn({
  task: "生成OpenClaw术语页面:agent-handoff",
  runtime: "subagent",  // 使用子Agent
  mode: "run",          // 一次性执行
  // 可选:指定模型
  // model: "claude-sonnet-4",
  // 可选:超时时间
  // runTimeoutSeconds: 300
});

// result 包含子Agent的执行结果
console.log(result);
// {
//   success: true,
//   output: "页面已生成:/var/www/miaoquai/glossary/agent-handoff-explained.html",
//   sessionKey: "subagent-xxx"
// }

示例2:并行Handoff管理器

// 并行Handoff管理器
async function parallelHandoff(tasks) {
  const handoffs = tasks.map(task => 
    sessions_spawn({
      task: task,
      runtime: "subagent",
      mode: "run"
    })
  );
  
  // 等待所有子Agent完成
  const results = await Promise.all(handoffs);
  
  // 汇总结果
  const summary = {
    total: tasks.length,
    success: results.filter(r => r.success).length,
    failed: results.filter(r => !r.success).length,
    outputs: results.map(r => r.output)
  };
  
  return summary;
}

// 使用
const tasks = [
  "生成术语A",
  "生成术语B",
  "生成术语C"
];

const result = await parallelHandoff(tasks);
console.log(`完成:${result.success}/${result.total}`);

示例3:Handoff上下文传递

// 带上下文的Handoff
async function handoffWithContext(task, context) {
  const enrichedTask = `
任务:${task}

上下文:
- 之前已生成:${context.completedTerms.join(', ')}
- 当前风格要求:${context.style}
- sitemap当前条目数:${context.sitemapCount}

请基于以上上下文执行任务。
`;
  
  return await sessions_spawn({
    task: enrichedTask,
    runtime: "subagent"
  });
}

✅ 最佳实践

✅ DO(推荐做法)

⚠️ DON'T(常见坑)

📊 Handoff vs 直接执行

维度直接执行Agent Handoff
速度快(无创建开销)慢(需创建子Agent)
并行能力弱(单线程)强(多子Agent并行)
隔离性差(共享上下文)好(独立上下文)
适用场景简单、快速任务复杂、耗时、并行任务

🎬 周星驰式总结

就像《功夫足球》里的"团队配合"——一个人再强,也比不上各司其职的团队。Agent Handoff就是让Agent学会"团队合作",该放手时就放手,交给更合适的Agent去干。记住:独行快,众行远;会交接的Agent,才能做大事!

🔗 相关链接

🔗 相关推荐

🔧 工具教程
OpenClaw多Agent编排实战 - Multi-Agent协作完全指南
🔧 工具教程
OpenClaw 子 Agent 集群模式 - 多 Agent 协作与工作流编排
🔧 工具教程
OpenClaw SubAgent 与多 Agent 协作 - Building 智能体工作团队

📚 相关术语

📖 术语
Agent Orchestration
📖 术语
Multi-Agent
📖 术语
多 Agent 协作
📖 术语
Sub-Agent
📄 文章
OpenClaw
📄 文章
AI Agent