Overview
dsh-base
Source-level overviewThe shared dsh core as a profile bundle: cordis.patch.yml inserts every base plugin row — model adapters, the shared agent-default-model selection, tools, persistence, policy, settings/credentials, telemetry, and host-level subagent providers — over the empty profile root, as the first layer of every profile's dsh.profile.bundles list. Codex and Claude Code providers load dormant; Agent Presets independently decide whether their agent contributes either model-facing delegation tool. Later bundle layers (e.g. dsh-web-app) and the user's profile cordis.patch.yml override these rows by id; a patch replaces a row's whole config, so mode-specific values live in mode bundles, not here. The package has no runtime API; the profile composer resolves the patch through the dsh.bundle.patch manifest field, never through code.Collapse technical overview
cordis.patch.yml inserts every base plugin row — model adapters, the shared agent-default-model selection, tools, persistence, policy, settings/credentials, telemetry, and host-level subagent providers — over the empty profile root, as the first layer of every profile's dsh.profile.bundles list. Codex and Claude Code providers load dormant; Agent Presets independently decide whether their agent contributes either model-facing delegation tool. Later bundle layers (e.g. dsh-web-app) and the user's profile cordis.patch.yml override these rows by id; a patch replaces a row's whole config, so mode-specific values live in mode bundles, not here. The package has no runtime API; the profile composer resolves the patch through the dsh.bundle.patch manifest field, never through code.The dsh.bundle manifest proves this is a DSH profile activation layer; it does not prove the Git subdirectory is independently installable.
Capabilities
What it contributes
README / EN
Package documentation
@deepseek-ai/dsh-base
English | 中文
The shared dsh core as a profile bundle: cordis.patch.yml inserts every base plugin row — model adapters, the shared agent-default-model selection, tools, persistence, policy, settings/credentials, telemetry, and host-level subagent providers — over the empty profile root, as the first layer of every profile's dsh.profile.bundles list. Codex and Claude Code providers load dormant; Agent Presets independently decide whether their agent contributes either model-facing delegation tool. Later bundle layers (e.g. dsh-web-app) and the user's profile cordis.patch.yml override these rows by id; a patch replaces a row's whole config, so mode-specific values live in mode bundles, not here. The package has no runtime API; the profile composer resolves the patch through the dsh.bundle.patch manifest field, never through code.
The patch gates both shell stacks by platform on its own rows: bash-sandbox/tool-bash carry disabled: !!js process.platform === 'win32' (bash has no Windows runner), and their twins pwsh-sandbox/tool-pwsh mount on win32 only with the inverted expression — one shared patch file, exactly one shell stack per host. The permission surface stays exactly as on POSIX: sandbox/sandbox-policy enforce the file-effect policy through the Windows ACL restricted-token runner (the win32 chain of dsh-sandbox-local → @deepseek-ai/dsh-sandbox-windows-acl), the permission switcher and the approval service run unchanged, and fs-sandbox keeps fencing ctx.fs writes — mounting dsh-fs-local alongside it would double-register ctx.fs and fail the load. A Windows host that prefers the unconfined local pwsh executor or full access overrides these rows through its profile or home cordis.patch.yml (the bash-restore recipe must be complete: disable pwsh-sandbox/tool-pwsh AND re-enable bash-sandbox/tool-bash — both executor families register the same bash service, so an incomplete recipe fails loud at load). POSIX hosts see the pwsh rows disabled.
The row set and its rationale are documented inline in the patch file; the generated composition graph renders it.
Model Experience
Indirectly, through the inserted rows: this bundle selects the shipped persona-less prompt base, tool set, and DeepSeek adapter that mode bundles specialize, and contributes no model-visible text of its own.
KV Cache effect
None directly; each inserted row's package owns its effect.
Known Limitations and Deferred Work
- A patch replaces whole row configs — profile overrides must restate every field a row keeps; there is no deep-merge layer.
- Claude's SDK platform CLI remains in the Profile install closure — the base bundle depends on the Claude provider, whose production path resolves the host
claude; removing the SDK's unused optional payload is deferred to the product installation-closure follow-up. - The Windows temp grant is a private per-session subdirectory —
workspace-writeconfines writes to the workspace plus the session's own temp subdirectory (<temp>\dsh-<hash>, TMP/TEMP rewritten for confined children);read-onlygrants nothing. See@deepseek-ai/dsh-sandbox-windows-acl.
LIMITATIONS
Known limitations
- **A patch replaces whole row configs** — profile overrides must restate every field a row keeps; there is no deep-merge layer. - **Claude's SDK platform CLI remains in the Profile install closure** — the base bundle depends on the Claude provider, whose production path resolves the host `claude`; removing the SDK's unused optional payload is deferred to the product installation-closure follow-up. - **The Windows temp grant is a private per-session subdirectory** — `workspace-write` confines writes to the workspace plus the session's own temp subdirectory (`<temp>\dsh-<hash>`, TMP/TEMP rewritten for confined children); `read-only` grants nothing. See `@deepseek-ai/dsh-sandbox-windows-acl`.
