Watch / 值更
WATCH 技术指南 / 本地接力

OpenCode 与 Claude/Codex 双向会话接力与 SQLite 数据隔离指南

当你需要从商业云端 Agent 切换到支持本地开源模型的 OpenCode(或从 OpenCode 导出至其他 Agent)时,本指南说明如何利用 Watch 实现双向会话接力,并借助 OpenCode 的 SQLite 事务机制保护数据不被污染。

发布日期: 2026-09-21 更新日期: 2026-09-21 适用版本: Watch v0.1.1
核心适用场景

OpenCode 采用单文件关系型 SQLite(默认位于 ~/.local/share/opencode/opencode.db)存储会话,天生具备 ACID 事务与结构化索引优势。当你希望将包含私有代码或需要离线运行的任务交接给本地开源大模型(如通过 Ollama 或 vLLM 驱动的 OpenCode),或者在 OpenCode 完成阶段性排查后需要调用云端前沿模型(Claude/Codex)继续攻坚时,Watch 提供了双向转换通道。

与基于单一 JSONL 追加日志的工具不同,OpenCode 的会话由 sessions、messages 和 parts 等数据表构成。直接修改或手工插入易破坏外键约束与自增索引。Watch 通过内置的 OpenCode 适配器,将跨 Agent 的统一时间线(UnifiedTurn)映射为合法的 OpenCode SQLite 记录,并保持工作目录(cwd)与时间戳对齐。

  1. 步骤 1:确认来源会话 ID 与项目目录

    在原终端或会话目录确认正在进行的会话 ID。Claude Code 会话保存在 ~/.claude/projects/ 中;Codex 保存在 ~/.codex/sessions/ 中;OpenCode 内部由全局唯一会话 ID 索引。检查当前项目目录(cwd)为绝对路径,确保工作空间上下文在目标端完全一致。

  2. 步骤 2:执行目标写入预检(Check)

    在 Watch 终端使用 --check 参数探测目标数据库状态。Watch 会检查 ~/.local/share/opencode/opencode.db 的可写性与事务锁状态(如果配置了 WATCH_OPENCODE_DB 环境变量则优先检查自定义库),确保目标不存在并发写入冲突。

  3. 步骤 3:执行双向流转写入(Handoff)

    在 Watch 桌面端选择来源会话卡片并点击 OpenCode,或在终端执行 open 命令。Watch 会原子提取增量回合,开启 SQLite 事务批量写入 sessions、messages 和 parts 记录,并生成目标会话 ID。

  4. 步骤 4:通过 OpenCode 原生命令恢复(Resume)

    转换完成后,在原工作目录下运行 opencode -s <session-id>(或通过 Watch 桌面端一键唤醒终端)。OpenCode 将自动加载该会话历史与工作空间,无缝继续编写代码。

# 1. 预检:检查从 Claude Code 转入 OpenCode 的目标数据库写入状态 npm run watch -- open <claude-session-id> --to opencode --check --json # 2. 写入:将指定会话导入 OpenCode 本地 SQLite 数据库并输出恢复命令 npm run watch -- open <claude-session-id> --to opencode --json # 3. 反向接力:从 OpenCode 会话接力至 Claude Code 或 Codex npm run watch -- open <opencode-session-id> --to claude --json
边界与安全限制

1. 数据库隔离与备份:Watch 默认操作 ~/.local/share/opencode/opencode.db,支持通过 WATCH_OPENCODE_DB 环境变量切分测试库。写入前采用 SQLite 事务保证原子性,杜绝半写入坏库。 2. 工具调用映射:OpenCode 的 tool 记录在跨转时按 schema 映射,不支持的专有工具参数将降级为结构化文本展示。 3. 模型继续:Watch 保证会话历史与工作空间无损入库,但启动 OpenCode 后的多轮续写质量由你所配置的本地/云端 Provider 模型能力决定。

常见问题与限制

OpenCode 的本地 SQLite 存储相比 JSONL 有何优势?

SQLite 支持 ACID 事务与行级锁定,避免在多终端并发写入或非正常退出时发生 JSON 文件损坏或行截断。同时,通过环境变量 WATCH_OPENCODE_DB 可以轻松进行数据库切分与本地开发隔离。

反向转出时,OpenCode 中的自定义模型推理记录会丢失吗?

不会。Watch 会提取 OpenCode 数据库中完整的用户指令、助手文本、思考链(thinking)与工具输出,转录为目标 Agent(如 Claude 或 Codex)兼容的会话格式。

如何确认恢复时的工作目录没有错乱?

Watch 在写入 OpenCode 时严格绑定来源会话记录的绝对 cwd。当你在终端运行 opencode -s <session-id> 时,OpenCode 会自动锁定该项目目录,防止代码改写到错误仓库。

官方事实与验证来源

返回会话接力首页 下载 Watch 桌面端