dsh-agent-teams
dsh-agent-teams
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 20, 2026
- Updated
- Aug 21, 2026
Introduction
dsh-agent-teams
Role-based multi-agent team orchestration for DeepSeek Harness (dsh), maintained standalone.
One complex mission is decomposed into role assignments, executed as a dependency DAG of concurrent role subagents, and recorded as durable team/* Session events that the web GUI replays as a role board.
Packages
| Package | Role |
|---|---|
@deepseek-ai/dsh-agent-teams | Host plugin: TeamEngine (ctx.teamEngine) + the model-facing team tool + built-in templates (engineering, research) + the durable team/* event invariant |
@deepseek-ai/dsh-client-ui-agent-teams | Browser plugin: the team-run Conversation Node rendering the role board in the dsh web GUI |
How a team run works
- Formation —
team: { template }names a roster (engineering: planner → implementer → reviewer;research: researcher → analyst → writer; configtemplatesextends the set), which the engine decomposes through a planner subagent into one concrete assignment per role with dependency edges;team: { roles }accepts a model-authored inline roster and skips planning. - Execution — roles whose dependencies are satisfied start concurrently (up to
maxConcurrentRoles); each settled role's output feeds its dependents' prompts; a role whose dependencies all failed or cancelled is markedblockedand never starts. - Progress — every transition is appended to the orchestrating parent Session as
team/start,team/plan,team/role/start,team/role/end,team/end, so the tool result is reconstructable from the log and the web board replays live.
Configuration (dsh-agent-teams)
| Key | Default | Meaning |
|---|---|---|
provider | spawn | The ctx.subagents provider role subagents run on. |
toolName | team | The model-facing tool name. |
maxConcurrentRoles | 4 | Maximum concurrently running role subagents. |
maxRoleOutputChars | 20000 | Per-role output ceiling in characters. |
maxRoles | 8 | Maximum roles per run. |
maxDepth | 3 | Absolute delegation-depth cap for every child. |
enableRunInBackground | true | Exposes run_in_background on the tool. |
maxResultChars | 50000 | Rendered-result ceiling in characters. |
templates | [] | Extra team templates merged over the builtins. |
Install and use
The host plugin is a normal dsh leaf plugin. Add one row to any composition that already mounts the dsh base spine (which provides dsh-tools, dsh-subagent + the spawn backend, and dsh-system-prompt):
- id: agent-teams
name: '@deepseek-ai/dsh-agent-teams'
config:
provider: spawn
or load the package directly after pnpm add @deepseek-ai/dsh-agent-teams. See examples/cordis.yml for the minimal dependency footprint. The web role board is an additional client row:
- id: ui-agent-teams
name: '@deepseek-ai/dsh-client-ui-agent-teams'
The team tool is model-facing: give it a complex mission plus a roster, and the parent agent receives an aggregated per-role outcome. Use it only when a task genuinely splits into several concurrent specialized roles; prefer plain subagent calls for one or two delegations.
Development
pnpm install # workspace install; the dsh family resolves from npm (^0.1.0-rc.8 baseline)
pnpm run typecheck # tsc -b for both packages and their tests
pnpm test # vitest: engine/tool/invariant + client node/panel suites
pnpm run build # tsc emit + tsdown bundles (lib/index.js, lib/invariant.js, lib/client.js)
Package READMEs (host, client) document contracts and the Model Experience; the Agent Note in the source history records the design decisions.
License
MIT — see LICENSE.