MemPalace Hallways与Palace Graph解析:跨Wing隧道如何实现跨项目记忆关联
2026/8/30 10:43:09 网站建设 项目流程

MemPalace Hallways与Palace Graph解析:跨Wing隧道如何实现跨项目记忆关联

【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And it's free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace

MemPalace 是一个免费开源的 AI 记忆系统(The best-benchmarked open-source AI memory system),它把记忆组织成一座"记忆宫殿":Wing(侧翼)对应项目,Room(房间)对应主题,Drawer(抽屉)存放具体记忆片段。真正让多项目记忆"活"起来的,是两套关联机制——跨 Wing 隧道(Tunnels)Wing 内走廊(Hallways)。本文带你彻底搞懂这套跨项目记忆关联的原理与用法。

记忆宫殿的空间模型:Wing、Room、Drawer 是什么?

在理解隧道之前,先建立空间感:

层级含义举例
Palace(宫殿)你的全部记忆库~/.mempalace下的一个实例
Wing(侧翼)一个独立领域/项目wing_codewing_myprojectwing_team
Room(房间)领域内的一个主题chromadb-setupriley-college-apps
Drawer(抽屉)房间里的具体记忆条目一段对话摘要、一条决策记录

核心洞察:同一个名字的 Room 出现在多个 Wing 里,就说明这几个项目在该主题上有交集——这正是隧道自动产生的依据。

跨 Wing 隧道(Tunnels):自动发现项目之间的"暗道"

被动隧道:同名 Room 自动连线

Palace Graph 的构建逻辑非常直接(见 palace_graph.py):

  • 节点 = Room(命名的想法)
  • 边 = 隧道(同一 Room 横跨多个 Wing 形成的连接)
  • 边类型 = Hall(走廊,即主题分类)

也就是说,不需要任何外部图数据库,图完全是从 ChromaDB 的元数据"算"出来的。比如chromadb-setup这个房间同时存在于wing_codewing_myproject中,系统就会自动生成一条连接两个 Wing 的隧道,并记录它属于哪个 Hall、共出现多少次。

build_graph()还支持 60 秒 TTL 的模块级缓存,写入时通过invalidate_graph_cache()失效,保证查询快且数据不陈旧。

图谱能回答什么问题?

模块开头的 docstring 给出了三个典型查询,恰好是跨项目记忆的精髓:

  • "从wing_codechromadb-setup出发,走到wing_myproject"(traverse():BFS 遍历,默认 2 跳,返回带connected_via的路径列表)
  • "找出所有与riley-college-apps相连的房间"
  • "wing_hardwarewing_myproject之间有哪些主题在搭桥?"(find_tunnels():按出现次数排序,最多返回 50 条)

graph_stats()则给出全景统计:总房间数、被动隧道房间数、显式隧道数、每个 Wing 的房间分布,以及"跨得最多的 Top 10 隧道"。

显式隧道:手动打通两个项目的记忆

自动隧道只覆盖"同名 Room",而现实中更多关联是语义层面的。MemPalace 提供create_tunnel()手动创建显式隧道(palace_graph.py):

create_tunnel("project_api", "api-design", "project_database", "schema", label="API 契约依赖数据库表结构")

几个值得注意的设计:

  1. 隧道是无向且幂等的create_tunnel(A, B)create_tunnel(B, A)生成同一个规范 ID,重复调用只会更新 label,不会产生重复记录。
  2. 端点严格校验:显式隧道必须指向真实存在的房间,否则会抛ValueError,杜绝"悬空链接"。
  3. 连接会"成长":每条隧道带 L7 动态字段(strength/stability/access_count),被访问、被重新激活会改变连接强度,形成一个"活着的"关联层。
  4. 三类隧道共存:被动隧道(同名 Room 自动)、topic隧道(挖掘时按共同主题自动生成,房间名为合成的topic:<name>)、explicit隧道(人工创建)。

顺着隧道走:follow_tunnels

follow_tunnels(wing, room)从指定房间出发,沿显式隧道返回其他 Wing 中相连的抽屉内容——这是"跨项目记忆召回"的最后一公里:你在wing_code里查 API 设计时,会自动看到wing_myproject里与之打通的相关记忆。

