npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gamegeek-saikel/dsh-cost-meter

v0.2.1

Published

Cost tracking plugin for the DeepSeek Harness Web GUI — snapshot-anchored per-turn pricing, account balance, and live cost estimates.

Readme

DSH Cost Meter 是为 DeepSeek Harness(DSH)Web GUI 打造的对话成本追踪插件——价格快照锚定的逐轮成本(感知峰值/闲时)、账户余额花费标签页每条回复成本小标签,以及带流式实时估算头部胶囊。每一步的成本、价格档位与快照版本都只计算一次——锚定到该用量事件自身时刻生效的价格快照,此后永不重算——因此后续价格变动绝不会改写已写入的对话记录。

  • Host 半区(src/):DeepSeek GET /user/balance 余额查询、持久化的快照锚定价格簿、sessionCost 投影、子代理成本聚合,以及带信任围栏的 /cost-meter 路由。
  • Client 半区(src/client/):输入框下方读数、花费标签页、每条回复成本小标签、头部胶囊,以及插件配置卡——内置简体中文与英文。

安装

本插件已发布到 npm:@gamegeek-saikel/dsh-cost-meter,以官方 DSH 插件 bundle 形态交付(单个 cordis.patch.yml 行同时挂载 host 与浏览器两半)。

通过官方 DSH CLI(npx 方式,无需全局安装)装入 web profile:

npx @deepseek-ai/dsh plugin --profile web add @gamegeek-saikel/dsh-cost-meter

然后启动:

npx @deepseek-ai/dsh web

如果已全局安装 DSH CLI,也可以使用 dsh 代替 npx @deepseek-ai/dsh。安装到其他 profile 时,把 web 替换成你的 profile 名称即可。插件声明并已验证兼容 DSH >=0.1.1-rc.1 <0.2.0(当前本地版本 0.1.1-rc.1)。开发环境要求 Node ^22.19.0 || >=24.0.0 与 pnpm 11.7.0

概述

DeepSeek 的价格随时间变化(官方价目表、USD→CNY 汇率、以及 2026-08-17 上线的峰值/闲时分时计价;2026-08-21 官方又把中英文页面改为一张三模型列、空闲/高峰列的价格表),而一次对话跨越很多轮,且每轮都含缓存命中、缓存未命中、缓存写入与输出等 token 桶。若按"当前价格"重算成本,每次价目变动都会让历史记录漂移。

Cost Meter只追加的价格簿解决这一问题:每次价格/汇率/分时表变化都会开启一个新的不可变 PricebookSnapshot(单调 versioneffectiveAt),每个用量事件锚定到其自身时刻生效的快照。结果是一个只增长、永不改写的不可变逐步成本账本。流式实时估算明确标注为"估算"——因为它使用当前价格;一旦该步结算,即被精确的锚定值取代。

关键性质

| 性质 | 值 | |---|---| | 成本锚定 | 只追加价格簿快照;步成本在事件自身时刻只计算一次 | | 价格来源 | 手动覆盖 > 官方价格页 > 内置回退 > OpenRouter(仅回退,USD→CNY)> 无 | | 官方页适配 | 同时解析 2026-08-21 新版中英文页面(含 deepseek-v4-flash-vision-exp 第三列与英文 UTC 时段)和旧版分表;无旧单价的页面继续用内置历史单价锚定 | | 峰值定价 | 2026-08-17 00:00 北京生效;高峰窗口仅周一至周五(中英文页面时区可能不同,缺省 09:00–12:00 / 14:00–18:00 北京),周六、周日全天及其余时段为半价闲时 | | 成本公式 | 未命中输入 + 缓存命中(命中价)+ 缓存写入(按未命中输入价计)+ 输出,每百万 tokens,CNY | | 账户余额 | 官方 GET /user/balance,缓存 60 秒,单飞请求,路由带信任围栏 | | 子代理支持 | 沿活跃代理树 BFS;对话总花费 = 主会话 + 全部后代 | | UI 表面 | 输入框读数 · 花费标签页 · 回复小标签 · 头部胶囊(实时估算)· 设置卡 | | 本地化 | 简体中文(键源)+ 英文 | | 复杂度 | 全同步折叠;经内存镜像 O(1) 查价 |

用法

安装后,插件贡献五个浏览器表面(默认显示简体中文文案):

