Installation

August 14, 2026 ยท View on GitHub

Supported Baseline

DSRH 0.1.0 is pinned to DeepSeek Harness npm packages 0.1.0-rc.6 and the source API inspected at commit 47f943859bef60e4160492346772ded9b24f765a. Upgrade the Bundle and Harness together only after running the integration checks.

Published Packages

When DSRH packages are published, install the Python sidecar in a dedicated environment, point DSRH_PYTHON at that interpreter, then add the npm Bundle:

python -m venv .venv-dsrh
.venv-dsrh/bin/python -m pip install dsrh-mcp==0.1.0
export DSRH_PYTHON="$PWD/.venv-dsrh/bin/python"
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add @dsrh/deepseek-research-harness@0.1.0
npx @deepseek-ai/dsh@0.1.0-rc.6 --profile web --dump-config

These DSRH package names are release targets; this checkout does not claim they are already present on npm or PyPI.

Local Checkout

From the repository root:

corepack pnpm install
corepack pnpm build
python -m venv .venv
.venv/bin/python -m pip install -e './python[dev]'
export DSRH_PYTHON="$PWD/.venv/bin/python"
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add ./packages/plugin

PowerShell uses .venv\Scripts\python.exe and $env:DSRH_PYTHON = (Resolve-Path .venv\Scripts\python.exe).

dsh plugin forwards to pnpm, resolves relative paths from the invoking directory, and adds packages declaring dsh.bundle.patch to the profile bundle list. Run the dump command from the research workspace because process.cwd() becomes both the Harness and DSRH workspace root.

Validate

npx @deepseek-ai/dsh@0.1.0-rc.6 --profile web --dump-config
python -m dsrh_mcp doctor
python -m dsrh_mcp version

The dump must contain dsrh-runtime, dsrh-skills, and dsrh-science-mcp. doctor must report a valid workspace and SQLite FTS5. Starting the profile logs an MCP startup error when DSRH_PYTHON does not name an environment containing dsrh-mcp; the official client then follows its bounded reconnect policy.

Override Configuration

Profile patches replace whole row configs. An override of dsrh-runtime must repeat every field it keeps. Its Cordis config uses camelCase:

workspace:
  root: .
experiment:
  defaultDryRun: true
  maxMatrixRuns: 100
security:
  workspaceOnly: true

Python-side paper, citation, and experiment settings are not fields of that Cordis row. Configure them with DSRH_WORKSPACE_ROOT, DSRH_PAPER_MAX_FILE_MB, DSRH_PAPER_SEARCH_TOP_K, DSRH_CITATION_CACHE_TTL_HOURS, DSRH_NETWORK_TIMEOUT_SECONDS, DSRH_EXPERIMENT_DEFAULT_DRY_RUN, and DSRH_EXPERIMENT_MAX_MATRIX_RUNS. DSRH has no model API key setting.