我们为什么需要 SubAgent?
- 职责分离与自治执行:将一个复杂目标拆解成可自治运行的子任务,每个子任务由一个“子代理”负责,在明确的预算与工具权限下独立推进。
- 非交互式工作流:很多自动化场景无法依赖人工问答。SubAgent 被设计为“非交互模式”,能在没有用户输入的情况下完成工作、调用工具并达成目标。
- 结构化出参与可编排性:通过内置的
self.emitvalue
工具,SubAgent 能以结构化方式“发射”结果变量,便于上层编排收集和传递。 - 安全与确定性:在工具调用前进行“需确认”的预检,执行过程中有“时间/回合数”双重预算,避免无限循环或交互卡死。
架构总览:关键构件与数据流
- 终止原因枚举
SubagentTerminateMode
:ERROR | TIMEOUT | GOAL | MAX_TURNS
,准确表达为什么停止。 - 输出对象
OutputObject
:emitted_vars
存储通过self.emitvalue
发射的变量;terminate_reason
标示终止原因。