Skip to content

Appendix: DeepSeek Harness vs Mainstream Coding Agents

Perspective: August 2026. Coding agents iterate weekly — treat concrete numbers and features as directional and check each project's official docs. This chapter focuses on architectural and philosophical differences that are relatively stable.

First, Clarify: Harness ≠ Coding Agent

This is the key to the whole comparison. The industry tends to lump two very different things together:

Agent HarnessCoding Agent (product)
EssenceFramework / platform: agent loop, tool system, sessions, permissions, UI infrastructureProduct: a ready-to-use tool for developers
AnalogyOperating systemApplication
What you doBuild, customize, and embed your own agent with itUse it directly to get work done
ExamplesDeepSeek Harness, Pi, OpenCodeClaude Code, Cursor, Codex, Cline

DeepSeek Harness is the former, but can be used as the latter: the official dsh CLI works out of the box in your terminal, much like Claude Code. Conversely, the "harness" parts of Claude Code (hooks, skills, subagents, tool pipeline) are the internals of a closed product — you can only use its exposed extension points.

Mainstream Players at a Glance (mid-2026)

ProjectForm factorModelOpen sourceCore philosophy
Claude CodeTerminal CLI + IDE extTied to Claude (swappable via base_url)NoHuman-in-the-loop: approvals, short turns, 1M context, hooks/subagents/skills/MCP
OpenAI CodexCLI + cloudGPT familyNoLong-horizon autonomy: Goal mode, cloud sandbox, background PRs
CursorAI-native IDEComposer + model routingNoEditor-native: Tab completion, Cloud Agents, visual UI verification
Gemini CLITerminal CLIGeminiYesFree, 1M context, model-neutral
ClineVS Code extensionAny (BYOK)YesOpen-source autonomy: plan → edit → test → fix loop
AiderTerminal CLIAny (BYOK)Yesgit-first: diffs are commits, minimal
PiCLI + RPC + SDKAny (BYOK)YesMinimal primitives: 4 tools by default (bash/read/write/edit), no MCP/subagents — nothing you didn't ask for
OpenCodeTerminal CLIAnyYesOpen harness: delegation architecture, polished TUI
DeepSeek HarnessCLI + Web + TS lib + Python SDK + MCPAny (adapter seam)Yes (MIT)Everything is a plugin: Cordis-driven, six layers (contract/context/execution/evidence/repair/publish)

Deep Dive: DeepSeek Harness vs Claude Code vs Pi

These three represent three radically different architectural routes — the most instructive comparison:

DimensionDeepSeek HarnessClaude CodePi
PositioningAgent framework/platform (usable as a product)Terminal pair-programming productMinimal harness
ArchitectureEverything is a plugin (Cordis five ideas); registrations are reversible effectsClosed core + extension points (hooks/skills/MCP/subagents)Minimal primitives: enough is enough, no feature stacking
Model couplingSeam-decoupled: change base_url, change providerDeeply tuned for its own models end-to-endBYOK, fully neutral
ExtensibilityFull-dimension plugins: tools/LLM/sandbox/UI/prompts all swappable & unloadableMedium: CLAUDE.md, skills, hooks, MCPLow (deliberate): config + a few primitives
Context managementSession event log (append-only) + projection/compaction1M window + CLAUDE.md + auto-compactionMinimal state, no complex machinery
Safe executionsandbox/e2b packages (swappable plugins)Approval permission system (allow/deny/skip)Direct local execution, user beware
Formsdsh CLI / web / TS lib / Python SDK / MCP serverTerminal CLI + IDE ext + GitHub ActionsCLI / RPC / SDK
MaturityDeveloper Preview (open-sourced 2026-08-13)Mature product (launched 2025-02, two years of iteration)Popular in the community; minimalist fanbase
Who it's forDevelopers building/customizing/embedding agentsDevelopers who want out-of-the-boxMinimalists, users avoiding vendor lock-in

Three Key Philosophical Divides

1. Is the model the lever, or the harness?

