dsh-team-mode:把 Team 协作收进可选模式,并用执行层 guard 约束 Lead 不写代码

前言

在 DeepSeek Harness(DSH)里做多 agent 协作时,常见两类问题:一是 Agent Teams 往往挂在 profile 上,每个会话都会带上 Team 工具与 subagent 等委派面,模型容易在多种路径里选错;二是「Lead 只决策、不写代码」若只靠提示词,Lead 仍可调用 write / edit,分工容易退化成单 agent 包办。

下面介绍社区插件 dsh-team-mode(维护者 running-grass,分类:工作流)。它提供一个名为 team 的 agent preset:在模式选择器里单独启用「团队模式」时,Lead 负责决策、派发与验收,具体读写与改动交给短生命周期 worker;Lead 的 write / edit 则在执行层被 guard 拒绝,而不是仅靠 persona 劝阻。

这是什么

dsh-team-mode 是 DSH 插件,核心交付物是一个 team agent preset。装上并在新建任务时选中「团队模式」后:

  • 委派面只保留 workflow(临时任务) 与 spawn_teammate(需累积上下文的长期队友) 两条路,不出现匿名的 subagent / subagent_fork。
  • Lead 仍可使用 read / glob / grep / bash 做只读与验收;write / edit 在执行层被拒绝。
  • worker 由 Lead 通过 agent() 等机制派发,模型可在调用时显式指定 provider / model。

插件当前版本 0.1.0,许可证 MIT,运行时入口为 lead-boundary.js,通过 cordis.patch.yml 向 DSH bundle 注入 preset 配置。

目录页:SkillHub - dsh-team-mode
源码:GitHub - running-grass/dsh-team-mode

核心功能

可选模式,而不是强绑整个 profile

Team 相关能力被收进一个可选 preset,只有选中「团队模式」的会话才走这套 persona 与委派规则,避免与其它模式下的工具面混在一起。

执行层边界(lead-boundary.js)

插件在每个 Lead 的 Agent 上下文上注册 tools.guard(),在工具真正执行前按工具名拒绝 Lead 的 write / edit。README 说明:在 DSH 0.2.1-alpha.1 上实测,tools.restrict() 无法可靠遮住 agent 继承来的工具,因此选用 guard。

边界同时满足两个条件才会生效,避免误伤其它模式:

  1. 当前运行的是 team preset(读 agentPresets.composedPreset)。
  2. Team roster 报告该 agent 是 Lead。

两个派发通道

场景 通道 说明
临时任务:调研、改一处、跑测试、批量扫描 workflow 的 agent() 全新 worker,不进 roster,跑完即走
需要跨多次派发累积上下文 spawn_teammate 占用 roster 名额;名字占用后不释放,一次性任务不宜使用

内置角色(写入 worker prompt)

Lead 在派发时把角色名写进 worker 的 prompt 即可:

角色 用途
scout 只读侦察:定位文件、回答结构问题
explorer 带判断的调查:比对方案、定位根因、评估改动风险
builder 在给定文件范围与验收方式下执行改动
verifier 对抗性复核,须尝试证伪
sweeper 机械式批量:重命名、模式审计、多文件汇总

安装与启用

官方安装命令(README 原文):

dsh plugin --profile web add github:running-grass/dsh-team-mode

安装后需重启 DSH(插件变更需重启进程才能加载新的 JS 模块)。随后在新建任务时,从模式选择器选择「团队模式」。

前置依赖:该模式组合 DSH 的 Agent Teams 实验能力。profile 需已包含 @deepseek-ai/dsh-experimental-agent-team-profile(或至少 agent-team 与 tool-agent-team 两个包),否则 Team 工具派发的任务可能一直等待 agentTeams 服务。

等价的手工方式是在 $DSH_HOME/profiles/web/cordis.patch.yml 中加入 README 所示的 preset-team 片段(需从现有 patch 复制完整 plugins 列表)。Node 引擎要求 >=20。

典型用法思路

README 未给出固定的一键示例脚本,可复现的流程是:

  1. 按上文命令安装并重启 DSH,确认 profile 已具备 Agent Teams 实验包。
  2. 新建任务,模式选「团队模式」。
  3. Lead 根据任务性质选择 workflow 的 agent() 或 spawn_teammate,并在 worker prompt 中指定上表中的角色名(如 scout 查位置、builder 改代码、verifier 复核)。
  4. 需要控制成本时,在 agent() 里为 worker 显式传入 provider / model,Lead 侧可用更高能力模型做决策与验收。

Lead 最终仍应通过 read / grep / bash(在策略允许范围内)自行验收 worker 产出。

适用场景与注意

适合:希望在 DSH 里用多 agent 分工、又希望 Lead 与 worker 职责清晰、且不想把整个 web profile 永久绑在 Team 工具面上的开发者。

已知限制(来自 README):

  • Lead 仍能看到被禁工具的 schema;guard 只拦执行。低成本模型可能先误调 write / edit 再看到拒绝信息。
  • bash 不是硬边界:write / edit 被拒后,Lead 仍可能通过 shell 重定向写文件;persona 禁止,机制未完全封死。
  • preset 的 plugins 列表派生自某版 DSH 内置 standard preset,上游改版后需手动对齐 cordis.patch.yml 并跑 npm test。
  • 依赖 @deepseek-ai/dsh-experimental-*,契约不承诺稳定。

安全与信任:插件以当前 DSH 进程权限运行;安装前请阅读 GitHub 仓库 源码与 MIT 许可证。SkillHub 等为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-team-mode 把 Agent Teams 收成可选的「团队模式」,并用执行层 guard 落实「Lead 不写代码」,同时保留 workflow 与 spawn_teammate 两条清晰委派路径与五类内置角色。若你正在 DSH 上编排多 agent 工作流,可从目录页或 GitHub 查看详情并按 README 安装试用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