| 表面 | 插槽 | 说明 | |---|---|---| | 输入框下方读数 | conversation.composer.dock | 锚定的本会话花费 + 账户余额,每分钟刷新;悬停查看分类明细与快照信息 | | 花费标签页 | conversation.view | 全对话总花费(主会话 + 子代理)、分类小计、子代理列表与逐回复锚定账本 | | 每条回复成本小标签 | conversation.chat.assistant-actions | 单条已定稿回复的锚定成本(无价格时显示 ) | | 头部胶囊 | conversation.session.header.utilities | 锚定总花费;流式中显示 预计 ¥x.xx(估算);点击展开详情面板 | | 插件配置卡 | settings.plugin.item | 按模型覆盖价、OpenRouter 别名、缓存折扣、汇率模式、开关与立即刷新 |

/cost-meter 宿主路由通过 GET 提供余额快照、价格簿视图与子代理合计;通过 POST({"action":"refresh"})执行手动刷新。与 /api 围栏一致,路由只应答 Host 头为回环地址或已声明可信主机的请求——这是防 DNS 重绑定的安全校验。

价格簿与快照锚定

价格簿(src/pricebook.ts)是持久的定价源,持久化在 pricebook 存储域全局槽上:

  • 优先级链——按规范模型键(provider/model、裸模型名,或 DeepSeek 系模型的 flash/pro 定价键):手动覆盖 > 官方页面 > 内置回退 > OpenRouter(仅回退,USD→CNY,缓存读按配置折扣)> 无。
  • 快照选取——snapshotForTimeeffectiveAt <= 事件时间 的最新快照(安装前的会话一次性锚到首个快照)。
  • 峰值/闲时——2026-08-17 上线前所有步按单一价目计费;上线后按事件自身时刻与该价格簿页面的时段表选档(中英文页面各自解析自己的高峰窗口,英文新版为 UTC,抓取失败时回退到北京 09:00–12:00 / 14:00–18:00,其余闲时)。官方页面限定高峰仅周一至周五,因此北京时间周六、周日全天为闲时。新版合并表没有旧单价列时,single 继续锚定内置历史单价;页面若有独立旧表,则优先用它。每步的档位在折叠时锚定一次,逐回复卡片与回复小标签永远显示该轮对话当时被计价的档位,而不是查看时刻的档位。
  • 不可变账本——sessionCost 投影(src/session-cost-projection.ts)把 request/header(模型)与携带用量的事件折叠为逐步记录;同一 (turn, step) 的第二次用量样本替换第一条(同一步终结,而非重新计价),总计以 O(1) 增量维护。

项目结构

src/
  index.ts                      # Host 入口:apply() 装配、余额、路由、信任围栏
  types.ts                      # wire/公共类型 + 投影映射合并
  pricing.ts                    # 官方价格页解析、峰值定价、北京时段
  pricebook.ts                  # 只追加快照、优先级链、存储域
  session-cost-projection.ts    # sessionCost 投影(不可变逐步账本)
  subagent-cost.ts              # BFS 子代理成本聚合
  invariant.ts                  # 路由释放对称性 invariant 伴生插件
  client/                       # 浏览器半区:5 个插槽组件 + 数学/格式化/本地化
shared/
  tsdown.client.ts              # 共享 tsdown 预设(CSS Modules、模块表、纯度门)
  web-platform.ts               # 浏览器平台模块清单
tests/                          # 封闭式 vitest 套件(网络全部 stub)
cordis.patch.yml                # web profile 插件行(同时挂载两半)

开发

pnpm install
pnpm typecheck   # tsc -b(仅 src)
pnpm test        # vitest run(封闭式,网络 stub)
pnpm build       # tsc -b && tsdown(lib/ + lib/client.js)

测试套件完全离线:价格页 HTML、OpenRouter 模型目录与汇率接口全部 stub。覆盖:信任围栏、余额解析、价格簿优先级链与快照选取、不可变账本折叠(含同一步替换与按事件时间选峰值/闲时档)、子代理 BFS 聚合,以及客户端表面(jsdom)。

文档

许可证

本仓库(源码、测试、README 与 DSH 插件 bundle 形态)以 MIT License 授权——见 LICENSE

Copyright (c) 2026 Saikel-Orado-Liu aka GameGeek-Saikel