Introduction¶
Throwing a whole long task into the same DSH conversation usually encounters three types of problems: subtasks conveniently changed to other files, growing in scope; claiming “done” without evidence, and no one checking acceptance criteria item by item; multiple subtasks communicating via hearsay, making it impossible to trace responsibility and evidence. The Orchestration Board (plugin name dsh-orchestra, repo chen-rong1alkdwjlak/dsh-) structures these three things into a system: one main conversation responsible for decomposing the goal, spawning isolated normal sub-conversations to execute, with all tasks constrained by a hierarchical forbidden knowledge base. The maintainer is chen-rong1alkdwjlak, categorized under “Workflow” in the community directory.
What is it¶
One-sentence positioning: A ComfyUI-style wiring workbench, installed inside DeepSeek Harness, accessed via the sidebar “Orchestration Board” entry. It binds your current DSH web conversation as the main conversation (without opening another chat set), creates a new normal DSH session for each task as a sub-conversation, and sub-conversations only see their own task book, with no message channel between them.
It aims to solve not “the model isn’t strong enough”, but the boundary, acceptance, and context isolation problems of long tasks within a single conversation.
Core Features¶
- Main Conversation Decomposition: Click “Decompose Task” in the top bar. The main conversation outputs a JSON plan, which the plugin transforms into task nodes and arranges by dependency automatically; parsing failures are reported explicitly, and nodes are not silently generated.
- Isolated Sub-conversations: A new normal DSH session is spawned for each task dispatch. The task book (goal / boundaries / inputs / deliverables / acceptance criteria + applicable forbidden + result summary) is sent in as the first message.
- Acceptance Node: After a sub-conversation finishes, it stops at “Pending Acceptance”. It can be manually passed or rejected and sent back, or the main conversation can review it first against the acceptance criteria, giving PASS/FAIL and evidence gaps.
- Hierarchical Forbidden Knowledge Base: Four levels, with Level 1 being the highest and cannot be disabled.
- Dependency Wiring: Connecting Task A to Task B means B must wait for A to pass before it can be dispatched. B’s task book will attach A’s result summary, marked as “transferred from main conversation”.
The effective scope of the four levels of forbidden is as follows.
| Level | Name | Scope |
|---|---|---|
| 1 | Level 1 Forbidden | Hardest. Attached to the main conversation, every sub-conversation, and the system prompt of every strict conversation on this machine; cannot be disabled, built-in items cannot be deleted. |
| 2 | Level 2 Forbidden | All tasks on the current orchestration board. |
| 3 | Level 3 Constraint | Checked per task, or attached via “Forbidden Node” wiring. |
| 4 | Reference Material | Only attached when a task explicitly references it; does not count as a ban. |
The built-in Level 1 forbidden items are: no fabrication, no unauthorized destruction, no leaking secrets, no bypassing acceptance. Text can be modified but cannot be deleted. The task book lists applicable Level 1/2/3 items again in full; even if the system prompt is rewritten by other plugins, the task book still carries the ban. Data is stored in <DSH_HOME>/orchestra/orchestra.json. The session body is not copied there and still only exists in DSH session logs.
Installation and Enablement¶
This plugin does not provide a github:owner/repo style one-click install command; the README provides manual steps for the desktop profile. First, clone the repository to any directory (use <repo> to refer to it):
git clone https://github.com/chen-rong1alkdwjlak/dsh-.git <repo>
- Add a line to the
dependenciesin<DSH_HOME>\profiles\desktop\package.json, changing the path to your own<repo>:
"dsh-orchestra": "link:C:/path/to/dsh-"
-
Append
"dsh-orchestra"to the end ofdsh.profile.bundlesin the same file. -
Create a directory junction under
<DSH_HOME>\profiles\desktop\node_modules\:
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-orchestra" -Target "C:\path\to\dsh-"
- Restart DeepSeek Harness once, and the “Orchestration Board” will appear in the sidebar.
You can also use the CLI, which uses pnpm, but you still need to manually confirm the bundles list:
& "<DeepSeek Harness Installation Directory>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add link:C:/path/to/dsh-
The plugin requires DSH >= 0.2.1-rc.2 (because it uses ctx.sessionController.create/prompt/inspect and session/event), Node engine requires >=22.19.0, and the license is MIT.
5-Minute Quick Start¶
- Open the sidebar “Orchestration Board”, create a new board, and fill in the name, main goal, and working directory.
- Select the “Main Conversation” node and click “Use current conversation as main conversation”. The default is a fixed binding; switching the web conversation will not detach it; only checking “Follow current DSH conversation” will trigger an automatic rebind.
- Click “Decompose Task” in the top bar. The main conversation outputs a JSON plan, which the plugin transforms into task nodes and arranges by dependency.
- Click on task nodes one by one to check “Boundaries” and “Acceptance Criteria”; do not skip this step.
- Click “Dispatch”: A new isolated sub-conversation is created, the task book is sent in as the first message, and the node becomes “Sub-conversation Running”.
- When the sub-conversation finishes, the node becomes “Pending Acceptance”. The right side shows results, artifacts, and item-by-item self-checks.
- If needed, click “Let main conversation review first”. It gives PASS/FAIL and evidence gaps according to the acceptance criteria; this is just a suggestion.
- You click “Pass”, or write clear rejection requirements and click “Reject and Send Back”, causing the same sub-conversation to continue redoing.
The acceptance protocol requires the sub-conversation to output the following XML for the node to advance to “Pending Acceptance”:
<orchestra-result>
{"status":"done|blocked|failed","summary":"...","artifacts":["..."],"checks":[{"criterion":"...","pass":true,"evidence":"..."}]}
</orchestra-result>
When parsing fails, the entire answer is treated as the summary and preserved; the node remains at “Pending Acceptance” and will not automatically pass.
The main conversation is by default a DSH session, using DSH’s model routing, which usually consumes API tokens. To use the free quota of the chat.deepseek.com web version: first run dsh plugin --profile desktop add dsh-deepseek-web-login, restart, and log in under “Settings → DeepSeek Web Login”. Then select the main conversation in the orchestration board, and click “Web Version · Fast” or “Think” in the right side “Main Conversation Model”. This only changes this one main conversation session and does not change DSH’s default model; sub-conversations are still created based on the DSH default model.
Tools for Main Conversation¶
Only in sessions bound as a main conversation can the model directly call these tools:
| Tool | Purpose |
|---|---|
orchestra_board |
View all tasks, status, acceptance criteria, and dependencies of the current board. |
orchestra_dispatch |
Dispatch a task (defaults to reject if preconditions are not met, force can force through). |
orchestra_accept |
Pass or reject a pending acceptance task (rejection sends modification requirements back to the sub-conversation). |
Calls from sub-conversations will be rejected, returning “Current session hasn’t been bound to any orchestration board’s main conversation”. Orchestrator tools (orchestra_board / orchestra_dispatch / orchestra_accept) called within sub-conversations are also directly rejected.
Applicable Scenarios and Notes¶
Suitable for DSH users who need to split a long task into multiple verifiable subtasks and hope the subtasks have clear boundaries. The plugin runs with the permissions of the current DSH process; you should read the source code once before installing (repo is public, MIT license) to confirm that operations on sessions, working directories, and files meet your expectations.
Points to note:
- Plan quality depends on the main conversation; it usually outputs 3–7 tasks.
- A sub-conversation is a one-time normal session. “Redispatch” will open a new one, while the old session remains in the DSH sidebar.
- Decomposition and review wait for 4 minutes by default; timeouts are treated as failures and can be retried.
- Single machine single process assumption: When the same
orchestra.jsonis written by two DSH processes simultaneously, it follows “write-over” semantics. - Web version DeepSeek login is an unofficial client for the web private interface; there are risks of risk control and rate limiting; judge for yourself.
Conclusion¶
The value of the Orchestration Board lies in turning “splitting tasks, checking boundaries, verifying item by item, isolating context” from a verbal agreement into a structure on the canvas. If you already have a batch of subtasks to progress in parallel, you can start by trying the “Decompose Task” step.
Directory page: https://www.skillhub.cn/plugins/chen-rong1alkdwjlak/dsh-
Repo: https://github.com/chen-rong1alkdwjlak/dsh-