dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
A master repository for DeepSeek Harness plugins. Each plugin remains an independent Git repository and is included here as a Git submodule, so plugin history, branches, releases, and CI stay isolated.
| Plugin | Repository | Purpose |
|---|---|---|
| dsh-auto-chat-titles | leonardoxr/dsh-auto-chat-titles | Semantic, configurable chat titles |
| dsh-better-sidebar | leonardoxr/DSH-better-sidebar | Sidebar workbench and extension API |
| dsh-claude-usage | leonardoxr/dsh-claude-usage | Claude usage UI |
| dsh-codex-usage | leonardoxr/dsh-codex-usage | Codex usage UI |
| dsh-coding-tools | leonardoxr/dsh-coding-tools | LSP, ast-grep and versioned editing tools |
| dsh-status-bar-config | leonardoxr/dsh-status-bar-config | Conversation statistics row |
This repository also publishes dsh-all-in-one, an aggregate DSH bundle that installs every web plugin of the collection in one step and mounts them as a single bundle layer:
# published channel
dsh plugin --profile <name> add dsh-all-in-one
# or pinned straight from this repository's releases
dsh plugin --profile <name> add https://github.com/leonardoxr/dsh-plugins/releases/download/v<version>/dsh-all-in-one-<version>.tgz
Properties:
One row per plugin, canonical IDs. Each aggregated plugin keeps the same Cordis row ID its standalone bundle uses, so profile-patch config overrides keep working unchanged when migrating from the standalones to all-in-one.
Either/or — never both. The suite replaces the standalone bundles.
Mounting a standalone bundle and the suite together is boot-fatal by loader
design ("duplicate loader entry id", even if one row is disabled). Remove
the standalone installs before adding the suite. Every insert also carries
a !!js back-off guard against earlier same-package mounts under a
different ID; install the all-in-one last (dsh plugin add does this
automatically) so guards can see everything mounted before it.
Generated, never hand-edited. aggregate.yml is the single source of
truth; package.json dependencies and cordis.patch.yml are produced by
scripts/aggregate.mjs:
pnpm generate # regenerate both outputs from aggregate.yml
pnpm verify # fail when outputs drifted (runs on prepack too)
Per-plugin opt-out survives aggregation. Users can still disable any
subset in their profile patch (- id: <row-id> + disabled: true).
Dependency pins use exact npm versions where packages are published, and
GitHub Release tarball URLs otherwise; flip a pin to npm by editing its
channel/spec in aggregate.yml and regenerating.
| dsh-harness-updater | leonardoxr/dsh-harness-updater | Claude Code / Codex CLI update detection and one-click updates |
| dsh-image-preview | leonardoxr/dsh-image-preview | Inline image previews and clipboard copying |
| dsh-plugin-manager | leonardoxr/dsh-plugin-manager | Profile plugin management |
| dsh-companion | leonardoxr/dsh-companion | Read-only workspace/session API and notifications |
| dsh-native | leonardoxr/dsh-native | Native desktop and mobile shell for DSH web servers |
| dsh-routed-subagent | leonardoxr/dsh-routed-subagent | Complexity-routed subagent delegation |
| dsh-workspace-git | leonardoxr/dsh-workspace-git | Workspace Git integration |
git -C <plugin> ... for plugin work.git -C <plugin> pull followed by git add <plugin>.cordis.patch.yml mechanism.Plugins are Cordis modules with optional host and client halves. The package manifest declares the DSH bundle patch and client injection metadata. Host code must use public DSH services/routes; client code must use injected services and must unload cleanly.
For better-sidebar integrations, see dsh-better-sidebar/AGENTS.md. Key rules: use inject = ['betterSidebar'], register tabs/viewers through ctx.betterSidebar, wrap registration in ctx.effect() so the disposer is HMR-safe, use package-prefixed IDs, and keep dsh-better-sidebar as an optional peer dependency. The service exists only on the client side.
# Clone this collection with plugin repositories
git clone --recurse-submodules <master-repository-url> dsh-plugins
# Initialize plugins after a normal clone
git submodule update --init --recursive
# Work inside one plugin
cd dsh-better-sidebar
pnpm install
pnpm build
Install a local plugin into a DSH web profile using the official plugin mechanism, then refresh the existing DSH UI. Do not modify the DSH checkout.