dsh-routerai-usage:在 DSH Web UI 中显示 RouterAI 余额与会话真实消耗

前言

通过 DeepSeek Harness(DSH)走 RouterAI 做模型推理时,账户里还剩多少、当前会话(含子代理)实际花了多少,在默认 Web 界面里并不直观。若用公开价目表按 token 估算费用,RouterAI 经路由提供商计费的价格往往与价目表不一致——资料中以 deepseek/deepseek-v4.1-flash 为例,实测扣费约为价目表估算的 2,793×,简单「token × 公开单价」类插件容易偏差约三倍。

dsh-routerai-usage 由维护者 stopperino 发布,分类属于模型推理相关插件:在 Harness Web UI 输入框下方展示 RouterAI 个人账户余额,以及当前会话已发生的真实消耗,并按提供商、模型展开明细;子代理产生的请求一并计入。下面介绍其定位、能力与安装配置方式。

这是什么

插件包名 dsh-routerai-usage(npm 描述版本 1.2.1),面向已在使用 DSH Web 界面、且模型提供商为 RouterAI 的开发者。它不替代 RouterAI 或 DSH 核心,只在对话 composer 区域挂载用量小组件,数据来自 RouterAI 官方 API 与 Harness 会话日志中的 generation 标识,不向插件作者或第三方上报遥测。

界面与交互

小组件显示两行金额示例形态如下(货币为卢布 ₽):

505,14 ₽   ◎ 147,04 ₽

前者对应账户余额,后者对应当前会话累计消耗。点击数字可展开明细面板;仅点击会打开,鼠标悬停不会展开;再次点击、点击面板外或按 Escape 可关闭。

展开后可看到 RouterAI 汇总、请求次数、子代理分摊,以及「按提供商」「按模型」的 breakdown,形态与 README 示例一致。

为何费用更接近账单

RouterAI 对单次生成会通过路由提供商结算,插件对每一笔已完成的生成调用:

GET https://routerai.ru/api/v1/generation?id=<generation-id>   →   data.total_cost   (рубли)

generation-id 来自 Harness 会话日志:assistant/message → message.source.replayState.response.responseId,无需拦截或重放用户请求。每次生成的实际 ruble 成本按 id 缓存;id 对应已支付、不可变的一次请求,缓存不会因子序列变化而失效。资料称:重新打开已缓存会话时,848 条记录在约 12 ms 内解析完成,而冷缓存下约为 4 秒且涉及数百次请求。缓存仅存 generationId → 卢布,不含 token、模型、prompt 或会话正文。

网络与轮询

对外仅两类请求,均指向你在配置里设定的 RouterAI API 根路径:

请求 用途
GET /credits 个人账户余额
GET /generation?id=… 单次已支付生成的实际费用

余额轮询与是否有人查看小组件相关:组件挂载时客户端约每 1.5 s 访问 /rows,同时作为「有人在看」的信号,余额按 pollSeconds 更新;无人查看时主机将间隔拉长至 idlePollSeconds(默认 5 分钟),隐藏标签页时客户端停止轮询。资料对比:背景流量可从约 2880 次/天降至约 288 次/天量级。

安装与启用

官方 README 给出的安装方式为本地路径安装,或把包纳入 profile 并启用 bundle dsh-routerai-usage:

# 在本插件仓库目录下,或指向该目录的绝对路径
dsh plugin install /绝对路径/到/dsh-routerai-usage

插件以 MIT 许可发布,构建目标为 DeepSeek Harness >= 0.2.1-rc.3,运行环境要求 Node >= 20。DSH 生态是「一切皆插件」;社区目录页 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。安装前宜自行审阅源码与许可证——插件在 DSH 进程权限下运行。

配置

在 cordis.patch.yml 中,插件条目 id: routerai-usage、name: dsh-routerai-usage 的 config 支持:

- id: routerai-usage
  name: dsh-routerai-usage
  config:
    pollSeconds: 30                          # 有人看小组件时的余额刷新间隔
    idlePollSeconds: 300                     # 无人看时的余额刷新间隔
    baseURL: https://routerai.ru/api/v1      # API 根路径

pollSeconds 与 idlePollSeconds 下限均为 10 秒,且 idlePollSeconds 不会低于 pollSeconds。

API 密钥

RouterAI 密钥通过 Harness 凭据服务读取,名称与模型提供商 routerai 相同:ROUTERAI_API_KEY。插件不在本地持久化该密钥、不写入日志、不向浏览器回传。无密钥时小组件显示「无密钥」类提示,其余 Harness 功能照常可用。

兼容性与适用场景

客户端注册在 conversation.composer.dock,样式依赖主题 token --dsw-alias-*(各有回退值);重命名 token 可能略影响观感,但不至于无法渲染。

适合:已在 DSH Web UI 中用 RouterAI 做推理、需要对照账户余额与会话真实 ruble 消耗(含 subagent)的开发者。不适合:未使用 RouterAI、或不需要在 composer 区域看费用的场景。

参考链接

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

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

Xiaoye