Skip to content

会话树

会话 涵盖日常Flag。本页向下一层:树的实际形状、每个导航命令对叶指针的作用以及如何导出、共享和恢复从中读取内容。

每个条目都有一个父条目

会话文件是仅附加的 JSONL。每个非标头条目都带有一个 id 和一个 parentId ——定义对话的是这些指针,而不是行顺序。运行时跟踪每个会话的一个额外状态: leafId,下一个追加将挂起的条目。追加总是创建当前叶子的子节点。分支永远不会重写旧条目;它只在下一个追加之前移动叶子。

这意味着单个文件可以容纳多个线程。 “主动路径”是你通过步行得到的任何东西 parentId 从叶回到根。其他所有内容仍然存在于文件中并且对 /tree.

text
root
├─ user: "Start task"
│  └─ assistant: "Plan"
│     ├─ • user: "Try approach A"   ← leaf
│     │  └─ • assistant: "A result"
│     └─ user: "Try approach B"
│        └─ assistant: "B result"

/tree — 将叶子移动到位

/tree 打开文件内导航器。它不会创建新文件或触摸历史记录;它只是重新指出 leafId.

选择器内的按键:

  • ↑/↓ 移动; ←/→ 页。
  • 输入内容以在呈现的文本、标签、角色和工具片段之间进行模糊搜索。
  • Shift+L 设置或清除突出显示条目上的标签。标签作为自己的条目持续存在并成为书签。
  • Ctrl+O 循环过滤器; Alt+D/T/U/L/A 跳转到默认、无工具、仅限用户、仅限标签或全部。

发生了什么 Enter 取决于条目类型:

  • 用户或自定义消息 — 叶子移动到该条目的 家长,消息文本将复制到编辑器中进行编辑并重新提交。选择第一个用户提示会将叶重置为根。
  • 还有什么吗 (助手、工具结果、摘要、簿记)— 叶子移动到所选条目。编辑器未预填充。
  • 当前叶子 — 无操作;选择器以“此时已经”关闭。

如果 branchSummary.enabled 开启后,您在移动前会收到摘要提示;由此产生的 branch_summary 条目被附加到新位置,而不是被遗弃的尾部。

/branch/fork

两者都创造了新的叶子。它们的不同之处在于是否创建新文件。

/branch 打开用户消息选择器并启动一个新线程 在同一个文件中 从选定的提示中。原始分支仍然可以通过 /tree。当您希望一个文件成为一项探索的规范记录时,请使用它。

/fork 将整个当前会话复制到全新的 JSONL 中,用新的 id 重写标头,设置 parentSession 到旧的 id,并将活动会话切换到副本。原始文件未受影响。当替代方案可能被放弃并且您不希望它弄乱父母的时候使用它 /tree 视图。工件目录与文件一起复制。 /fork Turn时被阻止并在以下情况下被禁用 --no-session.

parentSession 新标头中的字段是唯一的沿袭标记——它让工具可以回到源头,但Fork在其他方面是独立的。

简历摘一片叶子

恢复操作全部落在上次写入时文件的叶子上:

  • omp -c (--continue) 更喜欢每个终端的面包屑,然后按 cwd 中的 mtime 回退到最新文件。
  • omp -r <prefix> 匹配当前项目中的一个 id,然后全局匹配。跨项目匹配会提示Fork到当前 cwd,而不是默默地更改目录。
  • omp --fork <id|path> 总是落在一个新文件中 parentSession 设置,跳过提示。
  • --resume <path.jsonl> 直接打开文件。

会话期间, /resume 列出当前 cwd 中的会话(Tab 将选择器切换到所有项目范围)并使用 switchSession 就地交换状态 - 模型、思维水平、MCP 选择和待办事项均从新文件的活动路径重建。

导出、转储、共享

/dump 呈现 活动根→叶路径,而不是整个文件 - 你放弃的分支 /tree 不会出现。 /export/share 嵌入整个文件并在活动路径上打开; HTML 查看器有自己的树导航器来完成其余部分。

  • /export [path]omp --export <file> 编写一个独立的 HTML 渲染。
  • /dump 将纯文本记录复制到剪贴板 - 系统提示、工具、消息、结果。
  • /share 导出到临时 HTML 并运行 ~/.omp/agent/share.{ts,js,mjs} 如果存在;否则通过上传秘密要点 gh.

要共享备用分支, /tree 首先到那片叶子,然后导出。分享 一切 在文件中,无论叶子如何,直接发送 JSONL — 接收者可以 omp --resume ./file.jsonl 并使用 /tree 步行它。

相关

  • 会话 — 恢复、分支、共享和日常标志。
  • 会话格式 — 磁盘上的 JSONL 模式,包括 parentId 和标题字段。
  • 切换 — 用于将会话传递给队友的结构化总结条目。