description: "面向客户端与维护者的全日志会话计数与墙钟时间说明,用于选择、组合或排查 sessionStats 投影单元。"
English | 中文
本包通过公开的 sessionStats 值,为客户端提供全会话轮次与步骤计数,以及 LLM、工具、首 token 和解码墙钟时间。这些数字来自完整的持久日志,因此分页与压缩不会改变它们。当客户端必须在重新加载或缩减历史记录后显示一致的会话统计时,请使用本包。全会话统计不可用时,客户端可改用窗口口径计数。
当客户端需要显示不受分页与压缩影响的全会话数字时,在会话存储与投影注册表旁挂载此插件。只有存在注册表时单元才会注册。
- name: '@deepseek-ai/dsh-session'
- name: '@deepseek-ai/dsh-session-projection'
- name: '@deepseek-ai/dsh-session-stats'
| 字段 | 含义 |
|---|---|
turns |
含至少一个已关闭步的不同轮次;被拒绝或空轮不计 |
steps |
已关闭的步——完成、失败、取消与 max-tokens 的步全部计入 |
llmMs |
组装出消息的步的模型墙钟时间之和 |
toolMs |
匹配的 tool/call → tool/result 墙钟时间之和 |
ttftMs / ttftSteps |
首 token 延迟之和及其承载步数 |
decodeMs / decodeTokens |
上报用量的步的解码墙钟时间与提供方输出 token 之和 |
每个字段在首个贡献事件之前均为 0;已装配的注册表恒提供该键,因此客户端读取值本身,而非键的存在性。客户端通过投影 seam 的快照与变更流渲染全日志数字;参考消费者是 Web 聊天统计条,其窗口折叠以相同字段名充当无单元时的回退。
没有投影注册表时单元是惰性的:inject 使 fiber 保持挂起,不注册任何内容,因此其他装配缺少 sessionStats 键。卸载插件会移除该键,因为注册是挂载 fiber 上的 effect。被崩溃打断的步在会话重新加载后计入,届时崩溃恢复补写合成的 step/end。
当单元约定不够用时阅读以下页面。它们从驱动单元的注册表逐步进入相邻的会话包。
无,因为 sessionStats 单元把已写入日志的步边界折叠成面向客户端的读模型,不注册任何面向模型的内容。
无;本包从不组装或发送提供方请求。
这些限制说明数字描述什么、单元何时缺失。它们是当前包约束。
step/end 关闭并计入;被崩溃打断的步在会话重新加载后计入,届时崩溃恢复补写合成的 step/end。sessionStats 键,其消费者回退到窗口口径计数。运行时不变式: 不发布伴生入口。本包只拥有一个纯投影折叠区,其 wire payload 在每次快照和变更流发射时都由投影注册表进行 schema 校验。该折叠区依赖的事件关系(每个已进入步骤恰有一个 step/end、宿主分配的轮次编号单调递增,以及分片和工具事件携带各自的步骤坐标与调用 id)由 dsh-agent-loop 与 Session surface 拥有并在运行时检查,而不由本包拥有。