Overview
dsh-turn-cost
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
**它给的是估算,不是账单。** 以下是代码层面能确定的口径与边界: 1. **只统计 usage 的四个 token 桶**。会话事件流里 usage 之外的任何计费项都不计入。 2. **价格依赖账本**。账本读不到时按内置兜底表(DeepSeek 官方 deepseek-flash 档 + 汇率 7.2)算。 你的模型或渠道不在账本里、或账本价格与你的实际合同价不同时,**显示值会与实际扣费不一致**。 3. **缓存写入按命中价计**。这是与 `dsh-cost-meter` 对齐的口径;渠道对缓存写入另有定价时,这里不会体现。 4. **峰谷档按 UTC 小时判断**,且 `peakEffectiveAt` 之前的调用一律按基础价; `peakEnabled` 不是布尔 `true`(例如配置里写成字符串)时峰谷规则完全不生效; `peakEffectiveAt` 无效或缺失时,窗口外的调用不会走 `offPeak` 档,而是按基础价。 5. **配置只读一次**(插件加载时),改账本要重启 `dsh web`。 6. **金额是四舍五入后的显示值**:按 `decimals` 位 `toFixed` 后去掉末尾的 0; 金额小于 `10^-decimals` 时自动多给两位小数(最多 12 位),所以极小金额不会显示成 `¥0`。 7. **「本轮」= 轮次号最大的一轮**,不是「正在跑的那一轮」。 8. **只有一轮时,两段文案会重复显示同一个金额**:输入框下方的文案本意是「只有一轮时不重复两遍」, 但那条合并条件比较的是对象引用,而 `turns` 里的条目和 `totals` 不是同一个对象, 所以一轮时仍会显示「本轮 ¥x · 本对话 ¥x」。这一条是从代码读出来的,没有在浏览器里逐帧实测。 9. **输入框下方的药丸靠 DOM 落位**:它选的是带 `[data-composer-stats]` 标记属性的那个容器。 宿主哪天改掉这个标记,药丸就不再出现(**回合尾部的徽章走的是插件槽位,不受影响**)。 插件对 DOM 变化挂了 `MutationObserver`:那一行被会话切换重建、或宿主往末尾追加自己的节点时, 会自动把自己插回并挪到最后一个位置,同时认领已存在的同类节点以避免同一行出现两个。 10. **宿主端没起来就什么都不显示**:客户端取不到 `turnCost` 投影时静默不渲染(不报错、不占位)。
