Airmetro/dsh-update-checker 预览 preview

Airmetro/dsh-update-checker

Plugin插件 Native原生 ⭐ 19 MIT Dev Workflow开发与代码工作流

全栈更新管理:对DeepSeek Harness主程序与每个已装第三方插件进行npm/GitHub双源semver比对,GUI横幅随系统语言(中/英)提示可更新插件;一键更新主程序或任意插件,自动备份可回滚,更新后看门狗自动重启服务。

Project Overview项目介绍

This is a permanent Cordis plugin built exclusively for the DeepSeek Harness Web GUI. It automatically checks for new DeepSeek Harness core releases and updates for installed third-party DSH plugins, then notifies users and enables one-click updates with clear success or failure feedback. It supports a full update lifecycle, including check, backup, update, rollback, and restart all handled within the plugin. To install, you first download the package to a temporary directory via npm, then copy it to $DSH_HOME/profiles/node_modules, then add a reference to it in your cordis.patch.yml file. Never run npm install directly in $DSH_HOME/profiles, as it will prune existing installed modules and cause unexpected data loss.

After installation, the plugin automatically checks for updates on page load, then repeats checks every 6 hours in the background. It displays locale-aware banners in the DSH UI that show update status, change logs, risk levels, and available update actions. It handles duplicate plugin copies correctly by prioritizing the copy in the composition-owning profile’s node_modules, and lets you exclude specific plugins from update prompts if you prefer. It also validates downloaded tarballs before installation, tolerates self-signed local proxies for GitHub requests, and prevents accidental promotion to unintended pre-release channels unless explicitly enabled.

The plugin is released under the open-source MIT license, so it is free to use, modify, and distribute according to the license terms. It requires no build step: the host half is plain ESM using only Node built-ins, and the client half is plain JavaScript that only requires React to run. Testing uses Node 20’s built-in test runner with no third-party dependencies, making it easy to contribute changes if you want to modify the plugin. Currently, core DSH updates on POSIX systems like Linux and macOS are not supported, though full support is planned for a future release.

这是一个专为DeepSeek Harness(DSH)开发的原生Cordis插件,运行在DSH的网页界面上,功能是自动检查DSH主程序和已安装第三方插件的更新。它支持完整的更新生命周期,包含检查、备份、更新、回滚和重启全流程,遵循语义化版本规则,不会在未配置的情况下意外切换到预发布渠道。

日常使用DSH进行开发的用户可以通过这个插件省去手动检查更新、处理依赖冲突和安装错误的麻烦。插件加载后会每6小时自动检查更新,发现更新后会在界面顶部显示本地化的提示横幅,展示版本变更和风险等级,用户只需要点击一次就可以完成更新,也可以选择忽略特定插件的更新。

该插件基于MIT许可证开源,不需要额外的构建步骤,宿主端仅使用Node.js内置模块,客户端只依赖React。安装时需要注意不要直接在$DSH_HOME/profiles目录运行npm install,否则可能会误删已安装的模块,推荐先下载到临时目录再复制过去。目前POSIX系统尚不支持主程序更新。

Pre-install check安装前体检Compatibility · Security兼容性 · 安全性 1 note1 项提示
  • 19 stars - an early-stage project星标 19,属于早期项目
DSH walks through these 9 checksDSH 会逐条核对这 9 项

Compatibility兼容性

  • DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
  • External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
  • Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册

Security安全性

  • Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
  • Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
  • curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
  • Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
  • Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
  • Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式

Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:Airmetro/dsh-update-checker

把 Airmetro/dsh-update-checker 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-update-checker

English | 中文

A permanent Cordis plugin for the DeepSeek Harness Web GUI that auto-checks for new DeepSeek Harness releases and installed third-party plugin updates (the former standalone dsh-plugin-checker was merged in v1.1.0), asks the user, and one-click updates with success/failure feedback.

Features

  • Full update lifecycle — check, backup, update, rollback, and restart, all in one plugin.
  • Main program check — compares the installed @deepseek-ai/dsh against the npm latest (full packument, stable-first, semver-aware). A pre-release target is installed only when it belongs to the channel the deployment already follows — a cross-channel promotion (rc → alpha) is refused with E_PRERELEASE unless you enable the allowPrerelease setting, so the checker never promotes the harness into an unintended pre-release channel.
  • Third-party plugin check — scans installed non-official plugins (layout-agnostic, incl. pnpm-hoisted node_modules), cross-compares each against npm + GitHub (target = higher version); local tools with no publish source go to ignored. When a plugin name has multiple copies, the one in the composition-owning profile's node_modules wins (the rest are listed as copies), and each plugin can be excluded from prompts (excludedPlugins, re-enableable in the settings page).
  • Working GitHub channel — dedicated HTTPS client for GitHub domains (tolerates self-signed local proxies; the npm registry still uses strict TLS), with redirects, size caps and timeouts; codeload tarballs are validated before install.
  • In-GUI banner — locale-aware (zh/en follows the DSH UI language), states update / up-to-date / failure, with a suppression flag and a change brief (vX→vY + risk level + release notes when available).
  • One-click update with safety — main program: dry-run guard (abort if the plan contains remove) → snapshot backup (version manifests + a main-snapshot copy of the @deepseek-ai tree for offline rollback) → layout-adaptive install (in-place or -g) → post-install check installed==latest; plugins: temp-dir install + copy, dependency version reconciliation, auto --allow-scripts for native deps on npm ≥ 12. Updates (and rollbacks) persist to the profile package.json + lockfile (pnpm install --lockfile-only / npm install --package-lock-only), so a later install never silently reverts the plugin — no more "same plugin keeps asking for the same update" loops.
  • Real rollback — main program via POST /rollback, plugins via POST /plugin-rollback; GET /backups.json lists both.
  • Restart with watchdog — launcher derived from the current process argv, kill by PID + port, recovery confirmed by port listening, an HTTP 200 probe (GET /restart-status.json) and a new instance id read back from this plugin's own routes, so "something answers on the port" is no longer mistaken for "the updated build came up".
  • Write-route security — all write routes require { "confirm": true } and a loopback source (127.0.0.1/::1), so LAN clients can't trigger update/restart/rollback.
  • Zero-config portability — profile dir / composition file / deploy root are derived from the plugin's own install location, while state, backups and logs honour DSH_HOME (then ~/.dsh); works on any machine without editing code.
  • Self-mounting on dsh 0.1.6-alpha.2+ — that release switched the profile resolution default from "link" to "runtime", which stops a third-party plugin in $DSH_HOME/profiles/node_modules from resolving and kills the launch with ERR_MODULE_NOT_FOUND before the server binds. The plugin now re-establishes its own mount at startup (ensurePluginMount): a junction from every profile's node_modules to the real package, plus the dependencies declaration each profile needs so ownership is recognised. Idempotent, never overwrites a spec you set deliberately, never deletes a directory it cannot prove is its own copy; mount.json / status.json report the state.

Showing the opening section of the README — the full document lives in the repository以上为 README 开头摘要,完整文档在仓库内 · View the full README on GitHub →在 GitHub 查看完整 README →

← 上一个 Prev dsh-pi-tui 下一个 Next dsh-import-agents →