Back to home

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.

7 default roles 6 contract tests DeepSeek Harness plugin

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:

ToolUse
subagent_rolesList roles, their selection descriptions, and configured model routes.
delegate_roleStart 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

License

MIT