mcpField
S
storage-sync

storage-sync

github.com/d-o-hub数据与数据库1343 次安装今天更新
代码仓库

关于 storage-sync

用于同步持久化 Turso 存储与 redb 缓存的技能,涵盖定期同步、恢复同步、完整性检查,以及部分失败的处理。

主要功能

  1. 01启动、定期及手动同步
  2. 02从 Turso 获取 episodes
  3. 03更新 redb 缓存
  4. 04可选同步模式与 embeddings
  5. 05修复错误并续传

适用场景

  1. 01启动后刷新缓存
  2. 02存储故障后恢复缓存
  3. 03继续未完成的同步

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/d-o-hub/rust-self-learning-memory --skill storage-sync

安装后在 Claude Code 中输入/storage-sync确认已加载。

详细介绍

存储同步

在 Turso(持久存储)和 redb(缓存)存储层之间同步记忆。

同步时机

  1. 启动时 - 系统初始化后
  2. 定期 - 按计划在后台同步
  3. 缓存过时 - redb 缓存似乎已过时
  4. 恢复时 - 存储故障后
  5. 手动触发 - 显式请求时

同步流程

  1. 检查连接健康状况:

    turso_client.ping().await?;
    redb_env.check_integrity()?;
    
  2. 从 Turso 获取最新数据:

    let episodes = turso_client
        .query("SELECT * FROM episodes ORDER BY timestamp DESC LIMIT ?")
        .bind(max_episodes_cache)
        .await?;
    
  3. 更新 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()?;
    });
    
  4. 如果已启用,则同步模式和嵌入

配置

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