前言¶
在 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。