Agent Platform · Detail Design

Agent Teams 设计

把多 Agent 协作从「临时拉群」升级为「持久化组织单元」:固定成员、共享记忆、可配置策略、可治理边界。

返回文档目录查看协作协议

持久化组织

Team 是长期实体而非 ad-hoc session:固定成员、跨 session 累积上下文、可归档转移

策略可配置

每个 Team 独立选择协作模式(fan-out / sequential / lead-driven)、风险阈值、成本预算,不再走全局默认

共享记忆 scope

团队级长期记忆是多 agent 共享上下文的安身之所:跨 Run 沉淀团队经验,避免每次从零开始

详细设计说明

DESIGN DOCUMENT · AGENT TEAMS

用 Team 把"临时协作群"升级为"长期组织单元"

这份文档不讨论 Team 的产品形态,只讨论 Team 在三层架构里要承担的技术职责:作为持久化的协作单元,让多 agent 协作从单次 session 的 ad-hoc 配合,升级为带成员关系、协作策略、共享记忆和治理边界的工程实体。

设计主张

Tier 2 不能只有"协作机制"(fan-out / consolidate)这一面;必须有"协作单元"(Team)作为机制的承载实体。机制是动词,Team 是名词,缺一不可。

Persistent IdentityRole MappingStrategy ConfigShared Memory ScopeLifecycle

评审关注点

  • Team 与 Org / Persona / GroupSession 的边界
  • 同一 Persona 加入多个 Team 时的角色冲突
  • 团队级策略与全局策略的优先级
  • 共享记忆的 scope 与隐私边界
D1持久化实体不是 ad-hoc session
D2角色 ≠ Persona同 Persona 多 Team 不同角色
D3策略可参数化Team 配置覆盖全局默认
D4记忆 scopeteam_id 是隔离维度
D5权限不放大Team 不是新权限主体

Agent Platform · Agent Teams 协议

状态:v0 草案
日期:2026-05-07
定位:Tier 2 多 Agent 协作机制的承载实体;Tier 1 暴露管理 API;Tier 3 不感知 Team 概念
关联:与 multi-agent-collaboration(协作协议)、memory-context-design(团队记忆 scope)、governance-hitl-design(团队级治理)配套
目标:明确 Team 在三层架构里的技术职责,让"多 agent 协作"从机制升级为可治理、可记忆、可演进的组织单元

1. 定位与概念

SECTION GOAL

一张图看清 Team 是什么、住哪一层、为什么要做、解决什么问题。本章是阅读其余章节的入口。

1.1 总体架构图

下图把 Team 的静态结构(实体关系)与三层定位叠加在一张图上:横向 3 个 tier 带,T1 区画 ER 关系(Org / Team / TeamMember / Persona / AgentSession),T2 区列 Coordinator 用 Team 数据做的 3 件事,T3 区只有一句话——不感知 Team。

T1 · Agent Platform 实体定义 + CRUD PERSISTENCE Org org_id · admin Team ★ strategy / config / owner TeamMember role · position AgentPersona persona_id · 能力 1:n 1:n n:1 AgentSession session.team_id(软关联) 1:n soft ★ Team 是核心新增实体;其余实体已存在,仅引用关系 T2 · Runtime 读 Team 配置驱动协作 COORDINATOR ① 选 STRATEGY 读 collaboration_strategy fan-out / sequential / lead-driven 命中对应 Strategy 实现 ② 注入 RUN CONFIG 读 max_round / hitl_threshold cost_budget / consolidation 缺失则回退全局默认 ③ 透传 TEAM_ID caller_extra.team_id child Run 携带 Trace 标记 + 后续聚合 ④ 记忆 SCOPE 路由扩展 召回候选 = 个人 scope(team_id IS NULL) ∪ 团队 scope(team_id = current) 最终按 embedding 相似度排序取 top-N,跨 team / 跨 user 严禁串 T3 · Kernel RUNSTATE · NO TEAM ⊗ 不感知 Team 概念 team_id 仅在 RunTrace 留痕;不进 RunState 决策、不进上下文装配的 prompt
关键约束:实线 = 强引用(Org/Team/TeamMember/Persona ER 链) · 虚线 = 软关联或注入(Team↔Session、T1→T2 配置流) · ⊗ = T3 完全屏蔽

