Back to home

283Gawin

dsh-heatmap

DSH Web GUI activity heatmap plugin: GitHub-style commit/token/spend heatmap in the sidebar with per-model cost estimation

Stars
1
Language
TypeScript
Created
Aug 14, 2026
Updated
Aug 14, 2026

Introduction

dsh-activity-heatmap

DSH Web GUI 左侧栏活动热力图插件:常驻显示近 90 天的活动热力图,可在 「提交次数 / Token 用量 / 估算花费」三个维度间切换;热力图下方固定一行显示 今日所有会话消耗的 Token 总数、缓存命中率,并按每次调用实际使用的模型 自动计算花费(USD,可配汇率显示 CNY)。

Awesome DSH Plugin dsh-plugin

效果图

左侧栏热力图面板(浅色 / 深色模式):

浅色深色
面板(浅色)面板(深色)

设置页「插件」分区中的配置卡片(浅色 / 深色模式):

浅色深色
设置卡片(浅色)设置卡片(深色)

功能

  • 近 90 天热力图(固定窗口):GitHub 贡献图式网格(周一至周日 × 按周 分列),颜色深浅按所选维度分级(对数刻度);鼠标悬停显示当日明细 (提交数 / Token / 花费)。
  • 维度切换:提交(所有 DSH 工作区 git 仓库,不含 merge)、Token(billed 总量)、花费(按模型定价)。选择记忆在浏览器 localStorage。
  • 统计块(参考 Codex 个人资料页形态):今日 Token 总量、今日缓存命中率 (cacheRead / (cacheRead + cacheWrite + miss input))、今日花费,以及 近 90 天窗口的 Token / 提交 / 花费合计与今日按模型的花费细分。
  • 常驻侧栏:面板常驻左侧栏底部(工作区列表下方),自愈式挂载(React 重渲染后自动复位),可点击标题折叠,折叠状态持久化。
  • 设置卡片:注册在设置页「插件」分区(settings.plugin.item),支持主题 (蓝色 / 绿色)、enabled、includeMerges、USD→CNY 汇率配置;也支持插件行 config。
  • 数据来源:host 进程经官方 SDK 读取——sessionPersistence 列出全部会话 并重放其 durable 日志(assistant/message 携带的 provider usage、 request/header 与 request/context 携带的模型名),subprocess 跑 git log 统计各工作区每日提交。聚合结果 TTL 缓存 60s, 经 GET /activity-heatmap/stats 提供。

安装

git clone https://github.com/283Gawin/dsh-heatmap
cd dsh-heatmap
pnpm install && pnpm build          # link 安装需要构建产物(lib/)
dsh plugin --profile web add link:$PWD

或从 npm 发布版安装:

dsh plugin --profile web add @linxin666/dsh-client-ui-activity-heatmap

重启 dsh web 后,左侧栏即出现热力图面板。

设置页暴露:DSH 宿主对配置客户端可见的 settings namespace 有一个 白名单(dsh-host-apiproxyWEB_SETTINGS_NAMESPACES,官方包内 hardcode)。新插件必须把它的 namespace 加进该白名单,否则设置页卡片显示 "Settings not available for this plugin."。本插件需要把 "activity-heatmap" 追加到该数组;升级 dsh 后该修改会被覆盖,需重新 打补丁。修改后重启 dsh web 生效。

配置

设置页「插件 → 活动热力图」卡片可配置以下字段(等价于插件行 config):

类型默认含义
themestringblue热力图主题色:blue / green
enabledbooleantrue插件总开关
includeMergesbooleanfalse提交数是否计入 merge 提交
usdCnyRatenumber0USD→CNY 汇率,0 表示不显示人民币
priceOverrides文本行{}模型定价覆盖(见下)

插件行 config 示例:

- insert:
    - id: ui-activity-heatmap
      name: '@linxin666/dsh-client-ui-activity-heatmap'
      config:
        theme: green
        usdCnyRate: 7.2
        priceOverrides:
          my-model:
            inputPerM: 0.5
            outputPerM: 2

修改后重启 dsh web 生效。

内置定价

内置表以厂商公开 API 定价为准(USD / 1M tokens),并按 xiufengsun/TokenTracker 的 curated price overrides 校准(2026-06/07 对照官方页验证)。DeepSeek 系按 官方页标注 cache_write = 输入价;Anthropic 系 cache_write 计费 (0.25 × 输入);其余厂商通常无 write 附加费。

