dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
KPR 纪代管理:DSH的外部管理器,启停插件、隔离运行、手动回滚、预检诊断、变砖救急!配合KSG(Kidai-snapshot-guard)使用,自动快照、备份回滚!
The plugin manager that keeps working even when DSH is broken — list · toggle · launch · isolate · snapshot · rollback
简体中文 · English
DeepSeek Harness (DSH) plugin failures usually come from the plugins
themselves: broken bundle lists, missing dependencies, self-referencing
file:./node_modules/... deps... once DSH refuses to boot, DSH cannot save
itself. Kidai Plugin Remote is the external rescue & daily manager built
for exactly that moment — it runs outside DSH, so it works even when DSH is
broken.
No technical knowledge required — open and use; developers get the full composition diagnostics.
Option A — zero-dependency desktop app (recommended for distribution)
Grab Kidai Plugin Remote Client.exe from the companion repo
kidai-plugin-remote-client
— download, unzip, double-click. No Node, no browser.
Option B — classic launcher
install.cmd # one-click: checks Node, installs the in-DSH guard, desktop shortcut
启动 Kidai Plugin Remote.cmd # run directly (browser app window)
or from source:
node server.js # opens the manager at http://127.0.0.1:4877
node scripts/self-check.mjs # read-only self check
Requirements: Node.js ≥ 20 on the machine (DSH itself is not needed).
启动 Kidai Plugin Remote.cmd
(browser app window), or use the Client exe (native window)$DSH_HOME/cordis.patch.yml
(the same write the market uses); effective after restart, or live via HMR
while DSH runs| Repo | Role | Runs where |
|---|---|---|
| kidai-plugin-remote (you are here) | list / toggle / launch / isolate / rollback | outside DSH |
| kidai-plugin-remote-client | same manager, native window, zero deps | outside DSH |
| kidai-snapshot-guard | snapshots, pending→verified, isolation recovery | inside DSH |
All three share one snapshot store ($DSH_HOME/.kidai-snapshots) and one
guard directory ($DSH_HOME/guard/) — annotate a snapshot in any of them and
the others see it.
$DSH_HOME → profile manifest dsh.profile.bundles → two-anchor
bundle resolution (DSH install first, then profile) → patch layers applied
in boot order with the include plugin's exact patch algorithm (!!js parsed,
never evaluated) → the real loader entry tree.cordis.patch.yml (identical
to the market); isolation additionally writes the desktop-private
plugin-management/state.json and restores both on exit or next launch.DSH Desktop.exe (auto-discovered or DSH_DESKTOP_DIR);
success = the desktop's own health-commit; failure evidence from exit code,
%APPDATA%\DSH Desktop\logs, crash-evidence, profile-selection,
plugin-install-recovery.dsh --dump-config runs the desktop's own packaged CLI
bootstrap (resources\app.asar\lib\desktop-cli.js) via
DSH Desktop.exe --expose-internals with ELECTRON_RUN_AS_NODE=1 (zero
downloads); only when that bootstrap is absent does it fall back to a system
Node ≥ 22 running the legacy bin.js under app.asar.unpacked.resources (2.x no longer ships app.asar.unpacked\package.json), and
the desktop's own cordis.patch.yml plus the archived core bundles
(@deepseek-ai/dsh-base, @deepseek-ai/dsh-web-app, …) are read straight from
app.asar, so "installed inside the archive" is no longer misreported as a
missing dependency.tasklist is denied, the manager probes the
single-instance lockfile for an exclusive hold (DSH Desktop keeps it open; its
mtime is written once at startup and cannot serve as a freshness signal).kidai-plugin-remote/
├── server.js # HTTP + API on 127.0.0.1:4877
├── lib/ # dsh-env · patches · profile · inventory · conflicts · plugin-mgmt · snapshots · launcher
├── public/ # single-page UI (no build step) + 8 themes
├── vendor/yaml/ # vendored yaml 2.9.0 (fully offline)
├── scripts/ # self-check · test-* · install-guard · install-shortcut · build-exe
├── install.cmd # one-click install
├── 启动 Kidai Plugin Remote.cmd
└── build/ # packaged exe output
MIT