1.2 三种典型协作场景时序图

下面 3 张时序图对应 collaboration_strategy 三种取值,分别可视化 Team 在不同业务场景下的不同执行模式。点击顶部导航卡片跳到对应场景,点击 Scenario A 中的 lifeline 头部色块跳到对应章节。

点击下方任意场景卡片跳到对应时序图。

SCENARIO · A fan-out-broadcast 扇出广播 一次 @team 同时派给 N 个成员并行执行,Round 2 汇总。最常见。 SCENARIO · B sequential-relay 串行接力 A → B → C 顺序执行,前一位输出作为下一位输入。流水线模式。 SCENARIO · C lead-driven Lead 主导 Lead 拆分子任务后再派给执行者;Lead 收齐后整合输出。
Scenario A · fan-out-broadcast 扇出广播

@team 一次扇出 N 个 Agent 并行执行,结果汇总后回推。点击任意 lifeline 头部色块跳到下方对应章节。

User · 用户CLIENT T1 · Agent PlatformTEAM CRUD · 鉴权 T2 · Coordinator展开 · 策略 · 记忆 DB · Team / MemoryPERSISTENCE T3 · Run Kernelteam_id 仅透传 — PHASE A · TEAM 管理(一次性配置)— 1 创建 Team + 添加 Persona 成员 2 写 Team / TeamMember 表 — PHASE B · @team 协作触发 — 3 发消息:@team:研发组 干个活 4 触发 Job · team_id 入 input 5 查 Team config + 成员列表 strategy + members 返回 6 ↻ 应用 team 策略(fan-out / seq / lead) 7 N 个 child Run · caller_extra.team_id 8 N 个 ResultSink 收齐 — PHASE C · 记忆沉淀 + 回推 — 9 写 team_memory(scope = team_id) 10 汇总结果回推 11 SSE 流式推送给用户
↻ = 同层自循环 · 三色平行箭头 = N 个 child Run 并行扇出 · Tier 3 内核不感知 team,team_id 仅作 caller_extra 透传。
Scenario B · sequential-relay 串行接力

每个成员按 position 顺序执行,前一位的输出作为下一位的输入。没有汇总轮——最后一位的输出即终态。

User · 用户CLIENT T1 · Agent PlatformCHAT ROUTE T2 · CoordinatorRELAY DISPATCH DB · Team configPERSISTENCE T3 · Run KernelRUN A → B → C 1 @team:研发组(流水线) 2 触发 Job · team_id 3 查 strategy=sequential 成员按 position 排序 Run A members[0] 4 起 Run A · input=用户原文 5 6 A 终态 · output_A Run B members[1] 7 起 Run B · input=output_A 8 9 B 终态 · output_B Run C members[2] 10 起 Run C · input=output_B 11 12 C 终态 · output_C(链终态) 13 推回 → SSE
注意:sequential-relay 没有 Round 2 汇总——链终态直接是最后一个 Run 的输出。中间任意 Run 失败可触发整链熔断。
Scenario C · lead-driven Lead 主导

Lead Run 先跑:拆解子任务 + 派单给 executor。Executor 完成后结果回到 Lead整合,再产出团队最终输出。

User · 用户CLIENT T1 · Agent PlatformCHAT ROUTE T2 · CoordinatorLEAD CHOREOGRAPHY T3 · Lead Runrole = lead T3 · Executorsrole = executor · N× 1 @team:研发组 2 触发 Job · team_id 3 ↻ strategy=lead-driven 找出 lead 4 起 Lead Run 5 ↻ Lead 拆解 sub-tasks 6 回传 sub-task plan 7 并行起 N 个 executor Run 8 ↻ N×并行执行 9 N 个结果 → ResultSink 10 把 N 个结果汇给 Lead 11 ↻ Lead 整合 + 决策 12 Lead 终态 · 团队最终输出 13 推回 → SSE
关键差异:lead-driven 有"Lead 二次激活"——Lead 先 plan,再在 executor 全部完成后 consolidate。executors 之间无直接通信,全部通过 Lead 收口。

