Skip to content

dsh-log-slicer

Verified

dsh-log-slicer · v0.1.8 · MIT

Slice one section out of a DeepSeek Harness session log: verbatim turns, images, catalog row, backups and a verification hash — one command, dry-run by default.

Install

dsh plugin add dsh-log-slicer

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

dsh-log-slicer

把 DeepSeek Harness 的会话日志,切成"一节"能直接贴进笔记的东西。

一条命令:读日志 → 取原话 → 切一段 → 出正文 → 出目录行 → 备份旧样 → 出校验记录。默认 dry-run,不写盘。

30 秒上手

不用读完这篇,四步:

# 1. 看看日志里有什么(只读,随便跑)
dsh-log-slicer --list --limit 20

# 2. 从里面挑两句原话当锚点,试切一段(还是只读)
dsh-log-slicer --kind chat --title "试一下" \
  --from "把 --list 里看到的一句原话粘这里" \
  --to "另一句原话粘这里"

# 3. 看着像你要的东西了,指定文件写盘
dsh-log-slicer ... --file 我的笔记.md --index 目录.md --apply

# 4. 不确定它认没认对,就一直不加 --apply:dry-run 会把要写的东西整段打出来

写盘时它先在 旧版本/ 备份一份,再追加正文和目录行,最后打印一行校验记录;不满意就把 .bak 拷回去。

想装成插件:dsh plugin add dsh-log-slicer,装完多出 log_probe、log_slice 两个工具,功能一样。

它是什么 / 不是什么

  • 是:一个取数工具。日志是唯一的来源,它把日志里某一段原话原封不动取出来,按你指定的体裁排版。
  • 不是:摘要工具、压缩工具、记忆工具。它不总结、不改写、不替你判断哪段重要。
  • 因为它只取数,所以它不通用于所有人——它认的是"一节"的写法:**你:**/**我:** 独占一行、三行头、目录行、校验行。这些格式来自某一套笔记法,不是通用标准。

安装

# 当插件装(DSH 里出现 log_probe / log_slice 两个工具)
dsh plugin add dsh-log-slicer

# 只用命令行,不装插件也行
npx dsh-log-slicer --help

用法

# 先看看日志里有什么(只读、便宜)
dsh-log-slicer --list --limit 40

# 切一节,先 dry-run 核对
dsh-log-slicer --kind chat \
  --title "2026-10-31 ① 榫卯与第一栋房子" \
  --from "我们开始今天的工作" --to "看看对你有没有帮助" \
  --file "../闲话集/闲话集-8.md" --index "../闲话集/目录.md" --volume 闲话集-8

# 核对无误再写盘(会先备份到 旧版本/)
dsh-log-slicer ... --apply --tag "加 10-31 ① 之前"

--kind work 生成另一种体裁:三行头 + 引用块(他的话照抄)+ 我的判断标成判断。

锚点

--from / --to 要的是原话片段,不是行号——日志每天都在长。找不到时会列出最近的几句当候选,别猜行号。

输出契约

  • 正文:## 标题 + 轮次,逐字取自日志
  • 目录行:| 卷 | 标题 | 轮 |
  • 校验记录:| 日期 | 文件(+N 轮) | 字节 | 哈希前16位 | 本体=原件,两处一致 |
  • 备份:旧版本/<名字>(<动作之前>).bak(不带日期)

环境

  • Node ≥ 22.15(要用 zlib.zstdDecompressSync)。DSH 自带的 Node 就够,DSH_NODE 或直接用它的绝对路径。
  • 日志位置:$DSH_HOME/sessions/<workspace>/<sessionId>/session.v4.jsonl.zstd,默认 $DSH_HOME 是 ~/.dsh。
  • 没有第三方依赖。

已知限制

  • 依赖宿主的日志格式。src/decode.js 是唯一贴着格式的那一层,宿主改了只改这一处。
  • 图片只给出 sha256 与媒体类型,落盘要自己按附件仓路径复制(也可 --apply 后手工补「(图见 …)」)。
  • 只认 user/message 与 assistant/message 两种事件。

常见问题

跑起来说找不到日志。 默认去 ~/.dsh/sessions 找最新的那份。装在别处就设 DSH_HOME,或者直接 --log "C:\path\to\session.v4.jsonl.zstd"。

锚点找不到,报错还列了一堆候选。 锚点是原话片段,不是行号,也不是标题。复制时去掉句首句尾的空格和标点差异,或者先用 --list 把那条轮次整句抄下来。

切出来的节少了/多了几句。 --to 那一条要不要收进来,看它是不是"最后一句"。宁可切多几次,也不要一次切一大段:这东西本来就是按节用的。

Windows 下路径报错。 给路径加双引号,别用反斜杠转义(\\ 会变成转义符)。中文路径没问题。

图呢? 它只认出图片的 sha256 和类型,落盘要自己复制,然后在正文补一行 (图见 …)。不是漏做——"图放哪个文件夹、怎么编号"是笔记法的约定,不该写死进取数工具。

我不用 DSH,能用吗? 能,只要能拿到 session.v4.jsonl.zstd 并把它喂给 --log。它是纯 Node,没有别的依赖;但日志格式变了它也会跟着坏。

维护

不定期维护。坏了、要改、要适配新版本:欢迎 fork 或提 PR,别指望我按时修。MIT。