会话与历史
持久会话
每个会话都是一份持久 JSONL 日志,存放在 $OMDSH_HOME/sessions,回退到 $DSH_HOME,再到 ~/.dsh。日志是回放、projection 与搜索的事实来源。
omdsh --resume <session-id>可以从 shell 重新打开会话;第二次按Ctrl+C时,如果会话可恢复,omdsh 会打印带 id 的这条命令。/resume打开可搜索的选择器,显示最近一条人类消息的预览、时间、事件数与完成状态;/resume <session-id>直接跳过选择器。/new新建干净会话,而不是从当前会话分叉。/retry把最近一条人类提示作为新回合再次提交。Esc两次打开对话回合选择器:选中某个用户回合会从该消息之前的历史分叉出新会话,并把原始提示恢复到 composer。原会话仍可通过/resume打开,因此回退是可恢复的,不是破坏性的。
走查见恢复并管理长会话。
Session Library
/sessions 打开 Session Library,即带置顶与重命名操作的恢复列表:按 p 置顶会话,按 r 重命名。置顶与名称保存在 $OMDSH_HOME/omdsh/session-library.json。
/sessions <查询> 则改为搜索持久会话内容,通过 session-query 索引——SQLite FTS5,在每次运行首次搜索时于内存中构建——并恢复选中的结果。搜索覆盖完整会话日志,因此被压缩或折叠历史中的匹配同样会被计入。
磁盘上的日志
会话文件可能经过压缩并带有完整性校验,请不要手工修改;请继续使用 omdsh 打开这些旧会话。旧版本写入的日志会在该会话被写入时迁移,并在升级后的首次启动由后台任务按会话格式迁移一次,发布一个带版本名的后继文件(session.v4.jsonl[.zstd]),前驱文件保持不变。启动时会有一条提示,说明本次迁移了多少个会话。
最初使用 v0.5.0 至 v0.11.0 创建的会话可能包含私有的 omdsh/tools-selected 事件:当前 omdsh 可以识别并恢复它们,但未经扩展的 DSH 持久化读取器会拒绝该日志。v0.12.0 及更高版本创建的会话不再写入该事件,因此新建会话可被原版 DSH 持久化读取。
本地文件
以下内容都位于同一个 home($OMDSH_HOME,否则 $DSH_HOME,再否则 ~/.dsh):
| 路径 | 内容 |
|---|---|
sessions/ | 持久会话日志。 |
omdsh/history.jsonl | Ctrl+R 使用的输入历史。 |
omdsh/keybindings.json | 应用级键位覆盖。 |
omdsh/model-favorites.json | Ctrl+P 与 Alt+P 使用的收藏模型循环。 |
omdsh/session-library.json | 会话置顶与重命名。 |
omdsh/recent-sessions.json | 跨启动复用的会话库标签;删除后下次启动会重新读取每个存储日志。 |
omdsh/sessions-upgraded.json | 记录已存日志已迁移到的会话格式。 |
sessions-query.sqlite | 会话内容搜索使用的派生全文索引;删除后会在下次搜索时重建。 |
profiles/omdsh/ | 由 omdsh plugin 管理的用户插件 Profile,其中包括持久化设置的 cordis.patch.yml。 |
在 /settings 中修改的设置会持久化到该 Profile 补丁,而不是单独的设置文件。