READMESource: main@4674a063
dsh-session-insights · 会话用量统计
基于真实会话日志的 DeepSeek Harness 双面插件(Host + Web Client,免构建): 统计跨会话 Token 用量与估算成本,展示消耗时间线、各会话明细,并实时监测 CPU。
功能
- 真实数据:通过
ctx.sessionQuery读取本机会话日志中的assistant/message.usage,不是演示数据 - 总览:总 Token(缓存命中 / 未命中 / 输出)、会话数量、调用次数
- 成本估算:按 DeepSeek 公开价格与工作日高峰/空闲时段估算;非 DeepSeek 模型默认不计价
- 预算:本月预算进度、剩余额度、月末预计;面板内可直接修改预算
- 时间线:7 / 30 / 90 天,Token 与费用两种视图,悬停查看当日明细
- 会话明细:每个会话的 Token、费用、模型与最近活动,点击打开对应会话
- CPU 监测:总体与每核占用、系统负载、内存、DSH 进程 CPU/内存、运行时长与历史曲线
- 双语:中文 / English,跟随应用语言设置
- 本地优先:统计数据只在 Host 内存中聚合,不写用户文件、不发送网络请求
安装
需要 DeepSeek Harness(desktop 或 web profile),并确保该 profile 提供 sessionQuery
(dsh-base 默认包含 session-query-sqlite)。
git clone https://github.com/wzuu/dsh-session-insights.git
cd dsh-session-insights
# 安装到当前使用的 profile(示例为 desktop)
dsh plugin --profile desktop add "$PWD"
也可以在 DSH 的 设置 → 插件 中从本地目录安装。安装后重启 DSH,页面会加载 「会话统计」入口:
- 设置 → 会话统计:完整面板
- 侧边栏底部 会话统计 按钮:弹出同一面板(Esc / 点击遮罩关闭)
本插件读取的是本机已在 DSH 中产生的会话,不会上传任何内容。
数据与计费口径
| 项目 | 说明 |
|---|---|
| Token | usage.inputTokens(未命中)+ cacheReadTokens / cacheWriteTokens(命中)+ outputTokens |
| 会话 | 本机全部逻辑会话,含子代理会话;面板展示有用量的会话 |
| 成本 | 元 / 百万 tokens,按模型档位与调用时间估算,不是官方账单 |
| 预算 | 默认 ¥100/月,可在预算卡片修改(浏览器 localStorage) |
| CPU | node:os + process.cpuUsage(),每 3 秒采样,保留 90 个点 |
默认价格(元 / 百万 tokens):
| 档位 | 缓存命中 | 未命中 | 输出 |
|---|---|---|---|
| flash | 0.02 | 1 | 4 |
| pro | 0.15 | 4.5 | 13.5 |
| other | 0 | 0 | 0 |
- 工作日北京时间 9:00–12:00、14:00–18:00 按高峰计,价格 ×2;周末与其余时段按空闲计。
- 模型名含
deepseek按 flash / pro 计价;@preset/*视为 DSH 内的 DeepSeek 别名按 flash 计; 其余模型(Gemini、Claude、GPT 等)默认归入other,Token 计入总量但不计价,面板会提示「未计价」。 - 费用按当前价格回算历史,且未内置法定节假日表,因此只适合做趋势与预算参考。
自定义价格 / 预算
编辑 cordis.patch.yml 中该行的 config,然后重启 DSH:
- insert:
- id: session-insights
name: '@local/session-insights'
config:
budgetMonthlyCny: 100
peakMultiplier: 2
peakWindows: [[9, 12], [14, 18]]
scanThrottleMs: 120000
pricing:
flash: { cacheHit: 0.02, cacheMiss: 1, output: 4 }
pro: { cacheHit: 0.15, cacheMiss: 4.5, output: 13.5 }
other: { cacheHit: 0, cacheMiss: 0, output: 0 }
modelClasses: # 可选:自定义模型 id → 价格档位
my-alias: flash
目录结构
index.js Host:sessionQuery 扫描、成本聚合、CPU 采样、/session-insights 路由
client.js Client:设置页、侧边栏按钮、shell.overlay 弹窗、图表/表格/CPU
package.json bundle manifest + dsh.client
cordis.patch.yml 插入 session-insights 行与默认配置
locale/{en,zh}.json 插件管理器的标题/描述
icon.svg 原创图标
开发
无构建链、无运行时依赖,纯 ESM + 浏览器端 window.__ModuleLoader__。
node --check index.js
node --check client.js
# Host 数据端点(端口以实际 GUI 为准)
curl -s 'http://127.0.0.1:<port>/session-insights?refresh=1' | head -c 400
修改 Host 代码后,在 DSH 中切换一次该插件的启用状态即可重载; 修改 Client 代码后刷新页面。首次扫描约 1–2 秒(取决于会话数量), 之后每 120 秒在有人查看时后台刷新。
License
MIT © 2026 wzuu
No comments yet. Be the first to write one.