packages/dsh-plugin-manager
zhu1090093659/dsh-web设置 → 插件 分区里的插件管理 Tab:从 npm/git 安装带进度、下次启动生效的启停开关、安装冲突对账可撤销、失败一键转交修复会话。
插件管理面板:已安装插件一键启用/停用,内置 GitHub dsh-plugin 插件市场,支持详情查看与一键安装。
English: README.md | 中文: README.zh.md
Manage all your DeepSeek Harness plugins in one panel: one-click enable/disable,
a 500+ plugin & skill marketplace with one-click install, and one-click framework
upgrade with auto-rollback.
dsh-plugin repos (500+ bystars) plus a Skills tab; browse, search, one-click install, zero GitHub API calls (served via CDN).
verify → auto-rollback on failure. Tested end-to-end.
reads its docs and drafts a safe, confirmable deployment plan (install / config / start / health-check); server components get an automatic control card. → details
# npm release (recommended: prebuilt, no git / build authorization needed)
dsh plugin --profile web add @noob-stupid/dsh-plugin-console
# or install from GitHub source (needs git; allowBuilds authorization on first add)
dsh plugin --profile web add github:Noob-stupid/dsh-plugin-hubThen restart the dsh service → refresh the page → Settings → Plugins → Plugin Console.
More install options (deploy script / hand it to an AI)
Windows (PowerShell):
git clone https://github.com/Noob-stupid/dsh-plugin-hub "$env:TEMP\dsh-plugin-console" 2>$null; & "$env:TEMP\dsh-plugin-console\deploy.ps1"Linux / macOS:
git clone https://github.com/Noob-stupid/dsh-plugin-hub /tmp/dsh-plugin-console 2>/dev/null; bash /tmp/dsh-plugin-console/deploy.shThe script copies the plugin into $DSH_HOME/profiles//node_modules/ and idempotently appends an enable entry to cordis.patch.yml. Afterwards:
process, the desktop client exits and reopens);
Install the DSH plugin hub (dsh-plugin-hub): rundsh plugin --profile web add @noob-stupid/dsh-plugin-console(npm release); if there is no dsh CLI, clone https://github.com/Noob-stupid/dsh-plugin-hub to~/.dsh/profiles/web/node_modules/and register it incordis.patch.yml(id: plugin-console, name: @noob-stupid/dsh-plugin-console). Restart dsh web afterwards.
Requires: DSH ≥ 0.1.0-rc.6 (web profile, with dsh-client-modules / dsh-host-plugin-inventory).
· Benefit · Detail 🤖 · AI Empower · Give the console a package name or GitHub repo — the local AI reads docs, drafts a deployment plan (install / write config / start service / health check) and executes it safely after your confirmation; server-type components get an automatic control card 🛡️ · Framework upgrade safety & adapt gate · Force-disables plugins incompatible with the new framework (enable locked; 「Check update → Update & adapt」auto-verifies and unlocks); full-tree checkpoint before upgrade, automatic rollback on relaunch failure, one-click rollback to the previous version 🏠 · Family-bundle cards & safety · Same-root subpath exports group into one family card (collapse/expand, batch check-update, one-click unlock-adapted, known-check preview); never-crash safety (pre-enable import probe + patch auto-heal + exports fallback); adapt-gate source-scan hard criterion & migrate detection; deleting a bundle sub-row disables only that row 🚀 · Server component cards · Left-side floating card auto-aligned to the main panel: start / stop / status / open Web UI buttons, multi-server dropdown, collapsible 🧩 · Plugin & skill hub · Auto-collected index of dsh-plugin topic repos (500+ by stars) plus a Skills tab (agent-skills ∪ claude-skills ∪ dsh-skill, up to 300) — browse, search, one-click install, no GitHub API calls 🤖 · Auto-collection CI · GitHub Actions reruns build-index every 6 hours (manual trigger available); authors just add the dsh-plugin / agent-skills / claude-skills / dsh-skill topic — no application needed ⚡ · Instant, rate-limit-free · The index is served as a static marketplace/index.json via jsDelivr CDN (10-min host cache); terminal users make zero GitHub API calls 🔄 · Version detection & one-click update · Semver-based; installed entries match npm dist-tags.latest / beta; subpackage mismatch warnings prevent mixed-version breakage 🔀 · Multi-source · GitHub / Gitee (direct-repo mode) / custom search sources (URL template + header auth + private http); ⊞ merges GitHub + all custom sources in parallel 🔒 · Safe by default · Loopback-only routes; AI fallback behind an explicit cost-consent modal; infrastructure rows are toggle-protected
📑 目录 / Table of Contents
expand details (version, repository, README summary).
type a query to search live. Switch sources via the login pill (GitHub / Gitee / custom); ⊞ merges all sources; ★ filters to dsh plugin add-installable packages.
(cloned into ~/.dsh/skills//).
「检测更新」/「更新 → vX」 appear automatically for installed entries.
"Third-party" with a delete entry; click "All" to see the full list (1.5s flash feedback);
- id: X + disabled: true to the user patch layer, effective via HMR;disabled: false;
(70+ rows) are marked "Protected" and cannot be toggled — disabling them would break HMR;
dist-tags.latest (curl channel, works even whennode networking is blocked) and warns about subpackages that need syncing (depsOutdated).
available (stable latest preferred; next channel when latest equals the installed version); clicking runs the full flow: backup config + framework snapshot (rollback point) → online install (service stays up, page never disconnects) → version verification → auto-restart to apply;
DSH-Upgrade console window pops up showing live pnpm downloadprogress; the in-panel progress card shows the waiting time;
upgrade), version check catches fake success, 15-min hard timeout, stall detection (no debug-log updates → auto switch registry), global trap fallback, and 15-min stale-state cleanup — the framework is never left broken;
debug log, no network requests ever sent); upgrades use corepack pnpm (starts in ~0.4s, installed rc.8 in 11.5s) against the npmmirror (China) registry, with dangerouslyAllowAllBuilds so native modules (node-pty/koffi) compile;
@deepseek-ai/dsh is a Junction — therelaunch step resolves bin.js at runtime (follows the Junction to the current version) instead of using a path baked in at script-generation time;
(persisted); in-progress dismissal is session-only and the card returns after a refresh.
sources** (persisted); title, loading text, placeholder and note all follow the source;
dsh-plugin, browser-direct with server fallback;owner/repo (Chinese paths and full URLs supported) to find and install a repository;
{q}/{page} placeholders),optional header auth (e.g. Authorization: Bearer ...), and local/private http URLs;
⊞ toggle searches GitHub + all custom sources in parallel,merging results with source labels;
dsh plugin add — root packageswith a dsh.bundle manifest (official) or aggregate repos whose subpackage carries `dsh.bundle` (subpackage-installable); markers are enriched by the server (curl dual-channel) with a client-side fallback;
Hybrid architecture: browsing uses the static index (instant, zero GitHub API calls),
searching uses live channels (GitHub search API / multi-source parallel) — they complement
each other: a brand-new repo can be found by live search even before it enters the index.