【免费下载链接】sympozium
The Coordination Layer for Multi-Agent AI
Sympozium 是一个构建在 Kubernetes 之上的多智能体(Multi-Agent AI)编排平台,"多智能体委托"正是它的招牌能力:团队中的某个 AI 智能体可以调用delegate_to_persona工具,把一个子任务交给同一 Ensemble 里的另一个 persona 去执行,并同步等待结果返回。本文带你完整读懂这条委托链路——从工具调用、IPC 文件交换,到控制平面中的 SpawnRouter 如何在 8 个步骤内完成子任务分发与结果回传。
为什么需要"委托":多智能体团队的基本协作单元 🧭
在 Sympozium 中,一个Ensemble(智能体团队)由多个预配置的 persona(角色)组成,例如 researcher(研究员)、writer(写手)、reviewer(评审)。每个 persona 有自己独立的系统提示词、技能包和工具策略,细节可参见 docs/concepts/ensembles.md。
当某个 persona 的任务超出自身专长时(比如写手需要最新资料),它可以主动"找人帮忙"——这就是多智能体委托。delegate_to_persona是委托场景的阻塞式工具:调用后父智能体会暂停,直到目标 persona 执行完毕,再把结果作为工具返回值交还给 LLM 继续推理。
这个工具只有两个必填参数(定义见 cmd/agent-runner/tools.go#L305-L326):
| 参数 | 说明 |
|---|---|
targetPersona | 要委托的 persona 名称(如writer),必须是同一 Ensemble 的成员 |
task | 任务描述。必须自包含——目标 persona 独立运行,看不到你的上下文 |
一个典型的委托团队配置示例在 config/agent-configs/research-delegation-example.yaml,其中的relationships声明了谁可以把任务交给谁:
relationships: - source: researcher target: writer type: delegation timeout: "10m"8 步委托链路:任务如何从父智能体流向子智能体 📡
整条链路的精髓是:agent 侧只负责"写文件 + 阻塞轮询",控制平面的 SpawnRouter 负责一切编排。agent Pod 内不直接访问 Kubernetes API,而是通过共享文件系统与 sidecar 协作(IPC 协议定义见 internal/ipc/)。
| 步骤 | 发生位置 | 动作 |
|---|---|---|
| 1 | Agent 容器 | delegate_to_persona把请求写成 JSON 到/ipc/spawn/request-{id}.json,进入阻塞轮询(每 2 秒检查一次结果文件) |
| 2 | IPC bridge sidecar | 文件监听器发现新请求,向 NATS 事件总线发布agent.spawn.request事件(见 internal/ipc/bridge.go#L275-L330) |
| 3 | SpawnRouter | 控制平面订阅到事件(internal/controller/spawn_router.go#L140-L183),查找父 AgentRun,先检查熔断器与委托深度 |
| 4 | Spawner | resolvePersonaTarget()解析目标 persona 对应的 Agent,校验关系边,并继承目标 persona 的系统提示词与技能 |
| 5 | Kubernetes API | 创建子 AgentRun(命名如sub-{父run}-{深度}),父 Run 状态置为AwaitingDelegate并记录DelegateStatus |
| 6 | 子 Agent 容器 | 子 persona 独立执行任务——它就是一个完整、标准生命周期的 AgentRun |
| 7 | SpawnRouter | 子 Run 完成/失败后收到 NATS 事件,把结果发布到agent.delegate.result.{父RunID}主题(topic 定义见 internal/eventbus/types.go#L47-L58) |
| 8 | IPC bridge → 工具 | bridge 把结果写回/ipc/spawn/result-{id}.json,轮询中的工具读取后解除阻塞,把答案交还 LLM |
第 4 步是安全与正确性的关键:TargetPersona和PackName都是 LLM 在运行时"自己说"的(不可信输入),所以 Spawner 会反查 Ensemble 状态,确认父智能体确实是该团队成员、且存在从父 persona 指向目标 persona 的delegation或sequential关系边,否则直接拒绝委托(实现见 internal/orchestrator/spawner.go#L253-L329)。
子 Run 的创建、执行与清理走的是和任何一次运行完全相同的生命周期,可参考官方架构文档中的 Persona Delegation Flow 图(docs/architecture.md):
4 层安全护栏:确保委托不失控 🔒
多智能体系统最怕"委托失控":无限递归、失败重试风暴、恶意越权。SpawnRouter 内置了 4 层防护:
| 护栏 | 机制 | 阈值/行为 |
|---|---|---|
| 深度上限 | 每次委托SpawnDepth + 1,超限直接拒绝 | maxDelegationDepth = 8(spawn_router.go#L32),硬上限防止 A→B→A 递归循环 |
| 熔断器 | 子 Run 失败时累加 Ensemble 的连续失败计数;成功后清零 | 默认连续 3 次失败(可在 Ensemble 的membrane.circuitBreaker配置)即熔断,后续委托直接被拒 |
| 关系边鉴权 | 委托必须落在声明过的delegation/sequential边上 | 无关系声明的 Ensemble 不允许任何委托("deny by default") |
| 边超时 | 按relationships[].timeout为该条委托边武装定时器 | 超时后用错误结果解除父 Run 的阻塞,并删除仍在烧 token 的孤儿子 Run |
这套"文件轮询 + 事件总线"的设计还有一个隐藏好处:父智能体的等待预算(delegateWaitBudget,cmd/agent-runner/main.go#L140-L148)与子 Run 的预算是解耦的,即使某一环失联,父侧也有兜底超时,不会永久挂起。
兄弟工具:spawn_subagents 批量子智能体
同一个 IPC 往返机制还支持spawn_subagents工具(cmd/agent-runner/tools.go#L699-L777),两者区别在于:
- 委托对象不同:
delegate_to_persona把任务交给另一个 persona(不同角色、不同提示词);spawn_subagents生成的是自己的克隆(继承父 Run 的模型、技能与配置)。 - 批量执行策略:支持
parallel(并行)与sequential(串行流水线),配合failurePolicy(continue/fail-fast)决定失败后是否继续。 - 配额保护:需要挂载
subagents技能才能使用,默认单批最多 3 个子任务、嵌套深度 2 层,均可在 Agent 的SubagentsSpec中调整。
SpawnRouter 对批次做了完整的状态跟踪(pendingBatch),串行模式下逐个生成、失败快速终止,全部完成后按任务顺序聚合结果一次性回传。
可观测性:每次委托都有 OpenTelemetry 追踪 🔍
多智能体系统的调试难点在于"任务到底经过了几双手"。Spawner 在创建子 AgentRun 时会启动sympozium.pod.create追踪 span,附带parent.run、spawn.depth、target.persona等属性(internal/orchestrator/spawner.go#L111-L125);工具调用、IPC 往返也都写入结构化日志。所有 trace 汇聚成端到端的多智能体追踪链,效果如下:
配合DelegateStatus(记录每个在途委托的子 Run、目标 persona 与阶段),运维人员可以一眼看清哪条委托边正在等待、哪条已经超时。
源码地图:从哪里开始读 Sympozium 委托实现
想动手深入,建议按调用顺序阅读以下模块:
| 模块 | 职责 |
|---|---|
| internal/controller/spawn_router.go | SpawnRouter 主体:NATS 事件订阅、熔断器、深度检查、边超时、结果回传 |
| cmd/agent-runner/tools.go | delegate_to_persona与spawn_subagents工具的 agent 侧实现(IPC 轮询) |
| internal/orchestrator/spawner.go | Spawner:子 AgentRun 的构建、persona 解析与关系边鉴权 |
| internal/ipc/bridge.go | IPC bridge:/ipc/spawn/目录的文件监听与 NATS 双向转发 |
| internal/eventbus/types.go | NATS topic 定义(agent.spawn.request、agent.delegate.result等) |
| docs/architecture.md | 官方架构文档,含 Persona Delegation Flow 完整时序图 |
| docs/concepts/ensembles.md | Ensemble、四种关系类型(delegation / sequential / supervision / stimulus)与 workflowType |
| config/agent-configs/research-delegation-example.yaml | 可直接参考的委托团队示例(lead → researcher → writer → reviewer) |
小结:Sympozium 的多智能体委托 = "agent 侧极简(写文件、等结果)+ 控制平面强管控(鉴权、限深、熔断、超时)"。delegate_to_persona让 LLM 用一次工具调用就能把任务路由给正确的 teammate,而 SpawnRouter 保证这次路由始终在策略声明的边界内完成。理解了这条 8 步链路,你就掌握了 Sympozium 团队协同的心脏。
【免费下载链接】sympozium
The Coordination Layer for Multi-Agent AI
相关推荐
多智能体任务委托实战:解析 delegateToAgent 编排工具的设计与实现
多智能体任务委托实战:解析 delegateToAgent 编排工具的设计与实现 导读 delegateToAgent 是 llm as judge skill
人工智能AI 技能AI 评测提示工程CodeWhale 智能委托实战:用 agent 工具与子代理拆分多步编码任务
CodeWhale 智能委托实战:用 agent 工具与子代理拆分多步编码任务 导读 本篇基于 CodeWhale 内置的 delegate 技能文档( cra
人工智能AI Agent代码智能体交互助手工具调用CLI3步搞定Cellpose GPU加速:解决PyTorch与CUDA兼容性终极指南
3步搞定Cellpose GPU加速:解决PyTorch与CUDA兼容性终极指南 Cellpose是一款强大的开源细胞分割工具,凭借其出色的 细胞分割算法 和
人工智能计算机视觉深度学习图像处理生物信息学
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考