dsh-git-commit:在 DSH 会话里用 /commit 暂存、生成说明并提交

前言

在 DeepSeek Harness(DSH)里改完代码,常见流程是切到终端:git add、对着 diff 想 commit message、再 git commit。若会话里已经配好模型路由,把「总结暂存区 diff」交给当前会话模型,往往比手写标题和要点更省事。dsh-git-commit 是社区维护的工作流插件,在宿主侧注册全局斜杠命令 /commit:对当前会话工作目录执行 git add -A,用会话当前模型概括 git diff --cached 并提交;也可自带标题跳过模型。它不 push、不建分支、不带浏览器 UI,适合只想在本地完成一次规范提交的场景。

这是什么

  • 名称与归属:插件包名 dsh-git-commit,维护者 qingyou002,仓库 github.com/qingyou002/dsh-git-commit,许可证 MIT(资料版本 1.1.1)。
  • 定位:DSH 插件,通过 commands 服务注册 /commit;凡提供该服务的 profile(不限于 web)均可使用。
  • 解决的问题:把「全量暂存 → 生成提交说明 → 本地 commit」收成一条命令,模型失败时仍有本地回退,避免改动长期停在「已暂存未提交」。

社区目录页:skillhub.cn/plugins/qingyou002/dsh-git-commit。目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

下面介绍 /commit 在资料中描述的五步流程。

  1. 检查当前会话工作目录是否在 Git 工作树内;否则停止并说明原因。
  2. 执行 git add -A(含未跟踪文件)。
  3. 若未传入自定义说明,将 git diff --cached 发给会话当前使用的模型(路由取自最新的 model/selection 或 request/header,中途换模型会生效),要求首行 模块: 描述(≤50 字),随后 3~8 条 - 要点,按模块或主题概括实质改动,不逐文件罗列。
  4. 使用 git commit -m <title> -m <bullets> 提交。
  5. 输出短 hash、要点列表,以及各文件的 +added / -deleted 统计。

跳过模型调用的两种情况:

  • 自带标题:/commit 修正登录超时 以该文字为标题,不调用模型。
  • 自动回退:未配置模型路由、调用超时或回复不可用时,插件按改动路径生成确定性中文标题并照常提交;输出开头会警告失败原因与尝试过的路由。模型错误不会把改动留在仅暂存状态。

明确不做的事:不 push、不创建或切换分支、不 amend、不操作远端;仅在工作目录执行 git add -A 与 git commit。

可选配置(默认值见下节):timeoutMs、maxDiffChars、maxTokens、maxTitleChars、maxBullets。

安装与启用

官方安装命令(README 原文):

dsh plugin --profile web add github:qingyou002/dsh-git-commit

dsh plugin 会在 profile 目录内转发到 pnpm,并把包写入 dsh.profile.bundles(插件声明了 dsh.bundle)。安装后该 profile 的每个会话可用 /commit;若 DSH 已在运行,需重启后生效。

环境要求(资料原文):

  • DSH 构建需提供 @deepseek-ai/dsh-commands、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-util-values(peerDependencies,文档写明在 0.1.5-rc.3 上测试)。
  • Node.js ≥ 20。
  • 系统 PATH 上有 git;缺失时插件会明确提示。
  • AI 撰写说明需会话内配置模型路由;无路由时仍可通过本地回退提交。

插件以当前 DSH 进程权限执行 shell 与 git;安装前建议自行查看仓库源码与 MIT 许可证。

配置

各项均可选,在 profile 的 patch 层覆盖,例如 ~/.dsh/profiles/web/cordis.patch.yml:

# ~/.dsh/profiles/web/cordis.patch.yml
- id: dsh-git-commit
  config:
    timeoutMs: 60000
选项 默认值 含义
timeoutMs 90000 总结用模型调用的超时(毫秒)。
maxDiffChars 48000 发送前暂存 diff 超过该字符数时截断(保留头尾并标记缺口)。
maxTokens 2048 总结调用的 token 上限。
maxTitleChars 100 首行硬上限,超出截断并加 ...。
maxBullets 12 从模型回复中保留的要点条数上限。

典型用法

先做无参调用,由模型写说明:

/commit

若标题已定,直接写在命令后:

/commit 修复登录超时

README 中的输出示例(格式供对照,非承诺每次相同):

✅ 已提交 a1b2c3d:后台: 修复令牌过期后未刷新

📝 改动要点
- 令牌过期时改为静默刷新并重试原请求
- 新增刷新失败后的登出提示

📦 文件清单(3 个文件:修改 2,新增 1)
  修改 application/api/auth.js (+18 -4)
  新增 application/api/token.js (+42 -0)
  修改 public/assets/app.js (+3 -1)

适用场景与注意

适合:在 DSH 智能体会话里完成本地改动后,希望一条命令完成暂存与提交、且提交说明希望与会话当前模型风格一致;或偶尔用手写标题快速提交。

注意:

  • 命令会 git add -A 暂存工作目录全部变更,提交前请确认无不应入库的文件。
  • 大 diff 会被 maxDiffChars 截断后再送模型,极大规模变更时生成质量取决于截断后的内容。
  • 需要远程同步时仍需自行 git push;本插件不涉及远端。

结尾

dsh-git-commit 把 DSH 工作流里的「暂存 + 写说明 + commit」收敛为 /commit,模型不可用时仍有本地标题回退,且不依赖浏览器界面。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye