DSH Git Commit:Composer 里的一键分组提交

前言

在 DeepSeek Harness 里改完代码,常见做法是再开一轮对话,让模型写 commit message、跑 git commit,对话里会多出 command 节点和工具调用;模型传输一旦失败,还可能把「半成品的提交意图」留在会话里。若工作区改动跨多个目录、类型混杂,手工拆成若干次 Angular 风格提交也费时。

下面介绍社区插件 DSH Git Commit(@eternalheart/dsh-git-commit,维护者 wh131462,GitHub:wh131462/dsh-git-commit)。它在 Composer 工具栏提供 提交 / Commit 按钮:读取 Git 或 SVN 工作区、按 Angular 的 type/scope 分组、用当前会话模型为每组生成 message,经确认后由插件自身走宿主 JSON 通道执行提交,不追加聊天消息、不占用 agent 回合、不插入 command 节点。

这是什么

DSH Git Commit 是 DeepSeek Harness 的工作流类插件(社区目录分类:工作流)。npm 包名 @eternalheart/dsh-git-commit,当前资料中版本 2.0.1,许可证 MIT,运行时要求 Node >= 20。

交互流程(README 原文):

click → dialog opens immediately → git/svn status → type/scope buckets
      → one model call (progress inside the dialog) → edit → commit

Git 仓库与 SVN 工作副本均支持;配置项 vcs: auto 自动选择(git-svn 检出时优先 Git),也可用 vcs: git / vcs: svn 固定。

核心功能

对话框内可见进度

点击后对话框立即打开,依次出现「Reading the working tree」、「Naming N groups with \<model>」、「Committing」。关闭对话框会中止仍在进行的模型调用。

Git 与 SVN

Git 提交对每组只 stage 明确路径;SVN 对新文件先 svn add 再按路径提交,每组一次 revision。未解析的 SVN 冲突会在分析阶段拦截,插件不会代你执行 svn update。

Angular 规范与校验

分组命名由模型完成;header 不符合 Angular 规则时会规范化,并最多进行 README 所述的一轮 targeted repair;仍失败则该组留空并阻止提交,不会静默退回通用文案。宿主侧强制执行 @commitlint/config-angular:每组一个 type、header ≤ 72、subject ≤ 50、显式路径,禁止 --amend / --force / --no-verify。

不经过对话与 command 节点

按钮调用插件在宿主上的 JSON 通道,不追加 command/run 节点、不写聊天消息、不跑 agent 工具。

确认前可编辑、提交前全量校验

每组 message 可在 textarea 中修改;路径、文件数、跳过的敏感文件与模型说明均可见。在第一组写入 VCS 之前校验所有 message,避免第 3 组 header 非法时前两组已经提交。

Git 安全 staging

不会把提交前已存在的 index 与本次分组混用;若检测到 staged 文件,对话框会列出路径并提示 release 后继续。某组失败时会把该组从 index 撤出,便于重试。

分组过期检测

确认提交前会重新读工作区;若分组与编辑期间不一致,会要求重新分析,避免用旧 message 提交新文件集合。

敏感路径跳过

.env*、*.pem、*.key、*.p12、*.pfx、*.keystore、*.jks、id_rsa* 等会被排除并报告;.env.example / .sample / .template 仍允许。

其他

中英文 UI、主题 token、焦点与 Escape、无障碍 dialog 属性;宿主侧零运行时 npm 依赖(Node 内置模块),客户端 React 来自 Harness 模块表。

安装与启用

DeepSeek Harness 下安装(命令来自 README):

# from npm
plugin_manager install_bundle  target: "@eternalheart/dsh-git-commit"

# from GitHub
plugin_manager install_bundle  target: "github:wh131462/dsh-git-commit"

# from a local tarball
plugin_manager install_bundle  target: "/absolute/path/eternalheart-dsh-git-commit-<version>.tgz"

也可在 Web 侧栏 Plugins → Add plugin 粘贴相同 spec。插件装入当前 profile,对该 profile 下所有会话生效。

依赖与前提(README Requirements):

  • Harness 标准宿主服务:webServer、connection、sessions、workingDirectory、llm、agentDefaultModel 及客户端插槽。
  • git 和/或 svn 在 PATH 上;插件还会探测 /usr/bin/git、/opt/homebrew/bin/git、/usr/local/bin/git 及对应 svn 路径,便于 Finder 启动的应用找到二进制。
  • 生成语义化 message 需要可用模型路由;若 useModel: false,则跳过模型,全部手写 message。

典型用法

  1. 在 Composer 工具行点击 提交 / Commit,对话框立即显示「Reading the working tree…」。
  2. 宿主执行 git status 或 svn status --xml 并分组;对话框列出各组的同时,会话当前模型为每组命名(慢模型时进度条与按钮保持 busy)。
  3. 审阅并编辑每组 message(下方可见模型建议、路径与文件数)。
  4. 点击 确认提交 / Commit:宿主重新分析、确认分组未变、校验全部 message 后按组提交。
  5. 结果展示在对话框内;失败时可 重新分析 / Analyze again。提交过程中关闭对话框会中止;非 committing 状态下 Escape、遮罩或关闭按钮可 dismiss。

阶段与失败行为见 README 表格:analyzing(干净树或非仓库会关对话框并提示)、naming、edit、committing(含 stale / staged-index 冲突需重分析)、done。

配置

在 profile 的 cordis.patch.yml 中覆盖插件行(节选):

- id: smart-commit
  name: '@eternalheart/dsh-git-commit'
  config:
    vcs: auto          # auto | git | svn
    gitPath: ''
    svnPath: ''
    timeoutMs: 20000
    maxGroups: 6
    useModel: true
    modelTimeoutMs: 60000
    maxInputChars: 24000
    maxTokens: 2000
    repairRounds: 1
字段 默认 含义
vcs auto 优先 Git,否则 SVN;git / svn 固定适配器
gitPath / svnPath 空则自动探测 可指定二进制路径
timeoutMs 20000 单次 git/svn 调用超时
maxGroups 6 超过时分组策略见 README(资料截断处说明 whole type)
useModel true false 时全部手写 message
modelTimeoutMs 60000 模型调用超时
maxInputChars 24000 输入字符上限
maxTokens 2000 生成长度上限
repairRounds 1 header 修复轮数

适用场景与注意

适合在 Harness 内日常开发、希望把「分组 + 规范 message + 实际 commit」收成 Composer 一键流程的开发者,尤其是 monorepo 或多 scope 改动需要拆成多条 Angular 风格提交时。

安装前建议自行阅读 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限执行 git/svn,与你在终端里同一用户身份操作仓库等价。社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,仅为社区收录站点。

结尾

DSH Git Commit 把 Angular 分组、模型命名与 VCS 执行收进 Composer 对话框,减少为提交多开 agent 回合。进一步了解可访问社区目录页与 GitHub README(含 README_CN.md)。

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

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

小夜