dshPlugin RegistrySubmit

Guide · tutorial

DeepSeek Harness Tutorial

This DeepSeek Harness tutorial is the short path from zero to a running Web UI plus one community plugin. It is not a rewrite of the official docs — those live in the repo. It is the map people actually search for.

What you are installing

DeepSeek Harness (dsh) is an open-source agent harness. The architecture slogan is literal: everything is a plugin. Cordis is the framework underneath. A running process is a plugin tree composed from ordered bundles, then your cordis.patch.yml, then optional --patchoverlays.

Official capability list, useful as a category system: models, tools, skills, sessions, sandboxes, storage, loops, scheduling, UI.

Step 1 — Boot the Web UI

npx @deepseek-ai/dsh web

Put a DeepSeek API key in Settings → Models. The invoking directory is the default workspace root, but a fresh UI has no workspace until you add one. Add the folder you actually want the agent to edit.

Step 2 — Understand profiles before you add junk

web and headless auto-initialize. Any other profile is created through dsh plugin. A profile directory holds:

First-party bundles you will see in docs: dsh-base (models, tools, persistence, sandbox, settings), dsh-web-app (browser app), dsh-headless (one-shot runner).

Step 3 — Install one useful plugin

Pick a job, not a theme. Vision if you paste screenshots. A better sidebar if you live in the Web UI. A TUI if you refuse the browser. Example:

dsh plugin --profile web add github:omdsh-dev/DSH-better-sidebar

Then restart the UI. If it fails, the harness moved — it is a developer preview. Read the plugin README for a pin, or remove it with the same dsh plugin command and remove.

Step 4 — Write a hello plugin (optional)

Official first plugin is a TypeScript module that exports apply(ctx). Load it with a patch file and pnpm dsh web --patch ./scratch-plugin/cordis.yml. Full copy-paste lives in the write a plugin guide and the official basic tutorial.

What not to do