dsh-session-view:把一次会话的负载、成本、时序和原文放进一个面板

前言

用 DSH 跑长会话时,最常见的几个问题都藏在”这一次到底发生了什么”里:这一轮为什么慢、token 都花在哪个模型上、工具为什么失败、429 是哪一次触发的、模型实际看到的上下文和我以为的是不是一回事。

现有的排查方式通常是翻本地会话日志、手工统计 token、凭感觉压时间轴,结论很难落到一条时间线上,也不容易导出留档。dsh-session-view 做的事情是把负载、成本、时序和原文这几件事合并到一个面板里,按分区看,不需要在日志和表格之间来回切。

下面介绍这个插件。

这是什么

dsh-session-view(包名 @local/dsh-session-view)是一个 DSH 客户端插件,维护者是 NAS1112,分类为客户端,社区目录页显示 star 数为 0。它在会话页上方加了一个「工具 / 内容」两个标签,把一次会话的负载、成本、时序和原文放在一起看。

插件只读本地会话日志(~/.dsh/sessions/...),不发起网络请求,不上报任何数据。价格、密度、脱敏开关等设置存在浏览器 localStorage。

核心功能

工具页(四个分区)

  • 概览:体检结论(一句话判断)、问题清单、重复调用检测、工具分布、失败原因。
  • 成本:按模型的 token 结构与价格、子智能体自动汇总、手动补充、单价导入导出、配置基线。
  • 时序:时间轴(可缩放、可框选)、瀑布图、轮次基线(Tukey 异常判定)、耗时分布、轮次对比。
  • 运维:平均/峰值 TPM、平均/峰值 RPM、首字延迟 P95、限流事件(点开看每一次 429)。

明细:可搜索、排序、分页的调用表 + 限流表,支持「原文」定位和「追问」回填。

内容页

系统提示词 / 提示词组装 / 上下文 / 用户与助手消息,逐条可复制、可回填到输入框。

通用

  • ⌘K 命令面板,紧凑/舒适密度切换。
  • 导出 Markdown / TSV / 单文件 HTML,HTML 可搜索排序,支持脱敏。

安装与启用

前置

需要 DSH 桌面版或 Web 版,且已有 profile 目录 ~/.dsh/profiles/<profile-name>/(常见为 desktop)。

步骤

1、先放到固定位置,不要放临时目录,DSH 会通过 link 引用这个路径。

mkdir -p ~/dsh-plugins
# 方式一:git clone 本仓库
git clone https://github.com/NAS1112/dsh-session-view.git ~/dsh-plugins/dsh-session-view
# 方式二:下载 zip 解压
unzip dsh-session-view-*.zip -d ~/dsh-plugins
# 得到 ~/dsh-plugins/dsh-session-view/

2、把插件登记到 profile。编辑 ~/.dsh/profiles/<profile-name>/package.json,加两处:

{
  "dependencies": {
    "@local/dsh-session-view": "link:/Users/<you>/dsh-plugins/dsh-session-view"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "...",
        "@local/dsh-session-view"
      ]
    }
  }
}

dependencies 里的路径必须是绝对路径,指向解压后的目录;bundles 数组里加上包名,DSH 启动时才会挂载它。

3、完全退出应用再打开,只刷新页面不够,bundle 列表在启动时读取。

4、验证:打开任意会话,页面上方应出现「工具 / 内容」两个标签,右上角有一行版本标记(如 2026-11-04 19:48)。

自检(可选)

cd ~/dsh-plugins/dsh-session-view
node smoke.cjs              # 期望:ok: rendered tools tab / content tab
node jump-check.cjs         # 期望:高亮、筛选、提示各项断言通过

两个脚本都用桩 React 执行组件树,不需要浏览器和真实数据。jump-check.cjs 需要本机存在一组会话日志,否则会跳过数据相关断言。

卸载

从 profile 的 dependencies 和 bundles 里删掉对应条目,删掉目录,重启 DSH。

典型用法

  • 这轮怎么这么慢 → 「时序」页:时间轴可缩放、可框选,瀑布图定位最慢的工具调用,轮次基线(Tukey 异常判定)标出离谱的那一次。
  • token 都烧在哪了 → 「成本」页:按模型拆 token 结构与价格,子智能体自动汇总,导入单价后与配置基线对比。
  • 工具为什么失败 → 「概览」页的问题清单、失败原因、重复调用检测;「运维」页的限流事件可以点开看每一次 429 的细节。
  • 模型到底看到了什么 → 「内容」页:系统提示词、上下文与每条消息逐条还原,可复制、可回填到输入框复现问题。
  • 留档或分享 → 导出 Markdown / TSV / 单文件 HTML(自包含、可搜索排序、支持脱敏)。

入口:打开任意会话,页面上方出现「工具 / 内容」两个标签;⌘K 呼出命令面板。

文件说明

文件 作用
package.json 插件清单:dsh.client 声明客户端入口,dsh.bundle.patch 指向 bundle 配置
index.js Host 侧入口(空实现,渲染全在客户端)
client.js 全部 UI 与数据计算,单文件
cordis.patch.yml bundle patch,向宿主注入 session-view 这一行
locale/en.json、locale/zh.json 语言包
icon.svg 图标
smoke.cjs 冒烟测试:node smoke.cjs,验证四个分区都能渲染
jump-check.cjs 跳转回归测试:验证「原文」和「明细定位」落到正确位置

适用场景与注意

适合已经在用 DSH、需要事后复盘会话的开发者:想从一次会话里读出成本结构、慢调用位置、限流事件和真实上下文,而不是靠手工翻日志。

需要注意两点:一是插件以当前 DSH 进程的权限运行,能读到该 profile 下的全部会话日志,安装前应先检查源码和许可证(package.json 声明为 MIT);二是它只做只读分析,不修改日志,也不发起网络请求,导出报告是自包含 HTML、不含脚本外链。

结尾

dsh-session-view 的价值在于把一次会话的几个关键维度收进同一个只读面板,排查时不用再在日志、表格和时间轴之间来回手工拼接。安装前把源码和许可证过一遍,装好后用 smoke.cjs 和 jump-check.cjs 跑一遍自检。

目录页:https://www.skillhub.cn/plugins/NAS1112/dsh-session-view
GitHub:https://github.com/NAS1112/dsh-session-view

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