- DSH
- 0.1.5-alpha.1
- 系统
- Windows / macOS / Linux
- 风险
- high
本页目录(6)
DSH 升级后历史会话打不开,不等于已经被删除。先保留完整数据副本和脱敏错误原文,再区分列表加载、正文读取与格式迁移失败;仅凭报错无法保证数据完整或无损恢复。
本页针对 0.1.5-alpha.1 的 Session V3 边界,按固定提交 5dda764ed3aa172535a7967b06ff95d9cbfe536a 审阅。9 月 9 日复核的社区报告尚无已确认修复版本;本站没有运行这些故障复现、迁移或真实会话恢复。准备升级而尚未遇到错误,先看更新与回退指南。
先判断卡在哪一层
| 现象 | 先检查什么 | 下一步 |
|---|---|---|
| 网页本身打不开 | 服务启动和访问地址 | Web UI 启动排障 |
| 页面打开,但模块 404、插件或文件侧栏不可用 | 客户端模块与当前 Profile | 升级验收分层 |
| 列表不出现或请求超时 | 列表请求、服务日志中是否有明确读取错误 | 不凭超时推断 Session 已损坏或删除 |
| 列表存在,单个历史正文失败 | 该会话的脱敏错误类型、源格式和运行版本 | 进入下表,列表成功不代表正文可恢复 |
错误对应的只读检查与停止条件
以下以 0.1.5-alpha.1 为版本背景。先正常停止任务及访问同一数据根的进程,保留所有日志代、配置、Profile、锁文件和对应程序;凭据另行受保护保存,不随问题报告上传。无法确定数据根或是否仍有写入时,先停止恢复尝试。
| 错误或现象 | 下一步只读检查 | 停止条件 |
|---|---|---|
SessionFormatUnsupportedMigrationError,或外层 SessionFormatUnsupportedError 带迁移拒绝原因 | 记录迁移源/目标版本、拒绝原因;在副本上核对 header 与错误附近的事件类型,不改正文 | 不清楚历史写入版本、只有唯一副本,或需要改事件才能继续 |
历史读取报告中的 unknown to this harness and not marked ignorable | 保留完整错误上下文,记录未知类型名称、当时宿主与插件版本;参见下方案例 | 无法判定事件归属;不能通过删除事件或强行标记 ignorable 试修 |
SessionFormatUnsupportedError 指向较新的日志版本 | 对照实际运行程序与副本的格式版本;错误名也可能包装迁移拒绝,必须读原因 | 旧程序尝试读取 V3;不要降 header 或删除高版本 generation |
| 只有超时、列表为空,没有上述错误 | 核对失败请求和日志时间,避免反复写入 | 原因不明时停止格式修复,不执行清库或批量迁移 |
固定持久化实现会包装部分迁移错误,所以仅看最外层错误名不足以定位。JSONL 实现(外部链接,在新标签页打开)还区分只读 open 与写 open:只读打开不发布迁移后继,写打开在校验通过后发布后继并保留源文件。应用按钮可能走写路径,不能把“点击查看”当作只读诊断工具。
案例一:中断轮次使 V2 到 V3 迁移被拒绝
#6010 用户报告(外部链接,在新标签页打开)描述了特定历史 V2 会话:前一轮没有 turn/end,随后出现新一轮 turn/start,升级后遇到轮次关系校验拒绝。该报告不是所有 V2 会话都会失败的证据。
本站核对了固定 V2 关系校验配置(外部链接,在新标签页打开),其中没有报告讨论的 legacyInterruptedTurnRestart 项;这一代码事实不能独立证明报告的全部因果链。帖子中的测试数量、恢复结果与补丁均为报告者提供,本站未复现,也未确认有发行版包含对应修复。
记录错误中的源/目标格式和轮次关系提示即可。不要在唯一日志上补 turn/end、重编号或直接套用社区单行补丁。需要验证补丁时应交由维护者在合成夹具或脱敏副本中独立复现。
案例二:未知事件与插件历史写入
#5979 用户报告(外部链接,在新标签页打开)涉及历史冷读时的未知且未标记可忽略事件。回复中对打包事件和自定义事件的解释属于社区讨论,不能据此宣称新版已修复全部会话读取问题。
固定的 V2→V3 迁移规范(外部链接,在新标签页打开)明确拒绝未经审计的未知源事件,即使源事件标为可忽略也不保证可迁移。原生格式的事件准入与跨版本迁移是不同检查,不应混为一谈。
记录事件类型及历史插件版本,不因日志里出现插件名就认定该插件是根因。卸载插件不会撤销已经写入的历史事件;删除未知记录也可能破坏后续引用与对话含义。
在副本中评估恢复
- 先记录当前程序、安装方式、数据位置与升级前版本,正常停止写入;保存完整副本及恢复所需的旧程序环境。
- 只在副本上用文本查看器核对格式 header、错误附近的事件类型与时间,不保存修改,不上传原始 Session。Profile 独立不保证数据根隔离,避免两个进程访问同一份数据。
- 有升级前备份时,评估恢复“旧程序 + 对应旧数据副本”。旧程序不能降级读取 V3,新版产生的对话也不能承诺自动合并回旧副本。
- 只有在可丢弃副本上才尝试应用层打开或恢复;它可能写入。没有匹配环境、完整备份或明确错误归类时,保留现场并提交脱敏问题记录,等待可核验的处理路径。
- 核对重要会话的正文、最近消息与所需工具结果,而不只看标题和数量。不要为了验收重新执行历史工具、发送消息或重放外部副作用。
正文可读只是本次读取检查通过,不代表数据已完全恢复。详细的 Resume、Replay、Fork 区别见Session 指南,版本变化见0.1.5-alpha.1 专题。
可复制的会话故障记录
以下均为虚构示例,替换后只保留诊断所需信息。不要粘贴 API Key、Token、完整私有路径、会话正文或原始 Session 文件;本地原始证据与公开报告分开保存。
DSH 会话故障记录(虚构示例)
实际运行版本:0.1.5-alpha.1
升级前版本:0.1.3-alpha.2(示例,请核对实际值)
安装方式:npm 全局安装
操作系统:Windows 11
Profile 代号:example-profile(不用真实私有名称)
失败阶段:列表可见,单个历史正文读取失败
源/目标格式:V2 → V3(仅在错误或 header 已确认时填写)
脱敏错误类型与原因:填写错误名称及关系提示,移除路径和正文
是否包含历史插件事件:未知;如已确认,仅填写类型与版本
是否停止全部写入:待确认
完整备份及对应旧环境:待确认,不填写实际私有路径
仅在副本上进行的检查:尚未尝试恢复
目标正文、最近消息及工具结果:未核对
当前决定:保留现场,等待可验证处理路径复制只是准备问题记录,不代表故障已恢复。本页提供源码审阅后的分流建议,没有安装执行第三方插件、使用真实凭据或修改用户数据。
来源与维护信息
本文根据以下原始资料整理。版本变化后,请以官方资料和页面标注的验证日期为准。
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 README.zh.md(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 validation.ts(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 index.ts(外部链接,在新标签页打开)