多Agent系统

多Agent概念对比

SubAgent、Stars、Cosmos、AsterOS 的区别与使用场景

多Agent概念对比

Aster 框架中有多个与"多Agent"相关的概念,它们各自解决不同层次的问题,互不冲突,而是互补协作

📊 概念对比表

概念层次生命周期主要职责使用场景
SubAgent中间件层短暂(任务级)任务委派、上下文隔离单个 Agent 内部的复杂任务拆分
Stars协作层中等(会话级)多 Agent 协作、消息路由多个 Agent 之间的协同工作
Cosmos管理层长期(应用级)Agent 生命周期管理创建、销毁、监控所有 Agent
AsterOS运行时层持久(系统级)统一运行时、API 网关对外提供服务、资源注册

🎯 详细对比

1. SubAgent (子代理中间件)

定位: 单个 Agent 内部的任务委派机制

核心特点:

  • 通过 task 工具调用
  • 短生命周期(任务完成即销毁)
  • 上下文隔离(独立的 context window)
  • 并行执行支持
  • Token 优化(只返回摘要结果)

使用场景:

// 场景:一个 Agent 需要并行处理多个独立的复杂任务
// 例如:同时研究3个不同的主题

// Agent 调用 task 工具
task(description="研究詹姆斯的成就", subagent_type="general-purpose")
task(description="研究乔丹的成就", subagent_type="general-purpose")
task(description="研究科比的成就", subagent_type="general-purpose")

// 3个 SubAgent 并行执行,完成后返回摘要
// 主 Agent 收集结果并进行比较

关键点:

  • ✅ 适合:复杂、独立、可并行的任务
  • ❌ 不适合:简单任务、需要看中间步骤的任务
  • 🎯 目标:优化 Token 使用、隔离上下文、提升并行效率

2. Stars (星座协作)

定位: 多个 Agent 之间的协作单元

核心特点:

  • 管理多个 Agent 成员
  • Leader-Worker 模式
  • 消息广播和点对点通信
  • 会话级生命周期
  • 协作调度

使用场景:

// 场景:多个专业 Agent 协作完成复杂项目
// 例如:软件开发团队(架构师、开发者、测试员)

stars := stars.New(cosmos, "DevTeam")
stars.Join("architect-agent", stars.RoleLeader)
stars.Join("developer-agent", stars.RoleWorker)
stars.Join("tester-agent", stars.RoleWorker)

// Leader 分配任务,Workers 协作完成
stars.Run(ctx, "开发一个用户认证系统")

关键点:

  • ✅ 适合:多个 Agent 需要持续协作
  • ❌ 不适合:单个 Agent 的内部任务拆分
  • 🎯 目标:多 Agent 协同、角色分工、消息路由

3. Cosmos (宇宙管理器)

定位: Agent 生命周期管理器

核心特点:

  • 创建、获取、删除 Agent
  • 资源池管理
  • 容量控制(MaxAgents)
  • 监控和统计
  • 应用级生命周期

使用场景:

// 场景:管理应用中所有的 Agent 实例

cosmos := cosmos.New(&cosmos.Options{
    Dependencies: deps,
    MaxAgents:    50,
})

// 创建不同类型的 Agent
chatAgent, _ := cosmos.Create(ctx, &types.AgentConfig{
    AgentID: "chat-1",
    TemplateID: "chat-assistant",
})

codeAgent, _ := cosmos.Create(ctx, &types.AgentConfig{
    AgentID: "code-1",
    TemplateID: "code-assistant",
})

// 统一管理所有 Agent
allAgents := cosmos.List("")

关键点:

  • ✅ 适合:需要管理多个 Agent 实例
  • ❌ 不适合:Agent 内部的任务委派
  • 🎯 目标:生命周期管理、资源控制、统一监控

4. AsterOS (统一运行时)

定位: 系统级运行时和 API 网关

核心特点:

  • 整合 Cosmos + Stars
  • 自动生成 REST API
  • 多接口支持(HTTP/A2A/AGUI)
  • 资源注册表
  • 系统级生命周期

使用场景:

// 场景:对外提供 Agent 服务的生产系统

os, _ := asteros.New(&asteros.Options{
    Name:   "ProductionOS",
    Port:   8080,
    Cosmos: cosmos,
})

// 注册 Agent
os.RegisterAgent("chat-agent", chatAgent)

// 注册 Stars
os.RegisterStars("dev-team", devTeamStars)

// 启动服务,自动生成 API
os.Serve()

// 客户端可以通过 HTTP 访问:
// GET  /api/agents
// POST /api/agents/chat-agent/run
// POST /api/stars/dev-team/run

关键点:

  • ✅ 适合:需要对外提供服务的生产系统
  • ❌ 不适合:简单的单 Agent 应用
  • 🎯 目标:统一运行时、API 网关、资源管理

🔄 协作关系

这四个概念形成了完整的层次结构,互不冲突

