osFoundry / Platform
ホットリプレイ&履歴
各チャネルが直近N日分のイベントを保持。カーソルをリセットして、任意のシーケンスIDから再生。
概要
ホットリプレイと履歴は、osFoundryがチャネルごとに持つイベントログです。チャットやエージェント、ツールの裏側を流れるストリームである各チャネルは、直近N日分のイベントを保持し、それぞれのイベントには単調増加するシーケンスID(seq ID)が付与されます。コンシューマーは、最後に処理したseq IDを指すカーソルを追いながら前方向に読み進めます。直近のウィンドウがホットな状態で残っているため、チャネルを撃ちっぱなしのストリームとして扱う必要はありません。履歴は、いつでも読み直せるようにそこにあります。
中心となる操作は単純です。カーソルを任意のseq IDまで戻し、その地点から再生するだけです。実行の途中でクラッシュしたエージェント、チャネルに参加したばかりの新しいコンシューマー、イベントを誤って処理したツールのいずれもが、欠落を失ったり何が起きたかを推測したりすることなく、まったく同じシーケンスを読み直せます。osFoundryはキーを自分で持ち込むBYOK方式のデスクトップワークスペースなので、この履歴はベンダーのサーバー上ではなく、あなたのワークスペースとともに保管されます。イベントウィンドウはローカルファーストであり、過去のイベントを再生することがデータを第三者へ送り返すことにはなりません。カーソルをリセットして再生すれば、コンシューマーはライブで見たはずの順序どおりのイベントをそのまま受け取ります。
なぜ重要なのか。エージェントやマルチチャネルのワークフローはステートフルであり、その状態は、あなたがそれを再構築できる度合いと同じだけしか信頼できません。保持されseq IDでアドレス指定できるウィンドウは、「このチャネルは実際に何を見たのか」という問いを、推測から決定的な読み直しへと変えます。これによりデバッグは再現可能になり(バグを引き起こしたシーケンスをそのまま再生できます)、復旧は安価になり(ゼロからではなく最後の正常なカーソルから再開できます)、新しいコンシューマーの導入も安全になります(選んだseq IDからバックフィルできます)。ウィンドウは設計上、直近N日に限定されているため、履歴は無制限に肥大化することなく、有用で最新の状態を保ちます。
主な機能
- 各チャネルは直近N日分のイベントを保持し、それぞれに単調増加するシーケンスID(seq ID)が刻まれます
- コンシューマーのカーソルを任意のseq IDへリセットし、その地点から順序どおりのイベント列をそのまま再生できます
- クラッシュしたエージェントや中断した実行を、最初からやり直すのではなく最後に処理したカーソルから再開して復旧できます
- バグを引き起こした正確なイベント列を再生して決定的に再現し、あるいは新しく追加したコンシューマーを選んだseq IDからバックフィルできます
- 範囲が区切られたローカルファーストの保持により、直近の履歴を無制限に増やすことなくベンダーへの往復もなしに手元でホットに保てます
活用例
- エージェント開発者:実行の途中でエージェントがクラッシュしたら、カーソルを最後にコミットしたseq IDまで巻き戻し、チャネルを再生して中断した箇所からそのまま再開します
- ワークフローのデバッグ担当:下流のツールが誤った結果を出したら、同じイベント範囲を再生して再現し、修正が効いていることを決定的に確認します
- 連携の構築者:混み合ったチャネルに新しいコンシューマーを追加し、選んだseq IDからバックフィルして、稼働開始前に直近N日分に追いつかせます
よくある質問
チャネルのイベントはどこまで遡って再生できますか
各チャネルは直近N日分のイベントをローリングウィンドウとして保持します。そのウィンドウ内であればシーケンスIDでアドレス指定でき、再生できます。保持期間より古いイベントは順に消えていくため、ホットリプレイは恒久的なアーカイブではなく、直近の履歴と復旧のために設計されています。
カーソルをリセットすると実際には何が起きますか
カーソルは、コンシューマーが最後に処理したseq IDを指します。それを以前のseq IDにリセットすると、そのコンシューマーはその地点からチャネルを読み直し、同じ順序のイベントを再び受け取ります。イベント自体が削除されたり書き換えられたりすることはなく、読み始める位置が変わるだけです。
チャネル履歴を再生すると、データがosFoundryのサーバーへ送られますか
いいえ。osFoundryはキーを自分で持ち込むBYOK方式のローカルファーストなデスクトップワークスペースであり、イベントウィンドウはあなたのワークスペースとともに保持されます。再生はすでにローカルに保管されているイベントを読み直すだけなので、履歴の復旧や再処理のためにチャネルのデータを第三者のサービスへ送り出す必要はありません。