-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
Labels
area:coreThe bug / feature is about astrbot's core, backendThe bug / feature is about astrbot's core, backendenhancementNew feature or requestNew feature or request
Description
Description / 描述
为现有的SubAgent能力进行扩充,使得SubAgent可以在会话过程中由主Agent动态创建和销毁(类似Kimi的Agent蜂群形式),而不是读取用户预定义的人格。该功能与现有的SubAgent功能不冲突。
核心特性
| 特性 | 说明 |
|---|---|
| 动态创建和销毁 | 运行时动态创建SubAgent,无需预定义;一轮会话结束(返回给用户最终结果时)自动销毁 |
| 上下文记忆 | 可以为SubAgent开启保护模式,使其能够存活于多轮对话,并具备独立的跨轮对话上下文 |
| Skills和Tool隔离 | 每个SubAgent拥有独立的Tool和Skill配置,由主Agent分配 |
| 公共上下文 | 受保护的子代理间可通过公共上下文池进行信息共享和协调工作 |
| 数量限制 | 可配置的子代理最大数量限制 |
基本工作流程
1. 用户发送消息
2. 主Agent被自动注入Prompt “你拥有自我派生的能力”
3. 主Agent根据任务识别到需要派生SubAgent
4. 调用 create_dynamic_subagent 工具
5. 系统创建子代理和 transfer_to_xxx 工具,并注入回主Agent
6. 主Agent使用 transfer_to_xxx 委派任务
7. SubAgent执行任务并返回结果
8. 主Agent整合结果回复用户
9. SubAgent被自动释放
带保护的连续对话流程
第1轮:
用户 -> 主Agent: 创建分析师,帮我分析数据
主Agent -> create_dynamic_subagent(analyst)
主Agent -> protect_subagent(analyst)
主Agent -> transfer_to_analyst(分析这份数据)
分析师 -> 返回分析结果
用户 <- 主Agent <- 分析结果
第2轮:
用户 -> 主Agent: 继续分析另外一份数据
主Agent -> transfer_to_analyst(分析新数据)
分析师(带历史上下文) -> 返回结果
用户 <- 主Agent <- 新结果
公共上下文协作流程
1. 启用 shared_context_enabled=true
2. 主Agent创建多个SubAgent并加上保护
3. 子代理A: send_public_context(status, "已完成数据清洗")
4. 子代理B: send_public_context(status, "开始数据可视化")
5. 子代理C: 可看到A和B的状态更新
6. 主Agent: 可以手动调用view_public_context() 检视整体进度
7. 除了状态消息外,shared_context还可以传递SubAgent之间的消息,例如Agent A向Agent B发送消息,或者主Agent向所有SubAgent发送System消息
Use Case / 使用场景
- 动态处理可以并行化的复杂任务
- 可处理超长上下文(例如阅读一个大型代码库中的所有代码,由主Agent自适应建立多个SubAgent进行分块阅读)
Willing to Submit PR? / 是否愿意提交PR?
- Yes, I am willing to submit a PR. / 是的,我愿意提交 PR。
Code of Conduct
- I have read and agree to abide by the project's Code of Conduct. /
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:coreThe bug / feature is about astrbot's core, backendThe bug / feature is about astrbot's core, backendenhancementNew feature or requestNew feature or request