storage-sync について
永続ストレージのTursoとredbキャッシュを同期するスキルです。定期同期や障害後の復旧、整合性チェック、部分同期への対処を扱います。
主な機能
- 01起動時・定期・手動同期
- 02Tursoからepisodesを取得
- 03redbキャッシュを更新
- 04パターンとembeddingの同期設定
- 05エラー修復と再開
活用シーン
- 01起動後のキャッシュ更新
- 02ストレージ障害後のキャッシュ復旧
- 03未完了の同期の再開
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ d-o-hub/ rust-self-learning-memory --skill storage-syncインストール後、Claude Code で/storage-syncを入力して読み込まれたか確認します。
詳細
ストレージ同期
Turso(永続ストレージ)とredb(キャッシュ)間でメモリを同期します。
同期するタイミング
- 起動時 - システムの初期化後
- 定期的 - スケジュールされたバックグラウンド同期
- キャッシュの陳腐化 - redbが古くなっているように見える場合
- 復旧時 - ストレージ障害の後
- 手動での実行 - 明示的にリクエストされた場合
同期プロセス
-
接続の健全性を確認:
turso_client.ping().await?; redb_env.check_integrity()?; -
Tursoから最新データを取得:
let episodes = turso_client .query("SELECT * FROM episodes ORDER BY timestamp DESC LIMIT ?") .bind(max_episodes_cache) .await?; -
redbキャッシュを更新:
tokio::task::spawn_blocking(move || { let write_txn = redb.begin_write()?; let mut table = write_txn.open_table(EPISODES_TABLE)?; for episode in episodes { table.insert(episode.id.as_bytes(), episode.to_bytes())?; } write_txn.commit()?; }); -
有効な場合は、パターンと埋め込みを同期します
設定
pub struct SyncConfig {
pub max_episodes_cache: usize, // Default: 1000
pub batch_size: usize, // Default: 100
pub sync_patterns: bool, // Default: true
pub sync_embeddings: bool, // Default: true
}
エラー処理
| エラー | 対処 |
|---|---|
| Tursoが利用できない | 同期をスキップし、警告を記録して、後で再試行します |
| redbの破損 | 修復を試み、Tursoから再構築します |
| 同期の一部失敗 | 進行状況を追跡し、最後の時点から再開します |
パフォーマンスに関するヒント
- 小さな操作をバッチ処理します
- 増分同期を行います(変更分のみ)
- Tokioを使用して並列に取得します
- 書き込み前の準備を行います
検証
同期後、次の項目を検証します。
- エピソード数が一致する
- 最新のエピソードが存在する
- パターン数に一貫性がある
- 孤立した埋め込みがない
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| 同期が遅い | キャッシュサイズを小さくし、バッチサイズを大きくします |
| redbのロックエラー | 専用の書き込みタスクを使用します |
| メモリ不足 | 大きな結果をストリーミングし、バッチサイズを小さくします |
コメント
Markdown 対応