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

更新检查器 lhh666-6/dsh-update-check

DeepSeek Harness
lhh666-672 天前有提交已提供中文文档扫描:含敏感能力

检测桌面端与源码新版本,一键下载安装并重启

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lhh666-6/dsh-update-check
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · market
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 72 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 73 处,展示前 61 条)
  • 发起网络请求
    lib/index.js:21
    const res = await fetch(endpoint, {
  • 写入本地文件
    lib/index.js:44
    await mkdir(destDir, { recursive: true });
  • 发起网络请求
    lib/index.js:45
    const res = await fetch(endpoint, {
  • 写入本地文件
    lib/index.js:57
    const file = createWriteStream(tmp);
  • 写入本地文件
    lib/index.js:84
    await rename(tmp, dest);
  • 执行外部命令来自配置/变量
    lib/index.js:97
    spawn(installerPath, ["--updated", "--force-run"], {
  • 执行外部命令固定命令
    lib/index.js:183
    spawn("powershell.exe", [
  • 发起网络请求
    lib/index.js:249
    const res = await fetch(url, {
  • 发起网络请求
    lib/index.js:269
    const feedRes = await fetch(feedUrl, {
  • 发起网络请求
    lib/index.js:289
    const res = await fetch(url, {
  • 发起网络请求
    lib/index.js:322
    const res = await fetch(url, {
  • 写入本地文件
    lib/index.js:330
    await writeFile(tmp, buf);
  • 写入本地文件
    lib/index.js:331
    await rename(tmp, dest);
  • 读取本地文件
    lib/index.js:365
    const raw = await readFile(path, "utf8");
  • 写入本地文件
    lib/index.js:377
    await mkdir(dirname(path), { recursive: true });
  • 执行外部命令固定命令
    lib/index.js:420
    execFile("powershell.exe", [
  • 读取本地文件
    lib/index.js:447
    const j = JSON.parse(await readFile(hostPkg, "utf8"));
  • 读取本地文件
    lib/index.js:455
    const raw = await readFile(join(cfg.desktopRepoPath, "upstream.json"), "utf8");
  • 执行外部命令来自配置/变量
    lib/index.js:467
    execFile(cmd, [
  • 读取本地文件
    lib/index.js:489
    const raw = await readFile(hostPkgPath, "utf8");
  • 读取本地文件
    lib/index.js:508
    if (JSON.parse(await readFile(stagedPkgPath, "utf8")).version === targetVersion) return;
  • 删除本地文件
    lib/index.js:511
    await rm(preparingDir, {
  • 读取本地文件
    lib/index.js:530
    const installed = JSON.parse(await readFile(installedPkgPath, "utf8"));
  • 删除本地文件
    lib/index.js:533
    await rm(oldDir, {
  • 删除本地文件
    lib/index.js:539
    await rm(oldDir, {
  • 发起网络请求
    lib/client.js:136
    const res = await fetch(url, {
  • 请求外部主机api.github.com
    lib/client.js:182
    const first = (await (await fetch("https://api.github.com/repos/deepseek-ai/deepseek-harness/releases?per_page=1", { headers: { Accept: "application/j
  • 发起网络请求
    lib/client.js:182
    const first = (await (await fetch("https://api.github.com/repos/deepseek-ai/deepseek-harness/releases?per_page=1", { headers: { Accept: "application/j
  • 发起网络请求
    src/desktop.ts:19
    const res = await fetch(endpoint, {
  • 写入本地文件
    src/desktop.ts:49
    await mkdir(destDir, { recursive: true })
  • 发起网络请求
    src/desktop.ts:50
    const res = await fetch(endpoint, {
  • 写入本地文件
    src/desktop.ts:62
    const file = createWriteStream(tmp)
  • 写入本地文件
    src/desktop.ts:86
    await rename(tmp, dest)
  • 执行外部命令来自配置/变量
    src/desktop.ts:97
    const child = spawn(installerPath, ['--updated', '--force-run'], {
  • 发起网络请求
    src/github.ts:66
    const res = await fetch(url, {
  • 发起网络请求
    src/github.ts:92
    const feedRes = await fetch(feedUrl, {
  • 发起网络请求
    src/github.ts:114
    const res = await fetch(url, {
  • 发起网络请求
    src/github.ts:157
    const res = await fetch(url, {
  • 写入本地文件
    src/github.ts:165
    await writeFile(tmp, buf)
  • 写入本地文件
    src/github.ts:166
    await rename(tmp, dest)
  • 执行外部命令固定命令
    src/index.ts:82
    execFile('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', cmd], {
  • 读取本地文件
    src/index.ts:114
    const j = JSON.parse(await readFile(hostPkg, 'utf8')) as { version?: string }
  • 读取本地文件
    src/index.ts:131
    const raw = await readFile(join(cfg.desktopRepoPath, 'upstream.json'), 'utf8')
  • 执行外部命令来自配置/变量
    src/index.ts:147
    execFile(cmd, ['install', '--no-audit', '--no-fund', '--loglevel=error'], {
  • 读取本地文件
    src/index.ts:165
    const raw = await readFile(hostPkgPath, 'utf8')
  • 读取本地文件
    src/index.ts:181
    const staged = JSON.parse(await readFile(stagedPkgPath, 'utf8')) as { version?: string }
  • 删除本地文件递归
    src/index.ts:187
    await rm(preparingDir, { recursive: true, force: true })
  • 写入本地文件
    src/index.ts:188
    await mkdir(preparingDir, { recursive: true })
  • 写入本地文件
    src/index.ts:202
    await writeFile(join(preparingDir, 'package.json'), JSON.stringify(prepared, null, 2), 'utf8')
  • 读取本地文件
    src/index.ts:205
    const installed = JSON.parse(await readFile(installedPkgPath, 'utf8')) as { version?: string }
  • 删除本地文件递归
    src/index.ts:208
    await rm(oldDir, { recursive: true, force: true })
  • 读取本地文件
    src/index.ts:209
    if (existsSync(stagingDir)) await rename(stagingDir, oldDir)
  • 写入本地文件
    src/index.ts:209
    if (existsSync(stagingDir)) await rename(stagingDir, oldDir)
  • 写入本地文件
    src/index.ts:210
    await rename(preparingDir, stagingDir)
  • 删除本地文件递归
    src/index.ts:211
    await rm(oldDir, { recursive: true, force: true })
  • 写入本地文件
    src/index.ts:269
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    src/index.ts:561
    await writeFile(scriptPath, buildUpgradeScript(appDir, stagingDir, stagingVersion), 'utf8')
  • 读取本地文件
    src/state.ts:74
    const raw = await readFile(path, 'utf8')
  • 写入本地文件
    src/state.ts:83
    await mkdir(dirname(path), { recursive: true })
  • 写入本地文件
    src/state.ts:89
    await writeFile(path, body, 'utf8')
  • 执行外部命令固定命令
    src/upgradeScript.ts:86
    const child = spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', psCmd], {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:api.github.com

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings@deepseek-ai/schemastery@deepseek-ai/dsh-client-ui-sidebar
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 检测桌面端新版本
  • 检测源码新版本
  • 一键下载安装并重启

DSH 更新检查器,用于 DSH Desktop 安装程序渠道和 GitHub 源发布,支持一键下载/更新。

README

由 DeepSeek 最新模型翻译生成
dsh-update-check-plus GitHub: https://github.com/lhh666-6/dsh-update-check npm: dsh-update-check-plus DeepSeek Harness 更新检查插件:检查 DSH Desktop 桌面端更新(dshdesktop.cn 官方安装包通道)与 GitHub 源码更新,在会话头部显示状态胶囊,支持一键下载安装包并自动重启完成更新。 双通道更新 1. 桌面端更新(真实安装包,一键自动更新)⭐ - 版本源:https://www.dshdesktop.cn/api/desktop/version(返回 {"version":"2.0.0"}) - 安装包:https://www.dshdesktop.cn/api/downloads/windows → 302 跳转到 CDN(ModelScope/GitCode)的 NSIS 安装器 - 流程:检测到新版 → 胶囊显示 ⬆ 新版本 → 点开面板 → 「下载并更新」 → 自动下载安装包(约 160MB,显示进度)→ 以官方同款参数启动安装器(--updated --force-run)→ 退出应用让安装器接管 → 安装完成自动重启
展开完整文档(README 剩余 1 节)
dsh-update-check-plus

GitHub: https://github.com/lhh666-6/dsh-update-check

npm: dsh-update-check-plus

DeepSeek Harness 更新检查插件:检查 DSH Desktop 桌面端更新(dshdesktop.cn 官方安装包通道)与 GitHub 源码更新,在会话头部显示状态胶囊,支持一键下载安装包并自动重启完成更新。

双通道更新

1. 桌面端更新(真实安装包,一键自动更新)⭐
- 版本源:https://www.dshdesktop.cn/api/desktop/version(返回 {"version":"2.0.0"})
- 安装包:https://www.dshdesktop.cn/api/downloads/windows → 302 跳转到 CDN(ModelScope/GitCode)的 NSIS 安装器
- 流程:检测到新版 → 胶囊显示 ⬆ 新版本 → 点开面板 → 「下载并更新」 → 自动下载安装包(约 160MB,显示进度)→ 以官方同款参数启动安装器(--updated --force-run)→ 退出应用让安装器接管 → 安装完成自动重启
- 该通道对应的是 deepseek-harness-desktop 项目(dshdesktop.cn 分发),与你当前安装的桌面端同源

2. GitHub 源码更新
- 三级数据源级联:REST API(配额受限时自动降级)→ releases.atom → master 分支版本号兜底
- 可一键下载最新源码 zip(codeload)

当前版本检测(多级回退)
1. Host 侧 @deepseek-ai/dsh 包版本
2. 桌面端 exe 的 FileVersion(如 0.1.0-rc.5)
3. 可选:deepseek-harness-desktop 仓库 upstream.json 的 sourceVersion

行为
- 启动 5 秒后首次检查,之后按 intervalHours(默认 12h)轮询;失败 1 小时后自动重试
- 状态持久化:~/.dsh/update-check-plus/state.json

界面
- 会话头部状态胶囊:🟢 ✓ 0.1.0-rc.5 / 🟠 ⬆ 2.0.0(桌面端)/ 🟠 ⬆ rc.7(源码)/ ⏳ 下载进度
- 面板:桌面端更新区(版本对比 + 进度 + 更新按钮)+ 源码更新区(更新日志 + 按钮)

设置(设置 → dsh-update-check-plus 分区)
| 配置项 | 默认值 | 说明 |
| repo | deepseek-ai/deepseek-harness | GitHub 源码仓库 |
| intervalHours | 12 | 检查间隔(小时) |
| autoDownload | false | 发现源码新版自动下载 zip |
| downloadDir | ~/.dsh/update-check-plus/downloads | 下载目录(安装包与源码共用) |
| desktopRepoPath | | 可选:desktop 仓库路径(upstream.json 版本) |
| enableDesktopUpdate | true | 启用桌面端更新通道 |
| desktopVersionEndpoint | https://www.dshdesktop.cn/api/desktop/version | 版本服务 |
| desktopDownloadEndpoint | https://www.dshdesktop.cn/api/downloads/windows | 安装包下载 |

开发
pnpm install
pnpm run typecheck
pnpm run build # -> lib/index.js (host) + lib/client.js (web)
node test-desktop-dl.mjs # 真实下载链路测试(约160MB,跑完删除)

安装

npm 安装(推荐,预构建)
dsh plugin --profile web add dsh-update-check-plus
dsh plugin --profile desktop add dsh-update-check-plus

或直接从 GitHub 安装
dsh plugin --profile web add github:lhh666-6/dsh-update-check
dsh plugin --profile desktop add github:lhh666-6/dsh-update-check

安装后重启 DSH(或切换一次 profile)生效。

局限与安全
- 「下载并更新」会把当前 DeepSeek Harness 升级到 dshdesktop.cn 分发的最新版(目前为 DSH Desktop 2.0.0,项目改名后的稳定版);数据(会话/配置在 ~/.dsh)不受影响
- 安装器由官方通道提供;插件不做任何二进制修改
预览分享卡片长什么样 ↓lhh666-6/dsh-update-check
分享 · DeepSeek Harness Hub
lhh666-6/dsh-update-check

检测桌面端与源码新版本,一键下载安装并重启

这是你的仓库?认领条目

回到顶部