dsh-self-update

DSH PLUGIN会话与消息

仓库 Shane-Jay/dsh-self-update · npm dsh-self-update

会话与消息 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH plugin 将 DeepSeek Harness git 源码安装的更新流程一键化:后台检查、侧边栏提示、一键拉取构建、失败回滚,并以退出码 75 触发服务重启。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 2 复刻 0 · 未关闭 issue 0
最近更新 2026-09-05 创建于 2026-08-20
README 8.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-self-update
兼容 DSH 版本0.2.0-rc.2 等 13 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/dsh-client-ui-renderer@>=0.1.2-alpha.1 <0.2.0-0需要同时安装的同级依赖
npm 包名dsh-self-update可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-self-update:为 DeepSeek Harness 提供应用内自更新能力的 DSH plugin

  • 后台自动检查更新
  • 一键拉取并构建
  • 失败自动回滚
  • 退出码75重启服务
  • 可选macOS原生壳

适用场景

GitHub 集成终端命令

上游标签

deepseek-harnessdshdsh-pluginmacosself-update

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方Shane-Jay仓库 dsh-self-update · 默认分支 main
分类会话与消息desktop
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue2 / 0 / 0收录时的数值,非实时
创建 / 更新2026-08-20 · 2026-09-05最后推送 2026-09-05
本站收录2026-08-20首次进入本站目录的时间

README 全文

8.0 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-self-update

English | 简体中文

DeepSeek Harness git 源码安装版的应用内自更新插件——附可选的原生 macOS 外壳。



这是什么?

如果你是以 git 源码方式跑 DeepSeek Harness(git clone + pnpm dsh web)——自部署用户几乎都是这样——那么它没有任何内置的更新途径。每出一个新版本,都要手动 git pull、pnpm install、pnpm build、重启服务;一旦更坏了,还得自己翻旧提交回退。

dsh-self-update 把这整个循环变成一个按钮。 它是一个 harness 插件:

  • 后台静默检查(默认 6 小时一轮),也可随时手动检查——设置页或 macOS 菜单栏都行;
  • 有新版本时侧栏浮出一行「新版本 x.y.z ›」,点开是更新页:版本对照 + 将要执行的命令,明明白白;
  • 一键安装:git pull --ff-only → pnpm install → pnpm clean → pnpm build:official(官方品牌构建),逐步实时进度——clean 一步清掉 gitignore 的旧构建产物,跨大版本升级不再被残留毒化(旧版 harness 没有 clean script 时自动跳过);
  • 工作区有未提交改动时拒绝更新——绝不替你丢改动;
  • 本地分叉不再是死路:更新页列出本地独有的提交,一键「备份并对齐远端」——先把你的提交存成 local-backup-&lt;时间戳&gt; 分支,再硬对齐远端继续更新(工作区脏时拒绝执行);
  • 失败时一键回滚(UI 挂掉时还有命令行兜底);
  • 认得出「进程已过期」:进程起来时就记下检出的 HEAD,之后磁盘上的代码一往前走——自己装的、你手动 git pull 的、别的工具改的都算——界面直接报「需重启」,而不是悄悄用新前端配旧宿主;
  • 重启闭环:进程以退出码 75 退出("请重启我"),交给 systemd / PM2 / 自带 macOS 外壳拉起;一个 supervisor 都没有时,macOS/Linux 上它会自己派生副本接管——裸终端里的 pnpm dsh web 也能「立即重启」。

不适用于你,如果你是 npm i -g @deepseek-ai/dsh 全局安装的:没有 git 工作副本可更新,本插件会整体自动隐藏。请改用 npm 系更新器(如 dsh-update-checker)。

安装(任何平台)

cd &lt;你的 deepseek-harness 检出目录&gt;
pnpm dsh plugin --profile web add dsh-self-update

重启一次 dsh 服务即生效。零配置——插件以进程工作目录为 harness 检出(不一致时用插件 config repoRoot 覆盖)。

让「立即重启」闭环

「立即重启」按钮会让进程以退出码 75 退出。让你的 supervisor 认识它:

运行方式 配置
systemd RestartForceExitStatus=75
PM2 autorestart: true(默认即可)
macOS 外壳(见下) 内置
裸终端 / 没有 supervisor 内置(macOS/Linux 自拉起;Windows 手动)

没探到 supervisor 时,插件会先派生一个分离的 /bin/sh 助手:等旧 pid 真的死掉(端口释放)后,用完全相同的 node 命令行 exec 一份自己——裸终端跑的 pnpm dsh web、乃至孤儿进程,都能自己起回来。Windows 没有这条路:按钮改叫「停止服务」,之后请手动再跑一次 pnpm dsh web。更新页会写明这三种里将发生哪一种。

