@deepseek-ai/dsh-base
@deepseek-ai/dsh-base is a DeepSeek Harness profile bundle: The shared core as a profile bundle: every profile's first patch layer, inserting the base plugin rows over the empty profile root.
Published on npm at 0.0.1-rc.1. It installs into $DSH_HOME/profiles/<name> as a dependency of that profile.
Install
Plugin management forwards to pnpm inside the profile directory, so this behaves like pnpm add.
dsh plugin --profile web add @deepseek-ai/dsh-baseWhat it does in a profile
The shared core as a profile bundle: every profile's first patch layer, inserting the base plugin rows over the empty profile root. Currently 0.0.1-rc.1. To check whether it is already installed, read the dependencies in $DSH_HOME/profiles/<name>/package.json, or read the composed tree with --dump-config.
When you need to look at this package
You notice it when a profile boots oddly: a row that should apply does not, or a Windows host runs bash when you expected PowerShell. dsh --profile web --dump-config prints the composed tree; the base rows are the ones you never added by hand — model adapters, agent-default-model, tools, persistence, policy, settings and credentials, telemetry, subagent providers.
What breaks if you remove or replace it
Removing it leaves nothing to patch: every later bundle overrides rows by id, and those ids come from this layer. On Windows it also ships windows.cordis.patch.yml, which disables the POSIX bash stack (bash-sandbox, tool-bash) and mounts dsh-pwsh-sandbox and dsh-tool-pwsh instead. A half-restored bash recipe fails at load, because both executor families register the same bash service.
The package it gets confused with
It gets confused with dsh-tools. dsh-base is a patch layer: it inserts rows. dsh-tools is the registry those rows point at. You can replace the registry; removing the layer removes the pointers. Also note that mounting dsh-fs-local next to fs-sandbox double-registers ctx.fs and fails the load.
Common questions
How do I remove it again?
Use dsh plugin --profile <name> remove @deepseek-ai/dsh-base, the mirror of the install command.
What if the version does not match my dsh?
Plugins declare a compatible range through engines.dsh or DSH peer dependencies. Outside that range the CLI skips the plugin and prints the requirement instead of booting a combination that may crash.