dsh 主程序版本管理,位于独立设置分区:对照 npm dist-tags 显示已装版本、检查更新,可安装/升级/降级/重装任意已发布版本,升级前自动建本地快照,失败自动回滚,支持基于快照的回滚与升级历史。跨次版本安装前,会比对目标版本 @deepseek-ai/dsh-settings 的导出与已装插件的具名导入,标出升级后将无法加载的插件;并可启用/停用可逆兼容垫片,把被移除的旧 API 移植回框架文件。升级/恢复/重启引擎仅 Windows 可用,版本查看与更新检查各平台通用。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-versions
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:shangdi178/dsh-versions
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
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
链接
同类插件
yjh051108/dsh-routing-suite★ 6994
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3762
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
first-fluke/oh-my-agent#dsh★ 1357
在工具执行前后以及尝试结束当前轮次时运行项目 OMA 检查。随插件安装 OMA CLI 依赖,并在首次使用时初始化未配置的项目。需要 Node.js 22+;首次初始化需要网络连接和项目目录写入权限。
MichengAI/dsh-skills-manager★ 444
在设置里管理本地 DSH 技能,并只读查看公共 Agent 技能。
hust-open-atom-club/oh-dsh★ 324
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Fishquito7/dsh-skill-mcp-panel★ 248
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。