dsh-tool-tariff:DSH 的峰谷时段查询与余额提醒插件

前言

如果要把任务安排在谷时跑、峰时到来前收尾,就得随时清楚现在是峰时还是谷时、下一次切换在几点。已有的做法是自己记一份时段表、靠手动核对,麻烦也容易忘;想确认 DeepSeek API 还剩多少余额,同样要放下手头的事去查。

dsh-tool-tariff 是一个 DSH(DeepSeek Harness)插件,把这几件事收进会话:模型可以直接回答时段问题,峰时来临前自动提醒,Web GUI 顶部栏还常驻一块实时状态徽标。DSH 的理念是「一切皆插件」,这类能力适合以插件形式挂载。下面按功能、安装、配置、用法、注意事项的顺序介绍。

这是什么

dsh-tool-tariff 由 omdsh-dev 维护,MIT 许可证,当前版本 0.0.2,npm 包名 @deepseek-ai/dsh-tool-tariff。一句话定位:峰谷电价时段查询 + DeepSeek API 余额查询 + 峰时切换提醒 + 顶部栏状态徽标。

拆开看,插件做四件事:

1、注册 tariffapi_balance 两个工具,供模型在对话中调用;
2、内置提醒调度器,按配置的时刻触发峰时切换提醒;
3、开放 /tariff RPC 通道(statusbalance 两个动作),供浏览器侧取数;
4、向 Web GUI 顶部栏注入一个状态徽标组件。

代码结构上,时段逻辑(src/tariff.ts)、余额查询(src/balance.ts)、提醒调度(src/reminder.ts)是三个独立模块,src/index.ts 负责接线,client/client.js 是浏览器侧的徽标组件。

核心功能

tariff 工具:峰谷时段查询

调用后返回三类信息:当前处于峰时还是谷时、完整时段表、下一次切换时刻。

默认时段表如下:

00:00 – 09:00  谷时
09:00 – 12:00  峰时
12:00 – 14:00  谷时
14:00 – 18:00  峰时
18:00 – 24:00  谷时

边界按「到达即切换」处理:09:00 整点即进入峰时。时段逻辑带时区换算,时区可用配置项 timezone 指定(IANA 名称,如 Asia/Shanghai),默认取宿主本地时区。

api_balance 工具:余额查询

查询 DeepSeek API 账户余额。端点默认 https://api.deepseek.com,可用环境变量 DEEPSEEK_BASE_URL 覆盖,与 DSH 内置 llm-deepseek 适配器一致。余额结果在 host 侧缓存 60 秒,缓存期内重复查询不会重复请求接口。

实现上依赖全局 fetch(Node 22+ 自带),插件的 engines 要求 node ^22.19.0 || >=24.0.0。若走非官方网关且该网关未实现 /user/balance 端点,会返回明确的 HTTP 错误信息。

峰时切换提醒

默认每天 08:50、13:50 各触发一个提醒窗口(提前 10 分钟),提示「10 分钟后进入峰时」,对应窗口 08:50–09:00 与 13:50–14:00,每个窗口每天提醒一次。时刻与窗口长度都可配置。

reminderWaketrue(默认)时,唤醒 agent 一轮、由模型播报提醒;设为 false 则仅注入 next-step 上下文,不产生模型调用。

Web GUI 顶部栏状态徽标

徽标挂在会话头部右侧(conversation.session.header.utilities 插槽,条目 id 为 tariff-status),显示三段内容:时间 | 当前时段与切换倒计时 | 账户余额。时间与倒计时每秒刷新,且为本地计算,不走网络;峰时显示橙色,谷时绿色。

余额不自动轮询:点击余额徽标才查询一次,host 侧另有 60 秒缓存,频繁点击不会反复打余额接口。查询中显示「查询中…」,连接不可用或未配置 Key 时显示「余额不可用」,悬停可见原因,可点击重试。

数据经专用 /tariff RPC 通道走 host 侧,API Key 只存在于 host 侧,浏览器不接触。这里有一个设计前提值得注意:插件不应占用 /api 通道——那是 DSH 网关(Typert Remote)独占的共享通道,第三方插件抢占会导致插件列表、命令执行等 Remote 功能静默失效,所以本插件使用了独立的 /tariff 通道。

安装与验证

先安装,再验证。以 Profile Bundle 方式安装到 web profile:

dsh plugin --profile web add github:omdsh-dev/dsh-tool-tariff

一次性任务或 headless 环境也要用时,安装到 headless profile:

dsh plugin --profile headless add github:omdsh-dev/dsh-tool-tariff

安装后验证插件已挂载:

dsh --profile web --dump-config | grep tool-tariff

命令有输出即说明挂载成功。注意:前端徽标需要重启 Web GUI 后才生效,因为 web profile 的 HMR 处于关闭状态。

配置

配置项全部可选,写在 cordis.yml 的 plugins.tool-tariff 下,文件位置为 $DSH_HOME/profiles/web/cordis.yml,或通过 --patch 传入。

字段 默认值 说明
timezone 宿主本地时区 IANA 时区名,如 Asia/Shanghai
baseURL $DEEPSEEK_BASE_URLhttps://api.deepseek.com 余额查询端点
apiKeyEnv DEEPSEEK_API_KEY 凭据引用名
reminderTimes ["08:50", "13:50"] 每天提醒时刻列表(HH:MM)
reminderWindowMinutes 10 每个提醒的窗口长度(分钟)
reminderTickMs 20000 提醒调度轮询间隔(毫秒)
reminderWake true true 唤醒 agent 由模型播报;false 仅注入 next-step 上下文
balanceCacheMs 60000 余额结果缓存毫秒数

配置示例:

plugins:
  tool-tariff:
    timezone: Asia/Shanghai
    reminderTimes: ['08:50', '13:50']
    reminderWake: true

典型用法

经过上面的安装与配置,在对话中直接提问即可:

  • 问「现在是什么时段?」或「什么时候进入峰时?」——模型会调用 tariff 工具;
  • 问「查一下 API 余额」——模型会调用 api_balance 工具;
  • 每天 08:50、13:50 自动收到峰时切换提醒,默认会唤醒模型用一句话播报。

余额查询有一个前提:先配置 DeepSeek API Key,两种方式任选其一:

1、在 DSH 设置页(模型/凭据页)配置凭据 DEEPSEEK_API_KEY
2、或导出环境变量 DEEPSEEK_API_KEY

适用场景与注意事项

适合两类使用者:需要按峰谷时段安排任务节奏、希望在峰时到来前收到提醒的人;想在会话里直接查 DeepSeek API 余额、并让顶部栏常驻显示的人。

使用前有几点需要注意:

  • 插件以当前 dsh 进程的权限运行,安装第三方插件前应先阅读其源码并确认许可证。dsh-tool-tariff 采用 MIT 许可证,源码在 GitHub 仓库公开。
  • 提醒的「每日一次」语义仅存在于进程内存:进程在提醒窗口中途重启,当天会再次触发(符合预期);提醒只投递给当前存活的顶层 agent,没有存活 agent 时静默跳过。
  • headless profile 没有 connection 服务,RPC 通道会自动跳过,两个工具与提醒功能不受影响。

小结

dsh-tool-tariff 把「现在什么时段、还有多久切换、API 还剩多少余额」这几件高频查询收进了 DSH:模型可答、顶部栏可见、到点会提醒,API Key 全程留在 host 侧。源码与文档见 GitHub 仓库 https://github.com/omdsh-dev/dsh-tool-tariff,也可以在社区插件目录查看它的条目:https://www.skillhub.cn/plugins/omdsh-dev/dsh-tool-tariff

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

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

小夜