前言¶
在 DeepSeek Harness(DSH)里维护插件或 npm 包时,发布往往是一串彼此依赖的步骤:改版本、跑测试、打包、提交并打 tag、推远端、开 GitHub Release、再 npm publish,最后还要确认 registry 上真的是新版本。npm 的 publish 还可能返回 202 Accepted,命令成功退出并不等于包已经可查。社区目录 skillhub.cn 里归类为「工作流」的 dsh-release(维护者 KNLCXY)把这条链路收成 DSH 工具 release:默认只出计划,显式 apply 才改文件和写远端;只有在 registry 能查到且哈希对得上时,才在报告里认定发布成功。
这是什么¶
dsh-release 是给 DSH 提供的 release 工具:一次调用完成版本同步、测试、npm pack、git 提交/tag/推送、GitHub Release、npm 发布(token / staged / OIDC 等通道),并用 sha256 比对 npm 下载的 tarball、GitHub Release 附件 digest 与 本地 pack 产物 是否字节一致。仓库尚未发布到 npm,当前安装渠道以 GitHub 为准。许可证 MIT,package.json 版本为 0.1.1。
核心功能¶
两条硬规矩¶
- 默认只出计划。
action: "prepare"(也是默认)不改任何文件、不写远端,只展示将要执行的内容、风险与下一步建议;真正执行必须action: "apply"。 - 可核验才算成功。 报告各行有出处:从 npm 拉 tarball 算 sha256 与本地比;GitHub Release 附件的
digest与本地比。任一不一致则失败并写出两侧哈希。
固定流水线(apply)¶
顺序为:
版本同步 → 测试 → npm pack → git commit/tag/push → GitHub Release → npm 发布 → 核验 → (可选) 装进 profile
任一步失败即停止,报告说明卡在哪一步及原始错误。
工具参数(节选)¶
| 参数 | 说明 |
|---|---|
action |
prepare(默认)/ apply / setup-ci / verify |
repo |
仓库目录,默认当前会话工作目录 |
version / bump |
目标版本;bump 为 patch / minor / major |
channel |
auto(默认)/ token / stage / ci |
prerelease |
auto(默认)/ true / false |
changelog_entry |
apply 时插入 CHANGELOG.md 顶部的本版说明 |
notes / name / message |
Release 正文、标题、提交信息 |
install / profile |
发布后把产物装进某个 DSH profile |
github / tag / skip_tests |
关闭对应步骤 |
npm 发布三通道¶
应对 npm 逐步限制 bypass-2FA 令牌(账号类操作自 2026-08 起需交互式 2FA,直接发布预计 2027-01 起也会受影响):
| 通道 | 用途 |
|---|---|
token |
本机 ~/.npmrc 有可用凭证时直接 npm publish |
stage |
npm stage publish 进暂存区,网页 2FA 批准后公开 |
ci |
打 tag 后由 GitHub Actions 用 OIDC 换一次性凭证发布 |
channel 默认 auto:仓库已有 OIDC workflow 则走 ci(本地不再 publish);否则有凭证走 token;都没有则退回 stage。
release({ action: "setup-ci", repo: "…" }) 会生成含 id-token: write 的 .github/workflows/release.yml,并提示在 npm 侧执行 npm trust github …(需交互式 2FA;workflow 文件名须与配置一致,含 release.yml 扩展名)。
发布口径¶
0.x 一律预发布(GitHub Release 标 prerelease,不算 Latest);1.x 起为正式版。可用 prerelease: "true"/"false" 覆盖。
无 node/npm 环境时的自举¶
面向 PATH 里没有 node、npm 的机器:按序探活 git(含插件包内 ucrt64 等路径)、从 registry 缓存 npm CLI 到 ~/.dsh/storages/release/npm/、用 DSH 的 Electron 垫片充当 Node 跑 npm test;GitHub 令牌来自插件配置、dsh-github 存储或 git credential fill。机器上不必预先安装 Node 工具链。
安装与启用¶
从 GitHub 安装(README 给出的官方命令):
dsh plugin --profile desktop add github:KNLCXY/dsh-release
或使用本机源码目录:
dsh plugin --profile desktop add file:/path/to/dsh-release
改源码后需 bump package.json 的 version 再重新 add(pnpm 按版本号判断是否复制),并重启 DSH 才会加载宿主侧。插件以当前 DSH 进程权限运行,安装前应自行查看仓库源码与 MIT 许可证。
运行时配置写在 ~/.dsh/storages/release/settings.json,字段包括 gitPath、npmCli、npmVersion、githubToken、profile、access(默认 public)、verifyTimeoutMs(默认 240000)等。可通过 GET http://127.0.0.1:<GUI 端口>/_release/settings 查看当前探到的 git 与存储位置。
典型用法¶
先看计划,不改任何东西:
release({ action: "prepare", repo: "…/repo/dsh-websift" })
确认后再执行发布(示例为 patch bump):
release({ action: "apply", repo: "…/repo/dsh-websift", bump: "patch" })
为 OIDC trusted publishing 一次性生成 workflow:
release({ action: "setup-ci", repo: "…/repo/dsh-websift" })
适用场景与注意¶
适合: 在 DSH 会话里维护单个 package.json 的插件或 npm 包,希望发布步骤可预览、失败可定位,且要用哈希证明 npm、GitHub 与本地 pack 三份产物一致;或在 Windows 等未预装 node/npm 但仍需完整发布链的环境。
注意(来自 README 已知限制):
- 主要在 Windows 上实测;POSIX 有分支但未充分验证。
ci通道生成 workflow 后,npm 侧npm trust仍需人工 2FA,工具不能代点。- 无
package.json的test脚本会跳过测试并标注;不处理 monorepo,一次只发一个目录。 - 不会自动生成 CHANGELOG 正文,仅检查版本段落;需自动插入时传
changelog_entry。 - 生态里存在名称或定位相近的其他
dsh-release-*工具;本插件强调三处字节一致与 token/stage/OIDC 自动选型,安装时以仓库KNLCXY/dsh-release为准。
结尾¶
dsh-release 把「计划 → 执行 → 三源哈希核验」绑在同一条 release 工具里,并兼顾 npm 发布凭证迁移与无 Node 环境的工具链自举。目录页:https://www.skillhub.cn/plugins/KNLCXY/dsh-release;源码与文档:https://github.com/KNLCXY/dsh-release。