前言¶
在 DeepSeek Harness(DSH)裏跑智能體時,工作區往往就是一個 Git 倉庫:要確認當前分支、未提交改動量,還要在合適時機開 Pull Request。這些信息分散在終端或 IDE 裏,和 Harness 主界面不在同一視線內。社區插件 dsh-git-status-pill(維護者 luigiinred)把 Git 摘要做成幀級浮動組件,掛在 web 客戶端的 shell.overlay 插槽上,不擋主界面交互,並附帶可編輯的 Create PR 流程。
這是什麼¶
dsh-git-status-pill 是 DSH 的客戶端插件:在 web profile 下於整個應用框架右下角(默認位置)顯示一個可拖動的「狀態 pill」。Host 側通過 HTTP 路由讀取當前會話工作區的 Git 狀態;Client 側輪詢該路由並渲染 UI。簡介原文爲:Floating git status pill for DeepSeek Harness: live branch, +/- line changes and a Create PR prompt.
包版本 0.1.0,許可證 MIT,要求 Node >= 20,與 Harness 的兼容聲明爲 dsh >= 0.1.0-rc.5(見 package.json)。
核心功能¶
下面能力均來自項目 README,按界面與數據劃分。
實時 Git 摘要¶
針對當前會話綁定的工作區倉庫,插件 live 展示:
- 分支名與倉庫名
- 行級增刪(基於
git diff HEAD --shortstat的 +/-) - 已改文件數、未跟蹤文件數、upstream,以及 ahead/behind
- 是否能在 Host 環境找到
gh(GitHub CLI)
Create PR 面板¶
展開後可編輯 PR 標題,並給出:
- 生成的
gh pr create命令 - 可直接交給 Agent 的提示文案
複製優先使用 navigator.clipboard,失敗時回退爲可選中的 textarea。
交互與掛載方式¶
- 渲染在 Harness 的
shell.overlay:全幀寬、默認可點透的浮層,浮於各列之上。 - 通過握把拖動位置;用 ✕ 隱藏。
- 非倉庫工作區時:在工作區及其父目錄中掃描
.git,以 chip 形式列出可選倉庫,並提供絕對路徑輸入(README 說明僅向下掃描會漏掉同級倉庫,故包含父目錄)。
沙箱與拒絕訪問¶
若 Harness 沙箱拒絕讀取會話工作區外的路徑,響應 payload 會帶 denied: true,而不是靜默顯示爲 0。
安裝與啓用¶
安裝命令須使用 README 原文,不要自行拼接 github:owner/repo 形式。
1、安裝包¶
從 registry 安裝:
dsh plugin --profile web add dsh-git-status-pill
或從本地 checkout / tarball 安裝(路徑改爲你的絕對路徑):
dsh plugin --profile web add /absolute/path/to/dsh-git-status-pill
dsh plugin … add 會在 profile 目錄內轉發到 pnpm,包會進入該 profile 的 node_modules。
2、寫入 bundles¶
確認 $DSH_HOME/profiles/web/package.json 中 dsh.profile.bundles 包含本包,例如:
{
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-git-status-pill"]
}
}
}
該列表用於應用本包的 cordis.patch.yml,插入 Host 行:
- insert:
- id: git-status-pill
name: dsh-git-status-pill
3、重啓 web profile¶
重啓後,pill 應出現在框架右下角(默認 DEFAULT_POS)。
README Status 一節寫明:業務邏輯已在真實倉庫上驗證過,但模塊打包、cordis.patch、HTTP 路由尚未在 profile 內完整跑通端到端安裝;建議把 0.1.0 視爲初版,安裝後查看 run card 與瀏覽器控制台。
典型用法¶
- 在 web profile 中打開帶 Git 工作區的 Harness 會話,確認右下角出現狀態 pill。
- 查看分支與 +/- 行變更;需要開 PR 時打開 Create PR 區域,改標題後複製
gh pr create或 Agent 提示。 - 若會話目錄不是 checkout,在 pill 提供的倉庫 chip 或絕對路徑字段中選擇/輸入目標倉庫後再讀狀態。
- 無
gh時按界面提示處理;Create PR 仍可通過 Agent 提示推進。
Host 與 Client 默認共用路由 /git-status-pill/status;Client 輪詢間隔 POLL_MS 默認 4000 ms。二者在 lib/index.js 與 lib/client.js 文件頂部爲常量,修改後需保證 composition 內路由 (kind, path) 唯一,否則註冊時會拋錯。
實現要點(可選閱讀)¶
| 半邊 | 文件 | 機制 |
|---|---|---|
| Host | lib/index.js |
ESM Cordis 插件,inject: ['webServer'],註冊一條 exact HTTP 路由,經 ctx.shell 讀 Git |
| Client | lib/client.js |
window.__ModuleLoader__ bundle,注入 slots,佔用 shell.overlay,fetch 輪詢 Host 路由 |
| 組合 | cordis.patch.yml |
bundle 應用時插入 Host 行 |
README 說明:Harness 上 Host→Client 的常規橋是 typert Remote,但當前安裝包內不含 @deepseek-ai/dsh-typert-generator,手寫生成 descriptor 易碎,故本插件選用 plain HTTP,代價是不參與 typert 的 scope 與 schema 校驗。
適用場景與注意¶
適合誰: 經常在 DSH web 客戶端裏改 Git 倉庫、希望一眼看到分支與 diff 規模、並想快速生成 PR 命令或 Agent 提示的開發者。
權限與安全: 插件以當前 DSH 進程權限運行;Host 會執行 Git(及檢測 gh)。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,自行判斷是否納入 profile。
生態說明: DSH 採用「一切皆插件」的擴展方式;SkillHub 目錄頁 爲社區收錄站點,與 DeepSeek / 幻方無官方從屬關係。