dsh-github-flow:把 GitHub 提交、推送与 Release 固化为全局 skill

前言

在 DeepSeek Harness(DSH)里用智能体改代码、推到 GitHub,常见做法是每次在会话里口述「先 commit 再 push」。网络代理时通时断、凭据是否已缓存、推完有没有和远端 HEAD 对齐、tag 是否打在正确提交上——这些判断容易因会话不同而重复踩坑,也缺少统一回执。

dsh-github-flow 由维护者 JiangHuai24 发布,分类为工作流。它向 DSH 全局 skill 层注册 github-push 及配套脚本,使各会话在说到「推到 GitHub」时走同一套固定流程,而不是临时拼凑命令。

这是什么

插件在 Host 侧注册名为 github-push 的 skill(含 scripts/gh-push.ps1),catalog 会实时刷新,所有会话可见。README 中的定位是:把「提交 → 推送 → 校验 → 发 Release」固化成共用流程,替代 ad-hoc 的 Git 操作。

社区目录页:https://www.skillhub.cn/plugins/JiangHuai24/dsh-github-flow
源码与说明:https://github.com/JiangHuai24/dsh-github-flow

核心功能

全局 github-push skill

内容 说明
github-push skill 全局层注册,所有会话可见
scripts/gh-push.ps1 一键执行:探测网络 → 提交 → 推送(带重试)→ 校验 sha → 打 tag → 发 Release

流程要点(来自 README):

  1. 推完后校验 remote refs/heads/<branch> == local HEAD。
  2. 不猜测网络:直连与 127.0.0.1:7890 交替失效时,先探测再选路。
  3. 凭据不落库:token 只从 Git Credential Manager 取,不写进仓库、不回显。

会话内一键推送

输入框左侧有 GitHub 按钮:点击后会在当前会话输入框填入推送指令(不会自动发送,需按回车)。填入的指令会:

  • 使用 github-push skill 推送当前工作区;
  • 推送前检查 README、LICENSE、package.json 中是否含个人账号、token、绝对路径,有则替换成占位符;
  • 提交信息与仓库描述不出现个人账号;
  • 推完后给出回执(分支、sha、校验、Release)。

侧边栏「↑ GitHub」面板

侧边栏底部有「↑ GitHub」按钮。打开面板后会列出所有 git 工作区(分支、改动数、路径),填写提交信息后点「提交并推送」即可。

  • 与 skill 走同一条 gh-push.ps1 流程:探测网络 → 提交 → 推送 → 校验 sha。
  • 有改动时提交信息必填;无改动时按钮变为「只推送」。
  • 面板底部显示脚本输出,成功或失败可直接查看。

多账号管理

设置页「GitHub 推送流程」→「GitHub 账号」:可添加账号名、切换当前账号、移除、按仓库绑定账号。

插件不保存任何 token,只记录账号名与提交身份;登录凭据由系统 Git Credential Manager 保管,推送时按需重新登录。

推送前脱敏扫描

POST /github-flow/scrub 会扫描将要推送的文件,报告个人账号(URL 之外)、GitHub token、Bearer token、私钥、邮箱等敏感项。只读检查,不会擅自修改文件。

设置页与 Host 接口

「设置 → GitHub 推送流程」展示 skill 名称、脚本路径与仓库地址,并支持一键复制命令;数据来自 Host 只读接口 /github-flow/info。

UI 尺寸与交互规范见仓库内 docs/ui-standard.md。

安装与启用

安装命令以 README 为准(需使用本仓库的绝对路径,不要用名称拼接其他 install 形式):

plugin_manager  action=install_bundle  target=<本仓库绝对路径>

插件行 id 为 github-flow。

package.json 中当前版本为 1.8.1,许可证为 MIT。插件在 DSH 的 skills 服务(Host 内置)之上工作;客户端配置为 web 平台、immediately: true。

安装前请自行阅读源码与许可证。插件以当前 dsh 进程权限运行,安装与启用前应确认是否符合你的安全策略。

典型用法

会话中自然语言触发

任意会话中说「推到 GitHub」,模型会加载 github-push 并执行类似下面的 PowerShell 调用:

powershell -NoProfile -ExecutionPolicy Bypass -File "<本仓库>\scripts\gh-push.ps1" `
  -RepoPath "<repo path>" `
  -Message "feat: ..." `
  -Tag "v1.2.3" `
  -ReleaseName "v1.2.3 - ..."
参数 说明
-RepoPath 仓库路径,默认当前目录
-Message 有未提交改动时必填
-Tag 可选,推送后在 HEAD 上打 tag
-ReleaseName 可选,配合 -Tag 创建或更新 GitHub Release
-DryRun 只探测与打印,不提交、不推送

依赖环境

README 列出的依赖如下:

  • Windows PowerShell 5.1+(脚本保持纯 ASCII,避免无 BOM UTF-8 被按 ANSI 解析)
  • git、curl.exe(Windows 10+ 自带)
  • DSH 的 skills 服务(Host 内置)

适用场景与注意

适合在 Windows 环境下、频繁通过 DSH 会话把本地仓库推到 GitHub,并希望提交信息脱敏、推送后校验 sha、可选打 tag 与发 Release 的开发者。

不适合期望在 Linux/macOS 上直接运行 gh-push.ps1 的场景(脚本与依赖说明面向 Windows PowerShell)。多账号场景下仍需自行通过 Git Credential Manager 完成登录,插件只管理账号名与绑定关系。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍该插件在资料中写明的能力。

结尾

dsh-github-flow 把 GitHub 推送相关的重复判断写进全局 github-push skill 与 gh-push.ps1,并通过侧边栏面板、设置页与脱敏扫描接口补齐操作入口。若你需要统一各会话的推送流程,可在核对源码后按 README 安装 bundle。

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

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

小夜