Guyao146/dsh-activity-tracker
dsh-activity-tracker 是一个面向 DeepSeek Harness(DSH)Web 的本地活动统计插件。它读取 DSH 已有的会话记录,将用户输入、代码编辑、命令执行、检索阅读、其他工具调用以及 Token 消耗按日期、小时和项目聚合,并在 DSH 侧栏中提供可视化统计面板。
catalog 简介 / catalog descriptioncatalog description:DSH 活动统计:彩色时间线看什么时候在干活/改代码,每日 token 消耗按项目/日期/小时查看。
项目介绍Project Overview
dsh-activity-tracker 是面向 DSH Web 的本地活动统计插件。它读取 DSH 会话记录,按日期、小时、项目聚合 Token 消耗与事件类型,并在侧栏提供可视化统计面板,含热力图、24小时分布、时间线和费用统计,支持多项目与多会话过滤。适用于需要本地追溯 DSH 使用情况的场景。注意:仅统计当前数据目录内仍存在的会话文件,首次扫描大量历史可能较慢。
dsh-activity-tracker is a local activity statistics plugin for DSH Web. It reads DSH session records, aggregates token consumption and event types by date, hour, and project, and provides a visual statistics panel in the sidebar, including heatmaps, 24-hour distributions, timelines, and cost statistics, with multi-project and multi-session filtering. It suits scenarios that require local traceability of DSH usage. Note: it only counts session files still present in the current DSH data directory, and the first scan of large histories may take time.
请帮我了解并安装插件:【dsh-activity-tracker】【https://github.com/Guyao146/dsh-activity-tracker】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-activity-tracker@latest
把 Guyao146/dsh-activity-tracker 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-activity-tracker
dsh-activity-tracker 是一个面向 DeepSeek Harness(DSH)Web 的本地活动统计插件。它读取 DSH 已有的会话记录,将用户输入、代码编辑、命令执行、检索阅读、其他工具调用以及 Token 消耗按日期、小时和项目聚合,并在 DSH 侧栏中提供可视化统计面板。
默认情况下,所有统计均在运行 DSH 的本机完成。只有主动完成生活看板配对,并授权指定工作区查看会话详情时,插件才会通过 HMAC 签名 HTTPS 向生活看板推送该工作区的最近输出。
樱落生态Wiki
该项目已编写Wiki,了解插件更多细节 https://wiki.mcylyr.cn
功能特性
- 统计概览:展示输入 Token、输出 Token、缓存读取 Token、活动事件数和会话数。
- 活跃热力图:以 GitHub Contributions 风格展示近 26 周的活动强度。
- 24 小时活动分布:按小时查看不同类型事件的堆叠分布。
- 24 小时 Token 分布:查看一天中各小时的 Token 使用情况。
- 当日事件时间线:展示事件发生时间、事件类型、工具名称、内容摘要、项目和模型。
- 每日汇总表:汇总近 31 个活跃日的事件数与 Token 消耗。
- 费用统计:按项目、模型、项目 × 模型和日期查看 Sub2API 价格计算结果。
- Sub2API 账号登录与价格同步:支持账号密码登录、TOTP 二次验证、Token 自动续期、手动同步、每天首次启动自动同步和每日价格历史快照。
- Sub2API 账户摘要:登录后显示中转站名称、当前账号、余额以及已订阅分组的月度使用量/额度。
- 余额卡片:账户余额直接并入活动概览卡片,不再单独占用顶部提示条。
- 可定制仪表盘:在“总设置”中开关模块、选择小/中/大三档样式、拖拽模块排序,并拖动面板边缘或使用滑块调整宽度。
- 灵活日期范围:支持今天、7 天、15 天、30 天、自定义日期和全部;热力图、概览、每日汇总会同步当前范围。
- 长范围翻页:自定义范围超过 30 天时按 30 天窗口左右翻页。
- 卡片快捷设置:每个仪表盘模块右上角都有三点菜单,可直接选择小、中、大或关闭。
- 宿主持久化:模块开关、尺寸、顺序、宽度和筛选同时保存到 DSH 宿主机,重启后自动恢复。
- 容器响应式布局:根据活动面板自身宽度而不是浏览器窗口宽度自动重排;窄面板会将模块切为整行,概览卡片自动切换为 3 / 2 / 1 列。
- 多项目过滤:按 DSH 会话的工作目录区分项目,可查看全部或单个项目。
- 会话过滤:可在全部项目或选定项目下继续选择单个会话,所有概览、图表、热力图和时间线同步过滤。
- 统一筛选栏:项目、会话与日期选择器使用统一高度和响应式列宽;关闭按钮固定在标题栏右上角。
- 时间范围过滤:支持今日、近 7 天、近 30 天和全部记录。
- 本地时区统计:所有日期和小时均按照 DSH 宿主机的本地时区计算。
- 增量解析缓存:根据会话文件的修改时间和大小复用解析结果,减少重复扫描开销。
- 侧栏入口自恢复:通过
MutationObserver在 DSH 页面更新后自动恢复“活动统计”入口。 - 明暗主题适配:统计浮层可跟随浏览器的浅色或深色主题。
- 生活看板实时工作区:按工作区分组推送会话快照;生活看板每 10 秒获取最新工作区状态、会话和工具输出,管理员可向当前运行中的 DSH 会话发送后续消息。
- 五态状态灯:工作区与会话统一显示“已完成、遇到错误、需要选择、正在进行任务、休眠中”;错误结果和待批准操作优先识别。
- 最小化输出授权:未勾选“允许查看会话详情”的工作区只上传汇总统计,不传输会话标题、对话或工具输出。
- 六位码一键配对:在生活看板生成一次性验证码后,直接在 DSH「活动统计 → 总设置」完成连接,无需手动创建或编辑 JSON 配置文件。
- 归档会话管理:在“已归档”标签中搜索和查看本机已归档对话,确认后可恢复到 DSH 会话列表;恢复不会移动、覆盖或删除原始会话文件。
面板内容
预览:
环境要求
- 已安装并能够正常运行的 DSH Web 环境。
- DSH 能够加载本地插件和 Web 客户端扩展。
- Node.js 22.15+ 或 24+,且运行时需要提供
node:zlib的zstdDecompressSync。 - 本机存在可读取的 DSH 会话目录:
~/.dsh/sessions。
Windows 默认对应:
C:\Users\<用户名>\.dsh\sessions
如果设置了 DSH_HOME 环境变量,插件会改为读取:
%DSH_HOME%\sessions
安装
Web版本 DSH
dsh plugin --profile web add dsh-activity-tracker@latest
Desktop版本 DSH
dsh plugin --profile desktop add dsh-activity-tracker@latest
安装后请**重启 DSH **。页面加载完成后,“新会话”按钮下方会出现 📊 活动统计 入口。
cordis.patch.yml会由 DSH 的插件安装流程读取,并自动添加activity-tracker插件配置。
使用方法
- 启动或重启 DSH Web。
- 在 DSH 左侧栏找到 活动统计。
- 点击入口打开统计浮层。
- 使用顶部筛选器选择项目、会话和时间范围。
- 点击热力图日期或每日汇总表中的日期,查看当天的小时分布和事件时间线。
- 新会话产生数据后,点击右上角的 刷新 重新扫描。
- 如需连接生活看板,进入“总设置 → 生活看板连接”完成六位码配对;仅对需要在看板查看实时输出的工作区勾选“允许查看会话详情”。
- 如需找回归档对话,打开“已归档”,搜索并选择会话查看记录,点击“恢复会话”并确认。
已归档对话
DSH 归档会话时只会把会话 ID 加入 Workspace Registry 的 archivedSessionIds,本地 ~/.dsh/sessions 日志仍然保留。本插件使用 DSH 官方 workspaceRegistry 状态原语读取归档集合,并提供:
- 按标题、项目名称或会话 ID 搜索;
- 查看会话轮次、记录数、最后活动时间和受限记录详情;
- 长会话最多展示最近 500 条、总文本约 1 MiB 的记录,避免界面卡顿;
- 恢复前二次确认;
- 恢复请求串行执行,并在写入后再次校验归档状态;
- 恢复只从
archivedSessionIds移除目标 ID,不修改原始 zstd 日志。
本地接口均要求 X-DSH-Activity: 1:
GET /dsh-activity/api/archives
GET /dsh-activity/api/archives/detail?session=<session-id>
POST /dsh-activity/api/archives/restore
Content-Type: application/json
{"sessionId":"session-..."}
如果归档注册表仍有 ID、但对应会话文件已经被其他工具永久删除,列表会把它计入“记录缺失”,且不会提供虚假的恢复操作。
已知限制
- 仅统计当前 DSH 数据目录中仍然存在的会话文件。
- 首次扫描大量历史会话时可能需要一定时间。
- 项目筛选标识基于完整工作目录;项目移动后会被视为不同项目。
- 工具分类采用名称匹配规则,新工具可能暂时显示为“其他工具”。
- 生活看板输出刷新间隔最短为 10 秒,不是逐 Token 流式传输;DSH 本机离线或推送失败时看板会显示离线状态。
- 已授权工作区的最近 120 条会话记录会传输到生活看板;请只对可接受该访问范围的工作区启用详情授权。
- 归档恢复依赖当前 DSH 的
workspaceRegistry.requireState()/setState();不提供这些公开状态原语的旧 DSH 版本会显示“不支持恢复”,不会直接修改workspace.json。
许可证
本项目采用 GNU Lesser General Public License v2.1(LGPL-2.1-only) 发布。
你可以在 LGPL-2.1 的条件下使用、修改和再分发本插件;再分发时应保留许可证文本、版权声明和相应的源码获取方式。插件按“原样”提供,不附带任何担保。
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill