UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

50 lines (49 loc) 1.68 kB
/** * MemoryEmbeddingStore — 向量嵌入的 JSON sidecar 存储 * * 将 Agent Memory 的向量嵌入从 SQLite BLOB 迁移到独立 JSON 文件, * 与 Knowledge 侧 HNSW `.asvec` 的设计理念对齐: * **结构化数据存 SQLite,向量存独立文件。** * * 设计: * - 内存 Map<id, number[]> 缓存,启动时一次性加载 * - 写入时更新内存 + debounced flush 到 JSON * - 崩溃丢失可通过 embedAllMemories() backfill 恢复 * * 文件位置: .autosnippet/context/memory_embeddings.json * * @module MemoryEmbeddingStore */ export declare class MemoryEmbeddingStore { #private; /** * @param projectRoot 项目根目录 * @param opts.filePath 覆盖默认文件路径 (测试用) */ constructor(projectRoot: string, opts?: { filePath?: string; }); /** 获取单条 embedding */ get(id: string): number[] | null; /** 设置单条 embedding */ set(id: string, embedding: number[]): void; /** 批量设置 embeddings */ batchSet(entries: Array<{ id: string; embedding: number[]; }>): number; /** 删除单条 embedding */ delete(id: string): boolean; /** 检查是否有 embedding */ has(id: string): boolean; /** 返回所有缺少 embedding 的 ID (给定候选 ID 列表) */ getMissingIds(candidateIds: string[]): string[]; /** 缓存大小 */ get size(): number; /** 清除所有 embeddings (用于重建) */ clear(): void; /** 立即刷写到磁盘 (shutdown / 测试用) */ flushSync(): void; /** GC: 移除不在给定 ID 集合中的 embeddings */ gc(activeIds: Set<string>): number; }