Hallways(走廊):Wing 内部实体间的心智联想

隧道管"跨 Wing",那么Wing 内部谁和谁总是一起出现呢?这就是 hallways.py 的 Hallways 机制:

  • 挖掘(mine)时,系统扫描该 Wing 下所有抽屉的entities元数据(分号分隔的实体串,如Aya;Lumi;consciousness)。
  • 同一个抽屉里共现的任意两个实体,计一次共现;共现次数 ≥ 2(min_count)即固化为一条 Hallway 记录,并记录它们共同出现过的房间。

比如"Aya 和 Lumi 在日记、信件、灵感三个房间的 47 个抽屉里共同出现",就会产生一条Aya ↔ Lumi的走廊。文档把整个层级关系总结得非常清晰:

Wing → 拥有 Drawers(标记实体)→ 实体之间由 Hallways 相连(Wing 内)→ Tunnels 基于 Hallways 数据衍生出跨 Wing 连接

Hallway 的 ID 由wing + 排序后的实体对 + SHA-256 前 8 位派生(_hallway_id()),排序保证(Aya, Lumi)(Lumi, Aya)是同一条记录,重复挖掘只会 upsert 而不会翻倍。数据原子化写入hallways.json(0600 权限,临时文件 +os.replace防写坏),可手工检查与编辑。

实战:如何用 CLI 与 MCP 工具查看隧道和走廊

一条命令查看 Wing 内的走廊

python -m mempalace hallways --wing wing_diary --limit 20

该命令入口在 cli.py 的cmd_hallways(),输出形如N hallway(s):的关联列表;如果还没有数据,会提示"它们在你挖掘时由抽屉实体自动构建"。

通过 MCP 工具让 AI 助手"走图"

mcp_server.py 为 MCP 客户端(Claude Code、Cursor 等)暴露了一整套图谱工具:

工具作用
mempalace_traverse从某房间出发行走图谱,展示跨 Wing 相连的想法
mempalace_find_tunnels找桥接两个 Wing 的房间:"哪些主题把wing_codewing_team连起来?"
mempalace_graph_stats宫殿图谱总览:房间数、隧道数、边数、连通性
mempalace_create_tunnel/mempalace_list_tunnels/mempalace_delete_tunnel显式隧道的增删查
mempalace_list_hallways/mempalace_delete_hallway走廊记录的查询与删除
mempalace_follow_tunnels沿隧道追出其他 Wing 中的相关抽屉

一个典型使用场景:在project_api里做 API 设计时,AI 助手调用mempalace_find_tunnels发现它和project_database之间有topic:authentication隧道,于是自动回忆起另一个项目里踩过的鉴权坑——这就是"跨项目记忆关联"落地的瞬间

关键文件导航

想深入源码或文档,可以从以下相对路径入手:

  • 图谱与隧道核心实现:mempalace/palace_graph.py
  • 走廊(实体共现)实现:mempalace/hallways.py
  • MCP 工具层(隧道/走廊工具注册处):mempalace/mcp_server.py
  • CLI 的hallways子命令:mempalace/cli.py
  • 记忆宫殿空间概念介绍:website/concepts/the-palace.md
  • 知识图谱概念:website/concepts/knowledge-graph.md
  • 记忆栈整体架构:website/concepts/memory-stack.md
  • 隧道/走廊行为测试:tests/test_palace_graph.py、tests/test_palace_graph_tunnels.py、tests/test_hallways.py

小结:为什么这套设计值得借鉴

  • 零额外依赖:图不是"再存一份",而是从既有向量库元数据即时派生,被动隧道零成本自动维护。
  • 三层关联齐备:实体级(Hallway,Wing 内共现)→ 主题级(同名 Room / topic 隧道,跨 Wing)→ 人工级(显式隧道,语义把关),粒度从细到粗。
  • 面向 AI 助手设计:所有能力都通过 MCP 工具暴露,让 AI 能像人一样"沿走廊走到另一个项目的房间里"。

如果你希望多个项目、多个 AI 会话共享一套可推理的记忆网络,MemPalace 的 Hallways + Palace Graph 机制给出了一个简洁而优雅的开源答案。

【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And it's free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询