- DSH
- 0.1.5-alpha.1
- 系统
- Windows / macOS / Linux
- 风险
- high
本页目录(10)
DSH 升级后历史会话打不开,不等于已经被删除。先保留完整数据副本和脱敏错误原文,再区分列表加载、正文读取与格式迁移失败。若是新会话按钮没反应,先查预设挂载错误,不直接按旧日志损坏处理;仅凭报错无法保证数据完整或无损恢复。
本页保留 0.1.5-alpha.1 的 Session V3 历史边界,按固定提交 5dda764ed3aa172535a7967b06ff95d9cbfe536a 审阅。9 月 9 日复核的社区报告尚无已确认修复版本;本站没有运行这些故障复现、迁移或真实会话恢复。准备升级而尚未遇到错误,先看更新与回退指南。
9 月 11 日新增 rc.1 社区报错与 rc.2 固定配置源码核查;各案例分别注明版本,不代表全部升级路径或恢复工具已验收。
0.1.7-rc.1:新建会话看到旧历史或提示被占用
2026-09-24 固定源码复核:本节仅适用于 0.1.7-rc.1(46a7f68b0922371ce7144b668b90e377d8e799f4);下方旧版本案例保留原来的版本范围。本站没有运行 DSH,也没有复现这些现象。
rc.1 调整了空白会话的复用规则:打开工作区时,DSH 会优先复用一个还没开始对话的空白会话;如果这个空白会话的写锁正被另一个 DSH 进程持有,会直接新建一个空白会话,不再去找别的候选。同一个会话同一时间只能由一个进程写入。rc.1 起允许多个 DSH 实例同时运行,它们共用同一份会话存储时,会各自使用不同的空白会话。
| 现象 | 在 0.1.7-rc.1 中的原因 | 下一步 | 不要做 |
|---|---|---|---|
| 点"新建会话"却看到别的会话的历史 | 发行说明列为 rc.1 已修复的问题:新建空白会话不再误复用已有历史 | 先确认实际运行版本;低于 rc.1 时记录现象,按下方原有分流处理 | 不要删除 Session 文件、锁文件或历史 |
| 提示"当前会话已被占用,可能是其他正在运行的 DSH 导致的(如其他 dsh web、桌面端),请退出其他正在运行的 DSH 后重试。" | 该会话的写锁被另一个 DSH 进程持有(Host 返回 session/writer-held)。两个实例打开同一个已有对话时仍会出现 | 找到并正常退出其他 dsh web 或桌面端后重试;只想开始新对话时,直接新建会话 | 不要强行结束所有 Node 进程,也不要删除锁文件 |
| 新建会话失败 | 发行说明称 rc.1 会显示创建失败原因;本站核对的实现记录只确认写锁争用会自动改为新建,其他错误在界面上怎样显示没有确认 | 保存界面和终端里的完整提示及版本,按提示原文分流到权限、工作区或模型排障 | 不要把创建失败当成历史数据损坏 |
| 列表刷新或断线重连后,已发送消息的会话又显示成新会话 | rc.1 修复了列表刷新把已受理的会话退回空白的问题。这只是界面记忆:不代表消息已经写入历史,整页重新加载后也不保留 | 等回复出现,或打开该会话确认;仍有问题时记录版本和操作顺序 | 不要重复发送同一个任务 |
归档、置顶和停止任务的区别见 Session 指南的 0.1.7-rc.1 小节;V4 会话格式和升级前备份见更新与回退指南。
依据:空白会话复用与写锁(外部链接,在新标签页打开)、刷新后保留受理状态(外部链接,在新标签页打开)、Session Controller 说明(外部链接,在新标签页打开)、界面提示文案(外部链接,在新标签页打开)、0.1.7-rc.1 发行说明(外部链接,在新标签页打开)。前两项是上游实现记录。
0.1.5-rc.1:空工具名与迁移拒绝分开排查
rc.1 发行说明(外部链接,在新标签页打开)列明修复 DeepSeek 流式工具调用续传片段用空值覆盖调用 ID 或名称的问题,以避免空工具名失败及写入无法重新打开的记录。该说明不能证明既有坏日志已被修复,也不是所有 V2→V3 迁移错误的处理方案。
若错误涉及空工具名,记录实际版本、阶段及脱敏错误;不要自行改工具 ID 或删除事件。若是下文的关系校验拒绝或未知事件,继续按原分流保留副本和停止条件。已核对的 V2 关系校验文件与 alpha.2 相同,不代表整个迁移链完全没变;本批没有足够证据将 #6010 / #5979 标为已解决,没有运行真实恢复。
先判断卡在哪一层
| 现象 | 先检查什么 | 下一步 |
|---|---|---|
| 网页本身打不开 | 服务启动和访问地址 | Web UI 启动排障 |
| 新建会话看到旧历史,或提示"当前会话已被占用" | 实际运行版本;是否还有其他 dsh web 或桌面端在运行 | 0.1.7-rc.1 小节 |
| 页面打开,但模块 404、插件或文件侧栏不可用 | 浏览器版本、失败请求与当前 Profile | 文件预览与浏览器排查 |
| 新会话按钮没反应、切换模型时报告 preset 挂载失败 | 当前使用的 Agent preset、Host 脱敏错误和配置 schema | 见下文预设案例;不能据此断定旧历史已损坏 |
| 列表不出现或请求超时 | 列表请求、服务日志中是否有明确读取错误 | 不凭超时推断 Session 已损坏或删除 |
| 列表存在,单个历史正文失败 | 该会话的脱敏错误类型、源格式和运行版本 | 进入下表,列表成功不代表正文可恢复 |
错误对应的只读检查与停止条件
原有迁移案例以 0.1.5-alpha.1 为背景,新增 provenance 和 preset 报告来自 rc.1;不混用影响范围。先正常停止任务及访问同一数据根的进程,保留所有日志代、配置、Profile、锁文件和对应程序;凭据另行受保护保存,不随问题报告上传。无法确定数据根或是否仍有写入时,先停止恢复尝试。
| 错误或现象 | 下一步只读检查 | 停止条件 |
|---|---|---|
SessionFormatUnsupportedMigrationError,或外层 SessionFormatUnsupportedError 带迁移拒绝原因 | 记录迁移源/目标版本、拒绝原因;在副本上核对 header 与错误附近的事件类型,不改正文 | 不清楚历史写入版本、只有唯一副本,或需要改事件才能继续 |
历史读取报告中的 unknown to this harness and not marked ignorable | 保留完整错误上下文,记录未知类型名称、当时宿主与插件版本;参见下方案例 | 无法判定事件归属;不能通过删除事件或强行标记 ignorable 试修 |
SessionFormatUnsupportedError 指向较新的日志版本 | 对照实际运行程序与副本的格式版本;错误名也可能包装迁移拒绝,必须读原因 | 旧程序尝试读取 V3;不要降 header 或删除高版本 generation |
chunk provenance is not one complete ordered attempt | 记录错误中的源格式与阶段,保留完整副本;不能只看外层 resume failed | 不自行补引用、重编号或运行未经审核的修复脚本 |
$.prefix missing required value / preset failed to mount | 核对当前预设中 Persona 配置与实际版本 schema | 未确认配置归属和备份时不全局替换字段 |
| 只有超时、列表为空,没有上述错误 | 核对失败请求和日志时间,避免反复写入 | 原因不明时停止格式修复,不执行清库或批量迁移 |
固定持久化实现会包装部分迁移错误,所以仅看最外层错误名不足以定位。JSONL 实现(外部链接,在新标签页打开)还区分只读 open 与写 open:只读打开不发布迁移后继,写打开在校验通过后发布后继并保留源文件。应用按钮可能走写路径,不能把“点击查看”当作只读诊断工具。
案例一:中断轮次使 V2 到 V3 迁移被拒绝
#6010 用户报告(外部链接,在新标签页打开)描述了特定历史 V2 会话:前一轮没有 turn/end,随后出现新一轮 turn/start,升级后遇到轮次关系校验拒绝。该报告不是所有 V2 会话都会失败的证据。
本站核对了固定 V2 关系校验配置(外部链接,在新标签页打开),其中没有报告讨论的 legacyInterruptedTurnRestart 项;这一代码事实不能独立证明报告的全部因果链。帖子中的测试数量、恢复结果与补丁均为报告者提供,本站未复现,也未确认有发行版包含对应修复。
记录错误中的源/目标格式和轮次关系提示即可。不要在唯一日志上补 turn/end、重编号或直接套用社区单行补丁。需要验证补丁时应交由维护者在合成夹具或脱敏副本中独立复现。
案例二:未知事件与插件历史写入
#5979 用户报告(外部链接,在新标签页打开)涉及历史冷读时的未知且未标记可忽略事件。回复中对打包事件和自定义事件的解释属于社区讨论,不能据此宣称新版已修复全部会话读取问题。
固定的 V2→V3 迁移规范(外部链接,在新标签页打开)明确拒绝未经审计的未知源事件,即使源事件标为可忽略也不保证可迁移。原生格式的事件准入与跨版本迁移是不同检查,不应混为一谈。
记录事件类型及历史插件版本,不因日志里出现插件名就认定该插件是根因。卸载插件不会撤销已经写入的历史事件;删除未知记录也可能破坏后续引用与对话含义。
rc.1 报告:provenance 校验拒绝
#6175(外部链接,在新标签页打开)报告升级 rc.1 后旧历史无法加载,错误含 chunk provenance is not one complete ordered attempt,并提示 source v0 artifact remains unchanged。应记录 v0 源格式与完整拒绝原因,不能把它直接归为 V2→V3 的未闭合轮次问题。
“源文件未改变”是这条错误中的状态提示,不等于本站已验证所有日志健康或可以无损恢复。回复里的修复工具与成功结果属于第三方声明,本页没有审阅或运行该工具,不提供其安装或修复命令。保存完整副本,再交由维护者核对事件引用;不要在唯一日志上补 seq、删事件或降格式版本。
rc.1 报告:新会话没反应与预设 prefix 缺失
#6185(外部链接,在新标签页打开)报告自定义 Agent preset 挂载失败,出现 $.prefix missing required value,并伴随新会话按钮无反应、模型操作失败。本站在 rc.2 Persona schema(外部链接,在新标签页打开)及固定配置说明(外部链接,在新标签页打开)确认 prefix 是必填人设文本。尚未完整核对字段首次变化版本,不据该帖断言所有旧预设都会失效。
- 从 Host 脱敏错误确认是否为
persona的prefix缺失,并记下当前使用的预设代号。只有按钮无反应而没有此错误时,继续查失败请求,不直接改配置。 - 定位报错所指的预设文件,在停止相关任务后备份该配置;不要公开真实文件路径。重装程序与修正保留下来的用户预设是不同操作,不能承诺重装会修复它。
- 在隔离副本中对照实际运行版本的 schema。只有确认该条为 Persona 配置且缺少
prefix时,才按该版本文档补齐人设文本;不要在所有 YAML 中批量把text改名。 - 在可丢弃工作区验证预设挂载及新会话创建,观察错误是否消失;再核对模型选择和最小文本任务。新会话可用不代表旧会话迁移已经通过。
下面仅展示 rc.2 第一方文档要求的 Persona 配置字段,不是可直接替换整个预设的文件。其他现有配置须分别保留和核对,本站没有执行此修改:
config:
prefix: "你是一个帮助整理虚构项目笔记的助理。"
若变成 API Key 或搜索端点错误,改按搜索 401 分流处理,不继续修改历史事件。
在副本中评估恢复
- 先记录当前程序、安装方式、数据位置与升级前版本,正常停止写入;保存完整副本及恢复所需的旧程序环境。
- 只在副本上用文本查看器核对格式 header、错误附近的事件类型与时间,不保存修改,不上传原始 Session。Profile 独立不保证数据根隔离,避免两个进程访问同一份数据。
- 有升级前备份时,评估恢复“旧程序 + 对应旧数据副本”。旧程序不能降级读取 V3,新版产生的对话也不能承诺自动合并回旧副本。
- 只有在可丢弃副本上才尝试应用层打开或恢复;它可能写入。没有匹配环境、完整备份或明确错误归类时,保留现场并提交脱敏问题记录,等待可核验的处理路径。
- 核对重要会话的正文、最近消息与所需工具结果,而不只看标题和数量。不要为了验收重新执行历史工具、发送消息或重放外部副作用。
正文可读只是本次读取检查通过,不代表数据已完全恢复。详细的 Resume、Replay、Fork 区别见Session 指南,版本变化见0.1.5-alpha.1 专题。
可复制的会话故障记录
以下均为虚构示例,替换后只保留诊断所需信息。不要粘贴 API Key、Token、完整私有路径、会话正文或原始 Session 文件;本地原始证据与公开报告分开保存。
DSH 会话故障记录(虚构示例)
实际运行版本:待填(例如 0.1.5-rc.1)
升级前版本:0.1.3-alpha.2(示例,请核对实际值)
安装方式:npm 全局安装
操作系统 / Node 版本:待填
浏览器名称与版本:待填
当前 Agent preset 代号:待填(不用真实私有名称)
Profile 代号:example-profile(不用真实私有名称)
失败动作:打开旧会话 / 创建新会话 / 预览文件 / 其他
失败范围:全部对象 / 单个对象 / 尚未确认
同一 Host、同一文件换浏览器的结果:未测试
源/目标格式:V2 → V3(仅在错误或 header 已确认时填写)
脱敏错误类型与原因:填写错误名称及关系提示,移除路径和正文
是否包含历史插件事件:未知;如已确认,仅填写类型与版本
是否停止全部写入:待确认
完整备份及对应旧环境:待确认,不填写实际私有路径
仅在副本上进行的检查:尚未尝试恢复
目标正文、最近消息及工具结果:未核对
当前决定:保留现场,等待可验证处理路径复制只是准备问题记录,不代表故障已恢复。本页提供源码审阅后的分流建议,没有安装执行第三方插件、使用真实凭据或修改用户数据。
来源与维护信息
本文根据以下原始资料整理。版本变化后,请以官方资料和页面标注的验证日期为准。
- GitHub:deepseek-ai/deepseek-harness 固定提交 2026-09-17-process-local-blank-sessions.zh.md(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 2026-09-15-client-session-blank-reconciliation.zh.md(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 README.zh.md(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 locales.ts(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 index.ts(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 README.zh.md(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness(外部链接,在新标签页打开)
- GitHub:deepseek-ai/deepseek-harness 固定提交 validation.ts(外部链接,在新标签页打开)
- 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(外部链接,在新标签页打开)