O OpenCode usa um único banco relacional SQLite (por padrão ~/.local/share/opencode/opencode.db) para armazenar sessões, oferecendo integridade transacional ACID e consultas estruturadas. Quando você quiser levar tarefas sensíveis para modelos locais de código aberto (via Ollama ou vLLM no OpenCode) ou devolvê-las a modelos de fronteira na nuvem (Claude/Codex), o Watch oferece uma ponte bidirecional verificada.
Ao contrário de ferramentas que dependem estritamente de arquivos JSONL somente de acréscimo, o OpenCode organiza as sessões em tabelas relacionais normalizadas, incluindo sessions, messages e parts. Uma alteração externa direta pode corromper restrições de chave estrangeira. O Watch mapeia a abstração UnifiedTurn de forma limpa no esquema relacional do OpenCode, preservando o contexto exato do diretório (cwd) e os carimbos de tempo.
Passo 1: Identificar o ID da sessão de origem e o diretório de trabalho
Localize o ID da sessão ativa. O Claude Code guarda arquivos em ~/.claude/projects/; o Codex em ~/.codex/sessions/; o OpenCode indexa sessões por IDs globalmente únicos. Verifique se o diretório de trabalho é um caminho absoluto para manter o alinhamento dos limites do projeto.
Passo 2: Verificar previamente o status do banco de destino (Check)
Execute o Watch CLI com --check para sondar o banco OpenCode de destino. O Watch valida permissões de gravação e bloqueios em ~/.local/share/opencode/opencode.db (ou no caminho personalizado indicado por WATCH_OPENCODE_DB) para evitar disputa de gravação simultânea.
Passo 3: Executar o revezamento bidirecional (Handoff)
Selecione a sessão de origem no Watch Desktop e o destino OpenCode, ou execute o comando de CLI open. O Watch extrai os turnos incrementais, executa transações atômicas SQLite em sessions, messages e parts, e emite o ID da sessão de destino.
Passo 4: Retomar a sessão nativamente no OpenCode (Resume)
Após a conversão, execute opencode -s <session-id> no diretório de trabalho ou use o botão de inicialização no Watch Desktop. O OpenCode carrega a conversa registrada nesse diretório.
# 1. Verificação prévia: conferir se o banco OpenCode de destino pode ser gravado
npm run watch -- open <claude-session-id> --to opencode --check --json
# 2. Revezamento: transferir a sessão para o banco SQLite do OpenCode
npm run watch -- open <claude-session-id> --to opencode --json
# 3. Revezamento inverso: transferir do OpenCode de volta para o Claude ou o Codex
npm run watch -- open <opencode-session-id> --to claude --json1. Isolamento e backups do banco: por padrão, o Watch opera em ~/.local/share/opencode/opencode.db e usa WATCH_OPENCODE_DB em ambientes de teste. A gravação é uma transação SQLite e sofre rollback se falhar. 2. Representações de chamadas de ferramenta: os registros são mapeados entre esquemas; parâmetros proprietários sem suporte viram texto estruturado. 3. Continuação do modelo: o Watch grava o registro de sessão já salvo e o diretório de trabalho. Ele não garante que todo evento de ferramenta seja preservado. As respostas seguintes dependem do modelo configurado.