Skip to content

存储与 Ledger

云雀 Agent 使用 双层持久化架构:SQLite 关系存储 + Ledger KV 配置存储,所有数据本地优先,无需外部服务。

架构概览

┌──────────────────────────────────────────┐
│              应用层                       │
├───────────┬──────────────┬───────────────┤
│  SQLite   │  Ledger KV   │  文件系统      │
│ (关系数据) │ (键值配置)    │ (插件/技能)    │
├───────────┴──────────────┴───────────────┤
│           data/yunque.db                  │
└──────────────────────────────────────────┘

SQLite 关系存储

云雀使用 纯 Go 嵌入式 SQLite(modernc.org/sqlite),无 CGO 依赖。

核心表

表名用途索引
memories记忆条目(短期/中期/长期),含向量嵌入tenant_id, category
sessions对话会话tenant_id
messages对话消息(role + content),级联删除session_id
botsBot 定义与配置
inbox收件箱(通知、任务事件)is_read
models已注册模型(含 base_url、modalities)

生产配置

WAL 模式 — 并发读,单写不阻塞
_busy_timeout=5000 — 锁等待 5 秒
MaxOpenConns=1 — SQLite 单写者模式

Ledger KV 存储

Ledger KV 将 JSON 配置数据统一存储在 SQLite 中,替代了早期的 JSON 文件散落模式。通过 KVConfigStore 封装,提供命名空间隔离。

KV 命名空间

超过 25 个子系统 使用 Ledger KV,包括:

类别子系统
核心状态状态内核 (StateKernel)、信任分 (TrustScore)、成本追踪 (CostTracker)
记忆知识库 (Knowledge)、情感历史 (EmotionHistory)、工作记忆 (WorkingMemory)
任务任务模板 (TaskTemplate)、任务增长 (TaskGrowth)、线程状态 (Thread)、分支持久化 (ForkPersist)
技能技能优化器 (Optimizer)、技能增长检测 (SkillGrow)
安全审批规则 (ApprovalRules)、渠道分组 (ChannelGroups)、身份绑定 (IdentityBinding)
执行工作流存储 (WorkflowStore)、触发器 (TriggerStore)、沙箱 (WasmSandbox)
认知内心独白 (Reverie)、经验库 (ExperienceStore)、LoRA 调度 (LoRAScheduler)
其他Bot 管理 (BotManager)、收件箱 (Inbox)、身份解析 (IdentityResolver)

所有写入使用 KV 优先、文件回退 模式 — 启动时自动迁移 JSON 文件到 KV。

向量索引

云雀内置三种向量检索引擎,按数据规模自动选择:

引擎复杂度适用场景
IVF (倒排文件)O(N/K × nprobe)默认,>1000 条向量
HNSW (层级导航小世界)O(log N)大规模部署,10w+ 向量
暴力搜索O(N)<1000 条时自动回退

Ledger 持久化层

Ledger 通过两个持久化组件桥接内存计算与 SQLite 存储:

  • LedgerPersister — 持久化中期/长期记忆层(TF-IDF、BM25、向量计算在内存中完成)
  • LedgerOrchPersister — 持久化知识图谱(实体+关系)和可编辑记忆

自动维护

间隔任务
5 分钟WAL Checkpoint
1 小时完整性检查
6 小时记忆时间衰减
24 小时事件压缩

文件系统存储

部分数据仍使用文件系统,包括数据库文件本身和目录型资源:

data/
├── yunque.db          # SQLite 主数据库
├── plugins/           # 插件目录(plugin.json + 脚本)
├── skills/            # 文件技能目录(SKILL.md + meta.json)
├── knowledge/         # 知识库文档
├── stickers/          # 表情包素材
└── backup/            # 自动备份

分布式同步(实验性)

多实例部署支持:

  • SyncEngine — 版本向量因果排序
  • HTTP SyncTransport — 点对点事件同步
  • HTTP StreamTransport — 实时事件广播

© 2025 云鸢科技(青岛)有限公司 × Dream Lab