DeepSeek Harness (DSH) Recipe Guide: Prebuilt Plugin Bundles for Different Workflows
TL;DRDSH has more than 400 community plugins. Installing one is easy; choosing a set that works together is not. A recipe is a small JSON file with a plugin list, an install order, and config notes. Install dsh-need-finder to search and apply recipes, or dsh-starter-pack for one-click groups. The four bundles below cover multi-agent work, safety, phone approvals, and token cost. Each has one install block and a line saying who it fits.
By Cameron Voss · Updated October 29, 2026
DSH is DeepSeek Harness, DeepSeek's open source agent harness. Everything is a plugin, so a fresh install does very little until you pick a stack. The community index tracks more than 1,000 entries, and the starter pack README puts the number a new user faces at 400 or more. "Install what you need" does not help when you do not know which plugin covers the need or whether it still works with host 0.2.1.
What is a DSH recipe?
A DSH recipe is a JSON file that lists plugins, their install order, and the config they need. It is not an installer. When you apply one, the plugin prints the ordered dsh plugin add commands. You run them and restart DSH.
dsh-need-finder ships eight recipes, including security-audit, remote-mobile, and dev-tools. The data lives in lib/recipes.json, so you can add an entry without writing code.
Which two plugins make recipes usable?
dsh-need-finder finds by need. dsh-starter-pack fills an empty install. You do not need both on day one.
dsh-need-finder: find by need, install by recipe
Describe the job, not the plugin name. plugin_guide matches it against 84 curated plugins and returns the plugin, the reason, and the install command. recipe expands a bundle into an ordered plan.
dsh plugin --profile web add dsh-need-finder
After the restart, ask in plain language, or run recipe action=apply id=remote-mobile. It prints the commands. You still review and run them.
dsh-starter-pack: one click for an empty install
If you have no plugins yet, this is the shortest path. It groups 15 vetted plugins into four sets.
dsh plugin --profile web add dsh-starter-pack
# then, in a session:
/setup
/setup essentials
/setup skips installed plugins. Restart dsh web for new ones to load.
Which bundle should I use for multi-agent work?
Bundle A · Multi-agent collaboration
Use this when one change touches several files, or a review needs more than one view. dsh-agent-teams turns the session into a captain. The captain drafts a roster and a task graph. No member session exists until you click Approve & Run. dsh-code-review adds an independent reviewer for a Git scope.
dsh plugin --profile web add --save-exact @nanmicoder/dsh-agent-teams@0.1.27
dsh plugin --profile web add @linxin666/dsh-client-ui-task-board@latest
dsh plugin --profile web add @michengai/dsh-code-review@latest
Restart, then run /agent-teams review the last five commits. For a plain review, run /review.
Three limits matter. One captain leads one active team. Members cannot create nested agents by default (memberMaxDepth: 0). Every member is its own model session, so a five-person team costs more than five times a single chat.
Which bundle keeps destructive commands and leaked keys out?
Bundle B · Safety
cc-safety-net blocks git reset --hard, git push --force, rm -rf on dangerous targets, and install scripts piped from the internet. It also blocks reads of SSH keys and .env files. dsh-plugin-gate scans a plugin before install and returns BLOCK, WARN, or PASS. dsh-leak-guard finds keys and tokens before you commit or publish.
npx -y cc-safety-net@latest install
npx -y cc-safety-net@latest doctor
dsh plugin --profile web add dsh-plugin-gate
dsh plugin --profile web add dsh-leak-guard
The guard is pattern matching, not a sandbox. Plugin code runs with your permissions, and tool approvals do not sandbox it. A PASS is one signal, not a guarantee.
Which bundle lets me approve jobs from my phone?
Bundle C · Phone approvals
dsh-pocket serves the DSH web UI to a phone. Scan a QR code on the local network or open a public tunnel. Local mode needs the password shown in settings; public mode always needs one.
dsh plugin --profile web add dsh-pocket -w
# restart the web server
npx @deepseek-ai/dsh web
Add dsh-pocket-console if you want approvals as Feishu cards. A paired phone can reach the whole machine, so use the password and turn the tunnel off when you are done.
Which bundle shows where the tokens go?
Bundle D · Token cost
dsh-cost-meter shows session and daily cost, budget use, balance, and the current peak or off-peak tier. dsh-peak-runner queues a batch for the next cheaper window.
dsh plugin --profile web add dsh-cost-meter
dsh plugin --profile desktop add dsh-peak-runner
The peak-runner README uses the desktop profile; replace it with yours. dsh-cost-meter also needs pnpm on the PATH of the DSH process.
The peak windows are UTC 01:00 to 04:00 and 06:00 to 10:00. Weekends and Chinese public holidays are off-peak all day. In New York, the first window starts at 21:00 the previous evening.
The meter warns you. It does not stop a run. For a hard stop, set the budget in the model provider's account.
How do I save my own bundle?
Recipe JSON. Copy an entry in lib/recipes.json, change the id, name, plugin list, and order, then restart.
Team profile. With dsh-agent-teams, save a roster in cordis.patch.yml and call it with /agent-teams --profile demo-delivery implement the feature.
Text file. Paste the install block into your dotfiles repo with the host version you tested. Easy to review, easy to hand to a teammate.
What do I do when two bundles conflict?
Install one bundle, restart, run a small task. Then install the next. Skipping the restart is the most common reason a plugin looks broken.
After each install, run dsh --profile web --dump-config. If the plugin is missing, check the plugin manager log and read the first real error.
Version drift is another cause. dsh-agent-teams keeps a compatibility.json matrix and recommends an exact pair. Duplicate jobs cause the rest: two task boards or two approval pushers will confuse you. If DSH will not boot, remove the last plugin with dsh plugin --profile web remove <name> and restart.
Frequently asked
Which bundle should a beginner install first?
Start with dsh-starter-pack if your install is empty, then Bundle D. Add Bundle A only when a change needs several roles.
Do plugin bundles burn a lot of tokens?
Plugins do not call a model. Agent teams do, because each member is a session and each assignment starts a turn. Idle members make no requests. Budget for the work.
Are these recipes official?
No. Recipes are community data. The awesome list checks that a plugin installs and behaves as described, not that it is safe. Scan with dsh-plugin-gate and read the source.
From a recipe to a running task. A plugin adds a capability, and a model token is what the agent uses to think and write. Once a bundle is loaded, the next step is a key that can run the work.
See the DeepSeek Coding PlanOne-off and monthly options, while stock lasts. Access is delivered as a key after payment.