dsh-onekey-update: Check enabled plugins at startup and one-click update all

前言

DeepSeek Harness(DSH)采用「一切皆插件」的架构,profile 里往往挂着十几二十个已启用扩展。版本分散在 npm registry,逐个打开插件页对比、再手动执行 dsh plugin add,既费时间也容易漏掉刚发布的补丁。下面介绍社区插件 dsh-onekey-update(维护者 leoyoul,分类:联网工具):在 DSH 启动后自动扫描已下载且已启用的 registry 依赖是否有新版本,在界面右下角汇总,点一次「全部更新」即逐条升到 dist-tags.latest,完成后提示重启生效。更新通道走官方 CLI,macOS / Windows / Linux 共用同一套逻辑,不依赖 DeepSeek Harness.exe。

这是什么

dsh-onekey-update 是 DSH 的 Cordis 插件,当前 npm 包版本为 0.4.0(MIT,Node.js >= 20)。它解决的是「谁该升、升到哪、怎么批量升」这三件事:检查范围限定在 profile 的 package.json 依赖与已启用 bundle 的交集,排除本地 link、git 等非 registry 源;比较完整 semver,只列前向升级;执行时使用 dsh plugin ... add <name>@<version> --config.minimum-release-age=0,绕过 pnpm 对新发布版本的供应链等待。界面通知条使用 DSH 主题 token(--dsw-alias-* 等),随明暗主题变化,不写死颜色。

核心功能

启动检查与右下角卡片

启动约 8 秒后(可用环境变量调整)在后台检查,不阻塞主界面。检查结束必定给出结论:

  • 有待升级项时:列出 插件名 当前版本 → 最新版本,提供 全部更新 / 稍后提醒。
  • 全部最新时:标题 全部插件都是最新版,说明检查与跳过的数量,按钮 重新检查 / 知道了。

卡片四态(有更新 / 全最新 / 更新中 / 失败)共用一套结构;更新中显示分段进度条,例如 3/7 dsh-context 0.75.1 → 0.77.0。

更新日志与翻译

在待更新插件下可点 查看更新日志,按需从 GitHub Releases 最近 100 个发行版中匹配本次升级区间;未找到或访问失败会单独提示。当前不读 CHANGELOG 文件,发行版未覆盖所有版本时说明可能不完整。展开后可点 翻译为中文,文本经 Bing 翻译,代码、链接和版本号会先保护;网络失败保留原文并在标题旁提示重试。

检查范围与 registry

扫描逻辑在 lib/check.mjs,对 profile package.json 的 dependencies 与已启用项(dsh.profile.bundles 或 cordis.patch.yml)取交集,并排除:

  • 插件自身;
  • file: / link: / git: 等非 registry 依赖;
  • 插件市场已停用包(.dsh-market/state.json);
  • node_modules 中无法确定当前版本的包。

版本查询先请求 https://registry.npmjs.org,失败再回退 https://registry.npmmirror.com,读取 dist-tags.latest。

跨平台更新执行

逐条解析 DSH CLI(不依赖 PATH):优先 <resources>/runtime/cli/bin/dsh,其次 Electron 调用 cli.js,再次解包路径下的同位置。均不存在时卡片进入失败态并提示「找不到 DSH CLI」。部分插件升级失败不影响其余项继续执行;结束时汇总成功 N、失败 M,失败行标 ✗ 并给出 pnpm 关键错误一行,并提示重启 DSH。

状态与宿主 API

  • ~/.dsh/onekey-update/state.json:最近一次检查与更新的结构化结果;
  • ~/.dsh/onekey-update/onekey-update.log:检查、逐条更新与错误记录。

同源路由:GET /onekey-update/status,POST /onekey-update/check|apply|dismiss。

安装与启用

从 GitHub 安装(README 推荐,任意平台):

dsh plugin --profile desktop add git+https://github.com/leoyoul/dsh-onekey-update.git

本机开发可用 link 安装(路径按本机修改):

dsh plugin --profile desktop add link:/Users/leoy/Documents/dsh-onekey-update

插件已发布到 npm,也可在 DSH 插件 → 发现 中搜索 dsh-onekey-update 安装(主流市场约 24 小时同步一次)。

装完后完全退出并重开 DSH,插件页会出现「一键更新」,右下角按检查结果弹出卡片。

典型用法

  1. 正常启动 DSH,等待约 8 秒,观察右下角是否出现更新卡片。
  2. 若有列表,可先 查看更新日志 确认变更,再点 全部更新 等待逐条进度完成。
  3. 按提示 重启 DSH,使 node_modules 中的新版本生效。

如需本次启动跳过检查:

DSH_ONEKEY_UPDATE_DISABLE=1

调整检查延时(毫秒,默认 8000):

DSH_ONEKEY_UPDATE_DELAY_MS=12000

覆盖 profile 或 DSH 主目录:

变量 作用
DSH_PROFILE 覆盖 profile 名(默认 desktop)
DSH_HOME 覆盖 ~/.dsh

适用场景与注意

适合经常维护 desktop profile、启用插件较多、希望跟 npm latest 保持一致的 DSH 用户。插件在当前 DSH 进程权限下执行 registry 查询与 dsh plugin add,安装前应阅读 GitHub 仓库 源码与 MIT 许可证。

已知边界(来自 README):

  • 更新的是宿主正在运行的 node_modules,必须重启才生效。
  • 只升到 registry 的 latest,卡片不列全部历史版本。
  • link: 安装无构建步骤,改源码后重启 DSH 即生效。

社区插件目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,仅为生态收录站点。

结尾

dsh-onekey-update 把「启动后看谁过期、一键批量升级、失败可定位」收进右下角原生风格卡片,并统一走官方 CLI 与双 registry 回退。需要安装或 issue 时见 GitHub:leoyoul/dsh-onekey-update 与 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye