MemPalace mempalace-recall 技能拆解:为 AI Agent 打造“先检索宫殿、再凭据回答“的记忆召回协议
发布时间:2026/9/8 19:40:50 作者:尧图编辑部 阅读量:1,286

MemPalace mempalace-recall 技能拆解为 AI Agent 打造先检索宫殿、再凭据回答的记忆召回协议【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And its free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace本篇技术指南围绕开源仓库 MemPalace 中的 Agent 技能文档.claude-plugin/skills/mempalace-recall/SKILL.md展开完整解析这套面向 Claude Code 等智能体的search-before-answer搜索前置召回协议智能体在回答任何涉及过去工作、人物、项目、历史决策的问题前必须先读取用户的记忆宫殿Memory Palace而不是从模型记忆里猜测。读完本文将掌握 recall 技能的触发边界、六步召回流程、MCP 工具选型含每个工具的入参与语义、异常恢复路径与反模式清单并能追溯到mcp_server.py中每个工具的真实 schema 与仓库规范来源。一、技能定位recall 只做召回安装与写入交给配套技能MemPalace 将智能体行为拆分成互补的 Agent Skills。mempalace-recall是一个单一职责的技能它只覆盖回答前先读取宫殿的召回行为不处理安装、挖掘mine与状态检查——这些属于mempalace技能对应仓库根目录下的 skills/mempalace/SKILL.md 与.claude-plugin/skills/mempalace/SKILL.md的职责范围。二者搭配使用时mempalace负责装好服务、写入记忆mempalace-recall负责让已写入的内容在对话中被正确读出来。技能文件本身带有 YAML frontmatter供 Claude Code / Agent Skills 运行时识别--- name: mempalace-recall description: Recall protocol for MemPalace — search the palace before answering about past work, people, projects, or prior decisions. Apply when the user asks what was decided, what happened before, who someone is, what was discussed last time, or anything that may already be filed in their memory palace; or when mempalace-recall is invoked. Complements the mempalace setup skill and requires the mempalace-mcp server. ---这段description中标注了两个关键事实其一它与 mempalace 设置技能互补其二它强依赖mempalace-mcp服务端——即仓库中实现全部工具入口的 mempalace/mcp_server.py。值得注意这份技能的完整协议文本并不是本仓库中唯一一份。仓库规定 recall 协议存在单一权威来源single source of truthintegrations/shared/recall-protocol.md见 共享召回协议 开头说明各编辑器技能与规则都应链接到该文件而非各自复述从而保证 Cursor、Antigravity、Claude Code、Codex、OpenClaw 等集成之间规则永远不与技能漂移。仓库里同源同步的形态还包括Claude Code 技能.claude-plugin/skills/mempalace-recall/SKILL.md、.claude-plugin/skills/mempalace/SKILL.mdAntigravity 技能.antigravity-plugin/skills/mempalace-recall/SKILL.md独立技能包skills/mempalace-recall/SKILL.mdCursor 规则精简版examples/cursor/rules/mempalace-recall.mdc、examples/cursor/rules/mempalace-recall-always.mdc、rules/mempalace-recall.mdc二、Step 0 —— 先验证 MemPalace 可用再谈召回技能规定在依赖召回能力之前必须确认 MemPalace 已安装且可被 MCP 触达顺序如下检查本机安装运行mempalace --version不要臆断版本以实际安装构建通过 MCP 暴露出的mempalace_*工具集为准——工具集是事实来源the MCP tool set is the source of truth工具缺失时的处理若mempalace_*MCP 工具不可用应明确告知用户服务器未连接并引导其查看 mempalace 初始化命令说明 或对应 instructionsmempalace/instructions/init.md完成初始化例如/mempalace-init绝不允许静默退回到用模型记忆回答。这一验证优先的设计与 mcp_server.py 的命名规范互相印证mcp_server.py中用name.startswith(mempalace_)判定工具归属见 mcp_server.py凡是通过 MCP 暴露的语义检索、知识图谱、日记与协调工具一律采用mempalace_前缀。三、角色设定与底层设计哲学逐字优于猜测技能要求召回者以资深 AI 记忆系统工程师的身份行事核心信条可以浓缩为两句话从宫殿逐字verbatim召回永远胜过模型记忆中一个自信的猜测——答错比答慢更糟wrong is worse than slow不要改写、不要有损压缩、不要 paraphrase 存储内容引用抽屉里的原话正是这套系统的意义所在。这与仓库的顶层承诺一脉相承——共享协议开篇即声明MemPalace 的基础承诺是100% recall, verbatim, never guess见 integrations/shared/recall-protocol.md。相应地底层写入工具如mempalace_add_drawer与mempalace_checkpoint的 schema 也反复强调content必须存储精确原话、绝不总结见 mcp_server.py。读取端与写入端遵守同一语义契约协议才自洽。四、何时召回问题驱动而非反射式recall 是问题驱动question-driven的不是反射式的——并非每一轮都要搜索。技能给出了应该搜与不该搜的清晰分界。应当先检索宫殿的场景用户的问题可能已被归档过去的工作或既有决策——我们当时决定/尝试/做了什么某个人物、项目或实体——谁是……什么是……更早的会话——还记得……吗上次……我们讨论过的那件事可能随时间变化的偏好、事实或关系。不要检索的场景与记忆完全无关的全新greenfield工作例如把这个变量改名修这个 typo。技能给出了量化理由每一轮都搜索会浪费延迟并且违反 MemPalace 的记忆应瞬时可达memory should feel instant预算。从源码结构看这种克制也与 searcher/检索链路需经受性能预算测试的设计一致参见 tests/benchmarks/test_performance_budgets.py侧面印证 recall 频次是被当作系统性资源约束来管理的。五、召回协议主流程六步操作技能给出了 Agent 侧可执行的协议步骤唤醒wake-up阶段若会话启动 hook 注入了additional_context尊重其携带的wing 作用域wing scoping限定召回范围。仓库中对应的唤醒 hook 实现在 hooks/cursor/mempal_wake_hook_cursor.sh 等目录下回答之前先搜索凡涉及人物/项目/过去事件/历史决策先调用mempalace_search涉及关系型或时间受限事实则改用mempalace_kg_query不确定就问对某个事实人名、年龄、关系、偏好不确定时应明说让我查一下宫殿let me check the palace再查询逐字返回返回抽屉原文绝不概括或转述会话落账在一次实质性会话后用mempalace_diary_write记录连续性若后台 hook 已代为保存则跳过避免重复归档事实变更的三态维护用mempalace_kg_supersede处理单值替换用mempalace_kg_invalidate处理结束且无后继的事实用mempalace_kg_add处理相互独立/可并存的新事实。第 6 步体现了知识图谱的时态历史temporal history设计变更不是覆盖而是在共享时间边界上原子交接从而让某时间点是什么状态的点查永远成立as_of能力。这一语义贯穿了下面工具选型中 KG 系列的全部实现。六、工具选型指南按需求选工具技能用一张速查表把需求 → 工具映射清楚这是召回执行时的核心决策表你需要工具按语义查找任意记忆mempalace_search从这里开始实体的关系型 / 时态事实mempalace_kg_query替换单值事实mempalace_kg_supersede实体的时间线故事mempalace_kg_timeline近期会话连续性mempalace_diary_read作用域未知时确认有哪些 wing / roommempalace_list_wings、mempalace_list_rooms记录本次会话mempalace_diary_writemempalace_search接收简短自然语言query关键词或一个问句——不要传系统提示词或整段粘贴的对话另可带wing/room过滤与limit默认 5。6.1mempalace_search的完整入参源码级查看 mcp_server.py 中mempalace_search的真实 schema比技能文档多出许多可用于实际调参的字段参数类型 / 默认含义querystring必填≤250 字符仅放搜索关键词或问句context才用于背景limitint默认 5范围 1–100返回条数上限wing/roomstring按宫殿结构过滤source_filestring精确匹配某条 source 路径须传 result 的source_path全路径source_file只是 basename不做 globsince/beforeISO 日期/时间按抽屉created_atfiled_at做时间窗过滤语义为含 since、不含 beforemax_distancenumber默认 1.5余弦距离阈值0完全相同2相反更远的结果被丢弃设 0 可关闭过滤越低越严格candidate_strategyvector/unionvector保持纯语义搜索union额外合并后端 BM25 词法候选再重排contextstring可选搜索背景不参与 embedding仅用于未来重排这说明 recall 并不是单次向量检索那么简单工具支持时间窗、作用域过滤、距离阈值乃至混合候选策略为查得准、又不误伤提供了工程化手段。6.2 知识图谱工具族时态事实的一等公民技能反复强调 KG 工具的时态语义其真实实现见 mcp_server.pymempalace_kg_query入参entity必填、as_of日期/时间过滤——只返回该时刻仍成立的事实、directionoutgoing/incoming/both默认 both。示例场景(Max, child_of Alice, loves chess)用as_of即可回答三月时谁向谁汇报mempalace_kg_addsubject、predicate、object必填可选valid_from/valid_to圈定时间窗valid_to用于单次回填一段已结束的历史事实。另有来源溯源字段source_closet、source_file、source_drawer_id后者对应仓库 RFC 002 的来源标注设计可参考 docs/rfcs/002-source-adapter-plugin-spec.mdmempalace_kg_invalidatesubject、predicate、object必填ended默认今天——标记不再成立但保留历史mempalace_kg_supersedesubject、predicate、old_object、new_object必填at指定边界时刻默认当前 UTC——原子替换使得边界上的点查只返回新值优于先 invalidate 再 add两段式mempalace_kg_timelineentity可选省略即全量时间线——输出某个实体的编年史。6.3 会话日记跨会话的连续性mempalace_diary_writemcp_server.pyagent_name必填每个 Agent 拥有独立日记 wingentry或别名content用AAAK 格式书写以压缩体积可选topic与wing。实现注释提示了 schema 细节entry/content二选一在 dispatch 层校验而非顶层 anyOf——因为 Anthropic 会拒绝顶层 anyOf 结构mempalace_diary_readagent_name必填last_n默认 10可指定wing跨项目读日记。AAAK项目内部称之为方言/压缩记忆格式相关规格可通过 MCP 工具mempalace_get_aaak_spec获取也可参考 website/concepts/aaak-dialect.md。七、重要边界活跃协调不是召回技能特意划清一条易混淆的边界主动协调active coordination不是召回recall。当在共享 hub 上把任务委派给另一个 Agent、或等待其回复/patch 时应使用logstream日志流工具族——mempalace_event_append、mempalace_event_wait、mempalace_patch_submit、mempalace_artifact_get——而不是抽屉drawers或搜索。共享协议的一句话总结很精辟recall 回答疑问logstream 搬运工作Recall answers questions; the logstream moves work。规范的权威文本在 integrations/shared/coordination-protocol.md。二者的区分在 mcp_server.py 的工具清单里也有体现logstream / 协调工具与 KG / 搜索工具分属不同分组与权限分类见 mcp_server.py 的工具白名单结构从源码层面印证了协调与召回是两套通道的架构事实。八、异常路径Unhappy Paths三类故障的标准处置技能为召回执行定义了三种可预期的失败模式及处理策略空结果Empty results如实告知宫殿对此没有记载不要编造答案补洞提议放宽搜索去掉wing过滤或把新信息归档入库MCP 错误 / 服务端宕机把错误原样呈现建议用户运行mempalace status或重新执行初始化/mempalace-init绝不退回猜测宫殿索引损坏 / 压缩器报错corrupt index / compactor error当服务端报告HNSW segment-writer 错误、ChromaDB 压缩失败或一次写入后长期停留在 Not connected 状态说明向量索引已与chroma.sqlite3脱节但抽屉行drawer rows在 SQLite 中仍完好。此时应从 SQLite 重建索引不要重新挖掘re-mine——重新挖掘会丢弃通过 MCP 新增的抽屉与日记条目这些内容没有源文件对应上游 issue #1843。技能给出两条 CLI 命令mempalace repair --mode from-sqlite --archive-existing --yes mempalace repair-status且明确要求Agent 不得在进程内自行修复应引导用户在宿主侧停止服务后执行 CLI。8.1 索引恢复的完整流程来自共享协议integrations/shared/recall-protocol.md 把上面的命令展开为可操作的恢复步骤停止 MCP 服务端结束mempalace-mcp进程或重启宿主编辑器可选备份宫殿目录--archive-existing本就会把旧宫殿移走备份属于双保险macOS/Linux 用cp -a ~/.mempalace/palace ~/.mempalace/palace.bak.$(date %F)从 SQLite 重建mempalace repair --mode from-sqlite --archive-existing --yes校验mempalace repair-status分歧度应显示为 0重启 MCP 服务端。九、反模式清单四条永不越界的红线技能明确列出召回过程中绝不允许的行为宫殿可能知道时却用模型记忆回答过去的工作、人物或决策——必须先搜索改写或概括宫殿返回的内容而不逐字引用每一轮都反射式搜索包括毫无记忆相关性的全新编码任务把整段对话或系统提示词塞进query——查询必须短小、关键词驱动。把反模式与何时召回对照看可以发现它们其实互为镜像前半部分保护召回率与保真度后半部分保护延迟预算与查询质量。十、在 Claude Code 中的落地形态与配套资源mempalace-recall不是孤立存在的。要在 Claude Code及其他 MCP 宿主中实际落地这套协议还需联动以下仓库资源MCP 服务端即事实来源mempalace/mcp_server.py 中TOOLS字典集中定义了全部mempalace_*工具的 description / input_schema / handler 三元组技能表里提到的每个工具都能在此核对入参CLI 侧命令mempalace status、/mempalace-init的说明见 commands/mempalace-init.md 与 commands/mempalace-status.md技能/规则仓库同步点根目录 skills/mempalace-recall/SKILL.md、Cursor 侧 rules/mempalace-recall.mdc 与 examples/cursor/rules/mempalace-recall.mdc测试佐证召回依赖的检索、KG、日志流均有对应测试如 tests/test_searcher.py、tests/test_knowledge_graph.py、tests/test_logstream.py可在修改/自检协议行为时验证。结语mempalace-recall的实质是一份可执行的智能体行为规范它把记忆应瞬时、召回应逐字、错误比缓慢更不可接受的产品信条翻译成了带触发条件、工具映射、异常处置与红线的协议。理解这份技能的关键不在于记住某个命令而在于把握它的设计三原则问题驱动只在相关时搜、逐字返回绝不改写、失败诚实宁可说不知道绝不猜——再配合mempalace_search的时间窗/作用域/距离阈值等检索参数以及 KG 工具族的时态语义就能让 Agent 在记性好与不啰嗦之间取得工程上的平衡。【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And its free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考