前言¶
在 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¶
- 打开发布台 → 右上角「设置」(未连接时页面顶部也有提示)。
- 通过「生成 Personal Access Token」打开 GitHub 授权(Classic 需
reposcope;Fine-grained 需 Contents/Administration 写权限与 Metadata 读权限),或手动在 GitHub token 设置页 创建后粘贴并「保存并验证」。 - 也可点「自动检测」读取环境变量、
gh auth token或git credential中的 github.com 凭证;检测到的 token 默认仅内存,点「保存」才落盘。
发布一个本地插件¶
- 在左侧列表选择要发布的插件(可「重新扫描」或在设置中添加扫描目录)。
- 检查右侧「发布信息」;需要时用「AI 补全信息」再手改。
- 在「发布选项」中按需勾选生成 README/LICENSE/
.gitignore、完善package.json、创建 Release 等;首次建议先勾「演练」。 - 点「预检」,确认目标仓库与文件计划(README 可预览)。
- 点「一键发布」,观察进度与日志;完成后可复制仓库、Release、commit 链接。
- 发新版时修改
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