dsh-git-status-pill:Harness 會話裏的浮動 Git 狀態條

前言

在 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 與瀏覽器控制台。

典型用法

  1. 在 web profile 中打開帶 Git 工作區的 Harness 會話,確認右下角出現狀態 pill。
  2. 查看分支與 +/- 行變更;需要開 PR 時打開 Create PR 區域,改標題後複製 gh pr create 或 Agent 提示。
  3. 若會話目錄不是 checkout,在 pill 提供的倉庫 chip 或絕對路徑字段中選擇/輸入目標倉庫後再讀狀態。
  4. 無 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 / 幻方無官方從屬關係。

鏈接

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

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

小夜