Skip to content

dsh-plugin-updates

Verified

@androidsup/dsh-plugin-updates · v0.1.2 · MIT · Web UI

DSH 插件更新管理:只管已安装插件,更新先确认、结果可核验、可忽略指定版本提醒,不是插件市场。 User-controlled, verified updates for installed DSH plugins, with per-release notification ignores. Not a marketplace.

Install

dsh plugin add @androidsup/dsh-plugin-updates

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Readme

DSH 插件更新管理

创建于 2026-10-23

中文(默认) · English introduction

加入 QQ 交流群 · 群号 1124103038 · GitHub 仓库。觉得好用?点个 Star 鼓励一下。插件页面顶部也有入口。

只管已安装插件,让每一次更新有据可查。

@androidsup/dsh-plugin-updates 是独立的 DeepSeek Harness 插件,当前版本 0.1.2。它从 dsh-multi-router 拆出,不依赖路由、账号池、模型供应商、签到或 API 服务。拥有独立目录、Git 仓库、依赖锁文件和 npm 包,不需要 dsh-multi-router 源码、依赖或构建脚本。

不是插件市场

插件市场解决“装什么”,本插件解决“已经装的插件,该不该更新、更新到了哪里、为什么没成功”。

核心优势 具体实现
来源感知,而非只看包版本 npm 比较 SemVer、沿用 latest / next 等频道;GitHub 比较原分支或标签的提交,包版本没变也能发现更新。固定 Git 提交不解除。
用户决定,而非后台代装 DSH 运行期间每 24 小时检查;同一目标处理后不重复提醒,更高版本或新提交再次提醒。逐个或批量查看目标、明确确认后才更新。
按版本忽略,而非关闭所有提醒 清单或弹窗可忽略指定 npm 版本 / GitHub 提交,重启后保留;更高版本 / 新提交仍提醒,可随时恢复或手动更新。
核验结果,而非相信成功提示 更新后复查实际 npm 版本或锁文件中的 Git 提交。命令退出码为零但版本不符仍判为失败;区分已安装与重启后生效。
不扰动现有配置 只操作当前 DSH 配置中用户安装的插件,包含停用项;排除内置与受保护组件,保留原启用状态,不自动换源。
失败能继续处理 逐项显示失败,单项失败不阻断其它项;区分等待期、脚本授权、文件占用、兼容、网络及加载问题,可查看和复制脱敏诊断。

**明确不做:**插件搜索发现、远端目录、推荐、排行、评分、新插件安装、卸载、启停管理、任意版本降级。页面中的搜索仅筛选已安装清单。首次安装及依赖脚本授权仍使用 DSH 原生插件页。

忽略指定版本提醒

以下功能自 0.1.1 起提供:

  • 更新提醒弹窗:单项「忽略此版本」,或「忽略以上版本」批量忽略弹窗中的确切目标。
  • 更新清单:每个可更新项提供「忽略此版本提醒」;已忽略项仍保留,显示标记,可点击「恢复此版本提醒」。
  • 忽略只影响提醒和「选择全部未忽略」,不影响后台检查,也不禁止手动勾选和更新。可通过「已忽略提醒」筛选查看。
  • npm 按确切版本、GitHub 按提交记录;忽略当前版本不会屏蔽后续新版本。记录仅保存在当前 DSH 配置,重启后仍有效,不跨配置同步。
  • 页面顶部提供「中文 / English」界面切换,首次打开默认中文,并在本机记住选择。介绍、插件清单、筛选、状态、更新确认、诊断说明和全局提醒同步切换,已显示的操作反馈也随语言更新。插件名、版本、提交及诊断代码保持原样;DSH 宿主侧栏和插件详情外壳不受本插件控制。npm 包描述为中文在前的双语文案。

紧凑界面(0.1.2)

  • 顶部改为紧凑标题、版本与社群入口;保留 QQ、仓库和 Star 鼓励文案,详细介绍默认折叠,中英文切换覆盖完整管理界面并记住选择。
  • 统计、检查时间、搜索筛选和批量操作合并到插件清单;缩小桌面行高,状态标签区分来源与更新状态。窄容器自动改为卡片排列,不再要求横向滚动宽表格。
  • 单项和批量确认框中的「允许本次指定版本立即安装(不等待 24 小时)」默认勾选,可手动取消。只有点击「确认更新」才保存所列确切 npm 版本的等待期例外;不影响每天自动检查的周期,也不自动安装。

安装与使用

独立 npm 包 @androidsup/dsh-plugin-updates 已发布,当前版本为 0.1.2。

桌面版:打开 DSH「插件」→「添加插件」,输入 @androidsup/[email protected],选择 npm 官方源,安装后点击「立即启用」。desktop 配置由 Electron 独占管理,CLI 不可修改。

非桌面配置可使用官方 CLI,例如:

dsh plugin --profile web add @androidsup/[email protected]

如需从源码开发或生成本地安装包,要求 Node.js ^22.19.0 || >=24.0.0:

# 克隆独立仓库;私有仓库需要访问权限
git clone https://github.com/AndroidSix/dsh-plugin-updates.git
cd dsh-plugin-updates
npm ci
npm run check
npm run pack:release

# 将生成的安装包添加到所需 DSH 配置;替换成实际绝对路径
# 桌面版:在 DSH 插件页「添加插件」输入安装包绝对路径。
# desktop 配置由 Electron 独占管理,CLI 不可修改。
# 以下命令仅适用于非桌面配置,例如 web:
dsh plugin --profile web add /absolute/path/androidsup-dsh-plugin-updates-0.1.2.tgz

