@deepseek-ai/dsh-experimental-agent-team
领域服务:注册 ctx.agentTeams,持有 roster、任务板与持久事务。状态只写 Lead 的 Session 日志。
agents · sessions · sessionPersistence
sessionProjections · subagents
DSH EXPERIMENTAL · v0.2.1-rc.2
不是一个多智能体调度进程,而是 DSH 内核上的一层组合插件:把 Subagent 的 continuable child 机制,包装成以 Lead 会话日志为唯一事实源的具名团队与共享任务 DAG。
PROFILE BUNDLE · CORDIS PATCH · OPT-IN
「智能体团队」在插件页里只是一个开关,落到磁盘上是 profile 里多了一层 bundle;落到运行时上,是四行 patch:禁掉全局 subagent 工具,插入 Team 服务、Team 工具与 Web 面板。没有运行时代码开关,也没有独立入口。
L1 · profile 的有序层
为什么禁用全局工具? 默认工具目录保持简单;“委派”这条语义只在这层组合里由 Team 工具接管,避免同名工具彼此遮蔽。
为什么拆成三个插件? 领域状态(服务)、模型可见面(工具 + prompt)、浏览器呈现(UI)各自独立,headless 可以只装前两个。
DISABLED IN THIS LAYER
领域服务:注册 ctx.agentTeams,持有 roster、任务板与持久事务。状态只写 Lead 的 Session 日志。
模型可见面:8 个 Agent 作用域工具 + 2 段 system prompt(team:policy / team:identity)。
Web 只读面板:挂在会话头部 action 槽位,读 Lead 会话的 agentTeam 投影帧。零 RPC。
ONE LEAD LOG · FIVE OWNERS · ONE PROJECTION
中间那个方框才是 Team 领域本体:ctx.agentTeams 把状态、事务、权限、任务板收进一个服务。左边是模型,右边是复用的 Subagent 执行层,下边是持久化与浏览器。点任意模块查看它的职责与代码位置。
APPEND-ONLY EVENTS → PURE FOLD → WIRE VIEW
Team 没有数据库。每次变更把完整后态快照追加进 Lead 日志并 flush;读取方从事件流折叠出 roster 与任务板。下面这个沙盒按真实规则运行:命令级别会拒绝非法操作,投影级别会拒绝非法事件(failure 之后的事件被忽略)。
PROVISIONING → ACTIVATION → ACTIVE · 名字永不复用
teammate 不是“凭空多出来一个 agent”。先持久化意图,再启动预留身份的 child,最后确认初始 prompt 已落盘才宣告 active。任何一步失败都留下 failed 而不是回收名字;冷启动用对账而不是重放 prompt。
按「播放」或「单步」推进。每一步都会标注它在哪一侧留下痕迹:Lead 日志、子 Session,还是纯运行时。
INBOX STEER · NOT A MAIL SERVER
Team 自己不存消息。发送 = 校验成员身份 + 加发送者前缀与 source,然后借用 Subagent 的 steer 路径写进目标 inbox;排序、持久化、去重都归目标 Agent。切换场景看三种结果。
Lead 是始终活的会话:直接 root.steer(createUserMessage(...)),消息留在 Lead 的 inbox,在最近 step boundary 被看到。
成功 = 已进入目标 inbox(inbox 接收)。Team 不保留未接收意图、不在重启后重试、不对显式重发去重;冷恢复时先复用持久会话,再追加消息。
FILES · LINE ANCHORS · KNOWN LIMITS
四个包、约 2700 行打包后代码。核心逻辑集中在 agent-team/lib/index.js:一个服务门面 + 五个 owner。右侧的边界清单不是缺陷列表,而是这套设计明确选择不解决的问题。
cordis.patch.yml — 运行时内容:禁用全局工具 + 插入三插件
lib/index.js — 空模块(export {})
dsh.profile.bundles — 开关就是这一行的增删
index.js:1430 TeamService 门面 · :156 appendAndFlush
:943 roster.spawn · :1004 spawnAdmitted saga
:1112 reconcileProvisioning · :1587 sendAdmitted
:1200 TeamTaskBoard · :727 projection 定义
index.js:22 teamPolicy(协作策略)
:227 install:8 个 scoped 工具 + 两段 prompt
:531 apply:agent/created 安装,disposed 卸载
:211 紧凑 JSON 输出 + schema 校验
client.js:222 TeamAction:头部按钮 + 弹层
:465 registerAgentTeamUi:slots.inject
读 projectionsBySession[lead].values.agentTeam
无 额外 RPC / 后端接口