dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
该插件为每日 Token 用量热力图插件,面向 DeepSeek Harness Web GUI(dsh web profile)。
#396BE2@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)。文件损坏时从空状态启动并告警,不阻断插件。
| 键 | 说明 |
|---|---|
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 级色阶与四分位映射
@Remote 方法暴露为 <namespace>/<method> 端点);方法有 getGlobalUsage / getSessionUsage / getBackfillStatusctx.slots.inject('shell.overlay', ...) 挂到根级浮动层