Watch / 值更
WATCH 技術ガイド / セッション引き継ぎ

OpenCode、Claude、Codex の双方向セッション引き継ぎガイド

OpenCode はセッションを ~/.local/share/opencode/opencode.db に置きます。WATCH_OPENCODE_DB は Watch を別のファイルへ向けます。Watch は sessions、messages、parts を一つの SQLite トランザクションで書き、失敗すればロールバックします。未対応のツールフィールドはテキストになります。その後の応答は設定したモデルに依存します。

商用クラウドエージェントから OpenCode のローカルなオープンソースモデルへ切り替えるとき(またはクラウドエージェントへ戻すとき)、このガイドは SQLite のトランザクションによるデータ分離で Watch を使い、双方向に引き継ぐ方法を説明します。

公開日: 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: 対象データベースの status を事前確認する(Check)

    対象の OpenCode データベースを調べるため、--check 付きで Watch CLI を実行します。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 は保存済みのセッション記録と作業ディレクトリを書き込みます。すべてのツールイベントが保持される保証はありません。その後の応答は、設定したモデルに依存します。

よくある質問

JSONL に対する OpenCode の SQLite ストレージの利点は何ですか。

SQLite は ACID トランザクションと堅牢な索引を提供し、予期しない終了時の行の切り捨てやファイル破損のリスクを除きます。WATCH_OPENCODE_DB の上書きは、隔離されたテスト環境も容易にします。

OpenCode から渡すとき、カスタムモデルの推論の思考は保持されますか。

Watch は、対応できる範囲のユーザー指示、アシスタント本文、思考の痕跡、ツール出力をコピーします。未対応のツール項目はテキストになるため、OpenCode の元の行の完全な複製ではありません。

Watch は作業ディレクトリの不一致をどう防ぎますか。

Watch は元セッションの絶対 cwd を OpenCode のセッション項目に厳密に結びます。opencode -s <session-id> で再開すると、OpenCode はそのワークスペースに固定され、誤ったディレクトリでの編集を防ぎます。

公式出典と検証記録

Watch のホームへ戻る Watch デスクトップを入手