dsh-battery-level-indicator:在輸入框下方顯示 Host 電腦電量

前言

DeepSeek Harness(DSH)的 Web UI 可以在手機或平板上打開,但界面裏很多狀態默認來自「正在看頁面的那臺設備」。若直接用瀏覽器 Battery Status API,手機訪問時會顯示手機電量,而不是跑 Harness 的那臺電腦。對長期在筆記本上跑 Agent、又用手機遠程看會話的開發者來說,這個偏差會干擾判斷機器是否還在電池上、還剩多少時間。

下面介紹社區插件 dsh-battery-level-indicator(維護者 northstacker,分類:客戶端)。它在消息輸入框正下方的 composer dock 裏顯示 Host 電腦的電量與充電狀態;同一 Web UI 在不同終端打開,讀數始終來自 Host。

這是什麼

插件全名對應 GitHub 倉庫 northstacker/dsh-battery-level-indicator。當前 bundle 版本爲 1.2.0(見 package.json),許可證 MIT。

一句話定位:在 DeepSeek Harness Web UI 的輸入框下方展示 Host 剩餘電量、充電狀態,必要時顯示預估剩餘時間;文案跟隨 Client 語言(en / zh)。

社區目錄頁:skillhub.cn 插件條目。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」,安裝方式以各插件 README 爲準。

核心功能

經 README 覈實,插件提供以下能力:

  1. 電量百分比:帶電池圖標,填充比例隨電量變化。
  2. 充電狀態:Client 將 Host 返回的 state 譯爲可讀文案,包括 Charging、Finishing charge、Fully charged、Plugged in、On battery 等(英文界面;中文見 locale)。
  3. 電池供電時的剩餘時間:Host 在 discharging 場景下儘量提供 secondsLeft,Client 展示預估剩餘時間。
  4. 低電量提示:電池供電且低於 20% 時,讀數切換爲錯誤色。
  5. 跨設備一致:1.1.0 起讀數移到 Host;Client 不調用 navigator.getBattery(),避免手機打開頁面時誤報手機電量。

Host 與 Client 分工如下:

  • index.js 在 Host 側採樣本機電池,結果緩存 4 秒,通過 GET /battery-indicator/state 以 JSON 返回;路由會走 Connection 的 Host/Origin 與 browser-authentication 檢查。
  • client.js 註冊到 conversation.composer.dock,輪詢上述路由(間隔 20 秒,並在 visibilitychange、focus 時刷新);優先嚐試文檔相對 URL,再嘗試 origin 根路徑,便於掛載部署;短暫失敗時保留上一次有效讀數。

無電池或採樣無法解析時,行內會明確說明,而不是猜測數值。

平臺支持

平臺 數據來源 說明
macOS /usr/bin/pmset -g batt(經 ctx.subprocess) 含充電狀態與剩餘時間
Linux /sys/class/power_supply/BAT*/ 使用 capacity、status,並由 energy_now / power_now 估算倒計時
Windows — 返回 unsupported-platform,界面提示電池不可用

兩條採樣路徑輸出同一 JSON 形狀,例如:

{ "ok": true, "available": true, "level": 82, "state": "charging",
  "charging": true, "secondsLeft": null, "powerSource": "AC Power",
  "sampledAt": "2026-10-28T06:10:58.570Z" }

state 爲封閉枚舉:charging、finishing、charged、discharging、idle、unknown。新增平臺只需映射到該集合,Client 側翻譯邏輯可複用。

安裝與啓用

官方 README 給出的安裝方式爲通過 Plugin Manager 安裝 bundle,目標爲本插件目錄(非 git clone):

plugin_manager → install_bundle → target: <this directory>

將 <this directory> 替換爲包含 package.json、cordis.patch.yml 等的插件根目錄。bundle 通過 cordis.patch.yml 向 UI 插入 battery-indicator 行;Client 片段在 dsh.client 中聲明爲 web 平臺、immediately: true,並注入 @deepseek-ai/dsh-client-locale 與 @deepseek-ai/dsh-client-ui-conversation。

安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件 Host 部分會以 當前 DSH 進程權限 執行 pmset 或讀取 sysfs,僅在你信任的來源上啓用。

典型用法

無額外配置項文檔:安裝並啓用 bundle 後,打開 Harness Web UI,在消息輸入框下方即可看到電量行。

若你在開發或審閱解析邏輯,可在插件目錄運行 README 中的測試(純函數解析器,無電池硬件也可在 CI 上跑):

node test/parse.test.mjs

README 說明該套件對真實 pmset 輸出與 sysfs 讀數共 58 項檢查。

遠程用手機查看會話時,只要 Host 側插件正常採樣,界面上顯示的仍是電腦電量——這是 1.1.0 的設計目標;1.2.0 起補充 Linux sysfs 支持,並將解析抽到 parse.js,同時修正 discharging 被誤判爲 charging 的順序問題。

適用場景與注意

適合:在筆記本或帶電池的 Linux/macOS Host 上長期跑 DSH,並經常從其他設備打開 Web UI,需要一眼確認 Host 是否插電、還剩多少電。

注意:

  • Windows Host 當前不支持採樣,界面會提示電池不可用。
  • 依賴 Host 路由 /battery-indicator/state 與 Connection 鑑權;部署路徑非站點根時,Client 會嘗試相對 URL 與根 URL 兩種解析方式。
  • 社區目錄星標等元數據以站點展示爲準;功能與版本以 GitHub README、package.json 爲準。

結尾

dsh-battery-level-indicator 把電量讀數從「瀏覽器所在設備」挪到「跑 Harness 的 Host」,並在 composer dock 固定展示,適合遠程看會話時對齊機器真實供電狀態。

  • 目錄頁:https://www.skillhub.cn/plugins/northstacker/dsh-battery-level-indicator
  • 源碼與說明:https://github.com/northstacker/dsh-battery-level-indicator
羽毛球分组比赛记分
小程序二维码

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

小夜