Replay モード
セッションのファイル書き込み、編集、シェルコマンドを、使い捨てのサンドボックス内で 1 ステップずつ再実行します。決定論的で、AI は一切関与せず、実際のプロジェクトには決して手を触れません。
Replay モード(⌘4)は、「このセッションはコードに実際何をしたのか?」に答えます。AI が実行した具体的な操作——Write、Edit、Bash ステップ——を、Git 履歴からシードした隔離ワークスペースへ再生することで実現します。LLM 呼び出しはありません。Chronicle はすべての操作をすでにトランスクリプトに記録しているため、リプレイはそれらを順番に適用するだけです。これにより決定論的かつ安全になります。変更が形になる様子を見守り、各差分が適用される前に確認し、完成したサンドボックスをエディターで開く——それらすべてを、プロジェクトに 1 バイトも書き込むことなく行えます。
サンドボックス
各リプレイは ~/.chronicle/replay/<id>/ 配下の専用ディレクトリで実行されます。リプレイを開始すると、Chronicle は次を行います。
- そのサンドボックスディレクトリを消去して作り直します。
- セッションの開始時刻以前の Git コミットを見つけ、そのツリーをサンドボックスにマテリアライズします(
git archive <commit> | tar -x経由)。これはセッション開始時点でのコードの姿です。 - そのシードの上にセッションの操作を再生します。
シードコミットは ⎇ seeded @ <hash> ピルとして表示されます。プロジェクトが Git リポジトリでない場合(またはセッションがすべての履歴より前の場合)、サンドボックスは単に空の状態から始まります。いずれの場合も、実際のプロジェクトディレクトリが変更されることは決してありません。リプレイが書き込むのは常に ~/.chronicle/replay/<id>/ の内部だけです。
ローカルファースト: リプレイは、作業ツリーのライブコピーからではなく、Git 履歴と記録された操作から状態を再構築します。Git が信頼できる情報源であり、サンドボックスは使い捨てです。
ステップ実行
左ペインは抽出されたステップ(📄 write、✏️ edit、$ command)を順番に一覧表示します。ステップを選択すると、右側に次が表示されます。
- このステップの前の AI の推論 — その操作の直前にあったアシスタント/思考のテキスト。なぜそれが起きたのかが分かります。
- これから適用される差分のプレビュー — サンドボックスの現在の状態に対して計算された変更。書き込みと編集は行差分(新規ファイル、追加行、削除行)として表示され、コマンドは実行される
$ commandとして表示されます。
各ステップでは 3 つの操作を選べます。
- Execute This Step — 書き込みまたは編集をサンドボックスに適用します。
- Skip — 適用せずに先へ進みます(プロジェクト外を対象とするステップに便利です)。
- Look Back — 直前の操作へ戻って再確認します。
編集は正確な old_string → new_string 置換として適用されるため、old_string がサンドボックス内のファイルにもう一致しない編集(たとえば、それが依存していた先行ステップをスキップした場合)は、黙って誤適用される代わりにフラグが立てられます。その編集を Skip するか、欠けている前提条件を実行してから Retry できます。
シェルコマンドは常に最初に確認します
書き込みと編集のステップはクリックで適用されます。シェルコマンドは決してそうしません。すべての Bash ステップは、ステップごとに明示的な確認を要求します(ボタンは警告として ⚠ Execute command のスタイルになっています)。確認されたコマンドは、サンドボックスを作業ディレクトリとし、サンドボックスを指すソフトに封じ込められた HOME のもとで、時間制限と出力キャプチャ付きで実行されます。これにより、うっかりの rm やビルドコマンドが、お使いのマシンではなく使い捨てのワークスペースに限定されます。
自動再生
自動再生は、1x / 2x / 5x の速度でステップを自動的に進めます。あえて保守的に作られています。
- 最初のエラーで一時停止します。壊れた状態のまま突き進むのではなく、確認して Retry できるようにするためです。
- シェルコマンド(常に手動確認が必要)と、対象がプロジェクト外にある書き込みをスキップし、
skippedとマークします。これらでハード停止することは決してありません。かつて自動再生はコマンドで止まると壊れているように見えていました。スキップにすることで、動き続けるようになっています。
進捗バーが、実行済み対全ステップを追跡します。実行が完了すると Replay complete の状態になり、完成したサンドボックスを表示する Open in Finder アクションが利用できます。これで実際のプロジェクトと差分を取ったり、エディターで開いたりできます。
セッションに Write/Edit/Bash 操作が含まれていない場合、Replay は「Nothing to replay」の状態を表示します。再構築するものがないためです。
関連
- タイムトラベル — Playback モードと、リプレイのシードコミットも支える Git スナップショットエンジン。
- セキュリティ・ライブ・リプレイの内部構造 —
server/replay.jsがどのようにプランを構築し、実行をサンドボックス化し、シェルコマンドを封じ込めるか。