dsh-activity-heatmap:把本地会话日志画成使用热力图

前言

DSH 的理念是「一切皆插件」,社区目录里的插件也越来越多。日常用 DSH 开会话时,积累下来的会话日志基本没人回头看。想知道自己一个月里到底写了多少轮、调了多少次工具、花了多少主动时间,一般只能翻日志或者手动统计。dsh-activity-heatmap 就是为这件事做的:它从本机会话日志里按天统计使用量,再用类似 GitHub 贡献图的热力图展示出来,并且支持切换形状、配色和日历布局。

这个插件由 4uthen7(高本)维护,在社区目录中被归入「趣味换装」分类,本质是一个界面展示类插件:不改工作流,只是把已有的会话数据画出来。下面介绍它的能力、安装方式和需要注意的地方。

这是什么

一句话定位:给 DeepSeek Harness 加一个 GitHub 风格的活动热力图,数据完全来自本机会话日志。

它统计的指标包括消息数、工具调用、轮次、token 数、活跃分钟数和会话数,按天画一个格子,支持方形、圆角、圆形、六边形、菱形、星形以及自定义 SVG 路径。默认行为不需要联网,Host 侧只返回聚合后的计数。

核心功能

  1. 多指标按天计数:消息取 user/message 和 assistant/message 事件,工具调用取 tool/call,轮次取 turn/start,token 取 assistant 消息上报的输入加输出,活跃时间取当天产生过事件的不同分钟数,会话数按头部 createdAt 统计当天新建的会话。

  2. 多种外观:形状可从 Square、Rounded、Circle、Hexagon、Diamond、Star 中选,也可以填自定义 SVG path(view box 为 0 0 100 100)。配色有 GitHub、Ocean、Violet、Sunset、Mono、Custom 六种,另有四级强度色和主题色的空日期。

  3. 多种日历布局:Year(53 周)、Months(12 张小日历)、Rolling(13/26/52 周)三选一。

  4. 多个展示位置:侧栏底部 widget(7–52 周,默认 22 周)、侧栏导航里的 Activity 行、Composer 下方的可选细条(默认关闭),以及 Settings → Activity 完整设置页。

  5. 隐私边界:Host 侧只注册一个精确的本地回环路由 /plugin-api/activity-heatmap/stats,返回的字段只有 date、sessions、turns、messages、tool calls、tokens、events、active minutes,不包含 prompt、回复内容、文件路径、标题或工具参数。插件本身不做任何出网请求。

安装与启用

插件支持三种安装方式,前两种等价,无非是让 Agent 代劳还是自己操作。

方式一:在会话里让 Agent 安装。把下面这段话粘贴进去发送即可:

Install the plugin at https://github.com/4uthen7/dsh-activity-heatmap into DeepSeek Harness.
Verify that Settings → Activity opens, then tell me what you changed.

Agent 会调用 plugin_manager 工具完成安装。对应的工具调用形式是:

plugin_manager { action: "install_bundle", target: "https://github.com/4uthen7/dsh-activity-heatmap" }

方式二:从 Plugins 页面手动安装。

  1. 打开侧栏的 Plugins。
  2. 选择 Add plugin(或箭头里的 Install a third-party plugin)。
  3. 粘贴 https://github.com/4uthen7/dsh-activity-heatmap 并确认。
  4. 如果装完是关闭状态,手动启用该 bundle。

方式三:从本地工作副本安装,适合改完代码直接验证:

plugin_manager { action: "install_bundle", target: "/absolute/path/to/dsh-activity-heatmap" }

安装前需要确认环境满足两个条件:使用带 Web UI 的 DeepSeek Harness(Desktop 或 web profile),并且 DSH 版本同时提供 sessionPersistence、sessionQuery 和 webServer 服务。插件对缺失情况做了降级:如果没有 persistence,就只统计会话创建日。webServer 是它声明的唯一硬性 Host 依赖,缺了插件会保持不激活。

配置项

所有选项按浏览器保存在 localStorage,键为 dsh-activity-heatmap/settings/v1,改动即时生效。设置页完整路径是 Settings → Activity → Appearance(中文界面下名为「活动」)。

选项 可选值 默认值
Measure Messages / Active time / Tool calls / Turns / Sessions / Tokens Messages
Calendar Year(53 周)/ Months(12 张小日历)/ Rolling(13/26/52 周) Year
Shape Square / Rounded / Circle / Hexagon / Diamond / Star / Custom SVG path Square
Cell size 5–20 px 8 px
Spacing 1–8 px 2 px
Palette GitHub / Ocean / Violet / Sunset / Mono / Custom GitHub
Colors 4 级强度色 + 主题色空日期 GitHub 绿
Week starts on Sunday / Monday Monday
Intensity Linear / Log / Rank(分位) Linear
Labels 月份标签、星期标签、图例 开启
Sidebar widget 显示/隐藏,7–52 周 开启,22 周
Composer strip 显示/隐藏 关闭

自定义形状那一项填 SVG path 即可,例如指向三角形的 M50 4 L96 92 L4 92 Z。路径不合法时插件会忽略并退回方形,不会报错。

适用场景与注意

适合想给 DSH 加个可视化、又不想折腾脚本的人。统计口径偏使用量浏览,不是计费依据:会话日志每个修订版本只读一次并在 Host 内存里缓存,克隆或 seed 出来的会话会继承历史,导致早前的日期被重复计入。

有几点需要留意:

  1. 安装前检查源码与许可证。这是第三方插件,当前版本为 1.1.0,MIT 许可。安装意味着 DSH 进程会加载它的 Host 模块,建议先读 index.js、client.js 和 cordis.patch.yml,确认 patch 只增加所需的行、不夹带其他操作。

  2. 以当前 DSH 进程权限运行。Host 侧模块获得的权限取决于 DSH 进程本身,插件声明的 Host 依赖只有 webServer,计数走的是只读的 sessionPersistence / sessionQuery,但仍建议在可信环境里使用。

  3. 卸载方式:Plugins → 该 bundle 页面 → Remove。浏览器侧保存的设置会保留,直到你清理站点数据。

  4. 改代码后的重载规则:编辑 client.js 后刷新页面即可;编辑 index.js 后需要把对应行关闭再打开(或重启),Host 模块才会重新导入。

结尾

dsh-activity-heatmap 的价值比较明确:不引入新数据源,不改变使用习惯,只是把已有的本地会话日志画成一张能看的使用热力图,同时承担了明确的隐私边界。如果你只是想在侧栏加一个不涉及任何会话内容的统计装饰,可以优先试;要确认行为,直接读仓库里的源码。

目录页:https://www.skillhub.cn/plugins/4uthen7/dsh-activity-heatmap
GitHub:https://github.com/4uthen7/dsh-activity-heatmap

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