系列模型输入缓存读输出
DeepSeekdeepseek-v4-flash / deepseek-chat / deepseek-reasoner0.140.00280.28
DeepSeekdeepseek-v4-pro0.4350.0036250.87
DeepSeekdeepseek-v30.270.071.10
DeepSeekdeepseek-v3.10.560.0561.68
DeepSeekdeepseek-v3.20.280.0280.42
DeepSeekdeepseek-r10.550.142.19
Anthropicclaude-3-5-haiku0.800.084.00
Anthropicclaude-3-5-sonnet / claude-3-7-sonnet / claude-sonnet-4 / claude-sonnet-4-5 / claude-sonnet-53.000.3015.00
Anthropicclaude-haiku-4-51.000.105.00
Anthropicclaude-3-opus / claude-opus-4 / claude-opus-4-115.001.5075.00
Anthropicclaude-opus-4-8 / claude-opus-55.000.5025.00
Anthropicclaude-opus-5-fast / claude-fable-510.001.0050.00
OpenAIgpt-4o / gpt-4o-mini2.50 / 0.151.25 / 0.07510.00 / 0.60
OpenAIgpt-4.1 / mini / nano2.00 / 0.40 / 0.100.50 / 0.10 / 0.0258.00 / 1.60 / 0.40
OpenAIo3 / o3-mini / o4-mini2.00 / 1.10 / 1.100.50 / 0.275 / 0.2758.00 / 4.40 / 4.40
OpenAIgpt-5 / gpt-5.11.250.12510.00
OpenAIgpt-5-mini / gpt-5.1-mini0.250.0252.00
OpenAIgpt-5-nano / gpt-5.1-nano0.050.0050.40
OpenAIgpt-5.6-sol5.000.5030.00
OpenAIgpt-5.6-terra2.000.2012.00
OpenAIgpt-5.6-luna0.200.021.20
Googlegemini-2.5-pro1.250.312510.00
Googlegemini-2.5-flash / gemini-3-flash-preview0.300.0752.50
Googlegemini-3-pro-preview2.000.5012.00
xAIgrok-3 / grok-4 / grok-4-latest / grok-code-reasoner3.000.7515.00
xAIgrok-4-fast / grok-code-fast0.200.050.50
xAIgrok-4.5 / grok-4.5-build2.000.506.00
xAIgrok-4.5-fast4.001.0018.00
xAIgrok-build1.250.202.50
Kirokiro-agent / kiro-cli-agent3.000.3015.00
阿里qwen3-max1.280.166.40
阿里qwen3-coder0.220.02750.88
智谱glm-4.5 / glm-4.6 / glm-4.70.600.112.20
智谱glm-4.5-air0.200.031.10
智谱glm-4.5-x2.200.458.90
智谱glm-5 / glm-5-turbo / glm-5.1 / glm-5.21.00 / 1.20 / 1.40 / 1.400.20 / 0.24 / 0.26 / 0.263.20 / 4.00 / 4.40 / 4.40
Moonshotkimi-k2 / k2-thinking / k2.50.600.152.00
Moonshotkimi-k2.60.950.164.00
Moonshotkimi-k2.7-code0.950.194.00
Moonshotkimi-k33.000.3015.00
MiniMaxminimax-m1 / m20.20 / 0.300.025 / 0.03751.10 / 1.20
MiniMaxminimax-m2.10.500.053.00
MiniMaxminimax-m2.7 / minimax-m30.300.061.20
腾讯hy3 / hy3-preview / hy3-preview-agent0.1670.0560.556
其他sakana/fugu-ultra5.000.5030.00
其他longcat-2.00.2780.005561.111
其他step-3.5-flash / step-3.7-flash0.10 / 0.200.02 / 0.040.30 / 1.15
免费档glm-4.5-flash / glm-4.7-flash / glm-4.7-free / kimi-k2.5-free / minimax-m2.1-free / mimo-v2-pro-free / nemotron-3-super-free / grok-build-free000

模型 id 支持前缀匹配:带日期快照后缀的 id(如 claude-sonnet-4-5-20250929) 自动落到基础行;覆盖(priceOverrides)同样支持前缀匹配。未收录的模型按 默认档(0.27 / 0.07 / 1.10)计价,可用 priceOverrides 精确覆盖。

开发

pnpm install
pnpm typecheck
pnpm test
pnpm build

License

MIT