Build1 distinct publisher3 min readUpdated
Four subsystems are all Cordis plugins at the pinned commit, which turns extension into an architecture decision. The same guide records GitHub at rc.8 and npm at rc.7.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A dev.to architecture guide to DeepSeek Harness reports that at the snapshot it checked, default branch master, commit 141eb6fef83422698aef7a981029e843e8161534, the model adapter, tool registry, session log and agent loop are all Cordis plugins [1]. That removes the usual shortcut of bolting an addition onto a privileged core: a plugin contributes services, typed events and reversible effects to a shared context, and profiles and bundles compose those plugins into a runnable product [2], so the only decision left is which seam you attach to.
The guide gives five placements: a service for a capability another plugin calls directly, an event to observe or intercept behaviour without importing its provider, an effect for anything that must be undone on unload, a profile patch for one user's or one deployment's composition, and a bundle when a reusable package needs to distribute a set of patchable rows [3]. Its stated selection rule is not to choose by directory name or YAML position, but by ownership, lifetime, dependency and replacement boundary [4].
Some of that is enforced by the runtime rather than by taste. The context is the repository through which plugins find stable service keys such as ctx.tools, ctx.llm and ctx.sessions [5]. A consumer declares hard requirements through inject; Cordis holds it PENDING until every required service exists, unloads it if a dependency disappears, and reloads it when the service returns [6]. Which is why, per the guide, YAML list order is not a startup contract: entries start concurrently and dependency declarations control readiness [7]. The lifecycle runs PENDING to LOADING to ACTIVE to UNLOADING to DISPOSED, with FAILED as the branch [8].
The event choice carries the sharpest failure mode. emit broadcasts synchronously, parallel awaits listeners together, serial awaits them in order, and waterfall wraps a continuation [9]; in a waterfall, an observer that forgets next() does not merely miss a callback, it can swallow the default behaviour for every downstream plugin [10]. That is the seam the guide recommends for policy, request rewriting or veto [11], so the cheapest place to add a policy hook is also the place where a one-line omission becomes a system-wide outage.
Cleanup is similarly load-bearing. Cordis already treats ctx.on(), child plugins, service registrations and Harness registry registrations as effects, but a raw interval, watcher, socket or file handle has to be acquired inside ctx.effect() with a disposer [12], and ordered asynchronous teardown must live in one disposer that awaits its steps, because separate async disposers may run concurrently [13]. Composition sits above all of this: a profile under $DSH_HOME/profiles/<name> lists ordered bundles in dsh.profile.bundles [14], each package declares dsh.bundle.patch and patch rows mount plugin fibers [15], and overrides apply as profile cordis.patch.yml, then home-level patch, then --patch overlays [16].
Then the caveat that governs the rest. DeepSeek Harness is still a Developer Preview [17]. GitHub published the dsh-v0.1.0-rc.8 pre-release on August 19 while npm still reported @deepseek-ai/[email protected] when checked on August 20 [18], one candidate apart on consecutive days [19], and the guide pins its claims to commit 141eb6f rather than implying every rc.8 package is installable [20]. It calls itself an architecture map, not a stability guarantee, and tells readers to repeat the config and lifecycle checks after every upgrade [21].
Watch whether the npm channel catches up with the GitHub tags, and whether the service keys named above survive the next candidates unchanged. If they do not, the seam you chose is the thing you rewrite.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
At the source snapshot checked for the guide (default branch master, commit 141eb6fef83422698aef7a981029e843e8161534), the model adapter, tool registry, session log and agent loop are all Cordis plugins.
A plugin contributes services, typed events and reversible effects to a shared context; profiles and bundles compose those plugins into a runnable product. DeepSeek Harness does not treat plugins as optional add-ons around a privileged core.
The guide's practical rule: use a service for a capability another plugin calls directly; an event to observe or intercept behavior without importing its provider; an effect for anything that must be undone on unload; a profile patch for one user's or one deployment's composition; a bundle when a reusable package needs to distribute a set of patchable rows.
Do not choose by directory name or YAML position. Choose by ownership, lifetime, dependency, and replacement boundary.
A context is the repository through which plugins find stable service keys such as ctx.tools, ctx.llm and ctx.sessions.
A consumer declares hard requirements through inject. Cordis keeps it PENDING until every required service exists, unloads it if a dependency disappears, and reloads it when the service returns.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Single commit-pinned practitioner reading
The technical claims are specific, internally consistent and pinned to a named commit and dated version checks, which is above-average rigour for a tutorial. But the entire cluster is one dev.to article with no vendor documentation, changelog, repository excerpt or second observer to corroborate the lifecycle, event-contract and patch-precedence descriptions, so the evidence base is narrow by construction.
Developer Preview, pre-release artifacts only
The only adoption-shaped facts in the cluster are release artifacts: a GitHub rc.8 pre-release, an npm-reported rc.7 package, and rc.8 release notes offering official subagent providers as on-demand Profile Bundles. The project self-identifies as a Developer Preview and the cluster contains no downloads, deployments, users or production usage disclosures, so measured adoption is limited to the existence of release candidates.
Hedged slightly below its own evidence
The framing is assertive about architecture ('everything is a plugin', pick your seam before you write code) but the article volunteers the limits that usually get omitted: Developer Preview status, an architecture map rather than a stability guarantee, a commit pin, an explicit refusal to imply every rc.8 package is installable from npm, and instructions to re-run config and lifecycle checks after upgrades. Claims therefore sit at or marginally below what the single-source evidence supports.
Independent practitioner post with self-referral
The item is a community-platform (dev.to) guide with no disclosed vendor, sponsorship or commercial relationship to DeepSeek in the supplied material, which lowers incentive pressure. The residual incentive is authorial: it points readers to the author's companion DeepSeek Harness install and rollback checklist, so it benefits from being read as the canonical explainer of a fast-moving preview project.
Moderate: precise but unreplicated
Confidence is held down by single-publisher sourcing and a target that is explicitly unstable between preview candidates, and held up by the specificity of the claims — a named commit, dated version checks, enumerated lifecycle states, and a documented override precedence chain that a reader can verify directly.
invest
DeepSeek V4 Flash costs a tenth as much and passes 53.8% of agent tasks1 distinct publisher
build
A 12MB Go binary bets agent cost control is cache stickiness, not a dashboard1 distinct publisher
build
Claude Code's new default is a confession: the approval prompt was never a control1 distinct publisher
invest
65,000 pulls a day, one author: the AI coding stack's unpriced dependency1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 19, 2026