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
羽毛球分组比赛记分
小程序二维码

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

小夜