dsh-team-mode
Manifest validDeepSeek Harness plugin: a `team` agent preset whose Lead decides and dispatches while short-lived workers do the writing
dsh-team-mode
DeepSeek Harness (DSH) 插件:一个 team(团队模式)agent preset——Lead 只做决策、派发和验收,具体工作交给一次性 worker。
装上这个插件后,在 DSH 的模式选择器里会多出一个「团队模式」。选中它的会话里:
- 派发面干净:没有匿名的
subagent/subagent_fork,委派只有两条路——workflow(临时任务)和spawn_teammate(需要累积上下文的长期队友) - Lead 被结构性限制:
write/edit在执行层被拒绝,不是靠提示词劝阻 - Lead 保留只读与验收:
read/glob/grep/bash正常可用,最终验证仍由 Lead 做
为什么需要它
DSH 的 Agent Teams 机制本身很强,但它有两个实际问题:
- 它是 profile 级的,不是可选的模式。启用后每个会话都拿到 Team 工具和
subagent工具,两套委派面并存,模型容易选错。 - "Lead 只决策"只是提示词。没有任何强制——Lead 照样能
edit/write,然后整个"分工"就退化成单 agent。
这个插件解决这两点:把 Team 面收进一个模式,并把"Lead 不写代码"变成机制。
安装
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 里加入:
- id: preset-team
name: '@deepseek-ai/dsh-agent-preset'
config:
id: team
order: 5
plugins:
# 从 cordis.patch.yml 复制完整的 plugins 列表
两个派发通道
模式里同时保留了 workflow 和 spawn_teammate,persona 会按下面的规则选用:
| 场景 | 通道 | 代价 |
|---|---|---|
| 临时任务:调研、改一处、跑测试、批量扫描 | workflow 的 agent() | 全新 worker,不进 roster,跑完即走,零上下文残留 |
| 需要跨多次派发累积上下文 | spawn_teammate | 占用一个 roster 名额;名字一旦占用永不释放,一次性任务用它是浪费 |
worker 的模型由 Lead 在 agent() 里显式传 provider / model,所以"用便宜模型干活、贵模型只看结果"是可以落地的。
内置角色
persona 里定义了 5 个角色,Lead 把角色名写进 worker 的 prompt 即可:
| 角色 | 用途 |
|---|---|
scout | 只读侦察:定位文件、回答"X 在哪 / Y 怎么工作" |
explorer | 带判断的调查:比较方案、定位 bug 根因、判断改动是否安全 |
builder | 执行改动,给定文件范围和验收方式 |
verifier | 对抗性复核别人的工作,必须尝试证伪 |
sweeper | 机械式批量:跨文件重命名、模式审计、从 N 个文件汇总 |
工作原理
边界是执行层 guard,不是提示词
lead-boundary.js 在每个 Lead 的 Agent 上下文上注册一个 tools.guard()。guard 是按名字拒绝执行的,发生在工具调用真正执行之前。
为什么不用 tools.restrict():实测(DSH 0.2.1-alpha.1)restrict() 把限制追加到 agent 自己的 layer,而工具注册表刻意豁免"本作用域自己的 layer",所以它遮不住 agent 继承来的工具。guard 没有这个问题,也不需要等工具目录就绪。
双重条件,避免误伤
边界同时要求两个条件:
- Agent 运行的是
teampreset(读agentPresets.composedPreset) - Team roster 报告它是 Lead
只判第 2 条是错的:任何模式的 session 根 agent 都是 Team Lead,那样会把你所有其他模式的 write / edit 一起禁掉。这个坑我在开发时踩过。
已知限制
- Lead 仍看得见被禁工具的 schema。guard 只拦执行,不隐藏工具。低成本模型可能浪费一轮去撞墙,然后才读到拒绝信息(已写成可操作的派发指引)。要真正隐藏需要改 DSH 的工具注册表。
- shell 是策略约束,不是硬约束。
write/edit在执行层被拒,但 Lead 仍能通过bash重定向写文件。persona 禁止这么做,机制不禁止。 - preset 列表是派生来的快照。它跟随某个 DSH 版本的
standardpreset。上游改版后需要手动重新对齐(见下)。 - 依赖实验包。
tool-agent-team/agent-team是@deepseek-ai/dsh-experimental-*,契约不承诺稳定。
与 standard 保持同步
cordis.patch.yml 里 preset 的 plugins 列表派生自 DSH 内置 standard preset,差异只有三处:preset 身份、persona、委派组。
上游 DSH 更新后,在 DSH 源码里对比 packages/bundle/web-app/presets/standard.patch.yml,把新增/变更的行搬过来,然后跑 npm test——test/patch.test.mjs 会守住这个模式的契约(不出现匿名 subagent、保留 workflow、persona 写明两个通道等)。
开发
npm test # 18 项测试:插件逻辑(10)+ patch 契约(8),无需 DSH 检出
插件本身零运行时依赖(纯 ctx 调用),测试只依赖 yaml(devDependency)。
许可
MIT
Comments
Loading…
From the same category
by ranxianglei
基本稳定可用 100K tokens is enough. Universal context-compression proxy for ALL AI coding agents,10w上下文足矣
★ 804
↓ 423.4k/wk
MIT
TypeScript
Oct 11, 2026
dsh plugin --profile web add billion-contextby Han-1413141
DeepSeek Harness session cost meter plugin: session/daily cost, budget, history, OpenCode Go quota, official & custom-provider balance, Codex-like token heatmap, peak/off-peak pricing with pre-switch
★ 388
↓ 23k/wk
MIT
JavaScript
Oct 10, 2026
dsh plugin --profile web add dsh-cost-meterby Nwflower
Import 14+ external agent chat histories (Claude Code, Codex, ChatGPT, Cursor, Gemini, Reasonix, opencode, ZCode, Grok Build, OpenClaw, Pi, Hermes, Kimi CLI, DSH) into DeepSeek Harness as resumable se
★ 224
MIT
JavaScript
Oct 7, 2026
dsh plugin --profile web add dsh-chat-importby Totoro-qaq
DeepSeek Harness plugin for previewable cross-preset session migration. Fixed-schema handoffs preserve state, source-model intent, and unresolved images; the original session stays untouched.
★ 165
MIT
JavaScript
Oct 11, 2026
dsh plugin --profile web add dsh-plugin-bridgeby Anionex
deepseek harness对话和代码状态回退插件 | DSH — rewind conversation and workspace state, powered by a persistent Change Ledger
★ 131
BSD-3-Clause
JavaScript
Oct 1, 2026
dsh plugin --profile web add @anionex/dsh-turn-rewindby SiriLee
DSH 插件:真正便捷无感的同窗口内对话回退,从不新建分支;自带轻量工作区备份,可一并还原文件(完整 Claude Code /rewind 语义)。 · DSH plugin: genuinely effortless in-window conversation rewind — never forking a new session; ships a lightweight workspac
★ 123
↓ 5.5k/wk
MIT
TypeScript
Oct 9, 2026
dsh plugin --profile web add dsh-rewind-plugin