mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-09-09 04:02:35 +00:00
Review asked why the launcher special-cases one plugin's row. It no longer does: the four shipped compositions move into the package (presets/, in files), dsh-agent-presets resolves its own shipped root and prepends it before configured roots (includeShippedRoot, default true, opt-out for bare-machinery embedders), and the per-composition derived patch, its spec, and the dump layer are deleted — profile-boot and dump-config return to plain layer stacking. The always-load guarantee now rides the schema default instead of patch ordering, so a whole-config replacement keeps the shipped set and the squash, reload freeze, and dump divergence stop being possible. Gate globs, the web scaffold, and both preset browser lanes drop their hand-fed shipped roots; the roster e2e keeps asserting configured roots beside the shipped four against the built lib. Fixes #2863.
bundle/ — profile plugin bundles
English | 中文
Profile bundles: npm packages whose manifest declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, making them installable patch layers for dsh --profile compositions (profile contract). A bundle's substance is its patch list; some also ship runtime glue plugins their patch mounts.
The manifest declaration, not this directory, defines Bundle identity. Domain packages can carry their own optional Profile layer; the Codex and Claude Code subagent packages are directly installable examples.
| Package | Role | ctx key |
|---|---|---|
base/ |
The shared dsh core every profile applies first | — (patch only) |
web-app/ |
Browser surface: web patch layer + runtime glue plugin | mounts rows |
headless/ |
Direct one-shot task mode over base, with no Host or Web layer | mounts headless-runner |
In-box bundles resolve from the dsh installation; out-of-tree bundles install into a profile through dsh plugin --profile <name> add <package>.