dsh-updater-ui:在 DSH 设置页检查和更新官方 DSH

前言

DSH 的插件体系支持把功能以插件形式接入;社区目录是独立站点,不等同于官方应用商店。对于已经在用 dsh webnpx @deepseek-ai/dsh web 或源码仓库运行 DSH 的开发者,更新时常见的问题不只是「有没有新版本」,而是「当前正在运行的进程应该从哪条通道更新」。

dsh-updater-ui 把检查和更新入口放到 DSH 的「设置 → DSH 更新」页。它按当前运行进程的安装方式选择通道:源码仓库走 git,npm 全局或 npx 走 npm registry。

这是什么

dsh-updater-uixingyingyuzhui 维护,采用 MIT 许可证。它是一个 Web 插件,用于检查并更新官方 DSH。

插件会识别当前安装方式:源码仓库、npm 全局、npx。这里的关键是「当前正在运行的 DSH 进程」。如果当前进程来自 npx 或 npm 全局,插件走 npm 通道;如果当前进程来自官方源码仓库,插件才走源码仓库通道。

核心功能

  • 识别安装方式:源码仓库 / npm 全局 / npx
  • 一键检查:源码执行 git fetch;npm 查询官方 registry,失败则尝试 npmmirror
  • 版本对比:对比本地与官方 package.json 的版本号
  • 更新说明:源码方式下可折叠列出官方新提交,包括短哈希和标题,最多前 15 条
  • 一键更新:源码只允许快进;npm 只安装官方包名 @deepseek-ai/dsh 和已校验的版本号
  • 自动检查:Host 每 30 分钟后台检查一次,并有防重入控制;页面每 60 秒轮询缓存
  • 红点提醒:有官方更新时,设置页导航显示「DSH 更新 ●」
  • 安全拒绝:源码本地存在未推送提交、分叉或冲突改动时拒绝覆盖;npm 安装失败时给出可复制命令

安装与启用

前置条件:

  • 已安装 DSH,并且 dsh webnpx @deepseek-ai/dsh web 可运行
  • npm 通道需要能访问 npm registry;源码通道需要本机 git 和官方 clone

在已经安装 DSH 的环境中执行:

dsh plugin --profile web add github:xingyingyuzhui/dsh-updater-ui

安装完成后重启 DSH,然后打开「设置 → DSH 更新」。

典型用法

1、打开「设置 → DSH 更新」,页面显示当前安装方式和官方更新状态,例如「已是最新」或「有官方更新」。

2、根据页面提示,点击「一键更新官方 npm 包」或「一键拉取官方更新」。

3、更新成功后重启 DSH,新代码才会被加载。

4、如果 npm 安装被运行中的进程锁住,常见于 Windows,页面会给出可复制命令;停掉 DSH 后再执行该命令。

对于 npx 用户,也可以直接启动最新官方包:

npx --yes @deepseek-ai/dsh@latest web

更新通道

源码仓库

当当前进程来自官方源码仓库时,插件使用 git fetch 检查官方远端,并用本地与官方的 package.json 版本号做对比。

更新时只允许快进,拉取使用 --ff-only。如果本地存在未推送提交、分叉或冲突改动,插件会拒绝覆盖。

源码仓库定位仅当当前进程来自官方源码 clone 时才会使用 git。查找顺序包括:

正在运行的 @deepseek-ai/dsh-root 目录
配置 repo / 环境变量 DSH_REPO
~/deepseek-harness
~/.dsh/deepseek-harness

npm 全局 / npx

当当前进程来自 npm 全局或 npx 时,插件查询官方 registry。如果查询失败,则尝试 npmmirror。

更新时只安装官方包名 @deepseek-ai/dsh 和已校验的版本号。

如需指定 registry,可以设置以下配置项:

DSH_NPM_REGISTRY
npm_config_registry

具体 registry 地址以当前环境要求为准。

自动检查与提醒

插件的 Host 每 30 分钟在后台检查一次,并有防重入控制;页面每 60 秒轮询缓存。

检测到官方更新时,设置页导航会显示「DSH 更新 ●」。

安全限制

  • 路由仅接受 POST。
  • 请求必须带自定义请求头:
X-DSH-Updater: 1
  • 如果请求带 Origin,只允许 http://127.0.0.1http://localhost
  • npm 安装包名固定为 @deepseek-ai/dsh,版本号必须匹配安全字符集。
  • 外部命令带超时和输出上限。
  • 错误返回结构化 JSON。
  • 无第三方依赖、无遥测。

适用场景与注意

适合已经在 DSH Web 环境中运行官方 DSH,并希望减少手工判断安装方式的开发者。

插件以当前 DSH 进程的权限运行,更新操作会调用 git 或 npm 相关命令。安装前建议先检查仓库源码与 MIT 许可证。若网络环境受限,需要保证 npm registry 或源码仓库远端可访问。

卸载插件:

dsh plugin --profile web remove dsh-updater-ui

结尾

dsh-updater-ui 的价值在于把「当前 DSH 进程从哪里来」这件事显式化,并在设置页提供检查、更新说明和受控更新入口。

GitHub 仓库:

https://github.com/xingyingyuzhui/dsh-updater-ui.git
羽毛球分组比赛记分
小程序二维码

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

小夜