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)。

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

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

小夜