探测顺序:先看 DSH_SELF_UPDATE_SUPERVISOR,再认 systemd 的 INVOCATION_ID,再认 PM2 的 pm_id/PM2_HOME。如果你的 supervisor 本来就认退出码 75,请把 DSH_SELF_UPDATE_SUPERVISOR 设成任意值(如 custom)——否则插件会背着它自拉起。none/0/false 表示相反的意思:没人会拉起我。

macOS 外壳(可选)

原生 Swift + WKWebView(非 Electron)的 DSH.app,托管 dsh 服务:点图标即界面,关窗不停服务,⌘Q 才停。菜单栏有 「检查更新…」,直接弹出应用内更新页;服务以 75 退出时自动拉起并重载页面(拉起时设 DSH_SELF_UPDATE_SUPERVISOR=macapp,插件据此把重启交给外壳)。对接管来的服务(端口上已在监听、并非外壳启动的那种)现在也守着:它一旦消失,外壳先等 45 秒看它是否自己回来(自拉起的情形),否则就起一份自己的并接管。已适配 harness 0.1.2 引入的 web 鉴权:外壳自动抓取服务启动时打印的带 token URL,内嵌页面无需手动登录。

node macapp/build-mac-app.mjs        # 需要 Xcode 命令行工具
# 输出 ~/Applications/DSH.app

首次打开需右键 → 打开(ad-hoc 签名,未做 Apple 公证)。

与同类项目的区别

更新对象 平台 自动重启
dsh-update-checker npm 包 重启仅 Windows ✅(Win)
dsh-update-copilot 插件为主,core 只报告 全平台 ❌
dsh-self-update harness git 工作副本本体 全平台(重启含 macOS/Linux) ✅(退出码 75;macOS/Linux 无需 supervisor)

退出码 75 的重启契约正是社区一直在向 harness core 呼吁的东西(见上游讨论 #1231、#2717)——本插件是它的一个可用实现。

接口契约

  • HTTP — /self-update/api/update/{status,check,install,realign,rollback,restart};写路由要求 Content-Type: application/json + 本机 Origin(CSRF 防线)。
  • 弹层事件 — 在 window 上派发 dsh-self-update:open(detail: { check: true } = 打开即检查)。macOS 菜单项就是通过 evaluateJavaScript 派发它。
  • 运行时 — GET /update/status 带 runtime: { pid, startedAt, sha, shortSha, stale, supervisor, restartMode }。stale = 磁盘上的 HEAD 已不是本进程启动时那个(界面按「已装好、待重启」处理);supervisor ∈ macapp | systemd | pm2 | custom | none;restartMode ∈ supervisor | self-respawn | manual。
  • 重启 — POST /update/restart 先答 { ok, mode, exitCode },约 300ms 后才退出;mode 即上面的 restartMode。退出码 75 = 请求重启,其他一律按崩溃处理。之后浏览器轮询 status,只有换了 pid 才刷新(最多等 120 秒)。
  • 状态 — 落盘 ~/.dsh-self-update/update-state.json;自拉起助手的输出在 ~/.dsh-self-update/respawn.log。

UI 挂掉时的兜底

更新后 dsh 起不来(插件与新版本接缝不兼容)时,Web UI 连同回滚按钮一起没了。从命令行退:

node scripts/rollback-harness.mjs          # 目标取状态文件里的 previousSha
node scripts/rollback-harness.mjs --sha    # 或自己指定提交

更新器每次安装前都会先记下 previousSha,就是为了这一刻。

开发

Sibling 布局(与 dsh 插件生态同款):本仓库必须与 deepseek-harness 检出为同级目录——@deepseek-ai/* 开发依赖是 link:../deepseek-harness/...。

pnpm install
pnpm typecheck &amp;&amp; pnpm test &amp;&amp; pnpm build

updater 测试跑在真实(离线)git 仓库上,只有 install/build 两步换成了空跑命令。

License

MIT


常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-self-update 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-self-update` 即可。对应的 npm 包名是 `dsh-self-update`。

dsh-self-update 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-self-update 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-self-update 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2。版本较多,只列出前 8 个。

dsh-self-update 需要什么运行环境?

需要同时安装 @deepseek-ai/dsh-client-ui-renderer@>=0.1.2-alpha.1 <0.2.0-0。环境不满足时安装会失败,建议先确认本机版本。

dsh-self-update 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-self-update 有哪些功能?

后台自动检查更新、一键拉取并构建、失败自动回滚、退出码75重启服务、可选macOS原生壳。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。