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