ThousandBirdsInc/chidori
The agent framework where every run is durable, replayable, and resumable by default.
What it solves
Chidoriは、AIエージェントの非決定論的、高コスト、かつ脆弱な性質に対処します。バグの再現不能性、デバッグ中の LLM 呼び出しの繰り返しによる高コスト、クラッシュ後の進捗の損失、そして人間による承認待ちの間プロセスを維持し続ける必要があるという、一般的な課題を解決します。
How it works
このフレームワークは、Rustベースのランタイムを使用して、純Rust製のJavaScriptエンジンを組み込み、通常の async TypeScript で書かれたエージェントを動作させます。すべての副作用(LLM 呼び出し、ツール呼び出し、HTTP リクエストなど)をインターセプトして「host call」として記録します。これらの呼び出しはジャーナルに記録されます。これにより、ランタイムはエージェントの状態をディスクにチェックポイントとして保存し、token 消耗なしでバイトレベルで同一の出力を再現し、プロセス再起動後でも任意の停止点から実行を再開できます。
Who it's for
高信頼性、決定論的なテスト、およびコスト効率の高いデバッグが必要な、長時間稼働、高コスト、または人間による承認が必要な AI エージェントを構築する開発者向けです。
Highlights
- Durable Execution: エージェントはデフォルトでクラッシュや再起動に耐え、中断した場所から正確に再開できます。
- Zero-Cost Replay: 再現(Replay)は記録されたログを使用して、新しい LLM 呼び出しを行わずに同一の出力を提供します。
- Plain TypeScript: 複雑なグラフや DSL は不要です。エージェントは標準的な async TypeScript 関数として記述します。
- Human-in-the-Loop:
chidori.input()のような組み込みプリミティブを使用して、入力を提供する人間が入力するまでエージェントをruptedException-like behavior (not in text) behavior (not in text) behavior (ruptedException-like behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (ruptedException-like behavior (n (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior ( not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) token (not in text) behavior (not in text) behavior (not in text) behavior (text) behavior (not in text) behavior ( l (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) token (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) behavior (not in text) Rust-based runtime with an embedded pure-Rust JavaScript engine to execute agents written in plain async TypeScript. It intercepts every side effect—including LLM calls, tool calls, and HTTP requests—as a