DSH(DeepSeek Harness)採用插件化架構,允許開發者根據需求擴展功能。在開發智能體或調試代碼時,開發者需要頻繁確認當前分支的變更情況。dsh-git-change 插件通過在界面右上角展示角標,解決了這一問題,無需離開輸入框即可獲取狀態。
插件由 melo7up 維護,當前獲得 4 顆星,基於 MIT 許可證開源。
核心功能¶
該插件主要在 DSH 的輸入框工具行右側、模型選擇器左側顯示一枚角標。
- 顯示邏輯:
- 如果當前工作區未在 git 倉庫中,整個圖標不渲染。
- 默認顯示一枚 14px 的灰色分支圖標,無圓底。
- 懸停時,向上彈出浮層,顯示分支名、變更文件數以及新增/刪除的行數(綠色/紅色)。
- 統計口徑:
- 統計本分支自己 commit 但未 push 的提交(按淨差異計)。
- 統計工作區已暫存 + 未暫存文件。
- 統計未跟蹤文件(按整文件行數計入新增)。
- 排除規則:
- 忽略
git pull別人的提交。 - 忽略 merge 帶進來的內容。
- 無 upstream(如新
git init或 detached HEAD)時,只統計工作區。
- 忽略
- 刷新機制:
- 掛載時、會話狀態變化時、懸停時自動刷新。
- 請求失敗時自動重試。
安裝與啓用¶
安裝過程分爲兩步:配置本地依賴路徑並掛載到 profile。
- 編輯
profile/package.json,添加依賴與 bundle 配置:
{
"dependencies": {
"dsh-git-change": "link:/absolute/path/to/dsh-git-change"
},
"dsh": {
"profile": {
"bundles": [ ..., "dsh-git-change" ]
}
}
}
*注意:本地開發通常使用 `link:/...` 路徑。*
- 進入 profile 目錄並執行安裝命令,建立軟鏈並寫入 lockfile:
cd ~/.dsh/profiles/desktop && pnpm install
- 重啓 DSH。配置僅在啓動時裝配,且運行中的 host 會緩存模塊,修改代碼後必須重啓才能生效。
典型用法¶
安裝並重啓後,插件會自動生效。若需驗證安裝或調試,可使用提供的驗證腳本:
- 驗證客戶端:
node tools/verify-client.mjs
- 驗證主機:
node tools/verify-host.mjs
注意事項與限制¶
- 位置漂移:角標在
conversation.input.right,受模型名長度影響,會在模型選擇器左側左右漂移(模型名越長,角標越靠左)。 - 統計上限:未跟蹤文件統計有上限(最多 200 個文件或單文件 1MB),超時顯示“統計已截斷”。
- 非 Live 會話:在歷史會話或歸檔會話中,由於拿不到 header,角標不會顯示。
- 權限模式:插件以只讀模式運行,設置了
GIT_OPTIONAL_LOCKS=0、GIT_TERMINAL_PROMPT=0和LC_ALL=C。 - 無構建步驟:客戶端代碼需直接調用
window.__ModuleLoader__.load加載,不經過打包工具。
結語¶
dsh-git-change 提供了輕量級的 Git 狀態反饋,幫助開發者更直觀地掌握當前分支的變更情況。如需查看源碼或提交 Issue,可訪問 GitHub 倉庫。