在 DSH 插件页打开本插件配置即可进入「插件更新管理」。支持按名称、来源、可更新状态筛选、单项或批量更新及取消。所有操作作用于当前配置,不跨配置、跨设备同步。

  • npm 查询沿用 DSH 的 registry、认证及回退设置;可为本次更新选择 npm 官方或 npmmirror。npm 镜像不能解决 GitHub 的网络问题。
  • 固定 npm 版本或范围在明确确认后更新到所查到的 latest 版本;显式 dist-tag 保留频道。GitHub 更新继续跟随原分支或标签,并核验已检查的提交;期间远端推进则要求重新检查。
  • 检查结果有效期 10 分钟;安装来源、已安装版本或启用状态发生变化时拒绝旧操作,要求重新检查。
  • **等待期例外仅限本次确认的版本。**自 0.1.2 起,「允许本次指定版本立即安装」默认勾选,可取消;0.1.1 及以前默认不勾选。点击「确认更新」后,才在当前配置的 pnpm-workspace.yaml 保存所列确切版本的等待期例外;不关闭全局策略,不放行其它版本、间接依赖或构建脚本。新包等待期用于降低供应链风险,取消勾选即可遵守原等待期。
  • 更新管理插件自身放在批次最后,通过 DSH 官方更新执行器更换文件;不在运行中的更新事务内重载自身。按结果提示完全退出并重开 DSH。其它插件是否即时生效由 DSH 的安装结果决定;不承诺第三方插件无中断热更新。
  • 本地文件或开发链接只标记为「原方式更新」,不猜测来源、不自动改源。GitHub 私有仓库元数据、限流与离线错误明确显示,不当作“已有更新”。

注意:npm 上不带作用域的 dsh-plugin-updates 属于其他作者,不是本项目。请使用完整的 @androidsup/dsh-plugin-updates 包名。

独立发布与 GitHub Actions

源码仓库:https://github.com/AndroidSix/dsh-plugin-updates。当前 GitHub 仓库保持私有;面板顶部仓库链接也指向此独立仓库,未获访问权限的用户无法查看或 Star。是否公开仓库与是否发布 npm 是两个独立决定。

普通 main 提交和 Pull Request 仅触发 CI,分别在 Node.js 22.19.0 与 24 上构建、测试并检查打包。只有推送稳定版本标签 vX.Y.Z 才自动发布,不会每次提交都发包,也不会后台更新用户的插件。

发布流程在 .github/workflows/publish.yml:校验标签、包名与锁文件版本 → 独立构建和测试 → 打包 → npm OIDC 可信发布 → 核验 registry 完整性 → 创建 GitHub Release,附上同一份 .tgz。不需要 NPM_TOKEN Secret;Actions 固定到提交 SHA,发布任务不使用依赖缓存。GitHub Release 的写权限与 npm 发布任务隔离。

npm 的可信发布绑定 AndroidSix/dsh-plugin-updates 仓库和 publish.yml 工作流。换仓库或文件名后,需要包维护者重新绑定。当前源码仓库私有,npm 不生成 provenance 声明,但仍通过短期 OIDC 凭证发布;不会因此自动公开仓库。npm 官方说明。

后续发布示例(将版本替换为实际的新版本):

npm version 0.1.3 --no-git-tag-version
# 同步 CHANGELOG 和中英文说明
npm run check
git add package.json package-lock.json lib cordis.patch.yml CHANGELOG.md README.md README.en.md
git commit -m "Release 0.1.3"
git push origin main
git tag v0.1.3
git push origin v0.1.3

标签与 package.json、package-lock.json 不一致时拒绝发布。版本不可覆盖;若工作流中途失败,可在 GitHub Actions 重跑:只有 npm 中已发布版本的完整性与当前包完全一致才跳过发包,并补齐 Release。内容不同则必须升新版本。不要删除或移动已经发布的标签。

本机仍可运行 npm publish,prepublishOnly 会先构建并测试,且需自行完成 npm 登录和二次验证;正式发布优先使用上述标签流程。

GitHub 仓库单独维护提交和版本,路由项目不再调用本项目的构建或测试。node_modules/、本地安装包、认证配置和运行时数据不纳入 Git。

数据与安全边界

检查记录、提醒去重和忽略版本保存在当前 DSH 配置目录的 .dsh-plugin-updates/state.json,目录 0700、文件 0600;不同配置相互独立。安装与实际文件变更交给 DSH 的插件管理接口及官方执行器,不自建安装器。

本地 HTTP 接口为 /.well-known/dsh-plugin-updates:仅允许回环地址和同源请求,写操作要求会话随机密钥,只接受检查、清单刷新、更新、提醒处理及取消操作。后台没有新插件安装接口。浏览器诊断不返回原始安装输出、账号令牌或用户路径。

没有远端插件目录或自建统计服务;检查只访问当前已安装插件对应的 npm registry / GitHub 元数据,更新由 DSH 下载相应包。不会上传路由配置、账号或对话。

从路由插件迁移

升级到拆分后的 dsh-multi-router 后,旧更新页签、全局提醒和后台扫描移除;新插件需独立安装。旧路由、账号、用量和设置均保持不变。旧 multi-router/plugin-updates.json 保留但不再使用,不导入可能来自其它配置的旧检查结果或提醒状态;独立插件首次运行重新检查。若仍启用拆分前的旧路由插件,两套检查和提醒可能并存,应先升级路由插件。

验证与限制

npm run check          # 独立构建与测试
npm pack --dry-run     # 核对发布内容

测试覆盖来源解析、内置排除、停用项、版本和提交核验、批次隔离、取消、提醒持久化、等待期授权、HTTP 安全边界、前端模块注册及独立宿主生命周期。真实 registry 凭证、私有仓库、下载失败回滚和不同系统下的文件占用仍需在目标 DSH 中验收;不保证任意第三方插件都支持运行中更新。

许可证为 MIT。SemVer 工具的上游来源及许可证见 第三方声明。