前言¶
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