跪拜 Guibai
← All articles
Artificial Intelligence · Agent · LLM

DeepSeek Harness Turns the Entire Agent Core Into a Replaceable Plugin

By 武子康 ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

Agent frameworks that hard-code the main loop force teams to fork the core whenever a product needs a different execution model, state backend, or tool policy. DeepSeek Harness proposes a composition-based alternative where those decisions become configuration, not code duplication — but the cost is a new layer of plugin-graph complexity that adopters must audit themselves.

Summary

DeepSeek Harness is not a plugin framework that lets you bolt tools onto a fixed agent core. It is a runtime chassis where the agent loop itself, the LLM adapter, session persistence, tool registry, and every product surface are all first-class plugins governed by the same Cordis composition graph. A Profile selects which Bundles to use, Patches inject environment-specific overrides by line ID, Capability Seams define stable replacement boundaries, and an append-only Event Log provides a single source of truth for model history, UI, replay, and forking.

The architecture targets teams that need to ship multiple agent products from one codebase — a Web app with Bash access and a headless SDK with no shell, for instance — without maintaining diverging forks. Cordis adds lifecycle management that tracks plugin side effects so capabilities can be loaded and fully unloaded per workspace or per agent, rather than relying on developers to remember cleanup.

This flexibility transfers complexity rather than eliminating it. Current behavior depends on the final resolved plugin tree, service contracts must cover error and streaming semantics, and multi-layer Patches raise the cost of diagnosing configuration drift. The project remains a Developer Preview with unstable APIs and no published evidence of real-model end-to-end runs, production recovery, or cross-machine scheduling.

Takeaways
Model adapter, agent loop, session log, tool registry, and product surface are all plugins in the same Cordis composition graph, not just peripheral extensions.
Switching a session backend or removing shell access does not require touching the agent loop; the change is made by reconfiguring the plugin tree.
Cordis tracks plugin side effects so capabilities can be installed and fully uninstalled per workspace or per agent, rather than leaking state.
Five components — Profile, Bundle, Patch, Capability Seam, and Event Log — turn installed packages into a running product composition.
Patches replace whole configuration sections by line ID, not by arbitrary YAML deep merge, which is more predictable but demands the configurator understand the full replaced lines.
The append-only Event Log serves as the single source of truth for model history, UI rendering, replay, persistence, and session forking.
Flexibility does not eliminate complexity: the final behavior depends on the resolved plugin tree, service contracts must cover error and streaming semantics, and multi-layer Patches increase diagnostic cost.
At the time of analysis, the project is a Developer Preview with no published real-model end-to-end evidence; the credential gate triggers correctly, but production recovery and scheduling remain unverified.
Conclusions

Pluginizing the agent loop itself is the most radical architectural choice here. Most agent frameworks treat the loop as sacred and only allow extensions at the edges; DeepSeek Harness treats it as just another replaceable component, which means the entire execution strategy can be swapped without forking the codebase.

The project’s real bet is not more features but a different product-development model: derive multiple agent products from one runtime by composing capabilities, rather than copying and modifying a core class. This shifts the maintenance burden from code duplication to plugin-graph governance.

Line-ID-based patching is an underappreciated design decision. It avoids the ambiguity of deep YAML merges but forces operators to know exactly which configuration lines they are replacing, which raises the skill floor for safe customization.

The gap between ‘the credential gate triggers’ and ‘real-model E2E is proven’ is significant. Many agent runtimes look clean in unit tests but break under streaming errors, tool timeouts, or partial state writes; none of that evidence exists yet for this project.

Adoption advice splits cleanly along one axis: if you genuinely need to swap loops, state backends, or execution environments across products, the composition cost may pay off. If you have one fixed loop and a single deployment, a simpler explicit workflow is cheaper and easier to audit.

Concepts & terms
Cordis
A plugin runtime that manages not just service registration but the full lifecycle of plugins, tracking their side effects so that capabilities can be installed and completely uninstalled at runtime. It aims for spatiotemporal composability — the ability to load and unload plugin graphs dynamically per scope.
Agent Loop
The core execution cycle of an AI agent: claim input, request the model, execute tools, and decide whether to continue or stop. In most frameworks this is hard-coded; in DeepSeek Harness it is a replaceable plugin.
Capability Seam
A defined replacement boundary consisting of a Service Definition, a Provider (the implementation), and a Consumer (the code that depends on the stable interface). It allows swapping implementations without changing consuming code.
Profile / Bundle / Patch
Three composition primitives in DeepSeek Harness. A Profile names a product combination and selects Bundles. A Bundle packages a set of plugins as a reusable unit. A Patch injects environment-specific overrides by replacing configuration sections identified by line ID.
Event Log (append-only)
A session log that records model-visible facts as appended events. Model history, UI state, replay, persistence, and session forking are all derived from this single event stream, so different product surfaces do not maintain separate agent state.
Source: juejin.cn ↗ Google Translate ↗ Backup ↗