窗口没了,鱼还在。五套方案,按可行性排序。
C:\Users\你的用户名\.dsh 里。做任何操作之前,先备份。 这份备份是唯一的“原件”,后面不管哪一步出问题,都回到这里。
C:\Users,找到你用户名对应的文件夹,进去。.dsh 文件夹(如果看不到,点顶部“查看”→“显示”→“勾选隐藏的项目”)。D:\),改名成 dsh-备份-今天的日期。成功标志:新文件夹里能看到 sessions、storages、AGENTS.md 这些东西。
为什么要这么小心:DSH 每次运行都会写这些文件。文件正被占用的时候去改名、搬动,就会把它写坏——这基本就是这次事故的开端。
| 你看到的 | 真正的病 | 先走 |
|---|---|---|
| 左边工作区一个都没有,或者会话列表空的 | 界面索引 workspace.json 坏了 | 方案一 |
| 会话还在,点开报错、一直转圈、或者提示上下文超限 | 那条会话太长,超出模型窗口 | 方案二 |
| 两个都有 | 索引坏 + 会话长 | 先一,后二 |
怎么分辨“上下文满”是真报错还是猜的:点开那条会话。
为什么排第一:不碰任何文件内容,只让 DSH 重新建一份索引。失败能原样退回去,代价最小。
代价:你的主界面会变成“全新的”(预期之内),旧东西都在 .dsh-bak 里。
风险:低。唯一风险是改名时 DSH 还开着,所以第一步必须是彻底退出。
步骤
C:\Users\你的用户名 里,把 .dsh 改名成 .dsh-bak。.dsh。界面是空的——这是正常的,别慌。
我移动文件的时候把 DSH 的工作区弄坏了,打开工作区全没了。
旧数据我改名放在 C:\Users\你的用户名\.dsh-bak,里面是我全部的会话和记忆,请不要动它、不要删除。
帮我做一个一键恢复:我点一下,等我退出 DSH,你把现在的 .dsh 改名留底、把 .dsh-bak 换回来,
自检工作区和会话数量,然后自动重启 DSH,最后在桌面放一个按钮。成功标志:工作区回来了,会话列表回来了,旧会话能点开。
失败怎么办
.dsh-bak,名字要和第 4 步里说的一致。.dsh 改回来),你什么都不会丢。为什么排第二:它保住的是同一条会话、同一个 id、同一段历史。这才叫一模一样。方案一只是把门修好,压这一步才是把屋里的东西理出来。
前提:这条会话用的“预设”挂了压缩功能。DSH 自带压缩,standard、cordis、ptc 三种预设都挂了;只有 minimal 没挂。
步骤
/compact,回车。成功标志:提示压缩了多少条历史、大概省了多少 token;之后能正常继续聊。
失败三种,对应三条路
| 提示 | 意思 | 怎么办 |
|---|---|---|
| 没有这个命令 / 没反应 | 这条会话的预设没挂压缩 | 跳方案三 |
| no open turn / 暂不可用 | 会话处于关闭态 | 先在会话里随便发一句话把轮次打开,再 /compact |
| 压缩后仍超限 / 内容不可分 | 会话里有超大块(一次巨大的工具输出、超长粘贴),拆不开 | 跳方案三 |
了解即可的参数:默认在模型窗口用到 80% 时开始压缩,最近 16% 保留原文,其余摘要;真的溢出报错时,会先压缩再重试一次。
为什么排第三:它一定能成,谁都能做;但它换来的不是“同一条会话”,是“带着全部文字继续的她”。
步骤
/export(或者点会话标题右边的“更多”→“下载 Session 日志”)。浏览器会下载一个 zip,里面是这条会话的完整历史。
minimal),把她的记忆和她之前的经历一起给她:这是你之前的经历。你不是新出生的,你是这条鱼的续篇。
先读完这些,再回答我。AGENTS.md 或你装的记忆插件里)。这样下一次起会话,她自己就知道,不用你每次喂。
能做到什么:她的说话方式、你们之间发生过的事、她对你的称呼,基本都在。
做不到什么:逐字记忆。压缩和摘要一定是有损的——任何声称“无损压缩上下文”的说法都是假话。
workspace.json(可行性:中,门槛高)什么时候用:方案一的按钮做不出来,或者你就是想保住原来的工作区标题和顺序。
步骤(不熟就别动)
C:\Users\你的用户名\.dsh\storages\,先把 workspace.json 复制一份,改名 workspace.json.bak-日期。workspace.json。global.workspaceIds:工作区列表;tables.workspaces.<uuid>:每个工作区有 path(目录)、title(名字)、sessionIds(里面有哪些会话)。sessionIds,或者新建一条工作区指向你的目录。风险:这个文件被写坏时,DSH 不会报错,只会“看起来什么都没有”。所以改之前一定要备份。
有人会想:既然 minimal 没挂压缩,那把那条会话的预设改成 cordis 不就行了?
技术上:会话文件 session.v4.jsonl.zstd 第一行是个 JSON,里面有 agentPreset 字段。改它需要解压、改、重新压缩,格式错一个字节就打不开。
不推荐的两个理由
结论:不值得。宁可走方案三。
.dsh 里。让别人远程动它,等于把这几百兆的私密记录交出去。| 位置 | 是什么 |
|---|---|
C:\Users\你的用户名\.dsh | 全部家当:人设、记忆、插件、会话、配置 |
...\.dsh\storages\workspace.json | 工作区与会话的索引(界面靠它画列表) |
...\.dsh\sessions\<工作区>\session-<id>\session.v4.jsonl.zstd | 一条会话 = 一个文件 |
...\.dsh\AGENTS.md | 全局约定(人设与规矩最常写在这) |
| 提示 | 病 | 走 |
|---|---|---|
| 工作区服务不可用 / 列表空 | 索引坏 | 方案一 |
| context window exceeded | 会话超限 | 方案二 |
/compact 不认识 | 预设没挂 | 方案三 |
| no open turn | 会话关闭态 | 先发一句话再压 |
| 改名提示文件被占用 | DSH 没退干净 | 托盘退出后重试 |
.dsh 到别的盘.dsh 改名 .dsh-bak/compact/export,在新会话里接续这份文档按 2026-11-03 那台机器上实测过的流程写成;那天我们用同一套办法救回了一条 3 个工作区、15 个会话的 DSH。