ruflo v3-memory-specialist:面向 Agent 的多记忆系统统一与 AgentDB HNSW 向量检索改造实战
导读
ruflo 仓库中的 .agents/skills/agent-v3-memory-specialist/SKILL.md 定义了一个名为 v3-memory-specialist 的专项 Agent 技能(invoke with $agent-v3-memory-specialist):把历史上散落在 v2/v3 各处的 6~7 套记忆实现收敛到以 AgentDB + HNSW(分层可导航小世界图)索引为核心的单一大记忆服务,并以 IMemoryBackend 统一读写接口、以渐进式迁移保证向后兼容。读完本文你将掌握:记忆系统全景与收敛目标、AgentDB/Hybrid 双后端配置的全部参数与默认值、语义查询与结构化查询的统一路由模型、三阶段迁移路线与 SQLite/Markdown 存量数据搬移方法,以及该方案在仓库内的真实落地路径(ADR-006-UNIFIED-MEMORY.md、ADR-009-IMPLEMENTATION.md)和可验证的源码位置。
技能定位:记忆收敛专家
v3-memory-specialist 属于 ruflo 的 V3 专项技能(metadata 中 v3_role: "specialist"、agent_id: 7、domain: "memory"、phase: "core_systems"、优先级 high),被设计用来实现两项架构决策:
- ADR-006(Unified Memory Service):单一
MemoryService+ 可插拔后端(SQLite / AgentDB / Hybrid); - ADR-009(Hybrid Memory Backend):以 SQLite + AgentDB 组合的 Hybrid 后端作为默认推荐实现。
其 pre_execution 钩子会在运行前打印待收敛系统清单、检查 agentic-flow@alpha 是否就绪并输出目标(150x–12,500x 检索提升、渐进式迁移策略);post_execution 钩子则调用 npx agentic-flow@alpha memory store-pattern --session-id "v3-memory-$(date +%s)" --task "Memory Unification: $TASK" --agent "v3-memory-specialist" --performance-improvement "150x-12500x" 回写模式学习数据。仓库中与该技能同族的三位协作 Agent(Integration Architect、Core Architect、Performance Engineer)定义位于 .agents/skills/ 目录,本文后续「协作边界」一节会说明分工。
待统一的历史记忆系统全景
技能文档梳理出需要收敛的 7 套记忆实现,仓库侧可对应到 v3/@claude-flow/memory/ 与 v3/src/memory/ 下的具体文件:
| 系统 | 定位 | 仓库侧可参考的实现 |
|---|---|---|
| MemoryManager | 基础增删查改 | v2 遗留接口(见 migration.ts 的 source 标记) |
| DistributedMemorySystem | 分布式/聚类记忆 | 收敛到跨 Agent 共享语义 |
| SwarmMemory | 面向 swarm 的 Agent 记忆 | agent-memory-scope.ts 等作用域管理 |
| AdvancedMemoryManager | 高级特性(标签、TTL、命名空间) | types.ts、controller-registry.ts |
| SQLiteBackend | 结构化、ACID | sqlite-backend.ts(结构化查询、无向量检索) |
| MarkdownBackend | 基于文件的文档记忆 | 由迁移器批量读取并向量化 |
| HybridBackend | 组合前两者 | hybrid-backend.ts |
证据说明:
ADR-006-UNIFIED-MEMORY.md的 Context 一节记载 v2 有 6 套记忆实现(MemoryManager、DistributedMemory、SwarmMemory、AdvancedMemoryManager、SQLiteBackend、MarkdownBackend);技能文档在此基础上列出 7 项(多出 HybridBackend),并将其全部作为收敛输入。
目标状态是唯一的 AgentDB with HNSW 栈,具备:150x–12,500x 更快检索、统一查询接口、跨 Agent 记忆共享、SONA 集成学习、自动持久化。
AgentDB 集成架构与组件映射
技能文档给出三层核心组件的设计草图(UnifiedMemoryService、HNSWIndexer),仓库中的真实落地与其一一对应:
1. UnifiedMemoryService / 后端适配器
设计上 UnifiedMemoryService implements IMemoryBackend,持有 AgentDBAdapter + MemoryCache + HNSWIndexer + DataMigrator 四类依赖,store() 先写 AgentDB 再入 HNSW 索引,query() 依据 query.semantic 分流到向量检索或结构化查询。
仓库中真正的类型与实现分散在:
IMemoryBackend契约:memory.interface.ts;- AgentDB 适配器:agentdb-adapter.ts 与 agentdb-backend.ts——后者是可直接实例化的
AgentDBBackend,封装 HNSW 向量库选择(native hnswlib → ruvector → WASM 自动回退); - 缓存层:cache-manager.ts、tiered-memory.ts;
- 迁移器:migration.ts。
2. AgentDBBackend:核心后端
AGENTDB-INTEGRATION.md 记载其与 agentdb@2.0.0-alpha.3.4 集成,能力包括:HNSW 近似最近邻检索、无原生依赖时的优雅回退、与 HybridBackend 无缝协作。最小初始化示例:
import { AgentDBBackend } from '@claude-flow/memory';
const backend = new AgentDBBackend({
dbPath: './data/memory.db',
namespace: 'default',
vectorDimension: 1536, // 对齐 OpenAI embedding 维度
hnswM: 16,
hnswEfConstruction: 200,
hnswEfSearch: 100,
embeddingGenerator: async (text) => embeddings.embed(text),
});
await backend.initialize();
3. HNSWIndexer:图索引核心
技能文档中的 HNSWIndexer(dimensions = 1536、efConstruction = 200、M = 16、maxElements = 1000000)在仓库中对应 hnsw-index.ts,并提供 hnsw-persistence.test.ts 验证索引的持久化正确性。HNSW 将查找从 O(n) 线性扫描降为 O(log n) 级近似最近邻,这正是 150x–12,500x 提速的算法基础。
4. 后端选择配置(来自 ADR-006)
| 配置项 | 取值 | 含义 |
|---|---|---|
memory.backend |
sqlite |
结构化查询、ACID,无向量检索 |
memory.backend |
agentdb |
语义检索、RAG,需要安装 agentdb |
memory.backend |
hybrid |
默认推荐,两者兼得,内存开销略高 |
memory.cacheSize |
数值(默认 100) | 缓存条目上限 |
memory.indexing |
布尔 | 是否开启向量索引 |
HNSW 关键参数与调优取值表
仓库集成文档给出了完整参数清单,直接可用于生产配置:
| 参数 | 默认值 | 范围 | 作用 |
|---|---|---|---|
vectorDimension |
1536 | 依 embedding 模型而定 | 向量维度,768(本地)或 1536(OpenAI) |
hnswM |
16 | 16–64 | 每层连接数:16 快而省内存;32 均衡;64 高召回、高内存 |
hnswEfConstruction |
200 | 100–400 | 建图质量:100 快但质量低;200 推荐;400 慢而高质量 |
hnswEfSearch |
100 | 50–200 | 检索质量:50 快召回低;100 推荐;200 慢召回高 |
vectorBackend |
auto |
auto/ruvector/hnswlib |
向量引擎选择 |
forceWasm |
false |
布尔 | 跳过 native hnswlib,强制 WASM |
distanceMetric |
cosine |
cosine/euclidean/dot |
距离度量 |
仓库还支持:
- 向量量化(
quantization: { type: 'scalar', bits: 8 },bits 取 4/8/16):无量化约每维 4 字节;8-bit 量化约每维 1 字节(4x 压缩);4-bit 约 0.5 字节(8x 压缩),是实现 50–75% 内存缩减的主要手段; - 健康监控:
healthCheck()返回healthy | degraded | unhealthy,可定位 HNSW 索引健康度; - 统计:
getStats()输出条目数、平均查询/检索耗时、HNSW 向量数与建图耗时。
统一查询接口:语义检索与结构化检索双路由
技能文档强调统一查询接口同时支持两类查询;仓库的 HybridBackend(hybrid-backend.ts)据此做自动路由:
// 1. 语义相似度检索 → 走 AgentDB HNSW
await memory.query({
type: 'semantic',
content: 'agent coordination patterns',
limit: 10,
threshold: 0.8,
});
// 2. 结构化检索 → 走 SQLite(精确/前缀命中)
await memory.query({
type: 'exact', namespace: 'users', key: 'john@example.com'
});
await memory.query({
type: 'prefix', keyPrefix: 'auth-'
});
queryHybrid 支持将语义条件与结构化条件(命名空间、时间窗)以 intersection 等策略合并。除此之外,仓库在检索链路之上还叠加了智能路由与安全护栏,均可在源码中直接验证:
- 多信号智能检索:smart-retrieval.ts;
- AgentDB 检索守卫(防止越权/越作用域检索):agentdb-retrieval-guard.ts 及测试 agentdb-retrieval-guard.test.ts;
- 自动记忆桥(Claude Code 钩子侧自动写入):auto-memory-bridge.ts。
查询灵活性目标在技能文档中被列为独立验收点:单条 sub-100ms 查询覆盖 1M+ 条目(详见下文性能部分)。
迁移策略:三阶段渐进式收敛
技能文档把迁移拆成三个阶段,可操作、可回滚,符合「向后兼容优先」的收敛哲学:
Phase 1:基础搭建(第 3 周)
- 创建
AgentDBAdapter implements IMemoryBackend; - 建立 HNSW 索引基础设施;
- 打通 embedding 生成流水线;
- 提供统一查询接口。
Phase 2:逐系统迁移(第 4–5 周)
SQLiteBackend → AgentDB(结构化数据,追加 embedding);MarkdownBackend → AgentDB(文档存储,批量向量化);MemoryManager → 统一接口;DistributedMemorySystem → 跨 Agent 共享。
仓库中迁移实现位于 migration.ts,导出 MemoryMigrator,可按 source/sourcePath/batchSize 指定迁移源;对应测试 migration.test.ts。从 v3/@claude-flow/memory/docs/migration-3.0.0-alpha.18.md 可看到后续版本仍在维护该迁移链。
Phase 3:进阶特性(第 6 周)
- SONA 集成学习模式;
- 跨 Agent 记忆共享;
- 性能基准验证(150x 指标回归);
- 清理兼容层。
存量数据搬移示例
SQLite → AgentDB(结构化 + 向量化)
技能文档给出导出再写入的思路,本质是「读取旧行 → 生成 embedding → 写入 AgentDB」:
-- 提取存量数据
SELECT id, content, metadata, created_at, agent_id
FROM memory_entries
ORDER BY created_at;
写入时由 embedding 生成函数填充 agentdb_memories.embedding 字段。需要说明:仓库内的 CLI 初始化(npx @claude-flow/cli@latest memory init)默认使用 sql.js(WASM SQLite),目的即是为了在无原生编译环境下(GitHub Codespaces、Docker、CI、Windows)也能初始化出兼容的 6 张表(memory_entries、vectors、patterns、sessions、trajectories、metadata),详情见 ADR-006-UNIFIED-MEMORY.md 的 Updates 章节。
Markdown → AgentDB(文档级批量入库)
for (const file of markdownFiles) {
const content = await fs.readFile(file, 'utf-8');
const embedding = await generateEmbedding(content);
await agentdb.store({
id: generateId(),
content,
embedding,
metadata: {
originalFile: file,
migrationDate: new Date(),
type: 'document',
},
});
}
批量场景建议直接使用 agentdb-adapter.ts 中的 4 阶段 bulkInsert(并行 embedding 生成 → 批量存储 → 批量索引 → 按热度批量刷缓存),ADR-006 记载其可将批量写入提速 2–3x。
性能目标与仓库基准数据
技能文档设定了三类硬指标,仓库在 AGENTDB-INTEGRATION.md 与 benchmarks/vector-search.bench.ts 中提供了与之配套的基准框架:
检索性能(搜索复杂度下降)
| 指标 | 基线 | 目标 |
|---|---|---|
| 复杂度 | O(n) 线性扫描 | O(log n) HNSW 近似最近邻 |
| 提升幅度 | — | 150x–12,500x(随数据集规模增大而提升) |
| 时延 | — | 1M+ 条目下单查询 sub-100ms |
集成文档给出的 agentdb@2.0.0-alpha.3.4 基准(数据规模对速度提升的影响一目了然):
| 规模 | Brute Force | HNSW(hnswlib) | 加速 |
|---|---|---|---|
| 10k 向量, k=10 | 150ms | 1ms | 150x |
| 100k 向量, k=10 | 1500ms | 2ms | 750x |
| 1M 向量, k=10 | 15000ms | 3ms | 5000x |
(注:上表为集成文档记载的基准数值,用于说明量级;具体环境下的实测以 npm run bench 结果为准。)
内存效率
| 指标 | 基线 | 目标 |
|---|---|---|
| 存储 | 多后端各自开销 | 统一存储 + 量化压缩 |
| 缩减 | — | 50–75% 内存下降 |
| 规模 | — | 大数据集 <1GB 内存 |
主要手段即上文 4/8-bit scalar 量化,参考实现位于 agentdb-backend.ts 的 quantization 配置。
验收清单(继承自技能文档)
- [ ] 150x–12,500x 检索性能提升已验证;
- [ ] 全部历史记忆系统迁移完成;
- [ ] 迁移期间向后兼容性保持;
- [ ] SONA 集成可用且适应时间 <0.05ms;
- [ ] 跨 Agent 记忆共享可运行;
- [ ] 内存占用降低 50–75%。
SONA 集成:学习模式的入库与召回
技能文档要求把 SONA 的 LearningPattern(含 mode: real-time | balanced | research | edge | batch、reward、trajectory、adaptation_time)以语义向量形式存入 AgentDB,并支持按内容召回相似模式:
await this.memory.store({
id: pattern.id,
content: pattern.data,
metadata: {
sonaMode: pattern.mode,
reward: pattern.reward,
trajectory: pattern.trajectory,
adaptation_time: pattern.adaptationTime,
},
embedding: await this.generateEmbedding(pattern.data),
});
仓库侧的落地模块包括:
- 持久化 SONA 状态:persistent-sona.ts;
- 记忆学习桥(把 AgentDB 学习结果回流到行为调节):learning-bridge.ts,含测试 learning-bridge.test.ts;
- 技能文档 post_execution 钩子中调用
agentic-flow@alpha memory store-pattern写入的正是这一类 learning pattern。
验证与测试方法
技能文档内置的 MemoryBenchmarks.benchmarkSearchPerformance() 逻辑(1000 条测试查询统计 QPS、平均时延、相对提升)在仓库中可直接对接到以下真实测试入口:
# 运行 AgentDB 后端单测
npm test -- agentdb-backend.test.ts
# 运行全部记忆测试(含 hybrid / migration / 检索守卫等)
npm test
# 运行向量检索基准
npm run bench
相应测试文件包括 agentdb-backend.test.ts、hybrid-backend.test.ts、migration.test.ts、benchmark.test.ts。验证基准还覆盖多信号检索、tiered-memory 分层缓存等高级路径,详见 tiered-memory.test.ts 与 graceful-retrieval.test.ts。
另外,整套能力被暴露为 MCP memory 工具,入口位于 memory-tools.ts,便于在 Claude Code / Codex 等宿主中以工具形式调用统一记忆服务。
协作边界与参考来源
v3-memory-specialist(Agent #7)不是孤军作战,技能文档明确其与三类 Agent 的配合面,仓库源码亦可互为印证:
- Integration Architect(Agent #10):负责 agentdb 与 agentic-flow 的集成、SONA 学习模式配置、性能优化协调——对应 controller-registry.ts 中后端注册逻辑;
- Core Architect(Agent #5):负责 DDD 结构下记忆服务接口、事件溯源接入与领域边界——对应 domain/repositories/memory-repository.interface.ts 与 infrastructure/repositories/hybrid-memory-repository.ts;
- Performance Engineer(Agent #14):负责 150x–12,500x 指标回归与内存画像——对应 benchmarks/vector-search.bench.ts 与 benchmark.test.ts。
本技能(.agents/skills/agent-v3-memory-specialist/SKILL.md)与上述技能目录下的同族 Agent 定义(如 agent-memory-coordinator、agent-swarm-memory-manager、agentdb-advanced 等)共同构成 ruflo 的记忆治理技能栈。想进一步深入,可按顺序阅读:ADR-006-UNIFIED-MEMORY.md(统一服务决策)、ADR-009-IMPLEMENTATION.md(Hybrid 默认后端)、AGENTDB-INTEGRATION.md(全部配置与调优参数)、memory/README.md(模块架构总览)。若要在自己的环境中复现本技能描述的收敛效果,请直接以仓库根目录相对路径引用上述文件,并按各自文档完成 npm install agentdb@2.0.0-alpha.3.4 与可选的原生依赖安装(hnswlib-node@^3.0.0、better-sqlite3@^11.0.0)。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0627
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00