DeepSeek Harness Agent Teams
DeepSeek Harness Agent Teams:持久队友、任务与协作邮箱
- 作者
- DeepSeekAgent.io 编辑部
- 发布
- 更新
Agent Teams 是 DeepSeek Harness 的一套实验性、需显式启用的多 Agent 子系统。它为 Lead Session 提供具名成员列表、共享任务板和持久化成员消息。自 v0.1.5-alpha.2 起,官方实验包已经发布到 npm,但仍未随默认 Profile 启用,也不能按稳定产品功能对待。
Agent Teams 与普通 Subagent 的区别
普通 Subagent 更接近一次委派:父 Agent 发起工作、拿到结果,之后可能不会再次找到同一个执行者。Team 成员拥有稳定名称和子 Session 身份,可以继续接收消息,也能持有记录在 Team 日志中的任务。
| 普通 Subagent | Agent Teams Teammate |
|---|---|
| 面向一次委派结果 | 可继续唤醒的具名子 Agent |
| 主要是父子通信 | 持久化成员邮箱 |
| 工作状态主要存在 Prompt 与结果中 | Lead 日志内的共享任务 DAG |
| 没有团队名册 | 扁平、持久化的 Roster |
持久化模型
Team 由 Root Lead Session 标识,不需要单独的“创建团队”事件。第一个成员、消息或任务事件写入后,持久化状态才开始出现。
- **Roster:**不可变的成员名称与生命周期状态。
- **Mailbox:**即时投递失败后仍可保留的成员消息。
- **Task Board:**包含依赖关系和 CAS 所有权更新的任务。
- **Replay:**通过 Lead Session 事件日志重建 Team 状态。
这延续了 Harness 的核心约束:模型可见的事实必须写入日志并能够重放。
在 v0.1.5-alpha.2 中安装
先初始化一个包含 @deepseek-ai/dsh-base 的 Profile,再显式添加官方实验性 Team Profile:
dsh plugin --profile headless add @deepseek-ai/dsh-experimental-agent-team-profile
dsh --profile headless "Use Agent Teams to split this task between two teammates, wait, and summarize."
该 Profile 会组合 Team Domain、Team-scoped 工具和相关 UI/运行时依赖,并保留一次性的 subagent 与 subagent_fork。官方随附的 CLI、Web、SDK、ACP 与 Python Profile 都不会自动启用它。
所有实验包都应固定为与 DSH Runtime 相同的版本。包名、Patch 和配置仍可能继续变化,升级时应对照对应 Tag 的官方 README。
当前限制
- Roster 是扁平结构,只包含 Lead 和直接成员,不是任意层级组织树。
- 只有 Team Lead 能创建或中断 Teammate。
- 成员名称不可修改,Provision 失败后也不会复用。
- 多个成员可能共享同一 Checkout。Shell、格式化器、生成器和外部写入者仍可能发生冲突。
- Team 工具刻意保持 Opt-in,避免普通会话承担更大的工具目录。
- Experimental 子系统不能按稳定版本能力对待。
适用场景
Agent Teams 适合需要多个具名角色跨回合继续工作的任务,例如研究员与验证员、实现与 QA、数学建模与论文写作。一个有界 Subagent 调用就能完成的小任务,没有必要建立 Team。
更安全的实践是给成员划分互不重叠的责任与输出路径,由 Lead 汇总结果,并在最终回答前等待必要工作完成。
“持久组织”是另一个问题
公司式长期成员目录——跨越无关 Root Session、根据长期积累的领域知识路由任务——并不等于 Agent Teams。当前实验设计以一个 Lead Session 为根,主要解决一次协作过程中的持续成员与任务状态,而不是跨项目永久存在的组织。
常见问题
Agent Teams 是官方稳定功能吗?
它属于官方源码和官方文档,但包仍是 experimental、需显式启用,也不是稳定默认功能。
它和社区 agent-team 插件一样吗?
不一样。社区有多个名称相近的项目,比较前必须确认仓库所有者、包名与实际组合配置。
它能防止成员互相覆盖文件吗?
不能。共享任务板协调的是工作意图,不会锁住所有文件写入者;仍应使用独立输出路径或 Worktree。