跨模型记忆层实战

小李爱学习 初级 4小时前 更新于 2026年7月25日 214 浏览 9 点赞 约 2 分钟

目前的 AI 工具都有各自的上下文,但它们之间是完全隔离的。在 ChatGPT 里调优的偏好,到了 Cursor 里得重新说一遍;好不容易在 Claude 里理清的业务逻辑,一旦对话沉底就再也找不回来。为了解决这个碎片化问题,我搞了一个名为 Mind Silo 的记忆层,核心逻辑是让所有 AI 客户端读写同一套知识库。

架构实现细节

这个系统的链路是:捕获 → 提取 → 存储 → 检索。

1. 自动化捕获
我写了一个 Chrome MV3 扩展,直接监听 Claude、ChatGPT、Gemini 等页面的 DOM 变化,被动读取对话内容。这样就省去了手动复制或点击“保存”的步骤。

2. 原子化提取
原始对话记录噪音太大,直接存入向量数据库会导致检索精度下降。我使用了 Redis + Arq 作为后台异步任务队列,调用 LLM 将长对话蒸馏成“原子记忆”(Atomic Memories)——即单一的事实、决策或偏好。

3. 存储与索引
底层选用 Postgres + pgvector。每一条原子记忆都会生成一个 Embedding,语义相关的记忆会通过图结构连接,而不是简单的扁平列表。

4. 基于 MCP 的检索
这是最关键的一步。我开发了一个 MCP 服务器(mind-silo-mcp),通过 MCP 协议向 Claude Desktop、Claude Code 和 Cursor 暴露三个工具接口。这样 AI 就可以直接查询记忆图谱,或者在对话中实时写入新记忆。

5. 加密机制
采用了每用户独立的 AES-256 加密,密钥派生后存储。这意味着删除数据可以通过“加密粉碎(Crypto-shred)”实现:直接销毁密钥,数据在物理层面不可恢复。

技术栈清单

  • 后端: FastAPI (Python 3.12, uv)
  • 前端: Next.js 14 + Three.js (用于 3D 记忆可视化)
  • 数据库: Postgres + pgvector
  • 队列: Redis/Arq
  • 部署: Render + Vercel
  • 包管理: pnpm monorepo

避坑指南:语义冲突问题

在实操过程中我发现,单纯靠向量检索(Vector Search)有个巨大的坑:时序正确性(Temporal Correctness)

举个具体场景:我在 3 月份告诉 AI 我在用 Postgres,6 月份我迁移到了 SQLite。此时向量数据库里同时存在这两条冲突的记忆。由于语义高度相关,AI 在检索时可能会随机抽到其中一条,甚至把两者混在一起回答。

目前的临时解法是引入“带有效期窗口的有向边(Typed Edges with Validity Windows)”。即给记忆增加时间戳和覆盖关系,当新记忆出现时,标记旧记忆为“已失效”。

3D 可视化的实际意义

起初我用 Three.js 做那个 3D 大脑可视化只是为了好玩,但实测发现这极大降低了认知成本。传统的记忆库都是文本列表,面对 400 条以上的记忆碎片,人类根本无法快速概览。而将记忆点作为节点,语义连接作为边,通过颜色区分主题,这种空间分布能让人一眼看出自己的知识簇在哪里。

如果你在做类似的大模型工作流,可以参考这个 MCP 的部署逻辑:

# 假设你已经安装了 MCP 客户端,在配置中添加:
{
  "mcpServers": {
    "mind-silo": {
      "command": "npx",
      "args": ["-y", "@mind-silo/mcp-server"],
      "env": {
        "MIND_SILO_API_KEY": "your_api_key_here"
      }
    }
  }
}

这个方案把 AI 从“单次会话”变成了“持续进化”,真正实现了跨工具的上下文同步。

AI编程AIAI编程实战showdevpython

全部回复 (2)

阿Sam的日常 高级 10小时前
其实可以用Obsidian做中转,写在笔记里让它们读,比自己搭系统稳点。
0 回复
产品经理大熊 高级 10小时前
之前我也试过手动同步 Prompt,太低效了,确实得有个统一的底层存储。
0 回复

发表回复

支持 Markdown 格式