前言¶
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 覈實,插件提供以下能力:
- 電量百分比:帶電池圖標,填充比例隨電量變化。
- 充電狀態:Client 將 Host 返回的
state譯爲可讀文案,包括Charging、Finishing charge、Fully charged、Plugged in、On battery等(英文界面;中文見 locale)。 - 電池供電時的剩餘時間:Host 在 discharging 場景下儘量提供
secondsLeft,Client 展示預估剩餘時間。 - 低電量提示:電池供電且低於 20% 時,讀數切換爲錯誤色。
- 跨設備一致: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