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

OpenCode、Claude 與 Codex 雙向會話交接指南

OpenCode 把會話放在 ~/.local/share/opencode/opencode.db。WATCH_OPENCODE_DB 會讓 Watch 指向另一個檔案。Watch 在同一個 SQLite 交易中寫入 sessions、messages 與 parts,失敗則回復。不支援的工具欄位會變成文字。後續回覆取決於你設定的模型。

從商業雲端 Agent 切換到 OpenCode 中的本機開放原始碼模型(或交回雲端 Agent)時,本指南說明如何使用 Watch 做雙向交接,並以 SQLite 交易隔離資料。

發布日期: 2026-09-21 更新日期: 2026-09-23 適用版本: Watch v0.1.1
關鍵操作邊界

OpenCode 以單一關聯式 SQLite 資料庫(預設為 ~/.local/share/opencode/opencode.db)存放會話,提供 ACID 交易完整性與結構化查詢。當你想把敏感工作轉到本機託管的開放原始碼模型(在 OpenCode 中透過 Ollama 或 vLLM),或交回前沿雲端模型(Claude/Codex)時,Watch 提供已驗證的雙向橋接。

與嚴格依賴只附加 JSONL 檔的工具不同,OpenCode 把會話組織在正規化的關聯表中,包括 sessions、messages 與 parts。外部直接竄改可能破壞外鍵限制。Watch 把 UnifiedTurn 抽象乾淨地對應到 OpenCode 的關聯結構,同時保留精確的目錄脈絡(cwd)與時間戳記。

  1. 步驟 1:辨識來源會話 ID 與工作目錄

    找出目前使用中的會話 ID。Claude Code 把檔案存在 ~/.claude/projects/;Codex 在 ~/.codex/sessions/;OpenCode 以全域唯一 ID 索引會話。請確認工作目錄是絕對路徑,以維持專案邊界對齊。

  2. 步驟 2:預先檢查目標資料庫狀態(Check)

    以 --check 執行 Watch CLI,探測目標 OpenCode 資料庫。Watch 會驗證 ~/.local/share/opencode/opencode.db(或 WATCH_OPENCODE_DB 指定的自訂路徑)的寫入權限與鎖定,以避免並行寫入衝突。

  3. 步驟 3:執行雙向交接(Handoff)

    在 Watch Desktop 選取來源會話並以 OpenCode 為目標,或執行 CLI 的 open 命令。Watch 會取出增量回合,在 sessions、messages 與 parts 上執行原子 SQLite 交易,並給出目的地會話 ID。

  4. 步驟 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 --json
安全限制與免責聲明

1. 資料庫隔離與備份:Watch 預設操作 ~/.local/share/opencode/opencode.db,測試環境使用 WATCH_OPENCODE_DB。寫入是一次 SQLite 交易,失敗就回滾。 2. 工具呼叫呈現:工具紀錄會跨結構對應;不支援的專有參數會降級為結構化文字。 3. 模型續寫:Watch 寫入已儲存的會話紀錄和工作目錄。它不保證每個工具事件都保留。之後的回應取決於你設定的模型。

常見問題

OpenCode 的 SQLite 儲存比起 JSONL 有什麼優點?

SQLite 提供 ACID 交易與穩健的索引,可避免意外終止時的行截斷或檔案損壞。WATCH_OPENCODE_DB 覆寫也方便建立隔離的測試環境。

從 OpenCode 交出去時,自訂模型的推理內容會保留嗎?

Watch 會複製能對應的使用者指示、助手文字、思考痕跡和工具輸出。不支援的工具欄位會變成文字,所以這不是 OpenCode 原列的完整複本。

Watch 如何避免工作目錄不符?

Watch 會把來源會話的絕對 cwd 嚴格綁定到 OpenCode 會話項目。以 opencode -s <session-id> 繼續時,OpenCode 會鎖定該工作區,避免在錯誤目錄中意外修改。

官方來源與驗收記錄

返回會話接力首頁 下載 Watch 桌面端