dsh-session-s3
在终端中运行以下命令:
dsh plugin install gengmao/dsh-session-s3
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在终端执行 dsh plugin install gengmao/dsh-session-s3 即可安装该插件,源码地址为 https://github.com/gengmao/dsh-session-s3
插件介绍
DeepSeek Harness 默认将会话历史写入本地 JSONL 文件,这条路径在撕裂写入、缺少 fsync、多进程并发追加等场景下反复触发损坏。社区已有至少七个已确认的 corruption 讨论指向同一类根因,却缺少一个结构性的修复方案。dsh-session-s3 把持久化后端整体搬到 S3 兼容的对象存储上,用两条不变量从根源上消灭这类问题:每一个写入都是一次不可变的 JSONL 分片(携带 SHA-256 校验),写入顺序由清单上的 compare-and-swap 协调——先 If-None-Match 条件 PUT 分片,再 If-Match 条件 PUT 清单。清单的条件写入成功即提交点,分片落盘后永不修改,崩溃最多留下一个无害的孤儿对象。并发写入者通过 CAS 在同一份清单上仲裁,输家收到 StaleWriterError 而非静默覆盖,无需租约、心跳或围栏。
插件同时提供库级 createProvider(load / append / read / compact / close)供非 DSH 调用方直接复用,配置非法时一次性列出全部问题而非只报第一个。AWS S3、Cloudflare R2、MinIO、Tigris 均在兼容矩阵内;指向 S3 Express One Zone 目录桶可把单次 PUT 延迟压到个位数毫秒。凭据走 AWS SDK 默认链,SSO、实例角色、GitHub OIDC 开箱可用,无需在配置里写静态密钥。适合多实例部署、希望把会话数据集中到对象存储、或对本地文件系统持久性没有十足信心的 Harness 用户。需要 Node 22 或更高,且目标存储必须真正尊重 If-Match / If-None-Match 头——如果条件 PUT 总是返回 200,该存储上此插件不保证安全。
使用场景
- 多实例 Harness 部署,将会话历史集中存储到 S3 或 R2
- 本地 JSONL 文件反复出现撕裂写入与并发损坏,需要结构性修复
- 多 AZ 部署下需要会话数据存活于对象存储,同时控制写入延迟
适合人员
- 运维与开发团队:多实例部署 Harness 并需要集中管理会话数据
- 对本地文件系统持久性没有十足信心、希望后端替换为对象存储的用户
- 使用 R2、MinIO、Tigris 等 S3 兼容存储并需要 CAS 语义的开发者