Preface¶
DeepSeek Harness (dsh for short) is an Agent runtime open-sourced by DeepSeek. The official repository describes its architecture as Everything is a Plugin: models, tools, sessions, and interfaces are all assembled as Cordis plugins. The repository is currently marked as developer preview, so compatibility may change at any time. Several independent community sites have already indexed repositories tagged with the dsh-plugin topic; the DeepSeek Harness Plugin Repository referenced in this article is one such site, and it has no official affiliation with DeepSeek / FunPlus. Do not treat it as an official app store.
Under this architecture, a “deep research” relying solely on prompt stacking in conversations can easily turn into a fixed pipeline: break down the problem, perform a search, write a report, and wrap up. This works fine for simple topics, but for complex topics, you either end up with insufficient search results or get stuck in endless searching. The dsh-deep-research plugin turns this task into an extensible add-on: hooked into the official workflow engine, it runs an adaptive research closed loop based on cybernetics and information theory. This article is collated after cross-checking the catalog details page, GitHub README, and repository source code.
What It Is¶
dsh-deep-research is a workflow and automation plugin maintained by the GitHub organization omdsh-dev. Its npm package name is @dsh-external/dsh-deep-research, and the repository is located at omdsh-dev/dsh-deep-research under the MIT license (copyright statement dated 2026 dsh2026). It was indexed on the catalog page on 2026-08-11, is primarily written in TypeScript, and has version 0.1.0 in its package.json. GitHub showed 14 stars on 2026-08-17; on the same day, the community catalog page still listed 11 stars, so refer to the repository page for star counts.
It is separate from the skill system: instead of registering into ctx.skills, it exposes a tool named deep_research to the model. It is triggered by scenario keywords in the tool description (deep research, investigation, multi-source information comprehensive analysis, research report, literature collection), and you can speak naturally in the conversation. Orchestration uses the official workflow engine (ctx.workflows / @deepseek-ai/dsh-workflow-workerthread), while search and scraping continue to use the built-in web_search / web_fetch. The original wording in the README is: the plugin has zero network logic and zero self-developed orchestration.
There is another similarly named project on GitHub: dsh-deepresearch (without a hyphen). Do not mix them up during installation.
Core Features¶
The repository README describes its design as “not a fixed prompt pipeline, but a living, adaptive research closed loop”. The workflow script in the source code src/index.ts executes in phases, which aligns with the documentation.
Planning: Define the answer space first, then break down sub-questions¶
The planning sub-agent does not start searching immediately. It first writes the scope (what judgments or decisions this research should support), then enumerates information dimensions, maps each sub-question to a dimension, and provides an acceptance criterion acceptance. Underserved dimensions are written into coverage_gaps as unvalidated blind spot assumptions rather than quietly discarded.
In cybernetics terms, this is reference signal calibration: if the target is set incorrectly, all subsequent closed-loop effort will be wasted. The law of requisite variety corresponds to: if the set of sub-questions fails to cover the topic space, there will inevitably be blind spots later.
If questions (one per line, or numbered 1. 2. 3.) are passed in when calling the tool, the planning phase will be skipped and research will proceed directly in parallel.
Research: Stop based on marginal information gain¶
The research sub-agent maintains three-state evidence: confirmed / uncertain / gaps. Each round of actions follows:
1. Predict what new information can be obtained for points of high uncertainty
2. Collect evidence using web_search / web_fetch
3. Update the evidence set
4. Perform marginal gain validation
The sub-agent will automatically stop if no new information is added in a consecutive round; there is also a hard upper limit on total rounds for the entire run.
The research phase is a closed-loop replanning process, not a one-time fan-out:
1. Round 1 conducts parallel research on all sub-questions (and blind spot reconnaissance declared in the planning phase).
2. At the end of each round, collect high-priority gaps and automatically dispatch supplementary research for the next round.
3. Simple topics will converge in one round, while complex topics will automatically expand until the marginal gain of a round approaches 0 or the round limit is reached.
The round limit is determined by depth:
- 1 Preliminary: up to 2 rounds max
- 2 In-depth (default): up to 3 rounds max
- 3 exhaustive: up to 4 rounds max
The source code implements this as depth + 1, and depth can only be 1, 2, or 3.
The default per-round concurrency is maxParallel = 4. Sub-questions exceeding the concurrency limit will be queued for later processing and will not be silently discarded.
Synthesis and Optional Review¶
The synthesis sub-agent is enabled by default (synthesize: true). It compresses the evidence into a final report based on rate-distortion theory: only retain information that differentiates conclusions, while retaining confidence levels, contradictions, and validated blind spots. When synthesize: false, it only returns the three-state evidence for each sub-question, leaving the final report writing to the main agent.
When review: true, an adversarial review sub-agent will run additionally: it randomly checks citations (URL accessibility / whether they actually support the claim), performs coverage audits, and flags contradictions and overconfidence. This is disabled by default.
Parts Tied to the Official Engine¶
The source code declares the plugin as inject: ['tools', 'workflows'], and tool execution calls ctx.workflows.start(). Therefore, it reuses the existing capabilities of the official engine: worker isolation, concurrency and total count limits, cancellation, progress events, and wf-runs logging. exec.signal will be passed to the workflow run, and sub-agents will be terminated upon cancellation. A single sub-question research failure will only be marked in that section; a planning failure will cause the entire tool to error, and the main agent can retry with adjusted parameters.
The plugin does not touch the TUI: there are no tuiPrompt, overlay, or system-prompt injections. The README also retains a skill template .claude/skills/deep-research, which is independent of this plugin.
Installation and Activation¶
The installation command given on the catalog details page is:
dsh plugin add github:omdsh-dev/dsh-deep-research
For reproducible installations, fix the commit hash as specified on the catalog page:
dsh plugin add github:omdsh-dev/dsh-deep-research#<commit>
Replace <commit> with the actual reviewed commit hash from the repository, do not leave the placeholder.
The README adds the installation method by profile. The package declares dsh.bundle.patch (cordis.patch.yml), which can be loaded into tui / headless / web or custom profiles; after installation, restart the corresponding profile for the deep_research tool to be injected:
dsh plugin --profile <profile> add git+https://github.com/dsh-external/dsh-deep-research.git
dsh --profile <profile>
There is one point to cross-check against the current repository status: the README still references the GitHub organization dsh-external, but accessing dsh-external/dsh-deep-research will redirect to omdsh-dev/dsh-deep-research — the two are the same repository. Prioritize using the command github:omdsh-dev/dsh-deep-research from the catalog page during installation. If your local Git rewrites HTTPS to SSH globally via insteadOf, the README recommends using the above git+https:// format instead. When the dsh plugin prompt requires allowBuilds, add a line to $DSH_HOME/profiles/<profile>/pnpm-workspace.yaml as prompted.
Uninstall using the package name, not the repository name:
dsh plugin --profile <profile> remove @dsh-external/dsh-deep-research
For dependencies: the profile combination needs to include the official workflow engine and built-in web tools. The README states that the official dsh base combination includes these by default, so no additional installation is needed; peer dependencies (@deepseek-ai/dsh-tools, @deepseek-ai/dsh-workflow, cordis) are provided by the combination. package.json requires Node ^22.19.0 || >=24.0.0.
Profile compatibility: please install it into a combination that provides a workflows provider (the README examples are tui / headless). For some Web Profiles that do not declare this provider, the Loader will remain pending, and you will need to register the relationship in the DSH Hub first or switch to a combination that provides this service.
Typical Usage¶
The tool is automatically called by the model based on its description. The following lines are from the repository README and can be used verbatim:
深度调研一下 MCP 生态现状,重点对比几家主流实现,出一份带引用的报告
按这份问题清单做研究:1. ... 2. ...
If you already have a question list, automatic breakdown will be skipped and research will proceed directly in parallel.
调研一下 A/B 方案,purpose 是决定我们选哪个
The clearer the purpose is written, the more accurate the answer space defined during the planning phase will be. Complex topics will automatically add rounds; if you want stricter validation, pass depth: 3, and pass review: true to enable citation error checking and coverage audits.
Tool parameters (refer to the README and src/index.ts for accuracy):
| Parameter | Required | Description |
|------|------|------|
| topic | Yes | Research topic |
| purpose | No | Judgment or decision to support; the planning agent will declare an assumed purpose if omitted |
| questions | No | Predefined question list; skips automatic breakdown if provided |
| depth | No | 1 Preliminary / 2 In-depth (default) / 3 Exhaustive |
| synthesize | No | Whether to generate a final report, default true |
| review | No | Adversarial review, default false |
Optional configuration (fill in after installing into the profile, all are optional):
| Key | Default | Description |
|-----|------|------|
| subagentProvider | Engine default spawn | Sub-agent provider |
| maxParallel | 4 | Per-round research concurrency limit |
| maxTotalAgents | Engine limit | Total sub-agent count limit for the entire run |
| plannerModel / researcherModel / synthesizerModel / reviewerModel | Inherit parent configuration | Switch models by role |
The README’s cost recommendation is tiered: use strong models for planning and synthesis, and cheaper models for research. Roles without configured models will inherit the parent routing configuration.
Applicable Scenarios and Notes¶
It is suitable for these scenarios:
- You need multi-source cross-validated, citation-backed research reports rather than single-search summaries
- The topic boundaries are unclear, and you want to first define the answer space before breaking down dimensions
- You already have a question list and only want parallel evidence collection
- You are willing to enable review for rigor and accept the extra round of review costs
You need to clarify these limitations first:
- The plugin runs with the permissions of the current dsh process, and may execute code during installation. The catalog page clearly states: please check the source code repository and license before installing; fix the commit hash for reproducible installations.
- It is not a general-purpose workflow engine, only registering the deep_research tool.
- Search capabilities fully rely on the host’s built-in web_search / web_fetch, and the plugin itself does not connect to the internet.
- Some Web Profiles without a workflows provider will not load properly.
- Deep research will inevitably consume multiple rounds of agents and retrieval; depth: 3 plus review: true will be more costly. The repository recommends using model tiering to control costs, and there is no independent evaluation data in this article.
- DeepSeek Harness is still in developer preview, and the official repository notes that breaking changes may occur. The plugin is currently at version 0.1.0, and both interfaces and profile combinations may change along with the host environment.
Summary¶
dsh-deep-research does a very narrow thing: it transforms a deep research task from a “prompt pipeline” into an adaptive closed loop hooked into the official workflow engine. Planning first defines the answer space, research stops based on information gain, synthesis retains uncertainty, and review is optional. It can be installed via the community catalog or GitHub, and prioritize using the command from the catalog page:
dsh plugin add github:omdsh-dev/dsh-deep-research
Catalog Page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-deep-research/
GitHub: https://github.com/omdsh-dev/dsh-deep-research