1.3 为什么要做 Team

当前缺口:

缺口具体表现影响
每次协作群从零开始用户每次新建群都要手动加 5-10 个 persona体验差;高频协作场景重复劳动
协作策略只能全局配置fan-out-broadcast / sequential 是全局默认;不同业务场景需要不同模式同一份代码强行覆盖所有场景;调一个全局参数全员受影响
多 agent 不共享上下文记忆挂在 Persona 上;同组 agent 之间不共享团队级经验每次群聊都是新人开会;团队级 know-how 没法沉淀
角色与 Persona 强耦合"架构师老王"既是 Persona ID 又是 Team 内的角色同一 Persona 不能在 A 团队是 lead、在 B 团队是 reviewer
治理无承载实体HITL 阈值 / 成本预算只能挂用户级没法对"研发团队"和"营销团队"差异化治理

Team 解决的具体技术问题:

  1. 把 mention 协议从「persona name 列表」升级为「单个 team_id 展开」——降低协作群的初始化成本
  2. 把全局协作策略下沉到 team 配置——同一套机制,不同 team 用不同模式
  3. 给跨 Run 共享记忆一个隔离维度——team_id 作为 scope key
  4. 为治理(HITL / 成本 / 审计)提供聚合实体——团队级 dashboard 而非用户级散点

1.4 三层职责定位

层承担不承担
Tier 1 · Agent PlatformTeam 实体的 CRUD、邀请 / 退出、归档、所有权转移;前端管理界面;权限校验(用户对 team 的可见性)不参与运行时协作策略决策
Tier 2 · Runtime读取 team 配置驱动协作策略选择;@team 展开成 fan-out 列表;记忆 scope 路由;team-aware Coordinator不存储 team 实体;不暴露 team 管理 API
Tier 3 · Kernel不感知 Team 概念——单 Run 执行内核保持纯粹RunContext 里不带 team 字段(如需要由 Tier 2 通过 caller_extra 透传)
关键边界:Team 是 Tier 1 + Tier 2 概念,不向 Tier 3 渗透。Kernel 永远只跑单 Run,不需要知道这个 Run 是不是属于某个 team。Team 的影响力通过 Tier 2 的策略路由 + 记忆 scope 注入到 RunContext,但 RunState 状态机本身不变。

2. 数据模型

SECTION GOAL

列出 Team 引入的最小持久化实体,明确与 Org / Persona / GroupSession 的关系。

2.1 核心实体

Team:协作组织单元,拥有自己的成员、配置、记忆 scope

字段类型说明
iduuid主键
org_iduuid?所属组织(可空,支持个人 Team)
owner_user_iduuid所有者;可转移;不可空
namestring团队名(@提及时使用,需在 user / org 范围内唯一)
taglinestring一句话定位(用于群聊 mention 提示)
collaboration_strategyenumfan-out-broadcast / sequential-relay / lead-driven
configjsonbteam 级配置(超时、最大 round、HITL 阈值、成本预算)
archived_atts?归档时间(软删除)

TeamMember:Persona 与 Team 的多对多关联,承载角色定义

字段类型说明
team_iduuid关联 Team
persona_iduuid关联 AgentPersona
roleenumlead / executor / reviewer / observer
positionint排序权重(影响 sequential-relay 顺序、列表显示)
added_atts加入时间
added_byuuid邀请人

2.2 与现有实体的关系

关系基数说明
Org → Team1 : n一个组织可以有多个 Team;个人 Team 时 org_id = null
Team → TeamMember1 : nTeam 通过 TeamMember 关联多个 Persona
TeamMember → AgentPersonan : 1同一 Persona 可加入多个 Team
Team → AgentSession1 : n(可选)session.team_id 软关联:基于 Team 创建群聊时把成员一次性导入

