💡 一句话总结:用 /new 新建会话,用 /sessions 切换,用 /undo 撤销,用 /export 导出,用 opencode import 导入。
📝 课程笔记#

学完你能做什么#
导出对话记录(Markdown 和 JSON 两种格式)
你现在的困境#
想从对话的某个节点尝试不同方向,但不想丢掉原来的进度
什么时候用这一招#
🎒 开始前的准备#
核心思路#
为什么需要多个会话#
并行工作:一边让 AI 写代码,一边让 AI 分析文档
会话存在哪里?#
OpenCode 把会话数据存储在本地文件系统中,按 JSON 文件组织:~/.local/share/opencode/storage/
├── session/ # 会话信息
│ └── <project-id>/
│ └── <session-id>.json
├── message/ # 消息记录
│ └── <session-id>/
│ └── <message-id>.json
└── part/ # 消息片段(文本、工具调用等)
└── <message-id>/
└── <part-id>.json
~/.local/share/opencode/ 是 XDG 标准的数据目录。macOS 和 Linux 都遵循这个规范。会话按项目隔离,不同项目的会话互不干扰。
会话的一生#
创建 → 活跃对话 → 压缩(上下文太长时自动触发)→ 归档/删除
大多数时候你不需要关心这些,OpenCode 会自动处理。你只需要知道:对话太长时会自动压缩(详见 5.20 上下文压缩),不用的会话可以删除。会话管理命令速览#
| 命令 | 作用 |
|---|
/new | 新建会话 |
/sessions | 查看并切换会话 |
/undo | 撤销上一步操作 |
/redo | 重做被撤销的操作 |
/compact | 压缩上下文 |
/export | 导出对话记录 |
/share | 分享会话(生成链接) |
opencode import | 从文件或 URL 导入会话(CLI 命令) |
opencode export | 导出会话为 JSON(CLI 命令) |
跟我做#
第 1 步:新建一个会话#
为什么
开始新任务时,用新会话避免之前的上下文干扰。第 2 步:在新会话中对话#
第 3 步:查看并切换会话#
第 4 步:测试撤销功能#
::: warning ⚠️ 前提条件
/undo 撤销文件操作(创建、修改、删除文件)需要项目是 Git 仓库。| 项目类型 | 撤销文件操作 | 撤销对话记录 |
|---|
| Git 项目 | ✅ 文件会被恢复 | ✅ |
| 非 Git 项目 | ❌ 文件不会变化 | ✅ |
下面的测试请在一个 Git 项目中进行。如果当前目录不是 Git 仓库,先执行 git init。
:::创建一个 test.txt 文件,内容写 "hello"
第 5 步:压缩过长的上下文#
为什么
对话太长会占用 Token,压缩后可以节省成本。你应该看到:AI 会总结之前的对话,然后清理旧消息第 6 步:导出对话记录#
第 7 步:用 CLI 导出和导入会话#
为什么
TUI 里的 /export 导出的 是 Markdown 格式,适合阅读。但如果你想备份完整数据、或者在另一台机器上恢复会话,需要用 CLI 命令导出 JSON 格式。Export session
◇ Select session to export
│ Fix authentication bug • 2026-02-14 10:30 • a1b2c3d4
│ Add new API endpoint • 2026-02-13 15:20 • e5f6g7h8
└ Update documentation • 2026-02-12 09:00 • i9j0k1l2
你应该看到:Imported session: session_abc123导入后,用 /sessions 就能看到恢复的会话。第 8 步:从分享链接导入会话#
为什么
同事分享了一个 OpenCode 会话链接,你想在本地继续那个对话。分享链接的默认格式是 https://opncd.ai/share/<slug>。企业版用户的域名可能不同,取决于 enterprise.url 配置。如果 URL 格式不对,会提示错误。
第 9 步:Fork 会话#
为什么
有时候你想从对话的某个节点"分叉"出去,尝试不同的方向,但又不想丢掉原来的对话。Fork 就是干这个的。Fork 会复制当前会话的所有历史消息,创建一个新会话。新会话的标题会加上 (fork #1) 后缀,再次 Fork 则递增为 (fork #2)、(fork #3)……Fork 没有默认快捷键,你可以在 opencode.json 中给它绑一个:{
"keybinds": {
"session_fork": "<leader>f"
}
}
配置后,按 Ctrl+X f 就能 Fork 当前会话。你应该看到:新会话出现,标题类似 原标题 (fork #1)
检查点 ✅#
踩坑提醒#
| 现象 | 原因 | 解决 |
|---|
/undo 文件没恢复 | 当前目录不是 Git 仓库 | 切换到 Git 项目,或先执行 git init |
/undo 撤销对话但文件还在 | 非 Git 项目不支持文件撤销 | 这是正常行为,只撤销对话记录 |
| 会话太多找不到 | 会话名都是默认的 | 养成用 /new 任务名 命名的习惯 |
/compact 后丢了重要信息 | 压缩会删除详细对话 | 重要信息先 /export 备份 |
opencode import 失败 | JSON 格式不对 | 只能导入 opencode export 导出的文件 |
| 分享 URL 导入失败 | URL 格式不对 | 格式必须是 https://opncd.ai/share/<slug> |
本课小结#
5.
用 /export 导出对话(Markdown 格式)
6.
用 opencode export / opencode import 备份和恢复完整会话(JSON 格式)
7.
从分享链接导入会话:opencode import https://opncd.ai/share/xxx
下一课预告#