dsh-github-publisher:本地 DSH 插件一键发布到 GitHub

前言

在 DSH 里做完一个插件后,要把代码放到 GitHub 上供他人安装,往往要在网页建仓、补 README 与许可证、改 package.json 的 repository/homepage/keywords,再在本地 git init、配置身份、提交、推送、打 tag、建 Release。步骤多且重复,漏一步仓库就不像「可直接用的插件项目」。下面介绍维护者 Sun-0306 的工作流类插件 dsh-github-publisher(GitHub 发布台):在 DSH 左侧栏集中完成扫描、补全信息、预检与一键发布,也可通过 Agent 工具或 HTTP API 调用同一套逻辑。

这是什么

dsh-github-publisher 是 DeepSeek Harness(DSH)的 Web 插件,左侧栏入口名为「GitHub 发布台」。它面向本机已有、带 dsh.bundle / dsh.client 的 DSH 插件包:从 package.json 等推导仓库元数据,可选生成或保留 README、LICENSE、.gitignore,补全 package.json 缺失字段,再通过 GitHub REST API 与本地 git 完成建仓(或复用已有仓库)、提交、推送、打 tag 与创建 Release。无单独构建步骤,依赖本机 git 与 GitHub 凭证。

社区目录页:SkillHub · dsh-github-publisher
源码与文档:GitHub · Sun-0306/dsh-github-publisher(当前 package 版本 0.1.0,许可证 MIT)。

核心功能

左侧栏与插件发现

安装并刷新 DSH Web 后,左侧栏(order 50)出现「GitHub 发布台」。页面会扫描 profile 的 link:/file: 依赖、已注册工作区、当前目录与自定义扫描目录,列出本地插件及其版本、描述、README/LICENSE 状态、git 状态与已发布仓库信息。

发布信息补全与 AI 辅助

表单侧可编辑仓库名(由包名 slug 化)、中英文简介、topics、homepage、可见性、许可证、分支、tag 前缀、提交模板、作者名/邮箱等。卡片右上角「AI 补全信息」使用 DSH 已配置的 DeepSeek 模型读取 package.json、README 与文件列表,生成英文描述、中文简介、topics 与 Release 说明;仅消耗模型额度,不会自动发布到 GitHub。

仓库文件:先预览再写入

默认可在发布前预览将写入的内容:

  • README.md:双语模板(徽章、功能、克隆安装、目录结构、开发测试、License);已有 README 默认保留,可改为重新生成。
  • LICENSE:MIT / Apache-2.0 / BSD-3-Clause / GPL-3.0 标准全文,自动填年份与作者。
  • .gitignore:Node/DSH 插件通用模板。
  • package.json:只补缺失的 repository / homepage / bugs / keywords / license / author / description,不覆盖已有值。

预检与一键发布

「预检」检查 git 是否可用、token 是否有效、仓库是否已存在、命名与描述是否合规、提交身份、计划写入的文件、工作区脏状态、remote 是否将被改写等;阻塞项会标红并指向设置或表单。

「一键发布」在校验通过后按固定步骤执行:校验账号 → 读取插件 → 写文件 → 创建/复用仓库 → 设置 topics → git 提交 → 推送 → tag + GitHub Release → 写发布记录。界面显示 9 步进度与日志,可取消;未推送前取消不会在远端留痕,已写入的本地文件不会自动回滚。

勾选 演练 时只做本地准备与提交,不建仓、不推送、不创建 Release,无需 token 即可走通配置验证。

凭证与安全

GitHub 发布必须使用 GitHub 凭证(PAT、gh auth、环境变量 GITHUB_TOKEN/GH_TOKEN 或 git credential 等),DeepSeek token 不能代替 GitHub token。「AI 补全信息」才使用 DSH 的 DeepSeek 配置。

token 可选保存到本机 ~/.dsh/github-publisher/config.json(权限 0600);推送通过临时 GIT_ASKPASS,不会写入 .git/config。若插件目录位于父 git 仓库内,发布台会在插件目录建立独立 git 仓库,避免牵连 monorepo 的提交与远端;预检会提示父仓库可能看到文件改动。

Agent 与 API

同一套能力暴露为 Agent 工具 github_publisher(state / scan / preflight / publish / job / cancel / settings / token / history)。HTTP 接口前缀为 /dsh-github-publisher/api/*,需同源 CSRF token(详见仓库内 CONTRACT.md)。

设置中可配置 GitHub Enterprise 的 API 与站点地址,对企业实例建仓与推送。

安装与启用

README 给出的安装方式为本地 bundle 路径安装(将 target 换成本机上的插件目录绝对路径):

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

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

典型用法

首次连接 GitHub

  1. 打开发布台 → 右上角「设置」(未连接时页面顶部也有提示)。
  2. 通过「生成 Personal Access Token」打开 GitHub 授权(Classic 需 repo scope;Fine-grained 需 Contents/Administration 写权限与 Metadata 读权限),或手动在 GitHub token 设置页 创建后粘贴并「保存并验证」。
  3. 也可点「自动检测」读取环境变量、gh auth token 或 git credential 中的 github.com 凭证;检测到的 token 默认仅内存,点「保存」才落盘。

发布一个本地插件

  1. 在左侧列表选择要发布的插件(可「重新扫描」或在设置中添加扫描目录)。
  2. 检查右侧「发布信息」;需要时用「AI 补全信息」再手改。
  3. 在「发布选项」中按需勾选生成 README/LICENSE/.gitignore、完善 package.json、创建 Release 等;首次建议先勾「演练」。
  4. 点「预检」,确认目标仓库与文件计划(README 可预览)。
  5. 点「一键发布」,观察进度与日志;完成后可复制仓库、Release、commit 链接。
  6. 发新版时修改 package.json 的 version,再预检并发布;仓库已存在时默认复用并覆盖推送分支。

Agent 侧可让 DSH 中的 Agent 使用 github_publisher 完成扫描、预检或发布,例如说明「帮我用 github_publisher 把某个本地插件发布到 GitHub」。

适用场景与注意

适合谁:经常在本地开发 DSH 插件、希望把发布流程收成一页、减少手工建仓与文档模板的开发者;需要在发版前用演练模式验证配置、或希望通过 API/Agent 自动化同一流程的团队。

运行与信任边界:插件以当前 DSH 进程权限运行,会读写所选插件目录、调用本机 git 与 GitHub API,并在你确认「一键发布」后推送代码。安装前应在 GitHub 上阅读源码与 MIT 许可证,自行评估 token 保存与仓库可见性(公开/私有)。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 与 package.json 为准。

持久化数据默认位于 ~/.dsh/github-publisher/(设置、最近 50 条发布记录、表单草稿);测试可用环境变量 DSH_GITHUB_PUBLISHER_DIR 覆盖数据目录。

结尾

dsh-github-publisher 把「补文档、补元数据、建仓、推送、tag、Release」收进 DSH 左侧栏的 GitHub 发布台,并支持预检、演练、AI 补全信息与 Agent/API 复用。若你维护本地 DSH 插件并需要可重复的 GitHub 首发或发版流程,可从目录页了解概况,在 GitHub 查看完整说明与接口约定后再安装使用。

  • 目录页:https://www.skillhub.cn/plugins/Sun-0306/dsh-github-publisher
  • 源码:https://github.com/Sun-0306/dsh-github-publisher
羽毛球分组比赛记分
小程序二维码

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

小夜