DeepSeek Harness 插件

dsh-self-update

In-app self-update for DeepSeek Harness git-source installs (check / one-click update / rollback / restart), with an optional native macOS shell.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Shane-Jay/dsh-self-update
最近更新
2026年8月20日
分类
工具与能力
GitHub stars
2
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-21

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Shane-Jay/dsh-self-update
插件名:dsh-self-update
作者:Shane-Jay

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh-CN.md来源说明 · 只读预览
README 语言

<div align="center">

dsh-self-update

English | 简体中文

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

![npm version](https://www.npmjs.com/package/dsh-self-update) ![License: MIT](LICENSE) ![DSH core](https://www.npmjs.com/package/@deepseek-ai/dsh)

<img src="docs/assets/update-panel.png" alt="更新页:当前/新版本对照、将执行的三步、一键开始更新" width="760">

</div>

这是什么?

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

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

  • 后台静默检查(默认 6 小时一轮),也可随时手动检查——设置页或 macOS 菜单栏都行;
  • 有新版本时侧栏浮出一行「新版本 x.y.z ›」,点开是更新页:版本对照 + 将要执行的三条命令,明明白白;
  • 一键安装git pull --ff-onlypnpm installpnpm build,逐步实时进度;
  • 工作区有未提交改动或本地分叉时拒绝更新——绝不替你丢改动;
  • 失败时一键回滚(UI 挂掉时还有命令行兜底);
  • 重启闭环:进程以退出码 75 退出("请重启我"),由 systemd / PM2 / 自带 macOS 外壳自动拉起。

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

安装(任何平台)

cd <你的 deepseek-harness 检出目录>
pnpm dsh plugin --profile web add dsh-self-update

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

让「立即重启」闭环

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

运行方式配置
systemdRestartForceExitStatus=75
PM2autorestart: true(默认即可)
macOS 外壳(见下)内置
裸终端自己再跑一次 pnpm dsh web

macOS 外壳(可选)

原生 Swift + WKWebView(非 Electron)的 DSH.app,托管 dsh 服务:点图标即界面,关窗不停服务,⌘Q 才停。菜单栏有 「检查更新…」,直接弹出应用内更新页;服务以 75 退出时自动拉起并重载页面。

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

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

与同类项目的区别

更新对象平台自动重启
dsh-update-checkernpm 包重启仅 Windows✅(Win)
dsh-update-copilot插件为主,core 只报告全平台
dsh-self-updateharness git 工作副本本体全平台(重启含 macOS/Linux)✅(退出码 75 契约)

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

接口契约

  • HTTP/self-update/api/update/{status,check,install,rollback,restart};写路由要求 Content-Type: application/json + 本机 Origin(CSRF 防线)。
  • 弹层事件 — 在 window 上派发 dsh-self-update:opendetail: { check: true } = 打开即检查)。macOS 菜单项就是通过 evaluateJavaScript 派发它。
  • 重启 — 进程退出码 75 = 请求重启;其他退出码一律按崩溃处理。
  • 状态 — 落盘 ~/.dsh-self-update/update-state.json

UI 挂掉时的兜底

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

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

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

开发

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

pnpm install
pnpm typecheck && pnpm test && pnpm build

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

License

[MIT](LICENSE)

---

![](https://github.com/deepseek-ai/deepseek-harness)