前言¶
在 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 在资料中描述的五步流程。
- 检查当前会话工作目录是否在 Git 工作树内;否则停止并说明原因。
- 执行
git add -A(含未跟踪文件)。 - 若未传入自定义说明,将
git diff --cached发给会话当前使用的模型(路由取自最新的model/selection或request/header,中途换模型会生效),要求首行模块: 描述(≤50 字),随后 3~8 条-要点,按模块或主题概括实质改动,不逐文件罗列。 - 使用
git commit -m <title> -m <bullets>提交。 - 输出短 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 仓库。