┌─────────────────────────────────────────────────────────┐
│  AsterOS (统一运行时)                                    │
│  - HTTP/A2A/AGUI Interfaces                             │
│  - Registry (Agents/Stars/Workflows)                    │
│  - Auto API Generation                                  │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Cosmos (生命周期管理) + Stars (协作调度)                │
│  - Create/Delete Agents                                 │
│  - Leader-Worker Pattern                                │
│  - Message Routing                                      │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  Agent Runtime (执行引擎)                                │
│  - Middleware Stack                                     │
│  - Provider Integration                                 │
│  - Tool Execution                                       │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│  SubAgent Middleware (任务委派)                          │
│  - task Tool                                            │
│  - Context Isolation                                    │
│  - Parallel Execution                                   │
└─────────────────────────────────────────────────────────┘

💡 实际应用示例

示例 1: 单 Agent 应用(只用 SubAgent)

// 简单应用:一个 Agent 处理复杂任务
agent := agent.Create(ctx, config, deps)

// 使用 SubAgent 中间件拆分任务
agent.Chat(ctx, "同时研究3个主题并比较")
// Agent 内部会并行启动3个 SubAgent

不需要: Stars、Cosmos、AsterOS


示例 2: 多 Agent 协作(用 Stars + Cosmos)

// 中等应用:多个 Agent 协作
cosmos := cosmos.New(opts)
stars := stars.New(cosmos, "Team")

// 创建多个 Agent
leader := cosmos.Create(ctx, leaderConfig)
worker1 := cosmos.Create(ctx, worker1Config)
worker2 := cosmos.Create(ctx, worker2Config)

// 组建团队
stars.Join(leader.ID(), stars.RoleLeader)
stars.Join(worker1.ID(), stars.RoleWorker)
stars.Join(worker2.ID(), stars.RoleWorker)

// 执行协作任务
stars.Run(ctx, "开发一个系统")

不需要: AsterOS(如果不对外提供服务)


示例 3: 生产级服务(用全套)

// 生产应用:对外提供 Agent 服务
cosmos := cosmos.New(opts)

// 创建多个 Agent
chatAgent := cosmos.Create(ctx, chatConfig)
codeAgent := cosmos.Create(ctx, codeConfig)

// 创建协作团队
devTeam := stars.New(cosmos, "DevTeam")
devTeam.Join(codeAgent.ID(), stars.RoleLeader)

// 创建 AsterOS
os := asteros.New(&asteros.Options{
    Cosmos: cosmos,
    Port:   8080,
})

// 注册资源
os.RegisterAgent("chat", chatAgent)
os.RegisterAgent("code", codeAgent)
os.RegisterStars("dev-team", devTeam)

// 启动服务
os.Serve()

使用全套: SubAgent(Agent 内部)+ Stars(协作)+ Cosmos(管理)+ AsterOS(对外服务)

🎓 选择指南

何时使用 SubAgent?

  • ✅ 单个 Agent 需要处理复杂的多步骤任务
  • ✅ 任务可以拆分为独立的子任务
  • ✅ 需要并行执行提升效率
  • ✅ 需要隔离上下文避免污染主线程

何时使用 Stars?

  • ✅ 多个 Agent 需要持续协作
  • ✅ 需要 Leader-Worker 模式
  • ✅ 需要消息广播和点对点通信
  • ✅ 任务需要多个专业 Agent 配合

何时使用 Cosmos?

  • ✅ 需要管理多个 Agent 实例
  • ✅ 需要控制 Agent 数量和资源
  • ✅ 需要统一监控和统计
  • ✅ 应用中有多种类型的 Agent

何时使用 AsterOS?

  • ✅ 需要对外提供 HTTP API
  • ✅ 需要支持多种接口(HTTP/A2A/AGUI)
  • ✅ 需要自动生成 REST 端点
  • ✅ 生产环境部署

🚫 不冲突的原因

  1. 不同的抽象层次
    • SubAgent: 中间件层(Agent 内部)
    • Stars: 协作层(Agent 之间)
    • Cosmos: 管理层(Agent 生命周期)
    • AsterOS: 运行时层(系统级)
  2. 不同的生命周期
    • SubAgent: 任务级(秒/分钟)
    • Stars: 会话级(分钟/小时)
    • Cosmos: 应用级(小时/天)
    • AsterOS: 系统级(持久运行)
  3. 不同的使用场景
    • SubAgent: 任务拆分和并行
    • Stars: 多 Agent 协作
    • Cosmos: 资源管理
    • AsterOS: 对外服务
  4. 互补而非替代
    • 可以单独使用任何一个
    • 也可以组合使用多个
    • 根据应用复杂度选择

📝 总结

  • SubAgent 解决的是"一个 Agent 如何高效处理复杂任务"
  • Stars 解决的是"多个 Agent 如何协作完成任务"
  • Cosmos 解决的是"如何管理所有 Agent 的生命周期"
  • AsterOS 解决的是"如何对外提供统一的 Agent 服务"

它们各司其职,互不冲突,共同构建了完整的多 Agent 系统架构。