A plugin hub for DeepSeek Harness.
This repository pins the official harness as a git submodule and groups our
plugins (and selectively curated third-party plugins) by capability family.
Each plugin lives as its own submodule under plugins/<category>/<name>, so
each plugin stays an independent versionable unit.
dsh-hub/
鈹溾攢鈹€ deepseek-harness/ # Official harness, tracked on master (see Submodules)
鈹溾攢鈹€ packagers/dsh-packager/ # Desktop packager (in-tree) 鈥?specify DSH_DIR, out-of-box installer
鈹斺攢鈹€ plugins/
鈹溾攢鈹€ browser/ memory/ sandbox/ skill/
鈹斺攢鈹€ vision/ web/ workflow/ workspace/
packagers/dsh-packager ships in-tree (not a submodule): point DSH_DIR at any deepseek-harness checkout/tag and get a desktop installer without patching dsh. Plugin hot-plug (dsh plugin add) stays via ~/.dsh.
npm --prefix packagers/dsh-packager install
npm --prefix packagers/dsh-packager run build -- --dsh-dir deepseek-harness # submodule HEAD, e.g. 0.1.2-rc.1
npm --prefix packagers/dsh-packager run build -- --dsh-dir /tmp/dsh-rc7 # specific tag
npm --prefix packagers/dsh-packager run dist:win # or dist / npx electron-packagerIcons from deepseek-harness/apps/web/public/favicon.svg 鈫?packagers/dsh-packager/build/icon.*, frameless frame:false + Tray (close hides to tray, double-click restores).
Different DSH versions are supported: scripts/build.mjs prints @deepseek-ai/dsh-root@x.y.z and copies that version's resources/dsh/package.json into the app. dsh-hub's deepseek-harness tracks master, but DSH_DIR can override to any tag/commit.
Downloads (with DSH version in Notes)
- dsh-hub releases: https://github.com/Lin-A1/dsh-hub/releases 鈥?
dsh-desktop-win32-x64.zip(portable,dsh-desktop.exe) + NSIS setup (needs admin/Developer Mode forwinCodeSign)
Each Release notes the bundled DSH version, e.g. DSH @deepseek-ai/dsh-root@0.1.0-rc.8.
A plugin goes under the category its capability belongs to, regardless of who maintains it. Categories mirror the official packages/README.md group list.
deepseek-harness tracks the upstream master branch. The current pointer is
pinned to whatever master HEAD is at clone time; bump it by:
git submodule update --remote deepseek-harness
git add deepseek-harness
git commit -m "chore: bump deepseek-harness"Plugins are independent submodules pinned to their own default branches (or a specific commit/tag at your discretion).
git clone --recursive https://github.com/Lin-A1/dsh-hub.gitIf you already cloned without --recursive:
git submodule update --init --recursiveFor a plugin you maintain:
# inside the harness submodule, if your plugin depends on packages/
git submodule add https://github.com/<your-org>/<your-plugin>.git \
plugins/<category>/<your-plugin>
git commit -m "feat: add <your-plugin> under plugins/<category>/"For a third-party plugin:
git submodule add https://github.com/<owner>/<plugin>.git \
plugins/<category>/<plugin>The category is determined by what the plugin provides 鈥?for example, an LLM
adapter goes under plugins/llm/, a shell executor under plugins/shell/.
See plugins/README.md for the full category table.
The plugins in this repo are meant to be installed into a profile on a real dsh deployment:
dsh plugin --profile <name> add ./deepseek-harness/plugins/<category>/<plugin>(or add github:<owner>/<plugin> for a direct-from-GitHub install).
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh webSee the official README for the full toolchain and test commands.
git submodule update --remote --recursiveThen commit any pointer bumps.
- Each plugin is its own npm package with its own
dshmanifest, not a monorepo addition todeepseek-harness/. - Plugin READMEs declare their capability, config schema, and the events they emit or listen to.
- This repository itself ships no code 鈥?it is a pointer index.
A step-by-step technical wiki explaining how dsh is built and the LLM knowledge behind it, aimed at AI application developers. First installment — how images reach the model (normalization, deterministic projection cache, Files API vs base64, budget gates, history context management), with a four-way comparison against opencode, OpenAI Codex, and Claude Code:
- docs/dsh-image-pipeline-wiki.md (Markdown)
- docs/dsh-image-pipeline-wiki.html (HTML)
- docs/dsh-image-pipeline-wiki.pdf (PDF)
Second installment — how dsh is pluginized (Cordis five ideas, plugin
shapes, loader & cordis.yml, the plugin tree & fiber state machine,
profiles / bundles / layers, capability seams, HMR), grounded in the
deepseek-harness source and the dsh-hub plugin spec:
- docs/dsh-plugin-architecture-wiki.md (Markdown)
- docs/dsh-plugin-architecture-wiki.html (HTML)
- docs/dsh-plugin-architecture-wiki.pdf (PDF)
Plugins retain their own licenses. See each plugin's repository.