セッションの取り込み
4 ステップの取り込みウィザードは、6 つの AI コーディングツールから会話ログを Chronicle のローカルデータベースへ取り込みます——読み取り専用で、セッション単位、再実行しても冪等(idempotent)です。
取り込みは、Chronicle があなたの既存ツールと出会う場所です。ワークフローの変更を求めることは決してありません。AI アシスタントがすでに標準的な場所に書き出しているログを読み取り、それらを 1 つのイベントモデルに正規化して、~/.chronicle/chronicle.db にあるローカルの SQLite データベースに保存します。元のログが変更されることは決してありません——この保証は、SQLite ベースのツールについても保たれます。
取り込みウィザード
ホーム画面の + Import Sessions で開きます。ウィザードは 4 ステップのフローで、上部にステッパーとして表示されます。
1. Select Source(ソースの選択)。 Chronicle は各ツールの標準的なログディレクトリをスキャンし、実際に見つかったソースだけを、ソースごとのセッション数とともに表示します。何も見つからない場合は「No local AI tool logs found」と表示されます。
2. Select Files(ファイルの選択)。 これが主役のステップです。プロジェクトは物理パスとともに一覧され、Chronicle が個々のセッションを列挙できる場合は、各プロジェクトが展開してセッションのチェックリストになります。すべてのプロジェクト(およびセッション)にはバッジが付きます。
- NEW — 一度も取り込まれていません。
- Partial N/M — プロジェクトのセッションの一部がすでに取り込まれています。
- Imported — すでに完全に取り込まれています。
ソースを選んだ瞬間に、新しいセッションは自動選択されます。そのため、よくあるケース(新しいものをすべて取り込む)はワンクリックで済みます。さらに、次の機能もあります。
- 名前・パス・id でプロジェクトとセッションを絞り込む検索ボックス。
- ウィザードを離れずにソースを再スキャンする Rescan(現在の選択を保持し、新たに現れた NEW セッションを自動選択します)。
- Chronicle を任意の絶対ログディレクトリに向ける Select Directory Manually——標準的でない場所にあるログに便利です。
- フッターのアクション Select All New、Clear、Invert。
サマリーバーには、プロジェクト数・セッション数・そのうちすでに取り込み済みの数が随時表示されます。
3. Importing(取り込み中)。 選択されたセッションを持つプロジェクトごとに、1 つの取り込みジョブが実行されます。プログレスバーとプロジェクトごとのステータス(pending → importing → done/failed)が表示されます。
4. Complete(完了)。 取り込まれたセッション、作成された/更新されたプロジェクト、そして失敗があればその要約が表示されます。取り込まれたメッセージ数は、スキャンの生エントリ推定値よりも少なくなります——サブエージェントのやり取り、システムリマインダー、コマンドのエコーはノイズとして除外されます(詳細はパーサーと取り込みを参照)。Import more を押せば最初に戻り、Done で終了します。
6 つのソースと、その所在
Chronicle は各ツールを、その標準的な場所から読み取ります。標準的でない構成の場合、どの場所も環境変数(括弧内)で上書きできます——設定を参照してください。
| ツール | ログの場所 | 形式 |
|---|---|---|
| Claude Code | ~/.claude/projects/ (CLAUDE_PROJECTS_DIR) | JSONL |
| Codex | ~/.codex/sessions/ (CODEX_SESSIONS_DIR) | JSONL |
| Cursor | workspaceStorage (CHRONICLE_CURSOR_DIR) | SQLite |
| OpenCode | ~/.local/share/opencode/opencode.db (OPENCODE_DB) | SQLite |
| Gemini CLI | ~/.gemini/tmp/ (GEMINI_TMP) | JSON |
| Copilot Chat | VS Code workspaceStorage/<hash>/chatSessions/ (CHRONICLE_VSCODE_DIR) | JSON |
ツールごとの機能マトリクスの全体——何がサポートされ、何が部分的で、各形式のクセは何か——は互換性にあります。
常に読み取り専用
Chronicle は外部データを、触れてはならないものとして扱います。
- JSONL および JSON のソースは直接読み取られ、書き込まれることはありません。
- SQLite のソース(Cursor、OpenCode) は、Chronicle が開く前に一時的な場所へコピーされます——
-walと-shmファイルも含めてです。これは重要です。.dbファイルだけをコピーすると、チェックポイントされていない書き込みが WAL に残っているため、空のデータベースになってしまうからです。Chronicle が稼働中のデータベースを開くことは決してありません。
取り込んだものはすべて、~/.chronicle/chronicle.db にある Chronicle 自身のデータベースに入ります。Chronicle からプロジェクトやセッションを削除すると、そのデータベースからのみ削除されます。ソースのログはそのまま残り、いつでも再取り込みできます。
ローカルファースト: 取り込みは一方向の読み取りです。セッションを取り込む・閲覧する・共有することで、あなたのログ・設定・リポジトリが変更されることは決してありません。
再取り込みは安全
セッションの再取り込みは冪等です。内部的には、server/db.js の replaceSession() が古い行を削除し、単一のトランザクションで挿入し直すため、重複が生じることはありません。知っておくべき点が 2 つあります。
- Chronicle でのリネームは再取り込みでも保持されます。 Chronicle 内でセッションをリネームした場合、そのユーザー設定の名前は読み戻され、削除・再挿入をまたいで保持されます。(ツールのサマリー、トークン使用量、コンテキストサイズといった解析済みのフィールドは、取り込みのたびに再導出されます。)
context_tokensは取り込み時にのみ設定されます。 実際のコンテキストウィンドウの使用量は、セッションが取り込まれるときに取得されます。Chronicle をアップグレードした場合は、再取り込みするか Sync Update を使って埋め戻してください。そうしないと、カードは~chars/4の推定値にフォールバックします。
再取り込みは、ウィザードから、プロジェクトの Sync Update メニューから、またはセッションごとに同期ボタン(⇧⌘U)で行えます。同期の各手段についてはプロジェクト管理を参照してください。
Gemini と「Needs association」
Gemini CLI は、そのログに実際のプロジェクトパスを記録しません。Chronicle は、他のツールと同じ方法でそれらのセッションをコードフォルダーに紐づけられないため、取り込み時には仮想パス(gemini-project:<hash>)の配下に配置され、プロジェクトページに 「Needs association」 バナーが表示されます。実際のコードフォルダーを指定すれば、Chronicle はそのセッションを一致するプロジェクトへマージします——その後は、コードが存在する場所に Git 履歴があるため、タイムトラベルが通常どおり機能します。これはプロジェクト管理でさらに扱っています。