查看主程序版本并一键升级降级回滚
29.9/100
综合分
2
GitHub 星标
100
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-versionsnpm 源 · dsh-versions 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 61 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-versions @ 0.5.1
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:45:10
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 79 处,展示前 48 条)
- 读取本地文件lib/index.js:77
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) - 读取本地文件lib/index.js:156
const raw = readFileSync(stateFile(), 'utf8').replace(/^ FEFF/u, '') - 读取本地文件lib/index.js:161
const at = statSync(stateFile()).mtimeMs - 读取本地文件lib/index.js:172
return readFileSync(historyFile(), 'utf8') - 写入本地文件lib/index.js:192
mkdirSync(dest, { recursive: true }) - 读取本地文件lib/index.js:193
for (const entry of readdirSync(src, { withFileTypes: true })) { - 写入本地文件lib/index.js:198
else copyFileSync(s, d) - 执行外部命令固定命令lib/index.js:435
execFile('schtasks.exe', ['/create', '/f', '/tn', taskName, '/tr', tr, '/sc', 'once', '/st', '00:00'], { windowsHide: true }, (error) => { - 执行外部命令固定命令lib/index.js:437
try { execFile('powershell.exe', ['-NoProfile', '-WindowStyle', 'Hidden', '-ExecutionPolicy', 'Bypass', '-File', ps1], { windowsHide: true, detached: - 执行外部命令固定命令lib/index.js:446
execFile('schtasks.exe', ['/run', '/tn', taskName], { windowsHide: true }, (runError) => { - 读取本地文件lib/index.js:483
if (fw === null || !existsSync(fw.dshDir) || !existsSync(fw.binPath)) { - 写入本地文件lib/index.js:508
mkdirSync(rollbackDir, { recursive: true }) - 写入本地文件lib/index.js:521
copyFileSync(join(profileDir, 'cordis.patch.yml'), join(backupDir, 'cordis.patch.yml')) - 写入本地文件lib/index.js:522
copyFileSync(join(profileDir, 'package.json'), join(backupDir, 'profile-package.json')) - 写入本地文件lib/index.js:528
writeFileSync(stateFile(), 'starting|升级前快照失败(不影响升级):' + String(snap.error), 'utf8') - 发起网络请求lib/client.js:153
const response = await fetch(path, body === undefined - 读取本地文件lib/snapshot.js:32
const raw = JSON.parse(readFileSync(join(dir, 'meta.json'), 'utf8')) - 读取本地文件lib/snapshot.js:47
if (!existsSync(join(dir, 'package.json')) || !existsSync(join(dir, 'meta.json'))) return false - 读取本地文件lib/snapshot.js:51
const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8')) - 读取本地文件lib/snapshot.js:60
if (!existsSync(snapshotsDir)) return [] - 读取本地文件lib/snapshot.js:63
names = readdirSync(snapshotsDir) - 读取本地文件lib/snapshot.js:73
st = statSync(dir) - 删除本地文件递归lib/snapshot.js:93
rmSync(dir, { recursive: true, force: true }) - 写入本地文件lib/snapshot.js:118
mkdirSync(snapshotsDir, { recursive: true }) - 删除本地文件递归lib/snapshot.js:119
rmSync(dest, { recursive: true, force: true }) - 写入本地文件lib/snapshot.js:122
writeFileSync(join(temp, 'meta.json'), `${JSON.stringify({ version, at: (deps.now ?? Date.now)() })}\n`, 'utf8') - 写入本地文件lib/snapshot.js:123
renameSync(temp, dest) - 写入本地文件lib/snapshot.js:144
renameSync(installDir, aside) - 删除本地文件递归lib/snapshot.js:154
rmSync(installDir, { recursive: true, force: true }) - 写入本地文件lib/snapshot.js:155
renameSync(aside, installDir) - 删除本地文件递归lib/snapshot.js:160
if (moved) rmSync(aside, { recursive: true, force: true }) - 读取本地文件lib/shim.js:74
return readFileSync(legacyTargetFile(deps), 'utf8').includes(MARKER_LEGACY_API) - 读取本地文件lib/shim.js:82
const content = readFileSync(legacyTargetFile(deps), 'utf8') - 读取本地文件lib/shim.js:93
if (!existsSync(target)) return { ok: false, error: '目标文件不存在:' + target } - 读取本地文件lib/shim.js:94
const content = readFileSync(target, 'utf8') - 写入本地文件lib/shim.js:100
mkdirSync(dirnameOf(orig), { recursive: true }) - 写入本地文件lib/shim.js:101
writeFileSync(orig, content, 'utf8') - 写入本地文件lib/shim.js:103
writeFileSync(target, patched, 'utf8') - 写入本地文件lib/shim.js:106
writeFileSync(target, content, 'utf8') - 读取本地文件lib/shim.js:114
if (!existsSync(target)) return { ok: true } - 读取本地文件lib/shim.js:115
const content = readFileSync(target, 'utf8') - 写入本地文件lib/shim.js:120
writeFileSync(target, original, 'utf8') - 写入本地文件lib/shim.js:127
writeFileSync(target, stripped, 'utf8') - 删除本地文件递归lib/shim.js:176
rmSync(target, { recursive: true, force: true }) - 删除本地文件递归lib/shim.js:186
rmSync(target, { recursive: true, force: true }) - 执行外部命令来自配置/变量lib/shim.js:327
execFileSync(deps.nodePath ?? process.execPath, ['--check', file], { stdio: 'pipe' }) - 读取本地文件lib/compat.js:162
source = readFileSync(join(dirname(pkgPath), 'lib', 'index.js'), 'utf8') - 读取本地文件lib/compat.js:164
try { source = readFileSync(pkgPath.replace('package.json', 'index.js'), 'utf8') } catch {}
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 查看主程序版本
- 在线升级降级重装
- 历史版本秒级回滚
最近更新
在 GitHub 查看全部 →v0.5.12026-09-03
插件兼容性检查:安装前预警不兼容的第三方插件。
· 版本面板点「安装」进入确认态时,自动检查目标版本 dsh-settings 是否缺少
已装插件依赖的导出(如 0.1.2 移除的 settingsNamespace / installSettingsSection)
· 不兼容插件列表醒目展示(名称/版本/缺失符号),检查失败不影响安装
· 新增 GET /dsh-versions/compat?target= 接口
安装:dsh plugin --profile web add dsh-versions
v0.5.02026-09-03
生态兼容垫片:让按旧 API 构建的第三方插件在新版 dsh 上继续加载。
· 新增「兼容性垫片」面板(设置 → dsh 版本管理 → 兼容性垫片)
· 内置两个垫片:
- legacy-settings-api:在 0.1.2.x 上恢复 dsh-settings 的 settingsNamespace / installSettingsSection 导出(实现移植自 0.1.1-rc.2)
- restore-host-apiproxy:从本地版本备份恢复被 0.1.2 移除的 dsh-host-apiproxy 包
· 升级流程自动应用:升级脚本在重启服务前调用垫片 reconcile;boot 时也会对已启用垫片自动重应用/自动卸载(回滚到 0.1.1 系列后防重复导出)
· 安全模式:应用前备份、写后语法校验(失败自动还原)、幂等、可随时停用还原
实测记录:0.1.2-rc.1 上垫片可成功恢复 settings API,但 rc.1 另有 client boot manifest 格式变更(超出垫片范围),当前仍推荐 0.1.1-rc.2。
v0.4.12026-09-03
跨次版本安装兼容性警告 + 终态横幅 30 分钟过期。
· POST /upgrade 响应新增 compatWarning;目标与当前版本 major.minor 不同时,客户端二次确认处显示醒目警告(第三方插件可能无法加载)
· 升级/回滚终态横幅 30 分钟后自动消失,不再与实际运行版本矛盾
· 背景:0.1.2-rc.1 移除了 dsh-settings 的 settingsNamespace / installSettingsSection 导出并删除 dsh-host-apiproxy,旧版第三方插件生态全部无法加载——本版本警告正是针对此类跨次版本升级
安装:dsh plugin --profile web add dsh-versions(或下载附件 tgz 解压后 add 解压目录)
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-versions
DeepSeek Harness(dsh)主程序版本管理插件:在 dsh web 的 设置 → 版本管理(与 General / Plugins / Models 同级的独立分区)里,查看 dsh 主程序版本,一键检查 npm 更新,并支持在线升级 dsh 主程序(升级/降级/重装、备份回滚、升级历史、手动重启服务)。
只操作 dsh 主程序本身:升级引擎走 npm install -g @deepseek-ai/dsh@,备份回滚点完整复制框架目录,失败自动恢复;纯本地、仅限本机访问,不负责其它插件的安装/更新(其它插件由 dsh plugin 管理)。
设置 → 版本管理
┌──────────────────────────────────────────────────┐
│ dsh 版本管理 [重启服务] │ │ dsh 主程序 0.1.1-rc.2 │ │ 渠道 latest 0.1.1-rc.2 ✓ next — alpha — │ │ npm 版本列表 │ │ 版本 发布时间 渠道 操作 │ │ 0.1.1-rc.2 2026-08-30 … latest [重装] │ │ 0.1.2-alpha.3 2026-08-29 … [安装] │ │ …
展开完整文档(README 剩余 1 节)
dsh-versions
DeepSeek Harness(dsh)主程序版本管理插件:在 dsh web 的 设置 → 版本管理(与 General / Plugins / Models 同级的独立分区)里,查看 dsh 主程序版本,一键检查 npm 更新,并支持在线升级 dsh 主程序(升级/降级/重装、备份回滚、升级历史、手动重启服务)。
只操作 dsh 主程序本身:升级引擎走 npm install -g @deepseek-ai/dsh@,备份回滚点完整复制框架目录,失败自动恢复;纯本地、仅限本机访问,不负责其它插件的安装/更新(其它插件由 dsh plugin 管理)。
设置 → 版本管理
┌──────────────────────────────────────────────────┐
│ dsh 版本管理 [重启服务] │ │ dsh 主程序 0.1.1-rc.2 │ │ 渠道 latest 0.1.1-rc.2 ✓ next — alpha — │ │ npm 版本列表 │ │ 版本 发布时间 渠道 操作 │ │ 0.1.1-rc.2 2026-08-30 … latest [重装] │ │ 0.1.2-alpha.3 2026-08-29 … [安装] │ │ … │ │ 升级历史(2) 0.1.1-rc.2 → 0.1.2-alpha.3 失败 … │ └──────────────────────────────────────────────────┘
功能
- 版本总览:dsh 主程序当前版本 + 当前渠道(latest / next / alpha 对应的 dist-tags)
- 一键检查更新:查询 dsh 主程序在 npm registry 上的最新版本(10 分钟缓存)
- npm 版本列表:dsh 全部已发布版本 + 渠道(latest / next / alpha 对应的 dist-tags),可对任意已发布版本发起安装 / 重装(升级、降级均可)
- 升级引擎:升级前自动做本地版本快照 + 备份框架目录 → npm install -g (npmjs → npmmirror 双源,仍失败停服重试一轮)→ 以磁盘 package.json 版本为准校验 → 失败 robocopy 恢复备份 → 停服拉起新版本生效
- 快照秒级回滚:每次升级前自动为当前版本存本地快照(~/.dsh/dsh-versions/snapshots/),可对任意历史版本秒级回滚(免 npm、免网络;自动修剪保留 5 个)
- 升级历史:本地 history.jsonl 记录每次升级/回滚的 from/to/结果,可一键恢复到历史版本
- 手动重启:重启 dsh web 服务(schtasks 脱离服务进程树执行,日志写入 ~/.dsh/dsh-versions/)
本插件专注 dsh 主程序的版本管理;其它插件的安装/更新由 dsh plugin 管理,不在本插件范围内。
快照/回滚机制的设计思路参考了 SuCriss/dsh-version-update (Apache-2.0),代码为本项目原创 MIT 实现,见 STUDY.md。
安装
需要 dsh ≥ 0.1.0(dsh plugin 命令自 0.1.x 提供)。三种方式任选其一:
方式一:npm 包(发布后,推荐)
dsh plugin --profile web add dsh-versions
方式二:从源码目录(未发布 / 自编译时)
git clone https://github.com/shangdi178/dsh-versions
dsh plugin --profile web add ./dsh-versions
方式三:离线 tarball
npm pack # 在 dsh-versions 仓库根目录执行
dsh plugin --profile web add ./dsh-versions-0.3.0.tgz
装完重启 dsh web,进 设置 → 版本管理。
维护者发布到 npm / GitHub 的完整清单见 PUBLISH.md。
平台限制:版本查看 / 更新检查在所有平台可用;但升级 / 重装 / 恢复 / 手动重启引擎依赖 Windows 工具(robocopy / schtasks / Windows PowerShell 5.1),仅在 Windows 上提供——其他平台对应按钮会禁用并提示原因(服务端同样拒绝并返回 501)。
非 Windows 用户如需升级 dsh,请手动执行 npm install -g @deepseek-ai/dsh@。
HTTP 接口(环回,仅限本机访问)
| 路由 | 说明 |
| GET /dsh-versions/state | dsh 主程序版本 + 平台/引擎支持状态 |
| GET /dsh-versions/releases | dsh 全部已发布版本 + 渠道(dist-tags + 发布时间) |
| GET /dsh-versions/upgrade-status | 当前升级任务状态(文件态,可断连恢复) |
| GET /dsh-versions/history | 本地升级历史 |
| GET /dsh-versions/snapshots | 本地版本快照清单(usable/at + 是否忙态) |
| POST /dsh-versions/upgrade | 安装指定版本(升级/降级/重装,升级前自动快照 + 失败自动回滚),body {target} |
| POST /dsh-versions/restore | 从快照恢复指定版本(免 npm/网络;升级中拒绝),body {version} |
| POST /dsh-versions/relaunch | 手动重启 dsh web 服务 |
写接口带跨站防护:环回地址 + Host 白名单 + Origin / Sec-Fetch-Site 校验。
开发
零依赖、零构建:lib/ 即产物,直接可跑。
npm test # 版本比较 + 升级/重启脚本生成回归 + 快照回滚(node:test)
- 服务端(lib/index.js):cordis 插件,inject: ['webServer', 'loader'],经 ctx.webServer.register 挂载环回路由;升级/重启脚本生成器 buildUpgradeScript / buildRelaunchScript 以 __builders 导出供单测断言(已覆盖 PS 数组字面量拼接拆行、监听进程可见性、输出重定向等历史回归)
- 快照模块(lib/snapshot.js):升级前自动建版本键控本地快照、校验、秒级恢复、修剪;纯 node:fs 同步实现,可独立测试
- 客户端(lib/client.js):__ModuleLoader__ 包装,ctx.slots.inject("settings.section", …)
注册与 General / Plugins / Models 同级的「版本管理」独立设置分区,中英双语词典经 ctx.locale.register 注册
- 升级引擎产物:~/.dsh/dsh-versions/(状态、日志、备份、快照、历史)
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
shangdi178/dsh-versions
查看主程序版本并一键升级降级回滚
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目