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_code、wing_myproject、wing_team |
| Room(房间) | 领域内的一个主题 | chromadb-setup、riley-college-apps |
| Drawer(抽屉) | 房间里的具体记忆条目 | 一段对话摘要、一条决策记录 |
核心洞察:同一个名字的 Room 出现在多个 Wing 里,就说明这几个项目在该主题上有交集——这正是隧道自动产生的依据。
跨 Wing 隧道(Tunnels):自动发现项目之间的"暗道"
被动隧道:同名 Room 自动连线
Palace Graph 的构建逻辑非常直接(见 palace_graph.py):
- 节点 = Room(命名的想法)
- 边 = 隧道(同一 Room 横跨多个 Wing 形成的连接)
- 边类型 = Hall(走廊,即主题分类)
也就是说,不需要任何外部图数据库,图完全是从 ChromaDB 的元数据"算"出来的。比如chromadb-setup这个房间同时存在于wing_code和wing_myproject中,系统就会自动生成一条连接两个 Wing 的隧道,并记录它属于哪个 Hall、共出现多少次。
build_graph()还支持 60 秒 TTL 的模块级缓存,写入时通过invalidate_graph_cache()失效,保证查询快且数据不陈旧。
图谱能回答什么问题?
模块开头的 docstring 给出了三个典型查询,恰好是跨项目记忆的精髓:
- "从
wing_code的chromadb-setup出发,走到wing_myproject"(traverse():BFS 遍历,默认 2 跳,返回带connected_via的路径列表) - "找出所有与
riley-college-apps相连的房间" - "
wing_hardware和wing_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 契约依赖数据库表结构")几个值得注意的设计:
- 隧道是无向且幂等的:
create_tunnel(A, B)与create_tunnel(B, A)生成同一个规范 ID,重复调用只会更新 label,不会产生重复记录。 - 端点严格校验:显式隧道必须指向真实存在的房间,否则会抛
ValueError,杜绝"悬空链接"。 - 连接会"成长":每条隧道带 L7 动态字段(
strength/stability/access_count),被访问、被重新激活会改变连接强度,形成一个"活着的"关联层。 - 三类隧道共存:被动隧道(同名 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_code和wing_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),仅供参考