3.2 KiB
3.2 KiB
Agent 记忆系统选型与集成策略 (2026-02-25 · v5.0 OpenRouter + pgvector 本地库架构)
修订说明 (v5.0):将 A 层从
ChromaDB + Ollama切换为OpenRouter Embedding API + 本地 PostgreSQL/pgvector。目标是不运行本地 embedding 模型,同时保留本地向量存储与 Git 增量同步能力。
本方案面向基于 PARA 架构 的 Obsidian Vault,提供一套纯 Agent 驱动的记忆系统。系统不依赖 Obsidian 插件,通过 CLI 与大模型协作,解决 Agent "跨 Session 上下文连续性"和"复杂笔记语义召回"问题。
0. 设计目标与约束
- 不使用本地 embedding 模型:避免本机常驻 Ollama。
- 本地持久化:向量与元数据留在本地 PostgreSQL。
- 增量优先:基于 Git 变更做文件级
upsert/delete。 - 强一致:删除、重命名、隔离、降阈值时不允许幽灵向量残留。
- 安全可控:敏感内容不入检索库;检索注入具备 Prompt 注入防护。
1. 核心架构:双层记忆模型
A 层:文档语义记忆(OpenRouter + pgvector)
- Embedding 生成:调用 OpenRouter Embedding API。
- 向量存储与检索:本地 PostgreSQL +
pgvector。 - 数据源:
01_Projects、02_Areas。 - 排除目录:
00_Inbox、04_Archive、Infrastructure、Home-Automation。
B 层:事实与偏好记忆(Claude Memory)
- 来源:动态读取 Claude Code
MEMORY.md。 - 用途:补充用户偏好、约束、近期状态。
2. 组件职责
| 组件 | 职责 | 解决的问题 |
|---|---|---|
| OpenRouter Embedding API | 文本向量化 | 不在本地部署 embedding 模型 |
| PostgreSQL + pgvector | 向量持久化与相似度检索 | 本地可控存储、低运维 |
| Git post-commit Hook | 触发增量索引 | 避免全量重建 |
| 黑名单与敏感扫描 | 安全隔离 | 防止凭据入库与注入 |
| Claude MEMORY.md | 偏好/事实注入 | 保持跨 Session 连续性 |
3. 验收指标(MVP)
- Recall@5 >= 70%(包含
source)。 - post-commit 不阻塞:索引后台异步执行。
- 单文件增量 P95 < 1s(不含远端 API 网络抖动)。
- 端到端冷启动 <= 4.5s(含 OpenRouter 请求)。
- 安全红线:敏感目录与敏感内容不得写入 Primary 检索表。
- 一致性红线:
delete/rename/quarantine/prune后旧 ID 必须删除。
4. 安全与一致性策略
- 路径部位精确匹配:按
Path.parts做目录排除。 - 内容单命中隔离:任一高危特征命中即隔离。
- 强一致删除:增量事件中
D/R先删旧 ID,再处理新路径。 - 单写者锁:索引写操作串行化。
- 只读上下文注入:检索结果包装为引用块,禁止当指令执行。
- 长度截断:注入前全局
max_chars=2500。
5. 关键权衡
- 优点
- 不跑本地模型,设备压力低。
- 向量在本地 DB,数据控制力强。
- 与现有 Git 工作流兼容。
- 代价
- embedding 文本会发送到 OpenRouter(不是纯本地隐私)。
- 受网络与 API 可用性影响。
- 需配置 API key 与请求限流/重试策略。