DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

lionwill /

lionwill/dsh-token-board

Verified

token dashboard and realtime token speed for DSH

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@4ac7856c

dsh-token-board

English | 简体中文

DSH Web 实时 Token 看板:不再用悬浮窗罗列所有会话,而是把吞吐数据放到「就在你眼前」的位置, 点击侧边栏底部的概况行还会打开完整的「使用统计」面板(Token 活动热力图、活动洞察、技能与模型占比)。

位置 内容
侧边栏底部、账号行上方 三根绿/蓝/黄柱状图(有活动时依次跳动,空闲时灰色静止)+ 概况「N 会话进行中,X tok/s」;侧边栏收起为窄条时只显示图标,悬停弹出概况气泡
会话列表 hover 卡片底部 该会话当前进行中的主 Agent 与子 Agent 的实时 tok/s,前面带纯色状态圆点
会话标题栏动作区末尾(「N 个后台任务」右侧) 当前打开会话的整体吞吐(主 Agent + 全部子 Agent 合计);悬停展开全部 Agent 明细(暂停或 0 也计入)
点击底部概况行 打开完整「使用统计」面板:累计/峰值 Token、最长聊天、连续天数、Token 活动热力图(可选年份与配色主题,主题来自 calendar-heatmap design tokens 的 8 套方案;默认当前年全年格子,未来日期置灰不可 hover;每日/每周/每月/累计)、活动洞察、最常用技能、模型 Token 占比(每个模型标注提供方来源);中文界面,自适应白天/黑夜

状态圆点沿用 dsh-token-hud 的语义,但使用本插件自己的纯色样式(无描边、无光晕):

状态 颜色
出字中 streaming 绿 #34d399
等待模型 running 黄 #facc15
工具调用 tool 蓝 #60a5fa
重试等待 retrying 橙 #fb923c
空闲 idle 灰 #9aa0a6

界面截图:不同场景下的 Token 速度

场景一:会话列表悬浮卡片 — 在侧边栏会话列表里把鼠标移到某个会话上,卡片底部会显示该会话当前进行中的主 Agent 与子 Agent 各自的实时 tok/s(下图中 lead 为 98.9 tok/s)。

会话列表悬浮卡片:单个会话的实时 tok/s

场景二:会话标题栏 — 打开某个会话后,标题栏动作区末尾(「N 个后台任务」右侧)显示本会话的整体吞吐(主 Agent + 全部子 Agent 合计);鼠标悬停展开每个 Agent 的明细(下图中会话总吞吐 60.8 tok/s,lead 处于出字中)。

会话标题栏:本会话整体吞吐与悬停明细

安装 / 部署

要求:DeepSeek Harness Web profile(在 0.2.2-alpha.2 上开发并验证)、Node.js ^22.19.0 || >=24.0.0。 插件无 npm 依赖、无构建步骤、无外部网络请求;数据全部留在本机。

方式一:从打包文件安装(推荐分发给他人)

# 把 dsh-token-board-0.1.0.tgz 拷到目标机器后:
dsh plugin --profile web add /绝对路径/dsh-token-board-0.1.0.tgz
# 重启 dsh web(若 profile 已启用 HMR 会自动挂载,否则重启后生效),刷新页面

方式二:从目录安装(开发/本地链接)

dsh plugin --profile web add link:/绝对路径/dsh-token-board

方式三:Web 界面:设置 → Plugins 页面安装本目录或 tgz。

安装后侧边栏底部账号行上方出现概况行;宿主只读端点:

  • GET /token-board/v1/stats — 实时各 Agent 吞吐(内部轮询)
  • GET /token-board/v1/usage?from&to&timeZone — 使用统计快照(面板用)

首次打开统计面板时会在后台建立本地索引(大历史约 10 秒级,面板不阻塞、先显示部分数据并自动补全), 索引文件位于 $DSH_HOME/token-board/usage-index.json,可随时删除以重建。

卸载:dsh plugin --profile web remove dsh-token-board。

使用统计面板

点击侧边栏底部(账号行上方)的「N 会话进行中,X tok/s」概况行即可打开「使用统计」面板, 右上角「← 返回对话」或 Esc 返回。统计口径与界面参考 Zhang6177/dsh-token-usage-board 的 「Usage Stats」页面(只复刻其总体统计 UI,不含调用明细/导出/过滤等额外功能),数据同样来自本机会话日志。

Host 侧通过 sessionQuery 读取会话日志并按会话缓存摘要到 $DSH_HOME/token-board/usage-index.json (进程内 30s 刷新、只增量读取新会话与当前活跃会话)。端点采用 stale-while-revalidate: 打开面板永远先返回内存里的上次结果(毫秒级),索引/刷新全部在后台进行,不会阻塞页面; 面板在 indexReady:false 时自动短轮询补全。首次安装无缓存时先显示部分/空数据, 后台建立索引(约 10 秒级)完成后自动更新。 只读端点:GET /token-board/v1/usage?from&to&timeZone。

面板全貌(示例数据):

使用统计面板:累计/峰值 Token、活动热力图、活动洞察、模型 Token 占比

数据来源

Host 半边监听所有会话的 session/event 与(新版宿主的)逐 chunk 广播 agent/assistant-stream,用滚动窗口按字符数估算输出速度(中文 ≈1 tok/字,英文 ≈4 字符/tok), 并在 assistant/message 携带 provider usage 时校正为精确值。子 Agent 通过会话头部的 parentSession / origin / delegationDepth 归属到父会话,标题栏与 hover 卡片按「自身 + 全部后代」 聚合。纯内存、零持久化、不写会话日志。

配置(可选,cordis.patch.yml)

客户端固定轮询 /token-board/v1/stats;apiPath 如需修改必须同时改 lib/client.js,否则三个界面都取不到数。

- id: token-board
  config:
    apiPath: /token-board/v1   # 只读端点前缀(固定,客户端硬编码同值)
    windowMs: 5000             # 速度滚动窗口
    charsPerToken: 4           # 非 CJK 每 token 字符数
    cjkTokensPerChar: 1        # 每个 CJK 字符的 token 数
    idleTtlMs: 180000          # 空闲 Agent 的保留时长

已知限制

  • 速度是流式字符估算值(约 10% 级误差),provider 上报 usage 后校正。
  • Host 重启后累计值清零;空闲超过 idleTtlMs 的 Agent 从明细中消失。
  • 标题栏吞吐对「打开中的会话」生效;没有会话打开时该位置不显示。

测试

测试依赖 DSH 源码 checkout 里的 jsdom/react(DSH_CHECKOUT 或默认路径),因此从源码工作区运行; 打包安装(files 不含 test/)不带测试。

node test/test-host.mjs     # host 逻辑:估算/状态机/谱系/窗口有界/HTTP
node test/test-usage.mjs    # 使用统计聚合:totals/streak/热力图/模型/技能/缓存/参数校验
node test/test-client.mjs   # client 冒烟:模块加载、四个插槽、三个实时组件 + 使用统计面板

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 4ac7856c55ce

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout