コンテンツにスキップ

巻き戻しと分岐の方法

Reyn のタイムトラベルは、過去のチェックポイントへ巻き戻し、必要に応じてその時点から分岐できる機能です。本ガイドでは利用可能なコマンドと UI を説明します。

内部の仕組みについては タイムトラベルのコンセプト を参照してください。

Rewind ピッカーを開く

/rewind

TUI 上でインタラクティブなチェックポイントピッカーが開き、現在の分岐上のチェックポイントに加え、破棄済み分岐があればそれもツリー形式で一覧表示されます(#3987 ②)。各行には以下が表示されます:

カラム 説明
seq チェックポイントのグローバルシーケンス番号
time チェックポイントが作成されたタイムスタンプ
kind 境界の種類: turn / plan-step
anchor そのチェックポイント時点で有効だった人間のプロンプトの先頭行(80文字に切り詰め)。判明している場合のみ — どのチェックポイントを選ぶかのヒントであり、会話全体ではない
owner 関係がある時だけ表示: 所有 session が特定できない場合は (owner unknown)、今巻き戻そうとしている session 以外が所有する場合は (agent/sid) — 一致する場合は印が付きません

ピッカー自身のタイトルが、Enter で以下のどちらの形の巻き戻しが実行されるかを、行を選ぶ前に示します — 既定は現在の session への session-local です。

↑ / ↓ で移動し、Enter で選択します(行の選択は、その行の /rewind <seq> を入力した場合とまったく同じ動作です)。Esc を押すと巻き戻さずに閉じます。

--connect(リモートクライアント)経由では、同じチェックポイントがプレーンなテキストリストとして表示されます。ピッカーはローカルのリージョンであり、ワイヤ上には載らないためです。その場合は /rewind <seq> で巻き戻してください。

特定の seq へ巻き戻す

/rewind <N>

このセッションだけを巻き戻します: あなたの会話状態が seq N の時点に復元され、他のすべてのセッションはそのままです。これが既定です — 代わりに全セッションを巻き戻すには global を追加します:

/rewind <N> global

巻き戻した先の未来が失われることはありません — 破棄済みブランチとして到達可能なままです(ピッカーのツリー表示で引き続き見え、同じ seq をもう一度入力すれば戻れます)。巻き戻しが本当に払うコスト: キャンセルされた進行中の turn の再実行はトークンを再び消費すること、retention window を過ぎたターゲットは本当に到達できなくなること、そして global の巻き戻しは他のすべてのセッションの進行中の作業も止めてしまうこと — 自分のセッションだけではありません。

ユーザーのワークスペースファイルはどちらの場合も HEAD のままです — Reyn がタイムトラベルするのは自身の .reyn/ 状態のみです。

巻き戻しと fork-switch

/rewind <N> は統合された checkout なので、同じコマンドが両方向をカバーします:

  • 現在の分岐 上の seq: undo(現在の分岐を巻き戻す)。
  • 非アクティブな分岐 上の seq: fork-switch(その分岐をアクティブ化する)。

ピッカー(引数無しの /rewind)は、破棄済み分岐がある場合はそれも表示します — ツリー形式で、各分岐のチェックポイントがそれぞれの見出しの下にインデントされ、破棄済みのものには印が付きます。一度もフォークしたことがないセッションでは、これまで通りのシンプルな現在分岐のリストが表示されます。

Web 編集 (Phase 2d)

Reyn を Web インターフェース(AG-UI SSE / A2A)経由で利用する場合、/rewind は同じチェックポイントピッカーを開きます。分岐元のチェックポイントを選択すると、Web 編集フローは元のメッセージを提示し、編集版を再入力して送信できます。Web 側ではインラインのプリフィルに対応していないため、置き換えるテキストを直接入力します。送信すると、巻き戻したチェックポイントから新しい fork が作成されます。

保留中の機能

機能 ステータス
新しい fork-and-edit 分岐を作る、ターン内編集(ctrl+t)付きの /rewind ✅ Phase 2c, landed
ピッカーの分岐 ツリービュー(現在の分岐だけでなく破棄済み分岐のチェックポイントも) ✅ #3987 ②, wired — 引数無しの /rewind が両分岐をツリーで表示(破棄済みには印)。非アクティブ分岐の seq への fork-switch は /rewind <N> で従来通り可能
ピッカーを開く Esc Esc ダブルタップのショートカット ⏳ not yet wired — /rewind で開いてください
AG-UI SSE / A2A Web 面での /rewind ピッカー; AskUserMessage UX による Web 編集 ✅ Phase 2d, landed

保持ウィンドウ設定(retention: keep_generations: N、古いチェックポイントを GC するための設定)——検討の結果、配線しないと決定(#3987、2026-08-11): WAL/generation の GC は既定の live-only floor で正しく動作しており、毎チャットターン境界でスロットル付きで実行され、無制限growthのリスクはありません。retention: 設定ブロックが追加していたはずのものは、liveより深いundoウィンドウという能力だけで、設定できない状態のまま誰からも要望が出ていませんでした。RetentionPolicy.from_config は死んだまま残さず削除しました。

関連情報