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

版本更新入口 Xander012/dsh-ui-update

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

在设置页检查并一键升级 DSH 到最新版本

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Xander012/dsh-ui-update
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 39 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-ui-update(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 09:37:37

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 13 处,展示前 13 条)
  • 读取本地文件
    lib/index.js:185
    return existsSync(guess) ? guess : null;
  • 读取本地文件
    lib/index.js:197
    return existsSync(guess) ? guess : null;
  • 读取本地文件
    lib/index.js:219
    const manifest = JSON.parse(await readFile(path, "utf8"));
  • 发起网络请求
    lib/index.js:325
    const response = await fetch(REGISTRY_TAGS_URL, {
  • 读取本地文件
    lib/index.js:363
    const text = await readFile(logPath(), "utf8");
  • 读取本地文件
    lib/index.js:428
    return readdirSync(dir);
  • 写入本地文件
    lib/index.js:462
    await rename(join(prefix, temp), join(prefix, final));
  • 读取本地文件
    lib/index.js:473
    await readFile(join(prefix, "node_modules", "@deepseek-ai", "dsh", "package.json"), "utf8"),
  • 写入本地文件
    lib/index.js:506
    await mkdir(dirname(logPath()), { recursive: true });
  • 写入本地文件
    lib/index.js:507
    await writeFile(logPath(), `$ npm install -g ${PACKAGE_NAME}@${tag}\n\n`, "utf8");
  • 执行外部命令来自配置/变量
    lib/index.js:509
    const child = spawn(command, {
  • 发起网络请求
    lib/client.js:178
    const response = await fetch(force ? "/api/dsh-update/check" : "/api/dsh-update/state", {
  • 发起网络请求
    lib/client.js:210
    const response = await fetch("/api/dsh-update/apply", {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 设置页检查更新
  • 一键升级到最新版

给 DeepSeek Harness 的 Web 设置页加一个「检查更新 / 一键更新」入口

README

由 DeepSeek 最新模型翻译生成
dsh-ui-update 给 DeepSeek Harness 的 Web 界面加一个更新入口:设置 → 通用 → 「DSH 更新」。 一行设置项,显示当前版本、目标通道上的最新版本,并在有更新时提供一键更新按钮(后台执行 npm install -g @deepseek-ai/dsh@,完成后提示重启 DSH)。 发布通道 默认盯 next 通道(DSH 的日常发布走 next,latest 常常停在更早的稳定 rc 上)。 界面上的版本信息会带一个「通道 next」标记,明确告诉你比的是哪条线。 改通道不用动代码,编辑 cordis.patch.yml 里的 config.channel 再重启 DSH 即可: - insert: - id: dsh-ui-update name: 'dsh-ui-update' config: channel: next # latest / next / alpha,或任意已存在的 dist-tag channel 会被 TAG_PATTERN 校验,非法值一律忽略并退回 next。 POST /api/dsh-update/apply 仍然接受显式 {"tag": "..."}(已知 dist-tag 或精确版本),所以想临时装某个具体版本不需要改配置。
展开完整文档(README 剩余 1 节)
dsh-ui-update

给 DeepSeek Harness 的 Web 界面加一个更新入口:设置 → 通用 → 「DSH 更新」。

一行设置项,显示当前版本、目标通道上的最新版本,并在有更新时提供一键更新按钮(后台执行 npm install -g @deepseek-ai/dsh@,完成后提示重启 DSH)。

发布通道

默认盯 next 通道(DSH 的日常发布走 next,latest 常常停在更早的稳定 rc 上)。
界面上的版本信息会带一个「通道 next」标记,明确告诉你比的是哪条线。

改通道不用动代码,编辑 cordis.patch.yml 里的 config.channel 再重启 DSH 即可:

- insert:
- id: dsh-ui-update
name: 'dsh-ui-update'
config:
channel: next # latest / next / alpha,或任意已存在的 dist-tag

channel 会被 TAG_PATTERN 校验,非法值一律忽略并退回 next。
POST /api/dsh-update/apply 仍然接受显式 {"tag": "..."}(已知 dist-tag 或精确版本),所以想临时装某个具体版本不需要改配置。

界面行为

| 状态 | 表现 |
| 尚未检查 | 显示「当前版本 / 最新版本 = 未知」与检查按钮 |
| 已是最新 | 绿色「已是最新」,没有更新按钮 |
| 有新版本 | 「有新版本可用」+ 版本号 + 通道名,出现「立即更新」按钮 |
| 更新中 | 按钮变为「更新中…」,下方实时显示 npm 输出(每 2s 轮询) |
| 更新成功 | 「重启 DSH 后生效」,并显示已装版本与校验结论 |
| 校验未通过 | 红色「安装完成,但启动校验未通过…」+ 具体缺失/残留说明 |
| 更新失败 | 「更新失败」+ exit code + 日志尾部 |
| 查询失败 | 显示 registry 错误(例如离线),不误报「已是最新」 |

安装

从 GitHub 安装
dsh plugin --profile web add github:DaXiangzi666/dsh-ui-update

或装本地目录;开发时用 link: 更顺手,改完重启 DSH 就生效
dsh plugin --profile web add link:E:\projects\harness\dsh-ui-update

dsh plugin 会在 %USERPROFILE%\.dsh\profiles\web 下调用 pnpm,并把本插件自动登记进
dsh.profile.bundles。装完重启 DSH(关掉再执行 dsh web)——宿主半边的 HTTP 路由只在进程启动时注册。

若 pnpm 不可用,可以手工装:把 dsh-ui-update 目录放进 %USERPROFILE%\.dsh\profiles\web\node_modules\,再把 dsh-ui-update 追加到 %USERPROFILE%\.dsh\profiles\web\package.json 的 dsh.profile.bundles 数组里。

卸载

dsh plugin --profile web remove dsh-ui-update

HTTP 接口

全部仅允许回环来源(对端地址为 127.0.0.0/8 或 ::1,且 Host/Origin 也必须
是字面量回环主机名,防 DNS rebinding),写操作还要求 content-type: application/json。

| 方法 | 路径 | 说明 |
| GET | /api/dsh-update/state | 状态快照(当前版本、通道、dist-tags、更新任务) |
| POST | /api/dsh-update/check | 强制刷新 registry 上的 dist-tags |
| POST | /api/dsh-update/apply | body {"tag":"next"},启动后台全局安装;省略 tag 则用当前通道 |

state 里的 latest 指的是当前通道上的版本(tags[channel]),channel 是通道名, hasUpdate 就是拿它与 current 比较的结果。

tag 必须匹配 ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$ 且必须是已知 dist-tag 或精确版本,其余一律 400 —— 该值不会未经校验地进入 shell。

版本检测顺序

宿主半边按下列顺序探测「当前正在运行的 DSH」是哪个安装:

1. process.argv[1]/../package.json(实际入口旁边);
2. %APPDATA%\npm\node_modules\@deepseek-ai\dsh\package.json(Windows 全局安装位);
3. createRequire(import.meta.url).resolve("@deepseek-ai/dsh/package.json")。

三个候选都会随状态一起返回(variants),前端采用第一个能解析出版本号的。

更新安全

更新的是 DSH 自己,所以安装进程必须能独立活过「关掉 DSH 窗口」这一步,否则会把跑到一半的 npm 一起杀掉,留下半套安装。宿主半边做了两件事:

1. 脱离父进程:spawn(..., { detached: true }) + unref()。关掉 DSH 窗口不再牵连还在跑的 npm,让它自然跑完收尾。
2. 装完自动校验 + 修复:npm 退出后核对「已装版本」和「dsh 启动脚本是否以正式名存在」。发现 .dsh-* 临时名启动脚本就当场改回 dsh / dsh.cmd / dsh.ps1;同时报告残留的 npm staging 目录(node_modules\@deepseek-ai\.dsh-,可安全删除)。

校验结果随 job 返回:verified(是否通过)、installedVersion、repaired(自动修复清单)、verifyDetail(一句话结论,含残留提示)。只有 verified: true 才显示绿色「重启 DSH 后生效」。

已知事故(2026-09-26)

一次 0.1.5-rc.3 → 0.1.7-rc.2 的更新把机器留在「启动不了」的状态:包本体其实装好了(node ...\bin.js --version 正常),但 %APPDATA%\npm\ 下 dsh 的三个启动脚本停在临时名(.dsh-7e65g4Me / .dsh.cmd-qBi72Y8H / .dsh.ps1-WSSHMVlv),dsh 从 PATH 消失,dsh-start.bat 的 where dsh 失败 → 报「dsh not found」。

根因:当时的安装进程是 DSH 的子进程,用户按提示重启(关窗)时把没跑完的 npm 一起杀掉了。手动修复 = 把三个临时名改回正式名(脚本内容与名称无关,改完即用),再删掉残留目录 node_modules\@deepseek-ai\.dsh-3azxHlzE(267 MB)。上面的自动校验与修复就是把这套动作自动化了。

开发

不依赖 DSH、不依赖 react 的离线冒烟测试:

node dev\smoke-host.mjs # semver 比较、回环守卫、三条路由、shim 修复规划、真实 state 快照
node dev\smoke-client.mjs # bundle 包装、locale 注册、插槽注册形状、含校验结论的渲染分支

dev\smoke-client.mjs 用自带的极简 react / react/jsx-runtime 桩驱动组件,所以离线也能跑(profile 里的 react 是 junction,不保证可解析)。

两个脚本都按脚本自身位置定位 lib/,所以在任何工作目录下运行都可以。

许可

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

在设置页检查并一键升级 DSH 到最新版本

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部