OpenCode dùng một cơ sở dữ liệu quan hệ SQLite duy nhất (mặc định ~/.local/share/opencode/opencode.db) để lưu phiên, cung cấp toàn vẹn giao dịch ACID và truy vấn có cấu trúc. Khi bạn muốn chuyển tác vụ nhạy cảm sang mô hình nguồn mở tự lưu trữ (qua Ollama hoặc vLLM trong OpenCode) hoặc bàn giao ngược lại mô hình đám mây biên (Claude/Codex), Watch cung cấp cầu nối hai chiều đã được kiểm chứng.
Khác với công cụ chỉ dựa vào tệp JSONL chỉ nối thêm, OpenCode sắp xếp phiên trên các bảng quan hệ chuẩn hóa gồm sessions, messages và parts. Can thiệp trực tiếp từ bên ngoài có thể làm hỏng ràng buộc khóa ngoại. Watch ánh xạ trừu tượng UnifiedTurn gọn vào lược đồ quan hệ của OpenCode trong khi giữ đúng ngữ cảnh thư mục (cwd) và mốc thời gian.
Bước 1: Xác định ID phiên nguồn và thư mục làm việc
Định vị ID phiên đang hoạt động. Claude Code lưu tệp trong ~/.claude/projects/; Codex trong ~/.codex/sessions/; OpenCode lập chỉ mục phiên bằng ID duy nhất toàn cục. Xác minh thư mục làm việc là đường dẫn tuyệt đối để giữ thẳng ranh giới dự án.
Bước 2: Kiểm tra trước trạng thái cơ sở dữ liệu đích (Check)
Chạy Watch CLI với --check để thăm dò cơ sở dữ liệu OpenCode đích. Watch xác thực quyền ghi và khóa trên ~/.local/share/opencode/opencode.db (hoặc đường dẫn tùy chỉnh do WATCH_OPENCODE_DB chỉ định) để tránh tranh chấp ghi đồng thời.
Bước 3: Thực hiện bàn giao hai chiều (Handoff)
Chọn phiên nguồn trong Watch Desktop và đích OpenCode, hoặc chạy lệnh CLI open. Watch trích các lượt tăng thêm, thực thi giao dịch SQLite nguyên tử trên sessions, messages và parts, rồi cấp ID phiên đích.
Bước 4: Tiếp tục phiên gốc trong OpenCode (Resume)
Sau khi chuyển đổi, chạy opencode -s <session-id> trong thư mục làm việc hoặc bấm nút khởi chạy trong Watch Desktop. OpenCode tải cuộc hội thoại đã ghi trong thư mục đó.
# 1. Preflight: Verify target OpenCode database writability
npm run watch -- open <claude-session-id> --to opencode --check --json
# 2. Handoff: Transfer session into OpenCode SQLite database
npm run watch -- open <claude-session-id> --to opencode --json
# 3. Reverse handoff: Transfer from OpenCode back to Claude or Codex
npm run watch -- open <opencode-session-id> --to claude --json1. Cô lập cơ sở dữ liệu và bản sao lưu: Watch mặc định thao tác trên ~/.local/share/opencode/opencode.db và dùng WATCH_OPENCODE_DB cho môi trường kiểm thử. Lần ghi là một giao dịch SQLite và sẽ hoàn tác nếu thất bại. 2. Biểu diễn lệnh gọi công cụ: bản ghi được ánh xạ giữa các lược đồ; tham số độc quyền không hỗ trợ trở thành văn bản có cấu trúc. 3. Việc mô hình tiếp tục: Watch ghi bản ghi phiên đã lưu và thư mục làm việc. Nó không đảm bảo mọi sự kiện công cụ đều được giữ. Câu trả lời sau đó phụ thuộc vào mô hình bạn cấu hình.