前言¶
在 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。
典型用法¶
- 在 Composer 工具行點擊 提交 / Commit,對話框立即顯示「Reading the working tree…」。
- 宿主執行
git status或svn status --xml並分組;對話框列出各組的同時,會話當前模型爲每組命名(慢模型時進度條與按鈕保持 busy)。 - 審閱並編輯每組 message(下方可見模型建議、路徑與文件數)。
- 點擊 確認提交 / Commit:宿主重新分析、確認分組未變、校驗全部 message 後按組提交。
- 結果展示在對話框內;失敗時可 重新分析 / 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)。