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