前言¶
用 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。