multi-platform-releaser:本地 DSH 插件的多平台一键发布

前言

在 DSH 里做完一个插件,真正费时间的往往不在写代码,而在重复发布:每个代码托管站各建仓库、补 README 与 package.json 元数据、git push、打 tag、建 Release;若要上 npm,还要再核对版本占用、npm publish 与 registry 回查。发新版时版本 bump 与多远端同步更容易漏一步。手工走完十几步,平台之间字段大同小异却要对每一遍。

下面介绍维护者 wodaimnd 的 multi-platform-releaser(DSH 侧栏名「多代码平台发布插件」),把「选插件 → 勾平台 → 填一套发布要素 → 预检 → 一次发布」收进同一页面,并暴露 Agent 工具与 HTTP API。本文事实均来自 GitHub 仓库 README 与仓库内 package.json。

这是什么

multi-platform-releaser 是 DeepSeek Harness(DSH)的 Web 插件,分类属「联网工具」。定位是:把本机上的 DSH 插件一次发布到多个代码平台(GitHub / Gitee / Codeberg,可多选,外加 npm):左侧栏打开发布台,勾选目标平台,补全一套发布要素后,同一个 commit 推到各远端,各自建仓、各自发 Release;某一平台失败不阻断其余平台,结果按平台分列。依赖本机 git、Node 自带的 npm 与各平台 REST API,无额外构建步骤。

社区目录页:skillhub.cn 插件页。源码与说明:github.com/wodaimnd/multi-platform-releaser。许可证为 MIT(package.json 所载)。

核心功能

界面与发现

  • 左侧栏入口「多代码平台发布插件」,中央页签:发布 / 平台配置 / 版本同步,主题随宿主浅色/深色切换。
  • 本地插件自动发现:扫描 profile 的 link: / file: 依赖、已注册工作区、当前目录与自定义扫描目录,识别带 dsh.bundle / dsh.client 的包;展示版本、README/LICENSE 状态、git 状态与已发布平台。

一套元数据 + 平台矩阵

name、version、description、descriptionZh、topics、license、README、releaseNotes 统一填写;每平台一行勾选,带状态徽章(未启用 / 未配凭据 / token 掩码)。勾选 npm 后展开 access、dist-tag、2FA OTP;未勾选 GitHub 时仓库字段只读且不参与校验(可仅发 npm)。

一键发布与容错

按钮文案随勾选变化(例如「发布到 GitHub + npm registry」)。任务按平台分组:GitHub 侧校验 → 建仓/复用 → topics → commit → push → tag + Release;npm 侧校验 → 版本守卫(与 registry latest 比较,同名或更低版本直接阻塞)→ npm publish → 回查。单平台失败不中断其他平台。

版本同步

矩阵维度:插件 × 平台 × 本地版本 × 远端版本 × 状态(已同步 / 落后 / 未发布等)。落后行可「发布到落后平台」,或先「只提升版本」做 patch/minor/major bump。

辅助能力

  • AI 补全发布信息:用 DSH 已配置的 DeepSeek 模型读 package.json / README / 文件列表,生成英文描述、中文简介、topics、Release 说明(只消耗模型额度,不自动发布)。
  • 仓库文件完善(预览后写入):README 双语模板、标准 LICENSE、Node/DSH .gitignore、package.json 只补缺失字段。
  • 预检:平台选择、git/npm CLI、凭据、包名、远端版本占用、工作区脏状态等;阻塞项标红并定位到设置或表单。
  • 演练模式:本地准备与提交,不建仓、不推送、不 Release;npm 用 --dry-run,可无凭据完整走通配置。
  • 嵌套仓库安全:插件位于父 git 仓库内时,在插件目录建独立 git 仓库,预检会提示父仓库可见的文件改动。
  • 凭据:GitHub 支持 GITHUB_TOKEN / GH_TOKEN、gh auth token、git credential 自动检测;npm 支持 NPM_TOKEN 环境变量兜底。持久化目录为 ~/.dsh/github-publisher/(config.json 0600)。
  • Agent 工具 multi_platform_releaser:state / scan / preflight / publish / job / cancel / settings / token / history / suggest 等,与 UI 共用同一 Publisher 服务。
  • HTTP API:/dsh-github-publisher/api/*(同源 + CSRF);含 platforms、platforms/verify、version/bump、sync/plan 等,细节见仓库 CONTRACT.md。

安装与启用

官方 README 给出的安装方式为通过 DSH 的 bundle 安装(需本机已有插件目录的绝对路径):

# 在 DSH 中执行(Agent 或插件管理器同款入口):
plugin_manager action=install_bundle target=/absolute/path/to/dsh-github-publisher

安装后刷新 DSH Web 页面(或重启 Desktop),左侧栏应出现「多代码平台发布插件」。卸载:设置 → 插件 → GitHub Publisher → 移除,或:

plugin_manager action=remove_bundle

说明:README 示例路径名为 dsh-github-publisher,与 npm 包名 multi-platform-releaser 并存;安装时 target 须指向你本机解压或构建后的 bundle 目录,勿凭插件名拼接未出现在文档中的命令。

首次配置与典型发布流程

连接平台

  1. 打开发布台,按「上手向导」:绑定 GitHub 令牌 → 选中插件 →(可选)绑定 npm 令牌。
  2. GitHub:经典 PAT 需 repo(私有仓库必须),可选 workflow;细粒度 PAT 需 Contents/Administration 写权限等(详见 README 表格与申请链接)。
  3. npm:在「平台配置」启用平台,填 Registry(默认 https://registry.npmjs.org)与 Access Token,「保存并验证」。自建 registry(Verdaccio 等)走 npm login + 从 ~/.npmrc 复制 token 的路线,界面会切换对应指引。

DeepSeek API token 不能替代 GitHub 或 npm 凭证;仅用于「AI 补全信息」。

一键发布(README 流程摘要)

  1. 左侧选择要发布的插件(可「重新扫描」或加扫描目录)。
  2. 「发布平台」勾选 GitHub / Gitee / Codeberg / npm;未配凭据的平台会提示「去配置」。
  3. 检查「发布信息」,按需展开 npm 的 access / dist-tag / OTP。
  4. 「发布选项」勾选生成 README/LICENSE、完善 package.json、创建 Release 等;首次可勾「演练」。
  5. 点「预检」,通过后再点发布按钮。

也可在 DSH Agent 中调用 multi_platform_releaser,由 form.platforms 决定本次目标平台。

适用场景与注意

适合谁:需要把自研 DSH 插件同时推到多个 forge 并可选上 npm;希望减少重复填表与手动 bump 版本;希望在 monorepo 子目录里安全地单独发一个插件包。

运行与权限:插件在当前 DSH 进程权限下执行本机 git、npm 子进程与 HTTPS 调用,并可写工作区文件与 ~/.dsh/github-publisher/。安装前应阅读源码、dsh.forge 声明的 effects(如 fs:write:workspace、child:git、child:npm、net:https)及 MIT 许可证,确认与自身环境策略一致。

生态说明:DSH 社区目录(如 skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系;本文不引用未在 README 中出现的用户案例或运营数据。

结尾

multi-platform-releaser 把多平台建仓、推送、Release 与 npm 发布收成一套发布要素和一次按钮操作,并用预检、演练、版本同步与 Agent/API 接入降低重复劳动。若要查看分类与简介,可打开 目录页;安装命令、凭据说明与接口契约以 GitHub 仓库 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