dsh-session-grep:在 DSH 多帧 zstd 会话里按 seq 查原话

前言

DeepSeek Harness(DSH)把每次对话落成会话文件,格式是多帧 zstd:每次追加会再压一帧。Node 里常用的 zlib.zstdDecompressSync 只解出第一帧,磁盘上的 grep、Select-String 对着压缩体同样打不中正文。结果是:记录明明在目录里,工具却显示零命中,复盘某轮「到底怎么说的」只能靠猜。下面介绍社区插件 dsh-session-grep(维护者 abwp2,分类:记忆),它按帧解压、按 seq 索引消息,提供 list、title、find、dump、around 等只读查询。

这是什么

dsh-session-grep 是一个读 DSH 会话转录的工具:拆多帧 zstd、顺序解压、解析 JSONL,让你用命令行列出会话、按标题找会话、正则全库搜、按序号导出或看上下文。当前 npm 包版本为 0.1.0,许可证 MIT,要求 Node ≥ 22.15(依赖内置 zlib.zstdDecompressSync)。不写入、不修改、不删除会话文件,不联网,不需要 API key。

为什么普通 grep 不够

DSH 会话根目录默认在 $DSH_HOME/sessions(可用环境变量 DSH_SESSION_ROOT 覆盖)。内容以压缩帧存放,系统自带搜索只能扫到二进制或残缺文本,例如:

grep -r "那句话" ~/.dsh/sessions     # 零命中(内容是压缩的)

同一关键词交给本工具的全库检索可以命中,并带上时间、seq 和说话人角色信息。

核心功能

命令 作用
dsh-session list 列出全部会话:id 前缀、时间、消息条数、工作区、标题
dsh-session title <关键词> 按标题找会话(标题由 DSH 根据首条消息自动生成)
dsh-session find <正则> [上下文宽] 全库正则检索,默认 40 条封顶,每条带 seq / 说话人 / 时间
dsh-session dump <id片段> [lo] [hi] 按 seq 区间打印消息
dsh-session around <id片段> <seq> [前后] 以某条为中心,前后各 N 条

消息处理规则(与 README 一致):

  • 每条消息拆成 role + text;只索引 text,跳过 reasoning 和 tool-call,避免把内部推理混进「说出口的话」。
  • 时间统一按北京时间输出,格式 YYYY-MM-DD HH:MM:SS。

安装与启用

CLI(推荐稳定路径)

不安装,直接用 npx:

npx dsh-session-grep list

或全局安装后使用 dsh-session 命令:

npm i -g dsh-session-grep
dsh-session list

作为 DSH bundle 插件

仓库带有 cordis.patch.yml,可挂进 profile 并注册 dsh_session 工具。官方 README 给出的命令为:

dsh plugin --profile web add github:abwp2/dsh-session-grep

说明:工具注册入口在不同 DSH 版本上可能不一致(如 ctx.tools / ctx.get('tools'));注册失败时通常只打一条 warning,不影响宿主启动。若 bundle 注册不稳定,仍以 CLI 与仓库内 skill/SKILL.md 为准。

安装前建议自行查看仓库源码与 MIT 许可;插件以当前 dsh 进程权限运行,能读本机会话目录中的聊天内容。

典型用法

先按标题定位会话,再 around 看上下文,或全库正则搜:

dsh-session title 部署                          # 先按标题找会话
dsh-session around session-a1b2c3d4 120 3      # 再看那条前后说了什么
dsh-session find "那条命令|部署方式"             # 或者全库正则搜

英文 README 中的等价示例:

dsh-session list                               # sessions: id, time, count, workspace, title
dsh-session title deploy                       # find a session by its generated title
dsh-session find "pattern|alternative" 3       # regex search, with context
dsh-session around session-a1b2c3d4 120 3      # N messages before and after a seq

按 seq 区间导出:

dsh-session dump <id片段> [lo] [hi]

适用场景与注意

适合谁

  • 在 DSH 下做智能体开发、需要按会话 id 或标题回溯某轮原话的人。
  • 需要在本机会话库里做正则检索、导出片段、核对 agent 是否「说过某句」的人。

隐私与输出

  • 只读本机会话文件;不埋点、不需要 key。
  • 命令输出会包含你自己的聊天正文,贴 issue 或日志前请先脱敏。

生态说明

DSH 社区插件目录由独立站点维护(SkillHub 等),与 DeepSeek / 幻方无官方从属关系;本文所述安装与用法以 GitHub README 与 package.json 为准。

结尾

dsh-session-grep 解决的是 DSH 多帧 zstd 会话无法被普通解压与 grep 检索的问题,用只读 CLI(及可选 bundle 工具)把「查原话」落到可复现命令上。进一步了解可看社区目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/abwp2/dsh-session-grep
  • GitHub:https://github.com/abwp2/dsh-session-grep
羽毛球分组比赛记分
小程序二维码

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

小夜