OpenCode 会话同步与跨设备续接

最后更新 2026-09-17 · MIT 许可 · 个人自托管免费

OpenCode 的 CLI 与桌面版共用同一个数据库,所以无论你用哪个入口写的会话,同步都能一并拿走 —— 这是它比其他 Agent 省心的地方。

会话存在哪里

项 值
数据库 $XDG_DATA_HOME/opencode/opencode.db(SQLite)
表 session / message / part
共用范围 CLI 与桌面版共用同一份库与同一套表

Windows 上 XDG_DATA_HOME 未设置时通常落在用户目录下的默认位置;如果你改过该变量,适配器会跟着走。

接入同步

  1. 在接入帮助页选择 OpenCode → 下载客户端包(服务端地址已自动预填)。
  2. 解压后首次运行 install-deps.bat(Windows)或 ./install-deps.sh(macOS / Linux)。
  3. 用页面给出的注册命令接入(工作区 API Key 已自动填入),客户端以 HERMES_SYNC_AGENT=opencode 启动。
  4. 重启 OpenCode。

首次启动增量拉取;远端为空时自动推送本地数据完成配对;之后每 5 分钟同步一次。

同步行为与注意点

  • 按桌面版行格式写入:会话 id 前缀 ses_、消息 msg_、分段 prt_,毫秒时间戳,model 列按 {id, providerID} JSON 写入 —— 同步下来的会话在 OpenCode 里和本地会话长得一样,能正常打开、继续对话。
  • 外来会话会被正规化:从别的 Agent 同步过来的会话会拿到 ses_ 前缀的 id,再次往返时按 id 去重,不会越同步越多份。
  • 项目按目录解析:project_id 由会话所在目录解析得出,所以项目卡片能对上。
  • 只做 SQLite 写入:不重写你的历史文件,也不会因为同步中断留下损坏的库。

跨设备与跨 Agent

两台机器各自装 OpenCode 客户端、接入同一个工作区,就会出现这样的一天:白天在公司用 CLI 让 agent 改代码,晚上在家用桌面版打开同一个会话继续问「刚才那个重构为什么放着不动」。也可以把它交给 Hermes 或 Oh My Pi —— 它们读的是同一个池子。

相关