OpenCode 会话同步与跨设备续接
OpenCode 的 CLI 与桌面版共用同一个数据库,所以无论你用哪个入口写的会话,同步都能一并拿走 —— 这是它比其他 Agent 省心的地方。
会话存在哪里
| 项 | 值 |
|---|---|
| 数据库 | $XDG_DATA_HOME/opencode/opencode.db(SQLite) |
| 表 | session / message / part |
| 共用范围 | CLI 与桌面版共用同一份库与同一套表 |
Windows 上 XDG_DATA_HOME 未设置时通常落在用户目录下的默认位置;如果你改过该变量,适配器会跟着走。
接入同步
- 在接入帮助页选择 OpenCode → 下载客户端包(服务端地址已自动预填)。
- 解压后首次运行
install-deps.bat(Windows)或./install-deps.sh(macOS / Linux)。 - 用页面给出的注册命令接入(工作区 API Key 已自动填入),客户端以
HERMES_SYNC_AGENT=opencode启动。 - 重启 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 —— 它们读的是同一个池子。
相关
- 支持的 Agent
- 接入帮助(登录后可用)
- 技术细节:SUPPORTED_AGENTS.md