Back to home@geekyfoxlab

dsh-subagents

Focused child-agent delegation (scout, researcher, worker, reviewer, oracle, delegate) and multi-agent workflows (council, parallel review, review loop) for DeepSeek Harness.

Stars
0
Language
JavaScript
Created
Aug 26, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

dsh-subagents

Focused child-agent delegation and multi-agent workflows for DeepSeek Harness (DSH).

A faithful port of pi-subagents, rebuilt on DSH's native subagent / subagent_fork / workflow tools — so you get the curated personas and workflows without giving up DSH's built-in delegation.

Why this exists

DSH already ships delegation (subagent, subagent_fork, workflow, agent_teams) and an on-demand skill system. What it does not ship is a ready-made set of who to delegate to and how to chain them.

dsh-subagents fills that gap with:

NeedYou get
A second pair of eyes before you editreviewer persona with P0/P1/P2 findings + a merge verdict
A sanity check on a risky decisionoracle persona that challenges assumptions without editing
Fast recon of unfamiliar codescout persona for entry points, data flow, and risks
Grounded external factsresearcher persona producing a sourced brief
A careful implementerworker persona that edits minimally and escalates instead of guessing
Orchestrated review/impl loopsparallel-review, review-loop, council, parallel-research, parallel-cleanup, gather-context workflows

Problems solved: no hand-rolled prompts, no remembering role tool-allowlists, no reinventing review loops. One install and you can say "use reviewer to review this diff" and get a disciplined review.

What makes it different: it's not a new agent runtime — it's a thin, dependency-light skill layer (pure ESM, zero runtime deps) that teaches the model how to use DSH's own tools, so it composes with everything else in your profile (AgentTeams, MCP servers, skills, themes).

Install

dsh plugin --profile web add dsh-subagents
# or from a local checkout:
dsh plugin --profile web add /path/to/dsh-subagents

Restart the dsh process, and you're done — no config, no slash commands.

Try this first

  • "Use reviewer to review this diff."
  • "Ask oracle for a second opinion on my current plan."
  • "Use scout to understand this code."
  • "Run parallel reviewers: one for correctness, one for tests, one for simplicity."

The model loads the matching subagents-* skill and delegates with the native tools. You don't create agents, write config, or learn commands.

Builtin roles

RoleUse when you want…
scoutFast local codebase recon: relevant files, entry points, data flow, risks.
researcherWeb/docs research with sources and a concise brief.
workerImplementation: edits files, validates, escalates unapproved decisions.
reviewerCode/plan review with P0/P1/P2 findings and a merge verdict.
oracleA second opinion before acting; challenges assumptions without editing.
delegateA lightweight general handoff close to the parent session.

Workflows

WantSkill
Debate a material decisionsubagents-council — bounded parent-mediated advisor council
Review a diff adversariallysubagents-parallel-review — several fresh reviewers, distinct angles
Implement → review → fix until cleansubagents-review-loop — capped at 3 rounds
Build a grounded multi-angle answersubagents-parallel-research — researcher + scout
Clean up AI-slop / verbositysubagents-parallel-cleanup — deslop + verbosity passes
Gather context, then clarifysubagents-gather-context — scout/researcher, then clarifying questions

How it maps to DSH

pi-subagentsdsh-subagents / DSH
subagent toolsubagent (fresh) / subagent_fork (context-aware)
workflowScriptworkflow
multi-agent teamsagent_teams (native)
builtin agents (.md frontmatter)skills subagents-scout, subagents-reviewer, …
prompt shortcutsskills subagents-council, subagents-parallel-review, …
context: fresh / forksubagent / subagent_fork
async / backgroundrun_in_background: true + job_output / job_kill
subagent({action:"list"})list_agents (children) + the skills catalog

Note on roles: DSH's subagent tool fixes persona/tool-filter at config level, not per call. So role switching here is prompt-driven: each role is a skill whose persona text you paste into the child's prompt. Hard per-role tool isolation would require a DSH agent-preset composition layer — see Limitations.

Layout

lib/index.js        host plugin — registers skills + a usage section
skills/*.md         the persona and workflow bodies
cordis.patch.yml    mounts the plugin into a profile's host composition

Requirements

  • Node ≥ 20 (ESM).
  • A DSH profile whose base bundle mounts skills and systemPrompt (standard profiles do).

Limitations

  • Role personas are soft guidance: a child inherits DSH's toolset and self-limits by the persona's tool guidance. There is no per-call tool-allowlist enforcement.
  • council cross-exams use a fresh re-launch rather than resuming the same child, because DSH one-shot subagents are not resumable (use subagent_fork + send_message for a resumable child when you need it).

Contributing

Bug reports and PRs are welcome. Please open an issue before starting non-trivial work. There is no build step — the plugin is plain ESM, so node --check lib/index.js and a mock apply() run are the smoke tests.

License

MIT. A port of pi-subagents (MIT, © Nico Bailon).