session-storeとして分離

This commit is contained in:
2026-04-12 06:31:34 +09:00
parent eb670bfba5
commit cdafd5d914
25 changed files with 910 additions and 657 deletions
+29
View File
@@ -0,0 +1,29 @@
# llm-worker-persistence
Worker のセッション永続化を提供するクレート。追記専用の JSONL ログとして状態遷移を記録し、ログの再生によってセッションを完全に復元する。大きなツール出力は Blob ストアに分離保存する。
## 公開型
### セッション
- `Session<C, St>` — Worker をラップした永続化セッション(`run()`, `resume()`, `fork()`, `fork_at()`
- `SessionId` — UUID v7 によるセッション識別子
- `SessionConfig` — 永続化設定(イベントトレース記録の有無)
### ストア
- `Store` トレイト — 永続化バックエンド抽象(`append`, `read_all`, `list_sessions`
- `FsStore` — ファイルシステム上の JSONL ストア実装
- `BlobStore` トレイト — Blob ストレージ抽象(`store`, `load`
- `FsBlobStore` — ファイルシステム上の Blob ストア実装
- `BlobOutputProcessor` — ToolOutputProcessor 実装(小さい出力はインライン、大きい出力は Blob 保存)
### ログ
- `LogEntry` — セッションログのエントリ型(`SessionStart`, `UserInput`, `AssistantItems`, `TurnEnd` など)
- `RestoredState` — ログ再生で復元された状態
- `collect_state()` — ログエントリ列から状態を復元する関数
### ツール
- `InspectTool` — Blob 内容を取得する組み込みツール(行範囲・配列スライス・キー指定セレクタ対応)