🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

更新检查升级 ADDD1118/dsh-update

DeepSeek 客户端v0.0.1
ADDD111852 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

右上角一键检查新版本,退出时自动完成升级

29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/ADDD1118/dsh-update.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 52 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「dsh-update」归属 dushaobindoudou/dsh-update,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-update @ 0.0.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 00:11:53

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 31 处,展示前 28 条)
  • 读取本地文件
    lib/index.js:45
    if (existsSync(join(s, "apps", "cli", "package.json"))) return s;
  • 读取本地文件
    lib/index.js:49
    if (existsSync(join(dir, "apps", "cli", "package.json"))) return dir;
  • 读取本地文件
    lib/index.js:50
    if (existsSync(join(dir, "launcher", "update-dsh.ps1")) && existsSync(join(dir, "deepseek-harness", "apps", "cli", "package.json"))) return join(dir,
  • 写入本地文件
    lib/index.js:68
    mkdirSync(dirname(full), { recursive: true });
  • 读取本地文件
    lib/index.js:89
    const version = JSON.parse(readFileSync(join(repoPath(), "apps", "cli", "package.json"), "utf8")).version;
  • 读取本地文件
    lib/index.js:99
    const version = JSON.parse(readFileSync(pkgPath, "utf8")).version;
  • 发起网络请求
    lib/index.js:159
    const res = await fetch(RELEASES_ATOM, {
  • 发起网络请求
    lib/index.js:179
    const res = await fetch(url, {
  • 读取本地文件
    lib/index.js:201
    return JSON.parse(readFileSync(path, "utf8"));
  • 写入本地文件
    lib/index.js:211
    writeFileSync(stateFile(), JSON.stringify(value));
  • 执行外部命令来自配置/变量
    lib/index.js:228
    spawn(process.execPath, [updaterScript(), JSON.stringify(payload)], {
  • 写入本地文件
    lib/index.js:332
    writeFileSync(pendingFile(), JSON.stringify({
  • 删除本地文件
    lib/index.js:358
    rmSync(pendingFile(), { force: true });
  • 写入本地文件
    updater.mjs:45
    try { mkdirSync(dirname(path), { recursive: true }) } catch { }
  • 写入本地文件
    updater.mjs:46
    try { writeFileSync(path, JSON.stringify(value)) } catch { }
  • 读取本地文件
    updater.mjs:53
    if (statSync(path).isDirectory()) {
  • 写入本地文件
    updater.mjs:137
    mkdirSync(dir)
  • 写入本地文件
    updater.mjs:138
    try { writeFileSync(join(dir, 'pid'), String(process.pid)) } catch { }
  • 读取本地文件
    updater.mjs:152
    const age = Date.now() - statSync(dir).mtimeMs
  • 删除本地文件递归
    updater.mjs:155
    rmSync(dir, { recursive: true, force: true })
  • 执行外部命令固定命令
    updater.mjs:195
    const child = spawn(
  • 执行外部命令固定命令
    updater.mjs:230
    const child = spawn(
  • 写入本地文件
    updater.mjs:264
    try { mkdirSync(dirname(logTarget), { recursive: true }) } catch { }
  • 写入本地文件
    updater.mjs:278
    mkdirSync(dirname(payload.logFile), { recursive: true })
  • 删除本地文件
    updater.mjs:280
    if (statSync(payload.logFile).size > LOG_MAX_BYTES) rmSync(payload.logFile, { force: true })
  • 读取本地文件
    updater.mjs:280
    if (statSync(payload.logFile).size > LOG_MAX_BYTES) rmSync(payload.logFile, { force: true })
  • 删除本地文件
    updater.mjs:313
    try { rmSync(pendingFile, { force: true }) } catch { }
  • 删除本地文件递归
    updater.mjs:347
    try { rmSync(lockDir, { recursive: true, force: true }) } catch { }
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 右上角一键检查更新
  • 退出时自动升级

README

由 DeepSeek 最新模型翻译生成
dsh-update 一个面向 DeepSeek Harness (dsh) 的用户级插件,在 Web UI 右上角添加一个 “检查更新” 按钮,并支持带进度条的实时更新。 - 会话标题栏中的灰色“检查更新”按钮 → “检查中” - 检查时显示蓝色旋转指示器 - 液态玻璃提示:当已是最新版本时显示 “You are already on the latest version, X” - 当存在更新版本时,显示蓝色“新版本”按钮 + 居中的更新对话框(发布说明 + “更新”) - 点击“更新” → 5 秒倒计时,然后 dsh 自行关闭,更新在退出过程中执行(可随时取消,或立即关闭) - 更新运行时,右下角会出现一个 桌面进度卡片,显示真实阶段([5/6] 安装依赖)。
展开完整文档(README 剩余 1 节)
dsh-update

一个面向 DeepSeek Harness (dsh) 的用户级插件,在 Web UI 右上角添加一个 “检查更新” 按钮,并支持带进度条的实时更新。

- 会话标题栏中的灰色“检查更新”按钮 → “检查中”
- 检查时显示蓝色旋转指示器
- 液态玻璃提示:当已是最新版本时显示 “You are already on the latest version, X”
- 当存在更新版本时,显示蓝色“新版本”按钮 + 居中的更新对话框(发布说明 + “更新”)
- 点击“更新” → 5 秒倒计时,然后 dsh 自行关闭,更新在退出过程中执行(可随时取消,或立即关闭)
- 更新运行时,右下角会出现一个 桌面进度卡片,显示真实阶段([5/6] 安装依赖)。它可以拖动,点击其 ✕ 会将其折叠为托盘图标(白色圆角方块,带蓝色 DeepSeek 鲸鱼),点击该图标会让卡片回到你离开时的确切位置
- 永远不会显示控制台窗口——卡片通过 launch-hidden.vbs 启动(见开发说明)
- 完成时,右下角会弹出 Windows 通知 宣布结果
- 检查 GitHub releases feed,并驱动你自己的 launcher/update-dsh.ps1,因此它会更新启动器所运行的那个确切安装;绝不触碰启动器 exe 或 ~/.dsh 用户数据

Requirements

- DeepSeek Harness (dsh) Web surface (dsh web), v0.1.0+
- Node 22+ (uses the built-in fetch)
- The workspace layout the launcher expects: a deepseek-harness source checkout with a sibling launcher/update-dsh.ps1, plus git, pnpm, curl.exe and PowerShell on PATH (the update drives that script)

Installation

Add the plugin to your web profile, then register the row.

dsh plugin --profile web add ADDD1118/dsh-update

Append this to ~/.dsh/profiles/web/cordis.patch.yml:

- insert:
- id: dsh-update
name: dsh-update

Restart dsh web and hard-refresh the browser (Ctrl+F5). The button appears in the top-right of the session header (beside "Session log").

The plugin ships prebuilt (lib/index.js + lib/client.js), so no build step is required.

How the update works

- The check reads the GitHub releases feed for the newest tag; if it is newer than the running version, the "New version" flow lets you update.
- Clicking "Update" schedules the update rather than applying it live: the source checkout is the working directory of the running server, and Windows will not let that directory be replaced while the server is alive. The schedule is recorded in ~/.dsh/.dsh-pending-update.json.
- A 5-second countdown then asks dsh to close itself via the launcher's appExit — the same path as a normal shutdown, just without you clicking the X. Cancel at any point to unschedule.
- 当 dsh 在已排期更新时关闭,一个分离的更新进程会等待该进程完全退出,然后运行 launcher/update-dsh.ps1 -Tag (下载 → pnpm install → 构建),并将结果写入 ~/.dsh/.dsh-update-state.json。
- 在此期间,update-progress.ps1 会轮询该状态文件并绘制右下角卡片;它和完成提示都作为独立进程运行,因此即使更新进程终止也能继续存在。
- 重新打开 dsh,结果只会显示一次。如果更新已完成,标记会自动清除——不会反复提醒。
- 后台更新的完整输出会写入 ~/.dsh/.dsh-update.log。

关闭 dsh 本身绝不会触发任何更新。 唯一会执行更新的情况是你点击了“更新”且排期仍然待执行;不存在后台自动升级。如果你是强制结束 dsh 而不是正常关闭,排期的更新不会运行——这种情况请使用 更新DeepSeekHarness.cmd。

功能

为 DeepSeek Harness (dsh) 的 Web 界面右上角新增 “检查更新” 按钮,并支持在关闭 dsh 后自动完成的后台更新。

- 会话头右上角灰色“检查更新”按钮 → 点击后变“检查中”
- 检查时显示蓝色转圈
- 已是最新时弹出液态玻璃提示:“当前已是最新版本,版本号为 X”
- 有新版时按钮变蓝色“新版本”,点击弹出居中更新对话框(含更新说明 + “更新”按钮)
- 点“更新” → 5 秒倒计时后 dsh 自动关闭,更新在退出过程中执行(随时可「取消排期」,或直接「立即关闭」)
- 更新期间桌面右下角悬浮进度小条,显示真实阶段([5/6] 安装依赖)。可拖动位置;点 ✕ 收起为托盘图标(白底圆角蓝色鲸鱼),点该图标会在你关闭时的位置把浮窗还原
- 全程不出现任何控制台窗口 —— 通过 launch-hidden.vbs 隐藏启动(见 Development notes)
- 完成后右下角弹出 Windows 通知告知结果
- 通过 GitHub releases 检测最新 tag,并驱动你自己的 launcher/update-dsh.ps1,因此更新的正是启动器实际运行的那份代码;不触碰启动器 exe 和 ~/.dsh 用户数据

环境要求

- DeepSeek Harness (dsh) Web 界面(dsh web),v0.1.0+
- Node 22+(用到内置 fetch)
- 启动器期望的目录结构:deepseek-harness 源码检出 + 同级 launcher/update-dsh.ps1;且 PATH 中有 git、pnpm、curl.exe 和 PowerShell(更新由该脚本执行)

安装

将插件加入 web profile,并注册插件行。

dsh plugin --profile web add ADDD1118/dsh-update

在 ~/.dsh/profiles/web/cordis.patch.yml 追加:

- insert:
- id: dsh-update
name: dsh-update

重启 dsh web 并强刷浏览器(Ctrl+F5)。按钮出现在会话头右上角(“Session log”旁)。

插件已预构建(lib/index.js + lib/client.js),无需再执行构建。

更新原理

- 检查时会读取 GitHub releases 的最新 tag;若比当前运行版本新,则通过“新版本”流程更新。
- 点“更新”只是排期,不会立即执行:源码检出目录正是运行中服务的工作目录,而 Windows 不允许在进程存活时替换该目录。排期记录写入 ~/.dsh/.dsh-pending-update.json。
- 随后 5 秒倒计时,通过启动器提供的 appExit 让 dsh 自行退出 —— 与正常关闭走同一条路径,只是不需要你手动点关闭。倒计时期间可随时取消排期。
- 关闭 dsh 时若存在排期,一个分离的后台进程会等主进程完全退出后执行 launcher/update-dsh.ps1 -Tag (下载 → pnpm install → 构建),并把结果写入 ~/.dsh/.dsh-update-state.json。
- 更新期间由 update-progress.ps1 轮询该状态文件绘制右下角进度卡;进度卡与完成通知都是独立进程,即使 updater 意外退出也能给出结果。
- 重新打开 dsh 后结果只提示一次。若更新确实已完成,标记会自动清除,不会反复弹窗。
- 后台更新的完整输出见 ~/.dsh/.dsh-update.log。

「关闭 dsh」本身不会触发任何更新。 唯一会执行更新的是你点了「更新」且排期仍然存在 —— 没有后台自动升级。若是强制结束进程(而非正常关闭),排期的更新不会执行,这种情况下请用 更新DeepSeekHarness.cmd。

Development notes
- src/** 由 tsdown 打包进 lib/index.js(宿主,ESM)和 lib/client.js(浏览器,CJS,通过 window.__ModuleLoader__.load 交给 shell)。updater.mjs 和 update-progress.ps1 不打包发布,在运行时从磁盘加载。
- update-progress.ps1 必须保存为带 BOM 的 UTF-8。 当没有 BOM 时,Windows PowerShell 5.1 会以 ANSI(中文系统上为 GBK)读取 .ps1 文件,这会严重破坏其中的中文字符串,足以导致解析失败。
- 更新程序只从 update-dsh.ps1 的输出中解析 [N/M] 数字,并提供自己的阶段标签:该脚本的 Write-Host 输出以控制台的 OEM 代码页到达,因此按 UTF-8 解码会产生乱码。
- 对于进度卡片,PowerShell 子进程通过 launch-hidden.vbs(wscript,窗口样式 0)启动。有两个不同的原因:仅靠 detached + unref 并不能让 PowerShell 子进程在其父进程退出后继续存活;而且在 Windows 11 上,控制台应用会被交给 Windows Terminal——因此 powershell -WindowStyle Hidden 仍会在桌面上留下一个终端窗口,因为该窗口属于终端宿主,而不是 PowerShell。wscript 是一个 GUI 子系统宿主,自身没有控制台。
- dsh-update-icon.ico 是一个多尺寸 ICO(16/24/32/48/64/128/256),由仓库自有的 apps/web/public/favicon.svg 鲸鱼图标合成:该 SVG 被重新着色为品牌蓝 #4d6bfe(从 packages/skill/skill-badge/assets/dsh-badge.png 采样),用无头 Edge 栅格化,然后绘制到白色圆角图块上。注意该 favicon 带有一条 prefers-color-scheme: dark 规则,会将路径重绘为白色——必须在栅格化之前将其剥离,否则鲸鱼会变成透明背景上的白色而不可见。

许可证

MIT
预览分享卡片长什么样 ↓ADDD1118/dsh-update
分享 · DeepSeek Harness Hub
ADDD1118/dsh-update

右上角一键检查新版本,退出时自动完成升级

这是你的仓库?认领条目

回到顶部