dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
A curated directory of source-verified DeepSeek Harness (DSH) plugins, tools, design workflows, and official resources.
English | 简体中文
A curated index of plugins, starters, tools, and primary resources for DeepSeek Harness (DSH).
DeepSeek Harness is DeepSeek AI's open-source, plugin-first agent harness: models, tools, skills, sessions, sandboxes, filesystems, loops, orchestration, and UI can all be composed as plugins.
Developer preview — DSH is changing quickly and may introduce breaking changes. This independent community list is not endorsed by DeepSeek AI or walkinglabs. Review source code and pin a DSH version/commit before installing any third-party plugin. 中文说明
flowchart LR
User["Developer / User"] --> Web["DSH Web UI or CLI"]
Web --> Runtime["DeepSeek Harness runtime"]
Runtime --> Agent["Agent loop"]
Agent --> Model["Model provider"]
Agent --> Tools["Tools & skills"]
Runtime -. loads .-> Plugins["Plugins"]
Plugins --> Tools
Plugins --> UI["Web UI extensions"]
Plugins --> State["Sessions, settings & services"]
classDef core fill:#0b65c2,color:#fff,stroke:#084c94;
classDef plugin fill:#e6f4ff,color:#083b66,stroke:#4fa3e3;
class Runtime,Agent core;
class Plugins,UI,State plugin;Install a current Node.js release, then run:
npx @deepseek-ai/dsh webOpen http://127.0.0.1:3080. In Settings → Models, add a DeepSeek API key; then select a workspace before starting a session. The official Web UI guide explains the next steps.
Plugin development currently starts from an official DSH checkout:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
mkdir -p scratch-plugin/srcCreate scratch-plugin/src/hello-plugin.ts:
import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply(ctx: Context) {
console.log('[hello-plugin] loaded')
}Then create scratch-plugin/cordis.yml. Replace the path with the absolute path printed by pwd in the DSH checkout:
- insert:
- id: hello
name: '/absolute/path/to/deepseek-harness/scratch-plugin/src/hello-plugin.ts'Run the development overlay:
pnpm dsh web --patch ./scratch-plugin/cordis.ymlWhen DSH starts, the terminal should show [hello-plugin] loaded. This is the smallest valid DSH plugin: export apply(ctx) and register capabilities through the Cordis context. To add an agent-callable tool, declare export const inject = ['tools'] and register it with the documented DSH tool API. Follow the official first plugin and tool-plugin tutorials for the complete, current API.
flowchart TD
Overlay["cordis.yml overlay"] -->|loads| Module["Plugin module"]
Module --> Contract["name · inject · apply(ctx, config)"]
Contract --> Inject["inject: wait for required services"]
Contract --> Config["Config schema: validate settings and defaults"]
Contract --> Apply["apply: register capabilities"]
Apply --> Capabilities["Tools · commands · events · UI · services"]
Capabilities --> Runtime["Cordis / DSH runtime"]
Runtime --> Effects["Lifecycle-managed effects"]
Effects --> Cleanup["Unload or HMR: registrations are cleaned up"]DSH is built on Cordis, a runtime composition framework. A plugin is not merely an npm dependency: it is a module that DSH loads into a live context. The plugin declares a name, optionally declares inject dependencies such as ['tools'], and exports apply(ctx, config). Cordis waits until injected services are ready, validates any exported Config schema and defaults, then invokes apply.
Inside apply, the plugin can register a tool for the agent, a human command, a settings schema, event listeners, Web UI components, or a service for other plugins. Registrations are lifecycle-managed effects: on unload or hot replacement after a config edit, Cordis removes old registrations automatically. Use ctx.effect() only when your plugin owns a resource needing explicit cleanup, such as a timer or network connection. See the official configuration guide, service guide, and capability seams.
flowchart TB
Discover["GitHub discovery\n(recent public candidates)"] --> Verify["Source-level DSH verification"]
Verify -->|"Manifest/package + documented DSH seam"| Plugin["Verified DSH plugin"]
Verify -->|"Explicit, inspectable DSH integration"| Resource["Client, launcher, example, or dev resource"]
Verify -->|"Topic/name/claim only"| Exclude["Excluded\n(not a DSH plugin)"]
Plugin --> List["Plugin categories in this list"]
Resource --> List
List --> Daily["Daily review\nOnly real changes are committed"]The list distinguishes verified DSH plugins from useful but non-plugin resources such as launchers, clients, and ecosystem directories. See the full inclusion policy for the evidence required before a new entry is added.
DSH profiles are plugin compositions rather than separately maintained products. The official base bundle includes model adapters, tools, persistence, sandbox and approval policy, settings, credentials, and telemetry; Web and headless bundles add different entry surfaces. An agent preset can then give a session a different capability set.
flowchart TB
Base["dsh-base\nmodels · tools · persistence · sandbox\napproval · settings · telemetry"]
Base --> WebProfile["Web profile\nbrowser application"]
Base --> HeadlessProfile["Headless profile\none-shot runner"]
Base --> Preset["Agent preset\nper-session capability composition"]
Preset --> Loop["Agent loop"]
Preset --> Toolset["Toolset"]
Preset --> Providers["LLM / filesystem / subagent providers"]
Preset --> Policy["Permission & sandbox policy"]This makes a “mode” primarily a selected plugin graph and policy set. It does not guarantee that every composition is stable or suitable for every task; DSH is still a developer preview.
flowchart LR
Call["Model emits tool call"] --> LoggedCall["Log tool/call"]
LoggedCall --> Pre["tools/pre-execute\nhooks · permission · sandbox"]
Pre --> Ask{"Approval needed?"}
Ask -->|approved| Guards["Monotonic guards"]
Ask -->|denied / unavailable| Denied["Skip tool body"]
Guards --> Execute["tools/execute\ntimeout · retry · metrics"]
Execute --> Body["Tool execute()"]
Body --> Post["tools/post-execute\naccept · block · replace"]
Denied --> Post
Post --> Result["Finalize & log tool/result"]
Result --> UI["UI result card"]
Result --> Next["Next model request"]Plugins can insert policy, observability, timeout, or result-handling behavior at documented stages without editing the Agent Loop. The official pipeline also routes Code Mode's dispatched sub-calls through this same path, preserving the approval, sandbox, and logging boundaries.
sequenceDiagram
participant U as User
participant A as Agent loop
participant P as Prompt assembler
participant M as Model
participant T as Tool pipeline
participant L as Append-only session log
U->>A: followup(message)
A->>L: turn/start + user/message
A->>P: assemble prompt sections + tool schemas
P->>M: request
M-->>L: assistant/chunk*
M-->>L: assistant/message
M->>T: tool/call*
T-->>L: tool/result*
A->>L: step/end
alt more input or tool results are owed
A->>P: next step
else no pending work
A->>L: turn/end
endThe session log is the model-context source of truth: durable events record turns, messages, tool calls/results, and raw stream chunks. Forking, resuming, replay, transcripts, telemetry, and persistence derive from that stream; model-visible content must be reconstructable from it.
flowchart TB
Parent["Parent agent\nplans, delegates, aggregates"] --> Subagent["Subagent capability seam"]
Subagent --> Fresh["Fresh child agent"]
Subagent --> Fork["Forked / continued session"]
Subagent --> External["External product provider\n(e.g. ACP-backed)"]
Parent --> Workflow["Workflow capability"]
Workflow --> Parallel["Parallel branches"]
Workflow --> Pipeline["Pipeline stages"]
Workflow --> Background["Background work"]
Fresh --> Events["subagent/* + session/event"]
Fork --> Events
External --> Events
Workflow --> Events
Events["Durable session events + live agent events"] --> Inspect["UI, trajectory, replay, telemetry"]DSH provides a hierarchy-oriented delegation surface and workflow components; providers behind the subagent seam can vary. The key architectural point is replaceability and shared observability, not a claim that DSH has invented a new multi-agent paradigm.
npx @deepseek-ai/dsh web.dsh.bundle.patch field in package.json: 10,000+ verified third-party plugins, one-click install, plus a companion website. Verified against the DSH developer preview (2026-10).dsh-plugin - The official recommended GitHub topic for DSH plugin repositories.make-dsh-plugin development guide.The dsh-plugin topic, a dsh- repository name, or a README claim alone is not enough for an entry in this list. Every new plugin must meet the source-level verification policy in INCLUSION_POLICY.md: a real DSH plugin manifest/package or a verifiable, official DSH extension seam. Discovery runs daily over projects from the previous 48 hours; candidates also undergo static security triage of scripts, dependencies, entrypoints, workflows, and sensitive operations. Only candidates that pass both checks are added. This is not a complete security audit or a compatibility guarantee.
/worktree, and per-repository manifests.@file mentions that search a workspace and attach file contents to prompts./loop command, tool, and activity bar.TYPESAFE_API_KEY, minimal task state is sent to the documented TypeSafe API for structured decision results.dsh.bundle manifest (npm dsh-team-rooms), maintained on the dsh-v0.1.5-rc.2 host line.dsh.bundle manifest (npm dsh-autotier), maintained on the dsh-v0.1.5-rc.2 host line./expert- without consuming model directory tokens; installs via the dsh.bundle manifest (npm @weibaohui/experts-management).dsh.bundle manifest (npm @weibaohui/dsh-continue).dsh.bundle manifest (npm @weibaohui/dsh-tasks).dsh.bundle manifest (npm @weibaohui/dsh-smart-title).dsh.bundle manifest (npm @weibaohui/dsh-process).noul yes/no, choice, score) as a first-class Cordis service plus the model-visible laya_ask and laya_plan tools; it installs and downloads nothing and talks to a laya-mcp serve sidecar you start yourself.dsh.bundle manifest (npm @weibaohui/dsh-flow).