
YannZhou/dsh-about
dsh-about
Settings About tab: check updates & one-click update
Install
npx @deepseek-ai/dsh plugin --profile <name> add <包>`(内部由Restart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-about)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from YannZhou/dsh-about, cleaned of badges and images.
dsh-about
DeepSeek Harness 设置中心「关于」分区插件 —— 检查更新 + 一键更新。
DeepSeek Harness 设置中心“About” tab: DeepSeek logo, version info, check for updates (npm
latest/next), one-click update with auto-restart, and GitHub releases history.
功能特性
- 版本信息:当前 dsh 版本(npm 包
@deepseek-ai/dsh)、Web 前端版本、Node / 平台、项目主页。 - 检查更新:对比当前版本与 npm
latest/next两个 dist-tag 中较新者,提示发现新版本。- 附带 GitHub 同步检测(每次点「检查更新」都实时拉取 GitHub):当 GitHub Releases 已发布但 npm 尚未同步时(如
v0.1.2-alpha.1这类预发布),状态行会明确提示「GitHub 已发布 vX(npm 尚未发布,发布后即可一键更新)」;若该版本已存在 npm 但未打latest/next标签,则提示可手动安装。npm 发布并打上latest/next标签后,提示与角标自动消失;GitHub 发布新版本后,提示中的版本号自动跟随最新发布。 - 角标随列表常驻:版本更新记录每次返回(打开页面 / 每日自动拉取 / 点「刷新」)都会当场对比一次 npm 注册表,「npm 未发布(或未标记 latest/next)」角标随列表数据一起下发——不依赖先点「检查更新」,刷新或重进设置页后标签依然存在;npm 一发布并打标签,对应角标自动消失。
- 附带 GitHub 同步检测(每次点「检查更新」都实时拉取 GitHub):当 GitHub Releases 已发布但 npm 尚未同步时(如
- 版本选择:列出 npm 上所有比当前新的版本(最多 10 个),弹窗选择安装。
- 一键更新:
npm install -g @deepseek-ai/dsh@<目标版本>(固定官方 registry),成功后自动重启 dsh web(委托外部一次性看护bin/dsh-watchdog once:包内内置、随装随卸;等宿主退出 → 数 3 秒 → 优先 systemd 拉起dsh-web、退回原命令裸拉起(带--no-open),端口就绪后自动退出、零常驻;决策日志$DSH_HOME/dsh-watchdog.log)。- 看护进程经
systemd-run放入独立 transient 单元(独立 cgroup)——实测宿主退出时 systemd 会清空 dsh-web 服务 cgroup 内的一切子进程,普通 detached 派生必死; transient 单元不受影响,更新后白屏无人拉起的根因即此。
- 看护进程经
- 版本更新记录:官方 GitHub Releases 最新 10 条,中文正文渲染,每日首次打开自动拉取一次并保存到本地电脑(
$DSH_HOME/dsh-about/releases-cache.json),失败不会反复重试;点「刷新」可手动强刷。
安全性设计要点
- 宿主路由
/dsh-about/*仅允许回环地址访问(DNS 重绑定防护),跨站 GET 用Sec-Fetch-Site拦下,跨站 POST 用Origin白名单 +application/json预检双重防护(CSRF)。 /update是破坏性端点:并发互斥(同一时刻只允许一个安装任务)、目标版本号必须已存在于 npm 注册表且比当前新。npm install -g带 5 分钟超时与进程组终止,安装输出尾部回显到弹窗便于排查。- 只有加载了本插件的 dsh 进程才获得这些能力;不修改任何核心文件,卸载即完全移除。
安装(官方 dsh 插件机制)
本包遵循 dsh 官方插件安装形式:dsh plugin --profile <name> add <包>(内部由
pnpm 安装 + cordis.patch.yml insert 层挂载 + dsh 客户端模块自动发现打包)。
支持三种来源:
# 1) 本仓库源码(开发调试)
git clone https://github.com/YannZhou/dsh-about.git
dsh plugin --profile web add /path/to/dsh-about
# 2) GitHub 直接安装(推荐,一条命令,随仓库更新可 re-add 升级)
dsh plugin --profile web add "git+https://github.com/YannZhou/dsh-about.git"
# 3) npm 安装(发布后可用,见下方「发布到 npm」)
dsh plugin --profile web add dsh-about
安装验证:
dsh --profile web --dump-config | grep dsh-about # 应看到 - id: dsh-about 层
然后重启 / 刷新 dsh web(默认 http://127.0.0.1:3080),打开 设置 → 关于 即可看到本分区。
插件自带的 bin/dsh-watchdog 随包安装、随包卸载,无需任何手工放置。
验证
- 配置树中应出现
- id: dsh-about / name: dsh-about层(bundle 自动应用)。 - 浏览器侧:设置 → 关于出现 DeepSeek 图标与版本行;点「检查更新」返回 npm 最新版本对比结果。
卸载(随时拔除,零残留)
# 1) 官方移除(组合层 + 包文件,一步完成)
dsh plugin --profile web remove dsh-about
- 组合层:
dsh.profile.bundles清单移除本包、dependencies移除依赖,包内cordis.patch.yml(dsh.bundle.patch 层)随之消失;重启后「关于」分区、/dsh-about/*路由、客户端 bundle 全部消失。无需手动改任何配置文件。 - 包文件:profile node_modules 内的
dsh-about实体(含内置看护bin/dsh-watchdog、卸载脚本)随包删除。 - 进程:更新链路的一次性看护进程端口就绪后自动退出,不驻留。
运行期数据($DSH_HOME/dsh-about 版本记录缓存、$DSH_HOME/dsh-watchdog.log、
$DSH_HOME/dsh-about-restart.log、锁文件)由卸载钩子 scripts/postuninstall.js
自动删除;注意 pnpm 对 link:/本地路径/tarball 安装的包不执行该钩子,此时请补跑兜底脚本:
# 2) 运行期残留清理(仅当 1 未自动清理时)
bash scripts/uninstall.sh # 克隆目录内
# 或未克隆时:bash <(curl -fsSL https://raw.githubusercontent.com/YannZhou/dsh-about/v1.1.2/scripts/uninstall.sh)
唯一可选手动项:如果你曾执行过 cp bin/dsh-watchdog ~/.local/bin/(为独立使用
check/once 命令),按需自行删除;插件本身不需要它。
发布到 npm(可选)
…