关键解耦:

2.3 Role 语义

Role含义对协作策略的影响
lead团队负责人,汇总 / 决策 / 派单fan-out 后的 consolidation 默认派给 lead;@team 时如未指定个人,先派 lead
executor主力执行fan-out 列表的主体;接收派单
reviewer审查者不主动接收派单;可在 consolidation 阶段被自动 @ 加入
observer观察者看得见消息但不参与执行;用于审计 / 学习场景

3. @team 展开协议

SECTION GOAL

定义 mention parser 在遇到 @team_name 时的展开规则,保证 Tier 2 协作机制不需要为 team 引入新分支。

3.1 展开时机

Tier 2 mention parser 解析消息发现 @xxx 时:

  1. 先按 persona name 解析:命中 → 单 persona 派单
  2. 未命中再按 team name 解析:命中 → 展开为该 team 的 executor + lead 列表,按各自 persona_id 派单
  3. 都未命中 → 忽略

3.2 展开后的派单契约

步骤动作载荷
1用户发送 @团队A 干个活消息文本进入 mention parser
2按名查找 Teamteam = lookup_by_name("团队A")
3展开成员列表取 role ∈ {lead, executor} 的 persona_id 列表
4选择派单策略读 team.collaboration_strategy(fan-out / sequential / lead-driven)
5调度 Tier 2 strategy.dispatch按 team 配置走对应分发逻辑,与单 persona 派单复用同一接口

3.3 命名空间

场景命名空间冲突解决
个人 Team(org_id=null)user 范围内唯一persona name 优先;user 不允许 team name 撞 persona name
组织 Teamorg 范围内唯一org member 都能 @ 这个 team
persona 与 team 同名persona 优先提示用户改 team name 或用更具体的写法(如 @team:名字)

4. 协作策略:team 配置覆盖全局

SECTION GOAL

说明 team-scoped 协作配置如何注入到 Tier 2 策略层,让同一套机制服务不同业务场景。

4.1 配置传递路径

层动作注入位置
Tier 1用户 @ team;chat 路由触发任务把 team_id 写入 Job.input
Tier 2 · Coordinator派 child Run 时透传 team 上下文放入 caller_extra.team_id
Tier 2 · Strategy选择协作策略读 team.collaboration_strategy,未配置则回退全局默认
Tier 2 · Coordinator 状态读 team 级运行时阈值max_agent_round / consolidation_required / hitl_threshold / cost_budget 都从 team.config 读,缺失走全局默认
Tier 3 · Kernel不感知 team_id仅作为 caller_extra 透传,进 Trace 但不进 RunState 决策

4.2 可配置项

配置项类型默认(无 team 时)典型 team 覆盖
collaboration_strategyenumfan-out-broadcast研发团队用 lead-driven;客服团队用 sequential-relay
max_agent_roundint5简单团队设 3,复杂团队设 8
consolidation_requiredbooltrue纯并行团队可关闭汇总轮
hitl_thresholdenummedium金融业务 team 设 low;内部研发 team 设 high
cost_budget_per_runcents无给客户售卖的 team 设上限
tools_whitelistlist用户级团队级共享技能包,限制可用工具集

4.3 优先级

persona 级 > team 级 > user 级 > system 默认。任何一层缺失值,向上 fallback。


5. 共享记忆 scope(v0.2)

SECTION GOAL

定义 team_memory 的 scope 与隔离规则,让团队级经验沉淀有明确的存储和召回路径。

5.1 现状缺口

当前 AgentMemory 表按 (user_id, persona_id) 隔离。多个 persona 在同一 team 内协作时:

5.2 引入 team_memory

字段类型说明
team_iduuid新增 scope 维度
persona_iduuid?可空——空则为团队全员可见的共享记忆
memory_typeenumteam_lesson / team_decision / team_artifact
scope_visibilityenumteam_members(默认)/ team_lead_only
...其他字段同 AgentMemorycontent / embedding / confidence

