DSH Plugins
August 14, 2026 · View on GitHub
A personal collection of plugins for DeepSeek Harness — one folder per plugin, all of them persistent source plugins.
Making DSH better: currently ships task completion notifications — Feishu-style desktop popup cards (independent of Windows notification settings, so they appear even when the page is closed) plus in-app toasts.
Plugin List
| Plugin | Description | Status |
|---|---|---|
| dsh-plugin-task-notify | Task completion notifications: Feishu-style desktop cards (theme / accent / position / duration / font configurable) + in-app toasts + full settings page | ✅ Live |
| dsh-plugin-deepeye | DeepEye: vision capabilities (image description / OCR / visual QA / layout analysis / clipboard) — separate repo | Separate repo |
Features
- One plugin per folder — each plugin is an independent npm package (
dsh-plugin-<name>) with no cross-dependencies; build, mount, and remove them independently - Persistent mounting — source plugins stay active across restarts via
dsh plugin(unlike ephemeral in-session dynamic plugins) - Native integration — plugs directly into DSH's host composition and client slots, no middleware overhead
- Unified development conventions — AGENTS.md defines the plugin structure, build, mounting, and development rules every plugin follows
Install (Mounting a Plugin into DSH)
# Local development: mount from the plugin source folder
dsh plugin --profile web add "link:<absolute path to plugin folder>"
# Example
dsh plugin --profile web add "link:D:/AAA_Favio_2026/AI_exploring/deepseek-ai/dsh-plugin/dsh-plugin-task-notify"
When installing, dsh will:
- Link the plugin into the profile directory with pnpm
- Automatically append it to
dsh.profile.bundlesbecause the plugin declaresdsh.bundle
Adding a new plugin requires restarting the
dsh webprocess. Changes to an already-mounted plugin'slib/client.jshot-reload via HMR (pnpm build, then refresh the page).
Adding a New Plugin
- Read AGENTS.md — all conventions (structure, build, mounting, rules) live there
- Use dsh-plugin-task-notify as the template: the
dsh.client/dsh.bundlefields inpackage.json, the dual-entrytsdown.config.tsbuild,src/(host half + client half), and committedlib/output - Every plugin folder ships its own
README.md(purpose / features / mounting / configuration)
Development
Every plugin is an independent npm package; run inside the plugin folder:
cd dsh-plugin-<name>
pnpm install
pnpm run typecheck
pnpm run build
Repository Layout
dsh-plugins/
├── AGENTS.md # Repo-wide development conventions (read first)
├── README.md # This file
└── dsh-plugin-<name>/ # One folder per plugin
├── package.json # dsh.client / dsh.bundle declarations
├── tsdown.config.ts # host + client dual-entry build
├── src/ # TypeScript source (host half + client half)
├── lib/ # Build output (must be committed; link: mounts point at it)
└── README.md # Plugin's own README
Related Repositories
- dsh-plugin-deepeye — DeepEye: a standalone DeepSeek Harness native vision plugin repository
License
MIT