dsh-openrouter-spend:在 DSH 里看 OpenRouter 真实账单

前言

用 DeepSeek Harness(DSH)走 OpenRouter 做推理时,会话里常见的 token 统计只能反映用量,不能直接对应 OpenRouter 账户里「实际扣了多少钱」。本地按价目表估算也会和账单有偏差。下面介绍社区插件 dsh-openrouter-spend:它通过 OpenRouter 自带的 Analytics API 拉取 total_usage(USD 实扣),在 Composer 下方和 Settings 里展示当日花费、按 key / 模型拆分,以及预付余额等汇总信息。

这是什么

dsh-openrouter-spend 是 DeepSeek Harness 的 Web 侧插件,维护者为 RyabykinIlya,在 SkillHub 目录 中归类为「模型推理」。当前 npm 版本为 0.6.0,许可证 MIT,依赖 Node >= 22.19。

插件声明的数据来源是 OpenRouter 官方接口上的计费结果,而不是本地 token 乘单价。数字含义在 README 中有明确定义:花费来自 POST /api/v1/analytics/query 按 UTC 日、API key、模型分组的 total_usage;「今天」指当前 UTC 日;余额来自 GET /api/v1/credits 的 total_credits − total_usage。

核心功能

Composer 下方的 spend chip

输入框下方会出现一块 spend chip,展示 session/day:当前会话在今天、在所选 API key 上的花费,以及该 key 在今天同一 key 维度上的总花费。两者始终对应同一把 key(见仓库 ADR 0006)。chip 与会话的 token、上下文统计并列显示。

Popover 明细

点击 chip 打开 popover,可设置时间范围与 API key 筛选,查看当日各模型花费、窗口内按日柱状图,以及预付余额与 lifetime spend。0.4.0 起增加了额度相关提示与刷新失败时的展示;README 中附有 limit-notice 的 mockup 说明。

Settings → OpenRouter spend

在此保存或清除 Management API key,选择展示货币(USD,或按 cbr.ru 汇率换算的 RUB),设置刷新间隔,并按 API key 过滤。查看类偏好(展示货币、按 key 过滤、刷新间隔覆盖、额度警告开关)保存在浏览器 localStorage;额度警告默认关闭,需在 Settings 中手动开启。

额度与余额警告(可选)

开启额度警告后,popover 会显示被跟踪 key 的限额剩余:已消耗比例、按当前节奏剩余可用时长、以及 cap 何时重置。chip 上的圆点会在接近上限时由琥珀色变为红色,并在等级升高时 toast 一次。

账户预付余额按「跑道」判断:当余额按账户中位节奏买不到三天(不足一天或按最近三天均值处于 critical)时,圆点告警;popover 余额区块会给出类似 $6.58 left · under a day at this rate · shared by all keys 的表述,并 toast 提示充值(见 ADR 0007、0010)。

一键提高 key 限额

popover 中的 limit 区块与相关 toast 支持通过同一 Management key 提高该 key 的 spend limit:仅允许提高且最多为当前 cap 的 10 倍;无 limit 的 key 需先在 OpenRouter 侧设置。建议金额随消耗节奏变化;展示货币为只读 echo(cbr.ru 不可达时不显示 RUB echo)。见 ADR 0008。

刷新与多标签

宿主侧按 refreshSeconds 缓存摘要并合并并发刷新,多标签在同一刷新窗口内只向 OpenRouter 发起一次查询。刷新失败时保留上次成功数据,popover 显示原因、下次自动重试倒计时(首次失败后 15 秒,再 30 秒,之后为常规定时),并提供 Retry now。

安装与启用

运行环境需为 DeepSeek Harness web profile;插件依赖 credentials、webServer、connection 服务,在无这些服务的 profile(例如 headless)中保持未激活。

除 Management API key 外,普通推理 key 不能用于管理接口;错误示例:403 Only management keys can perform this operation。Management key 在 OpenRouter 控制台 Settings → Management API Keys → Create New Key 创建(见 OpenRouter 文档)。

从 npm 安装(web 为默认 Web GUI profile;若使用其他 profile 请替换名称):

dsh plugin --profile web add dsh-openrouter-spend

从 GitHub 安装指定标签(纯 JavaScript,无需构建):

dsh plugin --profile web add github:RyabykinIlya/dsh-openrouter-spend#v0.6.0

安装完成后打开 Settings → OpenRouter spend,粘贴 Management API key。

配置说明

各字段可在 profile 的 cordis.patch.yml 中覆盖;激活时 schema 会校验并指出非法字段。下表摘自 README,默认与边界以仓库为准。

字段 默认 含义(摘要)
credentialRef OPENROUTER_MGMT_API_KEY 存放 Management key 的 credentials 引用
apiBase https://openrouter.ai/api/v1 OpenRouter REST 根 URL
refreshSeconds 60(10–3600) OpenRouter 摘要刷新间隔(秒)
historyDays 30(2–366) 摘要窗口历史天数(含今天)
cbrUrl https://www.cbr.ru/scripts/XML_daily.asp RUB 汇率来源
rateRefreshSeconds 3600(60–86400) 汇率读取间隔
timeoutMs 15000(1000–120000) 对 OpenRouter / cbr.ru 的单请求超时
warnConsumedFraction 0.4 周期 cap 消耗比例达此值进入 warning
criticalConsumedFraction 0.8 达此值进入 critical
burnWindowDays 7(1–30) 估算 runway 时读取的 trailing 天数

burnWindowDays 按小时、按 key 读取;超过 5000 行会拒绝读取而非截断,runway 估算会报告拒绝并指向该设置,缩小 burnWindowDays 为修复方式。7 天、30 天范围最多覆盖 historyDays 天;若要完整 30 天窗口,需保持 historyDays ≥ 30。

适用场景与注意

适合已经在 DSH Web 里用 OpenRouter、且希望 Composer 旁就能看到与账单一致的当日花费、模型与 key 维度分析,并在 Settings 里管理 Management key 与展示偏好的开发者。

安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。DSH 插件在当前 dsh 进程权限下运行;Management key 具备账户管理能力,应通过 credentials 引用妥善存放,勿提交到版本库。

SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,插件由维护者独立发布;DeepSeek Harness 本身遵循「一切皆插件」的扩展方式,本插件是其中面向 OpenRouter 计费可视化的一个实现。

链接

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

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

小夜