dsh-token-total 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -4
- package/lib/client.js +407 -523
- package/lib/index.js +209 -6
- package/lib/types/client/UsageCards.d.ts +28 -0
- package/lib/types/client/context-window-core.d.ts +9 -0
- package/lib/types/client/session-usage-locales.d.ts +17 -0
- package/lib/types/context-window.d.ts +5 -0
- package/lib/types/usage-buckets.d.ts +14 -0
- package/lib/types/usage-composition.d.ts +12 -0
- package/lib/types/wire.d.ts +30 -0
- package/package.json +1 -1
- package/src/client/SessionUsageView.tsx +6 -6
- package/src/client/StatsLineEnhanced.tsx +30 -22
- package/src/client/UsageCards.module.css +74 -0
- package/src/client/UsageCards.tsx +244 -0
- package/src/client/context-window-core.ts +39 -0
- package/src/client/session-usage-locales.ts +27 -3
- package/src/client/stats-line-core.ts +14 -5
- package/src/context-window.ts +15 -5
- package/src/session-detail.ts +3 -2
- package/src/usage-buckets.ts +27 -0
- package/src/usage-composition.ts +203 -0
- package/src/wire.ts +37 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ DSH(DeepSeek Harness)Web 插件:**Token 用量统计看板** + **单会话
|
|
|
6
6
|
|
|
7
7
|
1. **统计看板** — 侧边栏插件区下方的入口,点开是完整的用量看板(快捷筛选 / 六卡片 / 活跃热力图 / 缓存命中率趋势 + 分模型柱状图 / 按模型与按供应商 Top5)。
|
|
8
8
|
2. **单会话统计** — 增强会话输入框下方的原生信息栏,把「Token 用量」从「只有主智能体」改成「主智能体 + 全部子智能体」,让一次会话的真实消耗有地方可看。
|
|
9
|
-
3. **会话用量页** — 在对话旁新增「用量」tab,展示两行统计卡(请求数量 / 总 tokens / 命中率 / token 速度,及输入 / 输出 / 缓存读取 /
|
|
9
|
+
3. **会话用量页** — 在对话旁新增「用量」tab,展示两行统计卡(请求数量 / 总 tokens / 命中率 / token 速度,及输入 / 输出 / 缓存读取 / 缓存写入)、子代理与模型明细、按轮折叠的请求记录;子代理与模型明细之下、请求记录之上是**并排两张实时卡**——「当前上下文」画出窗口里现在压着什么,「Token 统计」把整场会话的累计花费按内容拆开。
|
|
10
10
|
|
|
11
11
|
所有图表都是手写 SVG,不依赖任何图表库。全局看板、底部胶囊与会话用量页全部跟随 DSH 明暗主题:浅色下画布是宿主的纯白底,暗色下换用宿主暗色面板色,颜色全部取自 DSH 语义令牌。
|
|
12
12
|
|
|
@@ -43,14 +43,17 @@ DSH(DeepSeek Harness)Web 插件:**Token 用量统计看板** + **单会话
|
|
|
43
43
|
- **Token 胶囊**显示的是**整棵会话树**(主智能体 + 全部子智能体)的合计,点开弹窗分为「主智能体 / 子智能体 / 会话合计」三行,并给出子智能体会话数。
|
|
44
44
|
- 子智能体是独立持久化的会话,通过日志头的 `parentSession` 串成树;插件按需重放这些日志汇总(同一套 `(turn, step)` 去重规则,且跳过 fork 继承来的事件前缀,避免与父会话重复计数)。
|
|
45
45
|
- **会话 Token 明细始终开启**:未命中缓存、缓存读 / 写、输出分别列出;底部胶囊的缓存命中率始终显示两位小数。
|
|
46
|
-
-
|
|
46
|
+
- **流式吞吐速度始终开启**:始终显示当前的实时解码速度——输出过程中按已到达的流式增量实测(每步开始约 0.2 秒内出首个读数);一步结算后保持该步最后的实测值,工具执行、步间空档也不回落到会话均值,只有从未产生过输出的会话才显示会话累计的精确值。
|
|
47
47
|
- 不再提供底部增强功能的开关;旧版本保存的关闭设置不再影响显示。
|
|
48
48
|
|
|
49
49
|
### 会话「用量」页
|
|
50
50
|
|
|
51
51
|
在每个会话原生的「对话 / 轨迹」旁新增 **用量** tab;沿用会话切换与视图导航,不另造顶部栏或输入框。
|
|
52
52
|
|
|
53
|
-
-
|
|
53
|
+
- **两张实时卡**(形制参考 [magpie](https://github.com/yetone/magpie))并排位于子代理/模型明细之下、请求记录之上,回答「提示词里现在有什么」与「整场会话到底花了什么」两个不同的问题:
|
|
54
|
+
- 左卡「**当前上下文**」:`已用 / 模型窗口 tokens` 大字附占用百分比,标题行右侧是当前供应商 · 模型;下方一条**整条即模型窗口**的堆叠条——有颜色的部分是已用的七类(按类别占比分色),尾部是还没用上的余量,所以条本身就是占用率;再下面按统一图例列出系统提示词、用户消息、技能注入、工具结果、工具定义、注入内容、助手消息各自的占比与估算 token(输出不占窗口,故不列)。鼠标悬浮可读精确 token 数与占上下文比例;模型窗口未知时只写已用数。
|
|
55
|
+
- 右卡「**Token 统计**」:圆环中心是整场会话**精确计费**的总 token,右上角徽标是精确缓存命中率(命中 ÷ 输入);圆环与图例把花费拆成系统提示词、用户消息、技能注入、工具结果、工具定义、注入内容、助手消息、输出八类。每次请求都会重放整份消息列表,所以每一类的数字是**该内容在全部请求上的累计**,而非此刻窗口里的存量;分桶值由字符数估算并在前缀 `≈`,圆环中心的总量与缓存命中率直接来自 `usage` 记录、保持精确。
|
|
56
|
+
- 两张卡都由会话明细轮询驱动(每 1.5 秒一次),不额外起计时器;旧宿主只提供其中一份数据时,另一张卡显示空态而非整组消失,两份都缺时整组不渲染。窄视口下自动上下堆叠。
|
|
54
57
|
|
|
55
58
|
- 浅色页面两行统计卡:第一行请求数量(附失败数)、总 tokens(附精确值)、缓存命中率(附命中 token)、token 速度(附平均首 token);第二行输入、输出、缓存读取、缓存写入四个 token 桶。不显示费用。
|
|
56
59
|
- 子代理明细使用每个子代理的**真实名称**(取自子代理标签,缺失时回退到会话标题、工作目录或会话 id)。
|
|
@@ -80,7 +83,7 @@ dsh plugin --profile <profile> add "file:D:\work\dsh-token-total"
|
|
|
80
83
|
|
|
81
84
|
- **事件来源**:`sessionPersistence` 的会话日志。兼容 `assistant/message` 的顶层 `usage`,也读取消息及失败 `assistant/attempt` 的原始流式用量;同一次请求以最后一份用量为准,修正值按差额更新。插件订阅 `session/event` 实时增量累加,同时一次性回扫已有历史会话;`llm/retry-started` 会清空当前 `(turn, step)` 槽位,因此失败尝试和后续重试分别计入,不重复累加同一次请求的多份报告。
|
|
82
85
|
- **本地持久化**:聚合结果写入 storage-domain 的 `token_total_history` 域(`$DSH_HOME/storages/` 下),纯本地、无外部依赖。回扫游标按会话记录已消费的事件序号,重启后从断点继续。
|
|
83
|
-
-
|
|
86
|
+
- **上下文与花费估算**:两张卡都从该会话自身的日志重放「下一次请求会带上什么」——被 `compaction/prune` / `compaction/summary` 遮蔽的事件剔除、压缩摘要按注入记忆回放、工具目录取最近一次 `request/header`——再按字符类估算 token(ASCII 约 4 字符 / token,CJK 约 1 token / 字符),所以分桶上的数字都是近似值。左卡的真实占用取最近一次回答上报的 `totalTokens − outputTokens`;仅当两者相差超过 15%(说明上游有压缩或裁剪,日志里的历史比模型实际收到的多)时,才多出一行说明,并把「已用上下文」改用供应商实测值。右卡的分桶是「每次请求重放内容之和」,圆环中心的总量与缓存命中率直接取自 `usage` 记录,保持精确。
|
|
84
87
|
- **单会话统计**:不走聚合存储(那里没有会话维度),而是按需重放该会话及全部子孙会话的自有日志;已加载会话优先使用实时事件快照,避免持久化缓冲造成漏算。结果缓存 4 秒,任意会话的新事件都会使缓存失效,包含此前尚未发现的子会话。前端从首次读取起每 4 秒刷新,显示时使用原生实时主会话用量、主会话压缩调用用量与子树用量之和,胶囊与弹窗共用同一口径;切换会话时立即清除旧会话读数。读取失败不会把部分子树当作成功结果覆盖已有读数。
|
|
85
88
|
- **缓存命中率** = 缓存命中 token ÷ 输入 token 总量(命中 + 未命中)。
|
|
86
89
|
- **失败数量**:以宿主记录的 `assistant/attempt` 事件为准。宿主只有在流以错误结束、或调用在提交任何内容之前被取消时才写 `assistant/attempt`,其余调用一律写 `assistant/message`,两者恰好划分全部调用,所以该事件就是「一次失败的 provider 调用」的精确边界(`interrupted: true` 但已有内容的 `assistant/message` 不计为失败)。失败数是请求数的子集,不额外计入请求;失败调用若在流中断前已上报用量,token 仍按用量计入、不会丢失。该计数晚于日 / 小时两份游标引入,因此老版本升级后会额外做一次只写失败数的增量回扫(`failuresReady` 标记完成,不重复累加 token)。
|