🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

kkishapppy/dsh-session-repacker

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
未验证

DSH 会话日志 zstd 帧重打包:万帧拼接→官方两帧形态,旧会话打开提速约 6 倍

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/14 · 已提供中文文档
综合分
26.9
GitHub 分
26.9
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add kkishapppy/dsh-session-repacker
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:仅索引本站尚未对其实装验证,仅收录元数据
是什么
dsh 原生插件 · other
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
更新放缓:最近一次提交在 42 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

数据截至 2026/9/22(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-session-repacker

把 DSH 会话日志中成千上万个独立 zstd 帧重打包为官方原生两帧形态,大幅加快旧会话打开速度。

背景:为什么会话打开慢

DSH 的 JSONL 会话后端(dsh-session-persistence-jsonl)每次写入批处理都单独压缩成一个 zstd 帧再追加到 session.jsonl.zstd 尾部。流式输出期间每 ~200ms 一批,一个长会话动辄上万帧;而读取时必须逐帧解压(且后端没有 seek 式后缀读取,无论只要尾部还是全部都要解码整个文件)。

实测(2026-08-14):本机最大会话 5.49MB 压缩 = 14,467 帧 / 19,310 事件,纯解压 ~660ms,真实读取路径约 1.5~3s。

| 会话 | 重打包前 | 重打包后 |
|---|---|---|
| 最大会话 | 14,467 帧 / 5.49MB / ~661ms | 2 帧 / 2.09MB / ~126ms(6 倍) |
| 全量 24 个旧会话 | 39,911 帧 / 20.08MB | 48 帧 / 10.67MB |

重打包同时把压缩体积减半(单大帧压缩率远好于万个小帧)。

原理

把“万帧”日志重打包成官方写入时的原生形态——头部帧(恰好一行 header)+ 单个事件帧(其余全部明文拼接后重压一帧)。明文逐字节不变,dsh 读取路径完全兼容(assertZstdHeaderFrame 只要求第一帧恰为一行 header)。

覆盖一切从磁盘读旧会话的路径:GUI 打开、新对话接续/分支(fork 前需全量解码父会话)、子会话继承。

安装

作为 DSH 插件(推荐):
dsh plugin --profile web add dsh-session-repacker
或克隆到 plugins/ 目录 + link 进 profile(见 DSH 插件开发手册)

配置(profiles//cordis.patch.yml):

- id: session-repacker
config:
root: 'E:\DeepSeekHarness\sessions'   # 会话根目录(必填)
minFrames: 200        # 帧数低于此值不处理(默认 200)
minAgeMs: 600000      # mtime 距今不足此值不处理,避开活跃写入(默认 10 分钟)
intervalMs: 3600000   # 周期维护间隔毫秒(默认 1 小时)

重启服务器后生效:启动时全量扫描一次,之后按 intervalMs 周期维护。

独立 CLI(无需 DSH 服务)

node tools/repack.mjs                   # 扫描并重打包
node tools/repack.mjs  --dry-run        # 只统计不落盘
node tools/repack.mjs  --file     # 只处理指定文件(可多次)
node tools/repack.mjs  --min-frames 64 --min-age-ms 60000

安全设计

1. 只处理 .jsonl.zstd;跳过 mtime 距今 < minAgeMs 的文件(避开活跃写入)
2. 跳过当前 live 会话(注入 sessions 服务时用 ctx.sessions.list())
3. 替换前做字节级等价校验(新文件解压明文 == 原始明文)
4. 替换前再次 stat 比对 size/mtime,文件被并发追加则放弃本次
5. torn tail(未完成帧)跳过,交给 dsh 自身的修复路径
6. 临时文件 + fsync + 原子 rename(Windows 下与官方后端同构)

服务器对重打包后的文件追加新帧(session/end-seed 等)实测兼容,后续可被再次重打包(幂等)。

构建

npm i
npx -y tsdown@0.22.2 --config ./tsdown.config.ts   # 产物 lib/index.mjs

注意事项

- 已产生的旧文件帧数定形后无法回溯压缩,只能靠本插件/CLI 重打包;writeBatchMaxDelayMs 调大可减少未来日志的帧数(默认 200ms,属耐久性权衡)
- 插件只做维护,不改变任何读取 API 与数据语义

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(kkishapppy)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群