trynewthin
dsh-subagent-roles
Role-based model routing for DeepSeek Harness subagent delegation.
- Stars
- 1
- Language
- TypeScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
DSH Subagent Roles
A DeepSeek Harness plugin for routing delegated work through named roles while each user keeps control of the model behind every role.
Main agent
└─ subagent_roles inspect configured roles and routes
└─ delegate_role(scout) start a continuable child with scout's model
scout → your configured provider / model / reasoning effort
A multi-model setup usually fails at the handoff: the lead agent can create a child, but has no durable vocabulary for why that child should use a particular model. This plugin adds role names, role descriptions, a settings surface, and two model-facing tools so delegation can express that decision.
The role is stable; the model is yours
Seven OMP-inspired role presets give the lead a selection vocabulary. scout, designer, reviewer, security-reviewer, librarian, task, and sonic each carry a short selection description. Reset restores those names and descriptions.
Model routes are personal configuration, not plugin defaults. Every user chooses the provider, model, and reasoning effort for each role in Settings. Reset restores the presets while retaining routes for matching role IDs; it never hardcodes someone else's models.
The handoff keeps the chosen model attached to the child. delegate_role starts a continuable child with the selected route and records the role and reasoning effort in its label, so a later child turn uses the same selection.
The lead receives a delegation warning. The plugin adds system guidance to inspect roles and prefer delegate_role when creating a child. It is guidance, not enforcement: native subagent tools remain available.
What it does not claim
Roles currently select a model route and provide lead-agent guidance. They do not impose sandbox permissions, tool restrictions, filesystem access rules, or a role-specific child system prompt. A role named scout is not technically read-only unless the surrounding DSH profile enforces that separately.
Install
dsh plugin --profile web add github:trynewthin/dsh-subagent-roles
Restart dsh web, then open Settings → 子代理角色 and select a model route for each role you intend to delegate to.
Delegate through a role
The main agent can use two tools:
| Tool | Use |
|---|---|
subagent_roles | List roles, their selection descriptions, and configured model routes. |
delegate_role | Start a continuable child with a selected role, complete task, and optional label. |
A role without both a provider and model remains visible but cannot be delegated. The tool reports the configuration gap instead of guessing a model.
Reset behavior
The Settings page places a two-step 重置 action beside 添加角色. Click once to request confirmation; if it is not clicked again within three seconds, it returns to normal. Confirming restores the seven built-in role names and descriptions, preserves existing routes for matching IDs, and removes custom roles.
Deleting an individual role uses the same two-step, three-second confirmation behavior.
Compatibility
Built against DeepSeek Harness 0.1.0-rc.6 and Cordis 4.0.1.
pnpm install
pnpm typecheck
pnpm build
pnpm test