dshkit

DeepSeek Harness vs Claude Code: an honest architectural comparison

One is a plugin kernel you compose, the other is an opinionated product. What that difference actually costs and buys — configurability, session model, ecosystem maturity, and price.

Updated 2026-08-134 min
Short answer

Claude Code is an opinionated product with a mature ecosystem and a first-party model. DeepSeek Harness is a plugin kernel where every capability — models, tools, sandbox, even the UI — is a swappable config row. Pick the harness if you want to compose your own agent or run non-first-party models; pick Claude Code if you want something that already works and is not a v0.1 preview.

Comparisons of these two usually turn into a benchmark argument, which misses the more useful distinction: they are not the same kind of thing. One is a product. The other is a kernel with four presets shipped on top of it.

That difference determines almost everything else.

The architectural split

Claude Code is an opinionated coding agent. The tool surface, permission model, and interaction loop are decided for you, and the decisions are generally good ones. You configure it at the edges.

DeepSeek Harness is built on the Cordis kernel with one organising rule: everything is a plugin. Models, tools, skills, sessions, sandboxes, storage, loops, scheduling and the UI are all plugin-provided config rows. A "mode" is not special-cased code — it is a particular composition. Plugin management happens through configuration files rather than by modifying source.

Concretely, in the harness you can print the entire running composition:

dsh --profile web --dump-config

Every row in that output is a target you can override from a patch layer. There is no equivalent gesture in a product that does not expose its own graph.

What that buys you

Substitutability. Not liking the sandbox policy, the storage backend, or the UI is a configuration problem rather than a fork. The bundle system exists specifically so that whatever a bundle inserts stays patchable by the layers above it.

Model freedom by default. Model adapters live in dsh-base alongside everything else. Running Anthropic or OpenAI models inside the DeepSeek harness is a supported path, not a workaround, and any OpenAI-compatible gateway registers as a custom provider.

An auditable session. Everything the model sees is written to an append-only session log. Resume, fork, search and replay all operate on that event stream, with a trajectory view for inspecting a session by source. For anyone who needs to explain after the fact why an agent did something, an event log beats a chat transcript.

What it costs you

It is v0.1. The maintainers state plainly that core plugins and APIs will continue to evolve. Compatibility-breaking changes are expected, not exceptional. Anything you build on a specific plugin's interface is a maintenance commitment.

Composition is a skill. The patch order — bundles, then the profile's cordis.patch.yml, then the home-level one, then --patch — is simple but real, and getting it wrong produces the frustrating class of bug where your config appears to do nothing. Claude Code has no equivalent failure mode because it has no equivalent flexibility.

Ecosystem age. Claude Code has had far longer to accumulate integrations, community patterns and answered questions. On day one of a preview, "someone has already hit this" is worth a great deal, and the harness does not have it yet.

Side by side

DeepSeek Harness (dsh)Claude Code
ShapePlugin kernel + four presetsOpinionated product
ConfigurabilityEvery capability is a patchable config rowConfigured at the edges
ModelAny adapter; catalog + custom providersFirst-party Claude models
UIA plugin (dsh-web-app); replaceableProduct-defined
Session modelAppend-only event log; fork, replay, trajectory viewProduct-managed sessions
Maturityv0.1 developer preview, MITMature, commercially supported
Best atComposing an agent you designedGetting work done today

Where the cost argument actually lands

The price gap is real and structural — DeepSeek's cheaper tiers are an order of magnitude below frontier-model pricing, and that changes which workloads are economically sane. Running a reviewer agent over every commit is absurd at frontier prices and unremarkable at flash prices.

But treat the token price as one input, not the conclusion. A cheaper model that needs three attempts is not cheaper. The honest version of the cost argument is narrower and still compelling: cheap models make previously uneconomic patterns viable — broad sweeps, redundant verification, agents that run on every push. That is a genuine capability difference, not just a discount.

How to actually decide

Pick Claude Code if you want an agent that works today, you are already on Claude models, you value vendor accountability, or the words "compatibility-breaking changes are expected" describe a risk you cannot absorb.

Pick DeepSeek Harness if the four shipped modes are close but not right and you want to build the fifth; if you need to route different steps to different models; if you need the session auditability; or if your economics only work at flash-tier pricing.

And note they are not exclusive. The harness's plugin layer is designed to wrap external tools, and sub-agents are a first-class Standard-mode capability — using one to orchestrate the other is a legitimate architecture rather than a hedge.

Frequently asked

Is DeepSeek Harness a Claude Code clone?

No. They solve the same problem with opposite philosophies. Claude Code ships a curated agent; the harness ships a composition kernel and four presets built on it. The harness is closer in spirit to a framework than to a competing product.

Can I run DeepSeek Harness with a non-DeepSeek model?

Yes. Model adapters are plugins in dsh-base, and the provider catalog includes other vendors. Any OpenAI-compatible endpoint can be registered as a custom provider.

Which is better for production work today?

Claude Code, on maturity grounds alone. The harness is a v0.1 developer preview whose maintainers state that core plugins and APIs will keep evolving. That is a statement about breakage, not quality.

Keep reading