前言¶
在 DSH Web GUI 里跑智能体任务时,一次会话可能包含多轮对话、多次工具调用和多次模型调用。轮数、步数、token 用量、缓存命中、LLM/工具耗时这些信息分散在会话日志里,逐条打开历史会话不容易核对。
dsh-conversation-stats 面向这个问题:在 DSH Web GUI 顶部新增「会话统计」tab,把会话数据从 ~/.dsh/sessions 下的会话日志中解析出来,以总览和明细两种视图展示。下面介绍它的能力、安装方式和需要注意的点。
这是什么¶
dsh-conversation-stats 是 DeepSeek Harness(DSH)Web GUI 的会话统计插件,由 wellcover 维护,许可证为 MIT。
它会在顶部「对话」「轨迹」之后注册 conversation.view tab,排在「对话」「轨迹」及用量插件的 tab 之后。页面列出每个对话的轮数、步数、模型调用次数、token 用量(输入 / 输出 / 缓存),并汇总 LLM/工具耗时、模型分布、结束原因;点击会话可展开逐条模型调用明细与工具调用统计。
它不依赖常驻监听,直接解析 ~/.dsh/sessions/**/session.jsonl.zstd,因此历史对话与当前对话同样可见。
核心功能¶
会话总览¶
- 会话总览表包含:标题/片段、轮数、步数、调用、输出 tok、输入 tok、缓存 tok、缓存命中率、最后活跃。
- 默认按最后活跃倒序。
- 跨工作区会话一并列出,每行标注
cwd。 - 汇总 chips 显示:会话数、总轮数、总步数、总模型调用、总 token。
缓存命中率¶
v1.0.6 引入缓存命中率列:
命中率 = 缓存读 /(输入 + 缓存读)
分子分母都为 0 时显示「—」。
会话明细¶
点击某个会话后,可查看:
- 会话信息卡
- 工具调用表:次数、总耗时、失败数
- 逐条模型调用明细表:时间、模型、结束原因、输入、输出、缓存、工具
刷新与删除¶
- 页面显示扫描时间。
- 支持手动「刷新」,页面 60 秒自动刷新。
- 列表结果缓存 30 秒,
?refresh=1可强制重扫。 - v1.0.2 起,总览表最右侧有「删除」列;点击红色确认弹层后,删除对应会话目录
~/.dsh/sessions/…/<sessionId>,其中包括session.jsonl.zstd。
加载归档会话¶
v1.0.3 起,总览表有「加载」列。对已归档会话显示绿色「恢复」按钮,点击后会话 id 从 DSH storages/workspace.json 的 global.archivedSessionIds 移除,使该会话重新出现在 DSH 对话列表。该操作需要重启 DSH Web 后生效。
安装与启用¶
环境要求¶
- Node 引擎要求:
>=22 - 插件会读取当前
dsh进程可访问的会话目录;安装前应检查源码和 MIT 许可证。
从 GitHub 安装¶
dsh plugin --profile web add github:wellcover/dsh-conversation-stats
如需锁定稳定版本 tag:
dsh plugin --profile web add github:wellcover/dsh-conversation-stats#v1.0.6
从源码打包安装¶
cd dsh-conversation-stats
npm pack
dsh plugin --profile web add dsh-conversation-stats-1.0.6.tgz
重启¶
装完重启 dsh web,或重新打开桌面应用。
手动安装¶
如果没有 pnpm,可以按下面步骤手动安装:
1、把包装拷到 ~/.dsh/profiles/web/node_modules/dsh-conversation-stats
2、在 profile package.json 的 dsh.profile.bundles 追加 "dsh-conversation-stats"
3、在 cordis.patch.yml 追加:
- insert:
- id: conversation-stats
name: 'dsh-conversation-stats'
inject:
- fs
- webServer
4、重启 dsh web
典型用法¶
1、打开 DSH Web GUI 顶部「会话统计」tab。
2、查看总览表、汇总 chips 和会话明细。
3、需要重新扫描时,点击「刷新」,或等待 60 秒自动刷新。
4、对已归档会话点击「恢复」,然后重启 DSH Web。
5、确认要删除某段会话时,在总览表最右侧「删除」列操作,并等待确认弹层。
数据口径¶
- 会话扫描路径:
$DSH_HOME/sessions,默认是~/.dsh/sessions。 - 数据文件:
.jsonl.zstd会话日志,直接解析,不做常驻监听。 - token 字段:
inputTokens、outputTokens、cacheReadTokens、cacheWriteTokens;不同提供方可能缺少某些字段,缺省按 0 计。 - 缓存命中率:缓存读 /(输入 + 缓存读)。
- 列表缓存 30 秒;
?refresh=1强制重扫;页面 60 秒自动刷新。
适用场景与注意¶
适合这类需求:
- 需要在 Web GUI 里快速核对多段 DSH 会话的轮数、步数和 token 用量。
- 需要查看工具调用耗时、失败数、模型调用明细和结束原因。
- 需要管理历史会话,包括删除会话或恢复已归档会话。
注意:
- 插件以当前
dsh进程权限运行,会读取并可能删除会话目录;安装前建议先阅读源码,确认许可证为 MIT。 - 若
DSH_HOME指向别处或~/.dsh/sessions为空,列表可能为空。 - 若顶部没有「会话统计」tab,先确认 profile bundles 包含本包,并重启。
- 若提示会话统计加载失败,检查
cordis.patch.yml中是否存在本插件行,且inject包含fs和webServer,然后重启。 - 删除会话会删除对应目录,不是仅从界面隐藏。
- 恢复归档会话必须重启 DSH Web 后生效。
链接¶
GitHub: https://github.com/wellcover/dsh-conversation-stats