Quota Meter · 会话额度监控
Per-session spend & quota meter for DSH — real token billing, live progress bar, budget blocking, configurable multi-model pricing.
给 DSH 的每个会话窗口设置金额额度:按真实 token 用量 × 可配置价目表记账,输入框上方显示消耗进度条,额度耗尽时自动拦截新的模型调用。
Screenshots / 效果
| 设置额度 | 消耗反馈 |
|---|---|
![]() |
![]() |
| 未配价模型提示 | 限额弹窗 |
|---|---|
![]() |
![]() |
| 余额校准胶囊(v0.3.0) | |
|---|---|
![]() |
屏幕右上角常驻悬浮:账户余额(官方真实值)+ 实测消耗 + 本会话 已花/剩余,可手动 ↻ 刷新 |
✨ Features / 特性
- Real-token billing — 按 dsh
llm/stream的真实 usage 记账,缓存命中/未命中/输出分档计费 - Live progress bar — 输入框上方 2px 细条实时显示剩余额度(右对齐倒退),请求发起时左侧"燃烧"亮点脉动,扣费瞬间弹出
-¥金额徽标 - Budget blocking — 额度耗尽自动拦截新的模型调用(
agent/pre-step),并弹出提示 - Configurable pricing — 价目表 UI 可编辑、按模型持久化;支持峰谷(time-of-day)定价,每个模型可自定义时区与高峰时段
- Per-session scope — 记账按会话独立;子代理消耗自动并入父会话额度(沿代理链上溯到根父),额度条显示真实总花费;辅助调用(标题生成/上下文压缩)同样计费
- Persistent ledger — 额度与已花金额跟随会话持久化(
~/.dsh/storages/quota-meter/sessions/),重启 dsh 不丢;会话关闭时自动清理,与对话记录生命周期一致
📦 Install / 安装
Any machine with dsh CLI — 任意装有 dsh 的机器,一条命令:
dsh plugin --profile web add github:Lstalu/dsh-quota-meter-plus
Locked version — 锁版本安装(推荐正式环境):
dsh plugin --profile web add github:Lstalu/dsh-quota-meter-plus#v0.3.0
- Client(进度条/弹层 UI)→ 刷新浏览器即生效
- Host(记账/拦截/接口)→ 重启 dsh web 进程生效
- Uninstall / 卸载:
dsh plugin --profile web remove quota-meter
Local development — 本地开发用 checkout 链接(改动即时反映):
dsh plugin --profile web add /path/to/quota-meter-plugin
💰 Pricing / 计价
价目表动态可编辑(UI 入口:额度条行尾「价格」),持久化到 ~/.dsh/storages/quota-meter/prices.json。
按 2026-08-17 起 DeepSeek 官方价(涨幅后),单位 ¥/每 1M tokens:
✅ 官方核对(2026-08-18):下表全部 6 个价格点与 api-docs.deepseek.com/quick_start/pricing 逐项一致(含高峰时段 9:00–12:00、14:00–18:00 北京时间,空闲 = 高峰半价)。 官方 usage 仅报告
prompt_cache_hit_tokens/prompt_cache_miss_tokens, 无独立的缓存写入计费字段(硬盘缓存构建成本并入未命中价), 故cacheWriteTokens对 DeepSeek 恒为 0,inputWrite档仅影响其他厂商。
deepseek-v4-flash
| 缓存命中 | 缓存未命中 | 输出 | |
|---|---|---|---|
| 空闲时段 | ¥0.05 | ¥1.5 | ¥4.5 |
| 高峰时段 | ¥0.10 | ¥3.0 | ¥9.0 |
deepseek-v4-pro
| 缓存命中 | 缓存未命中 | 输出 | |
|---|---|---|---|
| 空闲时段 | ¥0.15 | ¥4.5 | ¥13.5 |
| 高峰时段 | ¥0.30 | ¥9.0 | ¥27.0 |
- Peak hours / 高峰时段:北京时间 9:00–12:00、14:00–18:00(每个峰谷模型可自定义时区与区间)
- 未知模型回退到
fallback模型价 - 计价模型:
计费输入 = 未缓存输入 + 缓存命中输入,输出单独计价
🧠 How it works / 工作原理
模型调用结束 → llm/stream 流中 {type:'usage'} 块
→ Host 按模型查价目表(峰谷自动选档)折算金额
→ 累加到会话记账本(spent / calls)
→ 客户端 1s 轮询 /quota/state → 进度条前进 + 扣费徽标弹出
额度耗尽 → agent/pre-step 返回 reject → 拦截新调用 + 提示弹窗
🛠 Develop / 开发
git clone git@github.com:Lstalu/dsh-quota-meter-plus.git
dsh plugin --profile web add ./dsh-quota-meter-plus # 本地链接安装
改 index.js(host)/ lib/client.js(client)→ client 刷新即生效,host 重启生效。
🔧 增强补丁(相对上游 d9941af)
本仓库为增强维护版,基于官方 d9941af 基线,在官方基础上打了三处补丁(均可提交上游):
- 同源防护(安全):
/quota/*是本地写接口(改额度 / 改价目表), 浏览器里任意外部网页都能向127.0.0.1发跨源请求。host 端新增isSameOrigin校验——带Origin的请求要求其 host 与请求Host头 完全一致,跨源一律 403;无 Origin 的客户端(curl、本机进程)放行。 inputWrite计费档(口径修正):cacheWriteTokens不再并入 "缓存命中"低价档,改用独立的inputWrite单价(缺省 = 未命中价, 保守不低估;Anthropic 等写缓存按 1.25× 输入价计的厂商可自行调高)。 三档价格组扩展为四档{ inputMiss, inputHit, output, inputWrite }, 旧价目表自动归一化(缺省 = inputMiss),价格弹层编辑不丢该字段。 DeepSeek 适配器不报告cacheWriteTokens,该档对 DeepSeek 恒为 0, 默认配置下记账与官方口径一致。- 屏幕右上角常驻悬浮胶囊 + 账户余额校准(v0.3.0):
- 胶囊固定于屏幕右上角(
shell.overlay,z-index 900),常驻显示 「账户余额(官方真实值)+ 实测消耗」与「本会话 已花/剩余」两行; 会话额度 10s 轮询,账户余额 60s 轮询,可手动↻立即刷新。 - 余额来自官方接口
GET https://api.deepseek.com/user/balance(platform.deepseek.com/usage 网站余额的同一数据源,文档化、稳定, 无需登录态 cookie 爬网页)。host 端 60s 缓存 + 10s 超时 + 首次 拉取自动记录基线;实测消耗 = 基线 − 当前余额(账户级口径), 供与插件会话记账对照校准。 - API Key 经胶囊
⚙弹层保存,落盘~/.dsh/storages/quota-meter/config.json(0600,仅本机), 或设环境变量DSH_DEEPSEEK_API_KEY/DEEPSEEK_API_KEY; 密钥只发往 api.deepseek.com,接口绝不回显。重设基线按钮可在 充值后重新锚定参考点。
- 胶囊固定于屏幕右上角(
📄 License / 许可
MIT





No comments yet. Be the first to write one.