dsh-receipt:把 DSH 会话收成可分享的战报卡片

前言

用 DeepSeek Harness(DSH)做长会话时,事后想说明「这次干了多久、调了多少次工具、花了多少 token」,常见做法是手截终端或凭印象写几句。前者难读,后者没有信源。DSH 会把会话写成本地 JSONL 日志;若能把同一份日志汇总成固定口径的数字,并导出成可直接贴进聊天或社交平台的卡片,分享成本会低很多。下面介绍社区插件 dsh-receipt(维护者 louisyeaaah,分类:客户端)的做法。

这是什么

dsh-receipt 从 DSH 会话日志只读统计一次或一段时间内的用量与行为摘要:时长、轮次、步数、工具调用、涉及文件、tokens 等,默认脱敏,零 npm 依赖。产出可以是终端文本、--json,或 1080×1350 的 SVG/PNG 卡片。仓库未发布到 npm,命令行需走 GitHub 路径;装进 DSH 后还可通过插件工具与会内命令调用,与 CLI 共用同一套 src/ 统计与渲染逻辑,数字口径一致。

核心功能

单次会话战报

对指定会话(默认最新一次)汇总:

  • 项目名(脱敏后仅最后一段路径)、模型、会话 id 前缀
  • 时长(首事件至末事件的时间差)
  • 轮次(用户输入,turn/start 去重)、步数(模型响应,step/start 去重)
  • 工具调用次数及按工具名分组的使用排行
  • 涉及文件(从工具参数提取 basename,跨名去重)
  • tokens:输入(新)、输出、缓存读(单独列,不并入输入)
  • 上下文压缩:compaction/prune 次数与被裁 token 数

周期战报

用 --since 把窗口内多个会话合成一份汇总(例如最近 7 天)。输出中会同时给出时间跨度(墙上时钟)和会话时长合计(各会话首尾事件之差之和,含挂机,并行会话可能重复计算);涉及文件为跨会话并集去重。可按 --project 限定项目。

卡片与语言

--svg、--png 生成分享用卡片;--lang zh|en、--theme dark|light 控制文案与配色。PNG 依赖本机 Chrome/Chromium/Edge 将 SVG rasterize;无浏览器时仍可用 SVG。

脱敏与可选披露

默认脱敏:项目路径只留最后一段,文件仅 basename 与计数,会话 id 只显示前 8 位,不含对话内容。完整路径需显式 --show-paths。

插件内调用

安装为 DSH 插件后,可在会话中直接要战报,无需离开应用:

dsh_receipt()                                  # 当前会话
dsh_receipt({ scope: 'period', since: '7d' })  # 最近 7 天汇总
dsh_receipt({ out: '/tmp/card.svg' })          # 写出卡片
/dsh-receipt period 7d en out:/tmp/card.svg    # 会话内命令

插件只读会话日志;除你指定 out 写卡片外无其它写操作。官方 @deepseek-ai/* 包为 peerDependencies,由 DSH 提供。

与部分同类工具的差异(README 自述)

社区里已有侧重 Markdown/HTML 战报、日周报与交接文档的项目(如 dsh-receipts、dsh-report-studio)。本仓库 Maintainer 说明其差异化主要在于:产出以 PNG/SVG 图片为主,便于直接发帖;以及 CLI(bin/receipt.mjs)与插件工具(dsh_receipt())双入口、口径一致。若需要完整报告体系与 HTML 归档,README 建议优先选用功能更完整的同类工具。

npm 上的包名 dsh-receipt(deronendless/dsh-receipt)是另一项目(每轮落 JSON/Markdown 凭据),与本仓库无关;勿使用 npx dsh-receipt。

安装与启用

DSH 插件安装命令(资料原文):

dsh plugin --profile <profile> add github:louisyeaaah/dsh-receipt

安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。插件在当前 DSH 进程权限下运行,只读 ~/.dsh/sessions/ 下的会话文件;启用即信任其解析逻辑与脱敏行为。

运行环境:Node ≥ 22(使用内置 zlib),无 node_modules 依赖。

典型用法

命令行(npx GitHub 路径)

README 强调不要用 npx dsh-receipt,应使用:

npx github:louisyeaaah/dsh-receipt              # 最新一次会话,文本战报
npx github:louisyeaaah/dsh-receipt --png receipt.png   # 1080×1350 PNG 卡片
npx github:louisyeaaah/dsh-receipt --list              # 列出最近会话

周期汇总示例:

npx github:louisyeaaah/dsh-receipt --since 7d
npx github:louisyeaaah/dsh-receipt --since 30d --project dsh-plugin
npx github:louisyeaaah/dsh-receipt --since 7d --png week.png

其它常用选项:--json 机器可读;--show-paths 取消路径脱敏;--price-in、--price-out、--price-cache(每百万 token 美元单价)仅在自行提供单价时估算成本,工具内无内置价目表。

数据来源

会话文件路径形如:

~/.dsh/sessions/<项目>/session-<id>/session.v4.jsonl.zstd

每行一个 JSON 事件;工具针对多帧 zstd 追加写格式逐帧解压(README 说明了 Node 单帧解压的坑及自测覆盖)。

适用场景与注意

适合:需要把真实会话统计做成可分享图片或短文本的人(例如 build in public、对内同步用量);希望 CLI 与会内插件同一口径的用户。

注意:

  • 仅支持 DSH session.v4 格式,上游变更需插件跟进。
  • 时长含挂机,跨天未关闭的会话会显得很长;周期战报中「时长合计」与「时间跨度」并存是为避免误读。
  • PNG 依赖本机浏览器;限制与数字口径详见仓库 README「限制」「数字的口径」表格。
  • 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,安装第三方插件需自行评估。

结尾

dsh-receipt 把 DSH 会话日志变成默认脱敏、可验证来源的战报文本或卡片,零依赖、只读为主,适合快速对外展示一次或一段窗口内的开发强度与 token 用量。详情与示例输出见 GitHub:louisyeaaah/dsh-receipt,目录入口:SkillHub · dsh-receipt。

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

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

Xiaoye