Back to DSH guides

DeepSeek Harness Architecture Guide

DSH Plugins, Bundles, and Profiles Explained

Understand how DeepSeek Harness composes plugins: what a plugin contributes, what a bundle distributes, what a profile boots, and how the ordered patch layers combine into the final runtime tree.

DeepSeek HarnessDSH PluginsDeveloper Preview

Plugin = behavior

A plugin registers tools, services, events, adapters, UI behavior, policy, storage, or other capabilities through Context.

Bundle = distribution layer

A bundle packages Cordis config rows and points to its patch file through dsh.bundle metadata.

Profile = boot composition

A profile names the ordered bundles and local plugin dependencies that form one Harness runtime.

On this page+
01

Why “Everything Is a Plugin” Matters

DeepSeek Harness does not treat plugins as a thin add-on system around a fixed application core. The model adapter, tool registry, session log, agent loop, runtime services, Web application, policies, and other capabilities are all mounted through the same Cordis composition model.

This means extending Harness normally means adding or replacing a plugin in the tree rather than patching a privileged core. Registrations belong to plugin lifecycles and unwind when their owner unloads.

02

What Is a DSH Plugin?

At the framework level, a plugin is code that receives a Cordis Context and contributes behavior. The common function form exports apply(ctx), and inject can declare the services that must exist before activation.

A plugin does not have to be a model-facing tool. It can provide an LLM adapter, filesystem provider, shell backend, background jobs, approval policy, UI renderer, command, session behavior, or another documented extension point.

Consumer

Uses a capability already registered on Context.

Provider

Implements a service that other plugins can consume.

Observer / policy

Listens to lifecycle or capability events and changes how work is admitted or presented.

03

What Is a DSH Bundle?

A bundle is a distribution format for Cordis configuration rows and the code those rows mount. Its package manifest declares dsh.bundle and points to the patch file that contributes the bundle layer.

The important property is composability: rows inserted by a bundle remain patchable by layers applied above it. A bundle can therefore ship a coherent set of plugins without making the resulting configuration opaque or immutable.

Bundle metadata
{
  "dsh": {
    "bundle": {
      "patch": "./cordis.patch.yml"
    }
  }
}
04

What Is a DSH Profile?

A profile is a named composition stored under the Harness home. It lists the bundles it stacks, carries out-of-tree plugin dependencies installed for that profile, and keeps the profile’s own cordis.patch.yml.

The official Web and headless profiles are shipped as templates and auto-initialize on first use. Other named profiles can be created through the plugin-management path, which is why a TUI or specialized workflow can have its own extension set without changing Web.

Profile metadata shape
{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app"
      ]
    }
  }
}
05

How the Layers Compose at Boot

Harness composes a profile over an empty entry list. Bundle patches apply in the order named by the profile, followed by the profile-level user patch, the Harness-home patch, and finally any command-line --patch overlays.

1. Bundle layers

Each bundle patch in dsh.profile.bundles order.

2. Profile patch

The selected profile’s own cordis.patch.yml.

3. Home patch

The machine-level $DSH_HOME/cordis.patch.yml layer.

4. CLI overlays

Any --patch files applied after the stored layers.

A higher layer can replace the configuration of an existing row or insert another row, which is why bundle-provided behavior remains customizable.

06

How Web and Headless Profiles Differ

The base bundle supplies the common Harness capabilities such as model adapters, tools, persistence, sandbox and approval policy, settings, credentials, and telemetry. A profile then stacks the surface-specific bundle it needs.

Web

Stacks the common base with the Web application bundle, producing the browser interface and its related client/runtime plugins.

Headless

Stacks the common base with the headless runner, producing a one-shot agent flow without a Web server.

Custom / community profile

Can stack different bundles and install additional out-of-tree plugins for a TUI or specialized workflow.

07

Inspect the Plugin Tree on Your Machine

When a plugin behaves differently from what you expect, inspect the final composition rather than reasoning only from package.json. The config dump shows the tree after the selected profile and patch layers have been applied.

Inspect the Web profile
dsh --profile web --dump-config
Inspect only shipped/default bundle layers
dsh --profile web --dump-default-config
  • Use the dump to verify a plugin row exists and identify which layer contributes it.
  • Check whether a later patch replaces configuration from a bundle.
  • Compare profiles before assuming one install affects every DSH surface.

Primary references

This guide is grounded primarily in the current DeepSeek AI Harness repository and development documentation. Harness is still in developer preview, so exact commands and contracts can change with later releases.

DSH Guides

Continue with DSH plugin guides

Explore plugins by profile and capability

DSH Plugin Installation Guide

How to Install DeepSeek Harness Plugins

Install DSH plugins into the correct profile, understand npm and GitHub install targets, inspect the composed plugin tree, and remove or troubleshoot plugins without guessing what Harness actually loaded.

Read guide

DSH Web UI Guide

DSH Web UI: Start It, Fix "authentication required" and Use It on Mobile

DSH Web UI is the official browser interface of DeepSeek Harness. One command opens it, and from there you chat with the agent, edit code and run commands. Below: starting it, the first setup, the login error, phone and LAN access, and the plugins people add on top, all checked against the official source and docs.

Read guide

DeepSeek Harness Skills Guide

DeepSeek Harness Skills: Folders, SKILL.md and How to Use Them

A DeepSeek Harness skill is a written playbook for the agent. Drop it in the right folder and the agent picks it up on its own, or you call it with /name. Below: how skills differ from plugins, which folder wins, how to write SKILL.md and what to check when a skill does not show up.

Read guide

DeepSeek Harness Themes

DeepSeek Harness Themes and Skins: Best Picks and How to Switch

DeepSeek Harness ships with light, dark and system appearance only. Anime skins, live wallpapers, frosted glass or a Claude-style look come from community theme plugins. Here are the popular ones grouped by style, with live stars, plus how to install, switch and roll back on the Web UI and the desktop app.

Read guide

Best DeepSeek Harness Plugins

Best DeepSeek Harness Plugins: Must-Haves and Picks by Use

Too many plugins and no idea where to start? The best DeepSeek Harness plugins below start with five must-haves, then picks grouped by what you want to do. Stars and install commands on every card update live, and the selection rules and the popular plugins we leave out are spelled out below.

Read guide

DSH Plugin Development Guide

How to Build a DSH Plugin for DeepSeek Harness

Build a real DeepSeek Harness plugin from the minimal Cordis module shape, register a model-facing capability, package it for profile installation, test the load path, and publish it for the DSH ecosystem.

Read guide