DeepSeek Harness Hub
← 返回列表

P-CAmilE/dsh-plugin-token-heatmap

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

该插件为每日 Token 用量热力图插件,面向 DeepSeek Harness Web GUIdsh web…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档
综合分
29.2
GitHub 分
29.2
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add P-CAmilE/dsh-plugin-token-heatmap
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-typert-protocol
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-plugin-token-heatmap

该插件为每日 Token 用量热力图插件,面向 DeepSeek Harness Web GUI(dsh web profile)。

截图

功能

- 双数据视图:「全局」(所有会话合计)与「当前会话」,悬浮窗内切换
- 历史回填:首次安装自动扫描全部会话日志,把过去的 token 消耗计入热力图
- 实时更新:窗口可见时每 3 秒轮询,数据带版本号,仅变化时更新
- 5 级蓝色色阶:12 个月窗口内非零天数按四分位分档,最深色 #396BE2
- 竖向网格:最新一周在顶部,向下滚动回看 12 个月,带「回到最新」浮层
- 悬浮窗交互:头部拖动、位置 clamp 在视口内、显隐/位置/视图记忆于 localStorage
- 汇总统计:今日 / 本周 / 本月 / 12 个月合计,tooltip 展示输入 / 输出 / 缓存读写分项
- 主题适配:深浅主题均正常显示(DSH 主题 token)

环境要求

- Node.js ≥ 20,pnpm
- DeepSeek Harness web profile(宿主需提供 @deepseek-ai/ 运行时,见 peerDependencies)
- 依赖 @deepseek-ai/ 为内部私有包,仅能在 DSH 环境内安装

构建

pnpm install
pnpm build          # 产出 lib/index.js(宿主)+ lib/client.js(客户端 bundle)

验证

pnpm typecheck      # tsc --noEmit
pnpm test           # node --test,宿主端单元测试
pnpm test:ui        # vitest,客户端组件测试

安装

dsh plugin --profile web add dsh-plugin-token-heatmap

重启dsh web,右下角出现方形图标即安装成功。首次启动后台执行回填,期间界面可用。

数据存储

宿主端持久化在 $DSH_HOME/token-heatmap/(即 ~/.dsh/token-heatmap/):

| 文件 | 内容 |
|---|---|
| global.json | 全局每日用量(近 13 个月) |
| sessions.json | 按会话每日用量 |
| meta.json | 回填状态(done / scanned / skipped) |

写入策略:内存合并 → 5 秒节流 → 原子写(临时文件 + rename)。文件损坏时从空状态启动并告警,不阻断插件。

localStorage 键(客户端)

| 键 | 说明 |
|---|---|
| dsh.tokenHeatmap.visible | 悬浮窗显隐 |
| dsh.tokenHeatmap.position | 悬浮窗位置 |
| dsh.tokenHeatmap.iconPosition | 图标位置 |
| dsh.tokenHeatmap.view | 视图(global / session) |

架构

一个 npm 包、双半区(宿主 + 客户端):

src/
├── index.ts                  # 宿主端入口:实时累计 + 一次性回填
├── usage-store.ts            # 每日聚合存储(节流原子写、13 个月裁剪)
├── backfill.ts               # 会话日志扫描回填
├── service.ts                # TypertRemoteService:tokenHeatmap Remote 服务
├── day.ts                    # 本地时区自然日工具
├── usage.ts                  # 聚合/合并/裁剪纯函数
└── client/
├── index.tsx             # 客户端入口:挂载 Remote + shell.overlay
├── remote.ts             # 手工 Typert Remote 描述符 + strict 校验器
├── TokenHeatmapOverlay.tsx  # 悬浮窗 + 右下角图标
├── HeatmapGrid.tsx       # 周×天网格(竖向滚动)
├── ToggleIcon.tsx        # 右下角方形图标
└── palette.ts            # 5 级色阶与四分位映射

- 数据通道:客户端 ↔ 宿主走 Typert Remote 机制(@Remote 方法暴露为 / 端点);方法有 getGlobalUsage / getSessionUsage / getBackfillStatus
- UI 注册:ctx.slots.inject('shell.overlay', ...) 挂到根级浮动层
- 用量口径:input + output + cacheRead + cacheWrite 合并为每日 total 用于着色

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群