READMESource: main@6e943114
dsh-session-view
DSH 会话视图插件:在会话页加一个「会话视图」面板,把一次会话的负载、成本、时序和原文放在一起看。
功能
工具 页(四个分区)
- 概览:体检结论(一句话判断)、问题清单、重复调用检测、工具分布、失败原因
- 成本:按模型的 token 结构与价格、子智能体自动汇总、手动补充、单价导入导出、配置基线
- 时序:时间轴(可缩放、可框选)、瀑布图、轮次基线(Tukey 异常判定)、耗时分布、轮次对比
- 运维:平均/峰值 TPM、平均/峰值 RPM、首字延迟 P95、限流事件(点开看每一次 429)
- 明细:可搜索/排序/分页的调用表 + 限流表,支持「原文」定位和「追问」回填
内容 页
- 系统提示词 / 提示词组装 / 上下文 / 用户与助手消息,逐条可复制、可回填到输入框
通用
⌘K命令面板、紧凑/舒适密度切换- 导出 Markdown / TSV / 单文件 HTML(HTML 可搜索排序,支持脱敏)
- 只读本地会话日志,不发起网络请求
典型用法
- 这轮怎么这么慢 → 「时序」页:时间轴可缩放、可框选,瀑布图定位最慢的工具调用,轮次基线(Tukey 异常判定)标出离谱的那一次。
- token 都烧在哪了 → 「成本」页:按模型拆 token 结构与价格,子智能体自动汇总,导入单价后与配置基线对比。
- 工具为什么失败 → 「概览」页:问题清单、失败原因、重复调用检测;「运维」页的限流事件可以点开看每一次 429 的细节。
- 模型到底看到了什么 → 「内容」页:系统提示词、上下文与每条消息逐条还原,可复制、可回填到输入框复现问题。
- 留档或分享 → 导出 Markdown / TSV / 单文件 HTML(自包含、可搜索排序、支持脱敏)。
入口:打开任意会话,页面上方会出现「工具 / 内容」两个标签;⌘K 呼出命令面板。
安装
前置
需要 DSH 桌面版或 Web 版,且已有 profile 目录:~/.dsh/profiles/<profile-name>/(常见为 desktop)。
步骤
- 放到固定位置(不要放临时目录,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/
- 把插件登记到 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 启动时才会挂载它
- 重启 DSH
完全退出应用再打开(只刷新页面不够,bundle 列表在启动时读取)。
- 验证
打开任意会话,页面上方应出现「工具 / 内容」两个标签,右上角有一行版本标记(如 2026-11-04 19:48)。
文件说明
| 文件 | 作用 |
|---|---|
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 |
跳转回归测试:验证「原文」和「明细定位」落到正确位置 |
自检(可选)
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。
说明
- 插件只读本地会话日志(
~/.dsh/sessions/...),不上报任何数据 - 价格、密度、脱敏开关等设置存在浏览器 localStorage
- 导出的 HTML 报告是自包含文件,不含脚本外链
No comments yet. Be the first to write one.