5.3 召回规则

当某 persona 在某 team 上下文内执行时,记忆召回的候选集是三类记忆并集,再按向量相似度排序取 top-N:

类过滤条件含义
个人记忆persona_id = 当前 persona 且 team_id IS NULLpersona 自身的长期记忆,与团队无关
团队共享team_id = 当前 team 且 scope_visibility = team_members团队全员可见的共享经验
当前 persona 在该 team 的记忆team_id = 当前 team 且 persona_id = 当前 personapersona 在这个 team 内累积的角色化经验

三类候选合并后按 embedding 相似度排序,最终取 top-10 注入上下文。

5.4 隐私边界


6. 生命周期

SECTION GOAL

列出 Team 的状态流转和操作权限边界。

6.1 状态机

状态含义合法转移
active正常态,可读可写→ archived(owner 归档)/ transferred(所有权转移)
archived归档态,仅读不可写;前端默认隐藏→ active(30 天内可恢复)
transferred所有权已转移给新 owner新 owner 接管后回到 active

6.2 操作权限

操作谁可以做
创建 Team任何用户(个人 Team);org admin(组织 Team)
添加 / 移除成员owner、org admin
修改 collaboration_strategy / configowner、org admin
转移所有权owner(个人 Team);org admin(组织 Team)
归档owner、org admin
恢复归档 Teamowner、org admin(30 天内)
永久删除不直接暴露;审计要求保留

6.3 持久化策略

归档不删数据:archived_at 置非空,前端默认隐藏;历史 group_session 仍能读到 team 关联用于审计。完整删除需走审计流程。


7. 治理(v0.3+)

SECTION GOAL

列出 v0.1 不做、但架构层要预留的治理能力,避免后续需要破坏性升级。

能力v0.1 状态预留
角色权重 / 否决权不做TeamMember.role 已分四档;权重逻辑后加
团队级 HITL 路由不做Team.config.hitl_threshold 已预留;策略层需扩展
团队级成本预算不做Team.config.cost_budget_per_run 已预留;与 budget 服务对接
团队级审计 dashboard不做所有相关 trace 已带 team_id 字段;dashboard 上层聚合即可
SLA 与质量评分不做需要先有真实 team 运行数据再设计

8. 演进路线

SECTION GOAL

把 Team 能力切成可单独验证的版本,按价值优先级落地。

版本范围验收
v0.1 MVPTeam / TeamMember 数据模型;CRUD + 邀请 / 移除;@team 展开为 fan-out 列表;前端 Team 管理页能创建团队、群聊里 @ team 自动展开为 fan-out 给全员
v0.2 策略 + 记忆collaboration_strategy 配置生效;team-scoped 记忆 scope;记忆召回路径扩展同一群聊用不同 team 跑出不同协作模式;团队级经验跨 session 沉淀
v0.3 治理角色权重 / 否决权;团队级 HITL / 成本预算;审计 dashboard研发 / 营销 / 客服等不同 team 差异化治理
v0.4 跨组织跨 Org 的协作 Team(联合项目场景);权限 federate有真实跨组织合作需求时再做

9. 与现有模块的关系

SECTION GOAL

明确 Team 引入后,已有模块需要的修改点。

模块修改点
多 Agent 协作协议(multi-agent-collaboration)CollaborationContext 增加 team_id 字段;DelegationTrace 增加 team_id 用于团队级聚合
Memory / Context 设计AgentMemory 表增加 team_id;召回逻辑扩展(见 §6)
治理与 HITL 设计HITL 决策树新增 team 级路由;Policy 引擎读取 team config
可观测与 Replay所有 RunTrace / DelegationTrace 增加 team_id;支持 WHERE team_id=X 聚合查询
Skill 版本治理SkillVersion 可选关联 team_id(团队级共享技能包)

Tier 3 内核不动——RunState / RunContext / ResultSink 都不感知 team;team_id 通过 caller_extra 透传,不进入 RunState 状态机。