Watch / 值更
GUIA TÉCNICO WATCH / TRANSFERÊNCIA DE SESSÃO

Guia de revezamento bidirecional de sessão entre OpenCode, Claude e Codex

O OpenCode guarda as sessões em ~/.local/share/opencode/opencode.db. WATCH_OPENCODE_DB aponta o Watch para outro arquivo. O Watch grava sessions, messages e parts em uma única transação SQLite e faz rollback se falhar. Campos de ferramenta sem suporte viram texto. As respostas posteriores dependem do modelo que você configura.

Ao passar de agentes comerciais na nuvem para modelos locais de código aberto no OpenCode (ou de volta para agentes na nuvem), este guia explica como usar o Watch para um revezamento bidirecional com isolamento transacional de dados no SQLite.

Publicado: 2026-09-21 Atualizado: 2026-09-23 Aplica-se a: Watch v0.1.1
Limite operacional principal

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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 --json
Restrições de segurança e avisos

1. 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.

Perguntas frequentes

Qual é a vantagem do armazenamento SQLite do OpenCode em relação ao JSONL?

O SQLite oferece transações ACID e indexação robusta, eliminando o risco de truncamento de linha ou corrupção de arquivo em um encerramento inesperado. A substituição por WATCH_OPENCODE_DB também facilita ambientes de teste isolados.

Os pensamentos de raciocínio de modelos personalizados são mantidos ao sair do OpenCode?

O Watch copia os prompts, o texto do assistente, os rastros de pensamento e as saídas de ferramenta que consegue mapear. Campos de ferramenta sem suporte viram texto, então a cópia não é uma réplica completa da linha do OpenCode.

Como o Watch evita divergência de diretório de trabalho?

O Watch vincula estritamente o cwd absoluto da sessão de origem à entrada da sessão do OpenCode. Ao retomar com opencode -s <session-id>, o OpenCode se fixa nesse workspace, evitando edições acidentais no diretório errado.

Fontes oficiais e registros de aceitação

Voltar à página do Watch Baixar o Watch Desktop