Bundle
dsh-subagent-roles
Role-based model routing for DSH subagent delegation.
- Source
- trynewthin
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 5 days ago
Readme
# 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.
  [](https://github.com/deepseek-ai/deepseek-harness)
```text
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
```sh
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`.
```sh
pnpm install
pnpm typecheck
pnpm build
pnpm test
```
## License
[MIT](https://opensource.org/license/mit)
Install
dsh plugin --profile web add github:trynewthin/dsh-subagent-roles
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-subagent-roles from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.