什么时候该用子Agent?
- ✅ 任务完全独立:子任务不需要主任务的实时状态,可以独立完成
- ✅ 需要隔离上下文:子任务如果在主对话里做,会污染上下文,影响后续判断
- ✅ 可以并行执行:多个独立子任务同时跑,节省时间
- ✅ 子任务本身很复杂:需要子Agent自己做多步推理,独立完成
delegate_task的三要素
delegate_task(
goal="...", # 子Agent的目标,越具体越好
context="...", # 子Agent需要的背景信息(它没有主对话的上下文!)
role="leaf" # leaf=专注工作者 / orchestrator=可以再派子Agent
)子Agent结果验证的重要性
子Agent汇报"成功"不代表真的成功。必须验证:
# ❌ 错误:直接信任子Agent的自我汇报
result = delegate_task(goal="把文件上传到GitHub")
print("成功!") # 不对,没验证
# ✅ 正确:要求子Agent返回可验证的handle,然后自己验证
result = delegate_task(
goal="把文件上传到GitHub,完成后返回commit SHA和文件URL",
context="仓库:..."
)
# 然后自己去验证URL是否真实存在
verify_url(result["url"]) # 确认文件确实在GitHub上完整使用示例
# 主任务:生成每日AI报告并推送
# 把耗时的信息收集拆成并行子任务
tasks = [
{
"goal": "搜索今日GitHub上star增长最快的AI项目,返回前5个的名称、star数、简介",
"context": "只关注AI/ML相关仓库,今日指2026-07-24"
},
{
"goal": "搜索今日HackerNews上关于AI的热门讨论,返回前3个的标题和链接",
"context": "HN分数需要>100"
},
{
"goal": "搜索今日arXiv上最新发布的LLM相关论文,返回2-3篇的标题和摘要",
"context": "关注cs.AI和cs.CL类别"
}
]
# 并行运行,等待所有结果
results = delegate_task(tasks=tasks)
# 验证每个子任务的结果是否非空
for r in results:
assert r and len(r) > 0, "子任务返回了空结果"
# 合并生成报告
report = generate_report(results)常见陷阱
- ❌ 给子Agent的context不够 → 子Agent没有主对话的上下文,必须在context里提供所有需要的背景
- ❌ 在子Agent里让它"回复给用户" → 子Agent无法直接和用户对话,只能返回结果给父Agent
- ❌ 嵌套太多层子Agent → 调试困难,延迟累加,通常2层足够
子Agent最大的价值是并行化和上下文隔离。记住:它们是盲的,只知道你传进去的context,什么都不假设。