S04 Subagent - 子代理流程图
本文档描述 s04_subagent.py 的子代理机制和执行流程。
1. 系统架构概览
加载中...
2. 子代理 vs 父代理对比
加载中...
3. 子代理执行流程 (run_subagent)
加载中...
4. 父子代理交互时序图
加载中...
5. 上下文隔离示意图
加载中...
6. 工具对比表
加载中...
7. 数据结构
父代理消息结构
messages = [
{“role”: “user”, “content”: “用户输入”},
{“role”: “assistant”, “content”: [...]},
# ... 多轮对话
{“role”: “user”, “content”: [
{“type”: “tool_result”, “tool_use_id”: “...”, “content”: “子代理摘要”}
]}
]
子代理消息结构
sub_messages = [
{“role”: “user”, “content”: “任务提示”},
{“role”: “assistant”, “content”: [...]},
{“role”: “user”, “content”: [...]},
# ... 独立执行,最多 30 轮
]
子代理返回摘要
return “”.join(b.text for b in response.content if hasattr(b, “text”))
# 或 “(no summary)” 如果没有文本
8. 状态转换图
加载中...
9. 四大关键特性
| 特性 | 说明 | 优势 |
|---|---|---|
| 上下文隔离 | 子代理从空白对话历史开始 | 避免上下文污染 |
| 文件系统共享 | 子代理可以读写父代理工作目录 | 通过文件传递结果 |
| 摘要返回 | 只返回最终文本,丢弃中间执行上下文 | 节省父代理的 token 使用 |
| 防止递归 | 子代理没有 task 工具 | 控制复杂度 |
10. 使用场景
加载中...
11. 关键代码流程
加载中...
12. 核心洞察
”Process isolation gives context isolation for free.”
进程隔离自然带来上下文隔离。子代理在独立的消息上下文中执行,完成后只返回摘要,所有中间执行上下文都被丢弃。