dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Startup update check for DeepSeek Harness: one check per launch, one card, one click per update.
English | 中文
A profile is a list of package versions, and those versions move on without you: a plugin ships a fix, a market releases a patch, the app publishes a new nightly. The running app says nothing about any of it.
This plugin fills that gap. Once per launch it compares what you are running against what is published, and when something is behind it puts one card in the corner of the window — a row per outdated package, a button per update, and nothing at all when everything is current.
It reads versions and asks before installing. It never upgrades on its own, never touches a package you did not click, and serves nothing but version numbers over its route.
| Target | Current version read from | Newer version read from |
|---|---|---|
| DeepSeek Harness | resources/app.asar/dsh/package.json of the running build | the official nightly.yml feed |
| Profile plugins | dependencies in the running profile's package.json | the npm registry |
rea-agents CLI | the global install under %APPDATA%\npm\node_modules\rea-agents | the npm registry |
Each target is checked on its own, so one unreachable registry degrades a single row to unknown instead of failing the whole check. npm lookups fall back from registry.npmjs.org to registry.npmmirror.com.
A card in the bottom-right corner, only when something is behind:
package 1.2.3 → 1.2.4, four rows shown, the rest collapsed into a countNothing renders when everything is current.
The card is offered once per application start, not once per page load. The Host hands the offer out a single time, and the first page to read it takes it — so dismissing it, switching panels or reloading the page keeps it quiet. Quit Harness and start it again to see a fresh check.
The interface text is Chinese today. The layout and the route are language-independent.
GET /dsh-update-check/api/status and starts one check when the bundle activates.shell.overlay slot — the frame-wide layer above every column, so the card belongs to no session and no panel.{ "name": "..." } to /dsh-update-check/api/install. The route accepts only names the current check marked outdated and installable, so it cannot be used as a generic install proxy.installBundle, and if the manager answers already-installed, removeBundle followed by installBundle again. That is the same shape the app's own Plugins page uses, because this manager has no in-place update.rea-agents is a global npm install, not a profile dependency: npm i -g rea-agents@latest.unknown rather than counted as up to date.dsh plugin --profile <profile> add github:1731988818/dsh-update-check
That registers the bundle in the profile's dsh.profile.bundles as well, so the next launch loads it.
pnpm caches git dependencies by commit hash, so run the same command again after a push to pick up new code.
Inside a running session the same install is one tool call:
plugin_manager install_bundle github:1731988818/dsh-update-check
Requires DeepSeek Harness 0.2.1 or newer, on the desktop or the web app.
| Method | Path | Purpose |
|---|---|---|
GET | /dsh-update-check/api/status | Snapshot of the last check. ?refresh=1 starts a new one. |
POST | /dsh-update-check/api/install | Body { "name": "package-name" }. Accepts only a plugin the current check marked outdated and installable. |
The route returns version numbers and package names only. It reads no files from the request and installs nothing the card did not offer.
dsh plugin --profile <profile> remove dsh-update-check
Nothing is left behind: the plugin writes no files, keeps no state between launches, and its route disappears with the bundle.