关于 storage-sync
用于同步持久化 Turso 存储与 redb 缓存的技能,涵盖定期同步、恢复同步、完整性检查,以及部分失败的处理。
主要功能
- 01启动、定期及手动同步
- 02从 Turso 获取 episodes
- 03更新 redb 缓存
- 04可选同步模式与 embeddings
- 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