DeepSeek Harness 应用内自更新,适用于 git 源安装,另附可选的原生 macOS shell
31.5/100
综合分
2
GitHub 星标
45
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-self-updatenpm 源 · dsh-self-update 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-self-update @ 0.4.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 14:42:02
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
- 执行外部命令来自配置/变量lib/index.js:57
spawn(args[0], args.slice(1), { - 执行外部命令来自配置/变量lib/index.js:88
execFile(cmd, args, { - 读取本地文件lib/index.js:151
if (this.stateFile === void 0 || !existsSync(this.stateFile)) return; - 读取本地文件lib/index.js:153
const saved = JSON.parse(readFileSync(this.stateFile, "utf8")); - 写入本地文件lib/index.js:168
mkdirSync(dirname(this.stateFile), { recursive: true }); - 写入本地文件lib/index.js:169
writeFileSync(this.stateFile, JSON.stringify(this.state, null, 2)); - 读取本地文件lib/index.js:192
version = versionOf(readFileSync(join(this.repoRoot, "package.json"), "utf8")); - 读取本地文件lib/index.js:372
return typeof JSON.parse(readFileSync(join(this.repoRoot, "package.json"), "utf8")).scripts?.[name$1] === "string"; - 读取本地文件lib/index.js:766
const updater = existsSync(join(harnessRoot, ".git")) ? (() => { - 写入本地文件lib/index.js:767
mkdirSync(dataDir, { recursive: true });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-general@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 一键拉取构建重启
- 失败自动回滚
- 支持git源安装
最近更新
在 GitHub 查看全部 →v0.4.02026-09-05
Closes the loop that bit on 2026-09-05: the port was held by an orphaned dsh web process nobody supervised, the update rebuilt everything on disk, and "Restart now" exited into a void — leaving a new frontend talking to an old host.
· 新特性 / Features
· 认得出「进程已过期」:插件启动时记下检出的 HEAD,GET /update/status 新增 runtime: { pid, startedAt, sha, shortSha, stale, supervisor, restartMode }。磁盘 HEAD 一往前走(自己装的、手动 git pull 的都算),侧栏与设置页直接报「需重启」,面板写明「运行中 a,磁盘上已是 b」。
The plugin records the HEAD it started from; stale flips whenever the HEAD on disk moves, by whatever means, and the UI shows "Restart needed" instead of silently mixing a new frontend with an old host.
· 没有 supervisor 也能重启:从环境探测托管方(DSH_SELF_UPDATE_SUPERVISOR → systemd INVOCATION_ID → PM2 pm_id/PM2_HOME)。没探到时,重启前先派生 /bin/sh 助手,等旧 pid 真正退出、端口释放后 exec 完全相同的 node 命令行——裸终端里的 pnpm dsh web、乃至孤儿进程都能自己起回来。Windows 走手动:按钮改为「停止服务」。POST /update/restart 现在答 { ok, mode, exitCode }。
Supervisor detection with three restart modes: supervisor (exit 75), self-respawn (a detached /bin/sh helper waits for the old pid to die, then execs the identical command line), manual (Windows). If your supervisor already honors exit code 75, set DSH_SELF_UPDATE_SUPERVISOR to any value so the plugin does not respawn behind its back.
· 浏览器只认新 pid 才刷新:不再固定等 4 秒,而是轮询 status,换了 pid 才 reload(最多 120 秒),失败/超时在面板报出原因。
The page reloads only once a different pid answers (up to 120 s); failures and timeouts are shown in the panel.
· macOS 外壳:拉起服务时设 DSH_SELF_UPDATE_SUPERVISOR=macapp;对接管来的服务(端口上已在监听、并非外壳启动)改为持续守望——它消失后等 45 秒看是否自己回来,否则外壳起一份自己的并接管。
The shell now tags the servers it spawns and watches adopted ones: if an adopted server disappears it waits 45 s for a self-respawn, otherwise starts and owns its own.
· 界面 / UI
· 更新页文案全面压短:长句改短句;步骤统一为「短名 + 弱化的命令」,计划态与进行态共用;时间只到分钟,当天不显示日期;重启按钮下写明三种重启方式里将发生哪一种。
Tighter copy throughout the panel; unified step rows; minute-precision timestamps; the restart hint states which of the three modes will happen.
Full changelog:
v0.3.02026-08-28
适配 harness 0.1.2,并针对 1079 个提交的版本跳跃中实际遇到的失败模式加固更新流程(2026-08-28)。
· 新特性 / Features
· 更新与回滚流程加入 pnpm clean(#3):在 pnpm install 之后、构建之前清掉被 gitignore 的旧构建产物(lib/、dist/、*.tsbuildinfo),跨大版本升级不再被残留产物毒化;旧版 harness 没有 clean script 时自动跳过。
更新与回滚现在会在构建前运行目标仓库的 pnpm clean,残留的 gitignored 产物不会再毒化大版本跳跃;旧版 harness 上会优雅跳过。
· 非快进不再是死路(#4):本地有远端没有的提交时,更新页列出每个本地独有提交,并提供一键「备份并对齐远端」——提交先存成 local-backup- 分支,再硬对齐远端并继续 install → clean → build;工作区脏时拒绝执行。新增 POST /self-update/api/update/realign。
分叉的检出现在会显示你本地独有的提交,并提供一键「备份并对齐」(提交存到 local-backup- 分支,再硬重置到远端并重新构建)。工作区脏时拒绝执行。
· 适配 / Compatibility (#2)
· harness 0.1.2 web 鉴权:macOS 外壳自动抓取服务启动时打印的带 token URL,内嵌页面无需手动登录。
macOS 外壳会抓取启动时打印的带 token URL,内嵌页面靠新的浏览器鉴权自行登录。
· client 端适配:上游移除了 @deepseek-ai/dsh-client-runtime,ClientContext 迁移为 cordis Context;最低 harness 版本相应提升为 0.1.2-alpha.1。
上游移除了 dsh-client-runtime;client 入口现在使用 cordis Context。最低 harness 版本现为 0.1.2-alpha.1。
完整更新日志:
v0.1.02026-08-21
首个公开版本:为 DeepSeek Harness 的 git 源安装提供应用内自更新(检查、一键更新、回滚、退出码 75 重启约定),另附可选的 macOS 原生外壳。已在 npm 发布:dsh-self-update。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-self-update
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 时自动跳过);
- 工作区有未提交改动时拒绝更新——绝不替你丢改动;
展开完整文档(README 剩余 1 节)
dsh-self-update
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-<时间戳> 分支,再硬对齐远端继续更新(工作区脏时拒绝执行);
- 失败时一键回滚(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 <你的 deepseek-harness 检出目录>
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 <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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Shane-Jay/dsh-self-update
DeepSeek Harness 应用内自更新,适用于 git 源安装,另附可选的原生 macOS shell
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目