前言¶
在 DeepSeek Harness(DSH)里做智能体开发时,提交、打 tag、推送和建远端仓库往往有一套固定约定。常见做法是把整段 Git 规范写进 AGENTS.md,让它随系统提示常驻上下文;真正要提交时,模型还要自己跑 git status、git diff、git log 才能看清仓库现状。前者占 token,后者重复且容易漏步骤。
下面介绍社区插件 azazo1/dsh-git-commands:把提交、tag、push 与建仓库的规范收进插件配置,并在你输入对应斜杠命令时,自动采集只读 Git 信息一并注入会话,规范与状态都改为「用时再加载」。
这是什么¶
dsh-git-commands 由维护者 azazo1 发布,在 DSH 插件目录中归类为工作流。它注册五条斜杠命令——/commit、/commit-fast、/tag、/push、/repo-create——每条命令触发时执行一组只读 git(及少量项目文件)采集,再把插件内置(或可配置)的工作流规范文本与采集结果一起交给模型。命令本身不执行写操作;生成 commit message、打 tag、push、gh 建库等仍由模型在会话里按规范完成,远端写操作仍走 DSH 提权。
核心功能¶
五条命令与采集内容¶
| 命令 | 参数 | 触发时采集(全部只读) |
|---|---|---|
/commit |
[path] |
git status --porcelain,暂存区 diff 统计与内容;暂存区为空时改为相对 HEAD 的 diff,并附未跟踪新文件的 diff 片段;最近 N 条完整 commit message |
/commit-fast |
[path] |
git status --porcelain,最近 N 条完整 commit message(不采集 diff) |
/tag |
[version] [path] |
最近 5 个 tag,上一 tag 以来的提交(完整 message),项目版本文件,工作区状态 |
/push |
[path] |
分支、上游、领先/落后数量、远端列表、尚未推送的提交 |
/repo-create |
[path] |
是否已初始化仓库、远端、提交数、package.json 元数据、README 开头、顶层条目、.gitignore 情况 |
参数约定:
- 路径可为绝对路径或相对当前会话工作目录;省略则用会话工作目录;
~与~\会展开为家目录。 /tag可选版本号(如0.2.0或v0.2.0),顺序为/tag <版本号> <路径>。/repo-create的目标目录可以尚未git init;其余命令要求目标已是 Git 仓库。
/commit 在暂存区为空时,按插件约定把提交范围视为自上一次 commit 以来的全部改动,避免模型再自行跑 diff。diff 总行数受 diffLineLimit 约束,过大时会截断并在文本中标注。
与 AGENTS.md 的分工¶
插件内置规范覆盖原先 AGENTS.md 中与 commit、commit fast、tags、发布、push、gh 建库相关的段落,对应关系见 README。与命令无关的部分(例如 restore / checkout / rebase、stage)没有斜杠命令,建议继续留在 AGENTS.md。
跨平台与 shell 提示¶
插件调用 git 时不经过 shell,参数以数组直接交给 git,在 macOS、Linux、Windows(需 git 在 PATH)上行为一致。注入上下文时会带上运行环境与默认 shell(例如 运行环境: win32, 默认 shell: cmd.exe),规范文本据此要求模型在 Windows 上避免 cmd 不支持的跨行引号,改用 git commit -F <文件> 等方式。
安装与启用¶
引擎要求:@deepseek-ai/dsh-* 不低于 0.1.7-rc.2,且仍在 0.1.x(<0.2.0)。更早的引擎线无法安装当前插件版本。Web 与 Desktop 共用同一套 Web 应用与同一安装包,无需分别构建。
Web 端(装进 web profile):
dsh plugin --profile web add azazo1/dsh-git-commands
装完后重启 dsh web,浏览器刷新一次页面。
桌面端(装进 desktop profile):由 Electron 应用独占管理,CLI 的 dsh plugin --profile desktop 会被拒绝。在应用内插件管理器的安装入口填写包名 azazo1/dsh-git-commands 或本地目录,安装后重启应用并刷新窗口。
典型用法¶
在已打开 Git 仓库的会话中,按任务选命令即可;插件会先跑只读采集,再注入规范与数据。
- 准备提交(含 diff):输入
/commit或/commit [path]。模型依据注入的 status、diff 与最近 commit 风格撰写 message,并在会话中执行git add/git commit(按你的 AGENTS 或插件规范)。 - 快速提交(不看 diff):
/commit-fast,适合改动面已清楚、只需对齐历史 message 风格的场景。 - 发版打 tag:
/tag 1.2.0或/tag v1.2.0 ./my-project,结合 tag 历史、自上一 tag 的提交与版本文件决定 tag 与 changelog 动作。 - 推送前核对:
/push,对照分支、上游与未推送提交再决定是否 push。 - 新建远端仓库:对尚未初始化或刚起步的目录使用
/repo-create,结合package.json、README 与目录结构生成建库步骤(通常涉及gh等,需提权)。
配置可在 Settings → Plugins 表单中编辑;也可写入 profile 的 cordis.patch.yml,例如:
- id: dsh-git-commands
name: dsh-git-commands
config:
logLimit: 10
diffLineLimit: 1500
五个命令的规范正文、以及 logLimit(历史条数)、diffLineLimit(diff 行数上限)均为 Config 字段,默认可 reset 回内置文本。
适用场景与注意¶
适合谁:已经在 DSH 里用 AGENTS.md 约束 Git 流程、又希望减少常驻 prompt 与重复 git 探查的开发者;需要 /commit 与 /tag 等固定入口的团队工作流。
权限与安全:插件以当前 DSH 进程权限运行,只读采集仓库内文件。安装前建议在 GitHub 仓库 查看源码与 MIT 许可证(当前包版本 0.1.0)。目录页星标为 0,不代表功能缺失,仅反映社区曝光度。
隐私:注入内容会进入会话日志并随模型请求发送。staged diff、暂存区为空时的全量改动(含未忽略的普通文本未跟踪文件)、README 片段等会离开本机,与正常对话中粘贴代码类似。未跟踪文件仅读取未被 .gitignore 忽略的文本;二进制或超过 64 KiB 的文件只列名。
生态说明:DSH 采用「一切皆插件」的扩展方式;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系,安装来源以目录页与 GitHub 为准。
结尾¶
dsh-git-commands 把 Git 提交、tag、push 与建库规范从常驻 AGENTS.md 挪到按需触发的斜杠命令,并在触发时自动附带仓库状态与历史,减少重复上下文与模型侧只读 Git 调用。若你正在整理 DSH 工作流,可从目录页安装并在 Settings 中微调规范文本与 logLimit / diffLineLimit。