OpenCode 以單一關聯式 SQLite 資料庫(預設為 ~/.local/share/opencode/opencode.db)存放會話,提供 ACID 交易完整性與結構化查詢。當你想把敏感工作轉到本機託管的開放原始碼模型(在 OpenCode 中透過 Ollama 或 vLLM),或交回前沿雲端模型(Claude/Codex)時,Watch 提供已驗證的雙向橋接。
與嚴格依賴只附加 JSONL 檔的工具不同,OpenCode 把會話組織在正規化的關聯表中,包括 sessions、messages 與 parts。外部直接竄改可能破壞外鍵限制。Watch 把 UnifiedTurn 抽象乾淨地對應到 OpenCode 的關聯結構,同時保留精確的目錄脈絡(cwd)與時間戳記。
步驟 1:辨識來源會話 ID 與工作目錄
找出目前使用中的會話 ID。Claude Code 把檔案存在 ~/.claude/projects/;Codex 在 ~/.codex/sessions/;OpenCode 以全域唯一 ID 索引會話。請確認工作目錄是絕對路徑,以維持專案邊界對齊。
步驟 2:預先檢查目標資料庫狀態(Check)
以 --check 執行 Watch CLI,探測目標 OpenCode 資料庫。Watch 會驗證 ~/.local/share/opencode/opencode.db(或 WATCH_OPENCODE_DB 指定的自訂路徑)的寫入權限與鎖定,以避免並行寫入衝突。
步驟 3:執行雙向交接(Handoff)
在 Watch Desktop 選取來源會話並以 OpenCode 為目標,或執行 CLI 的 open 命令。Watch 會取出增量回合,在 sessions、messages 與 parts 上執行原子 SQLite 交易,並給出目的地會話 ID。
步驟 4:在 OpenCode 中以原生方式繼續會話(Resume)
轉換後,在工作目錄執行 opencode -s <session-id>,或在 Watch Desktop 按下啟動按鈕。OpenCode 會在該工作目錄載入已寫入的對話紀錄。
# 1. 預檢:確認目標 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 或 Codex
npm run watch -- open <opencode-session-id> --to claude --json1. 資料庫隔離與備份:Watch 預設操作 ~/.local/share/opencode/opencode.db,測試環境使用 WATCH_OPENCODE_DB。寫入是一次 SQLite 交易,失敗就回滾。 2. 工具呼叫呈現:工具紀錄會跨結構對應;不支援的專有參數會降級為結構化文字。 3. 模型續寫:Watch 寫入已儲存的會話紀錄和工作目錄。它不保證每個工具事件都保留。之後的回應取決於你設定的模型。