A famous community debate (especially on HN): "a harness is essentially prompts; the model is the main lever." The same model through different harnesses produces nearly identical diffs on the same task, but token consumption can differ 3-4x — the difference is "dead weight" (tool descriptions, redundant exploration, wasted turns), not capability.

Two stances:

  • Claude Code's route: models and harness tightly coupled, tuned end-to-end (prompts, tools, approval flows all optimized for their own models) — betting that coupling raises the ceiling.
  • DeepSeek Harness's route: framework-neutral, models swappable through the seam. DeepSeek models are cheap and cache-friendly, making harness + DeepSeek a widely praised cost-effective combo (common setups: Claude Code/Pi/Cline + DeepSeek API, or just dsh).

2. "Everything is a plugin" vs closed core + extension points

  • Claude Code locks the core loop and exposes hooks (lifecycle), skills (front-end injection), MCP (tools), and subagents (delegation). Stable and easy to adopt, but you cannot replace the loop itself.
  • DeepSeek Harness treats even the agent loop, sessions, and UI as plugins: unloading a plugin unwinds everything it registered (reversible effects). The cost is a steeper learning curve — this tutorial's mini-Cordis chapter exists to lower that barrier.
  • Pi takes a third path: no plugin system at all, just the smallest set of primitives (bash/read/write/edit) composed via config. Its argument: models keep getting stronger, so a harness only needs sane primitives.

3. Autonomy: who decides how far the agent goes?

DesignRepresentativeShape
Approval-gated (human-in-the-loop)Claude CodeConfirm every dangerous action; short turns, frequent interaction
Long-horizon autonomy (walk-away)Codex Goal modeSet a goal and walk away for hours; cloud sandbox as backstop
Framework-grantedDeepSeek HarnessThe builder decides: custom allow/deny rules via policy plugins (the pre-execute pipeline)

Concept Mapping: Mainstream Coding Agent ↔ Harness

Every harness concept in this tutorial has a counterpart in mainstream coding agents:

Mainstream coding agent conceptHarness counterpartmini-dsh location
CLAUDE.md (project memory)system-prompt service / skill injectionsystem-prompt plugin
Hooks (lifecycle)Event system (emit/waterfall/serial)src/context.ts four dispatch modes
Skills (skill packs)skills plugin (front-end injection tool)plugins/skills.ts
MCP tool ecosystemTool registry + guarded pipelinesrc/tools.ts
SubagentsOfficial child-task agent capabilitynot implemented (see known simplifications)
Permission approvals (allow/deny)tools/pre-execute policy pluginsguarded pipeline waterfall
Session resume / --continueSession event log JSONL persistencesrc/session.ts
Streaming outputassistant/chunk eventssrc/agent.ts + Web SSE

So after this tutorial, you can already read the internals of any coding agent — they're just these concepts organized differently.

Decision Guide: Which One Should You Use?

Your situationRecommendationWhy
Out-of-the-box, best reasoningClaude CodeMature, approval-gated, large window
Everyday coding in an editorCursorBest editor-native experience
Background unattended tasks / auto-PRCodex (Goal mode)Cloud sandbox, long-horizon autonomy
Open source, minimal, avoid lock-inPi / Aider / ClineBYOK, cost under your control
Build your own agent/product/internal toolDeepSeek HarnessEverything is a plugin; embeddable and customizable
Learn agent architectureThis tutorial (mini-dsh)Concept-isomorphic teaching implementation

The Honest Boundaries

  • DeepSeek Harness was only open-sourced on 2026-08-13 and is in Developer Preview: its ecosystem (skill libraries, MCP plugins, IDE integrations) is far less mature than Claude Code's.
  • Everything above iterates on a weekly cadence — check official docs for numbers and features.
  • This isn't "which is better" but "different routes for different problems": Claude Code wins on plug-and-play maturity, Pi wins on minimalism, DeepSeek Harness wins on composability — it's the open-source framework that lets you replace even the agent loop itself.

基于 MIT 许可的 deepseek-ai/deepseek-harness 设计理念 · 本教程为独立教学项目,与 DeepSeek 官方无隶属关系