关于 retrieve-memory
retrieve-memory 是面向使用 Doctrine 记忆库的 Agent 的检索技能,指导按范围搜索、检索和检查记忆。它强调风险留置、信任校验及沿关系图扩展上下文。
主要功能
- 01优先使用 MCP 记忆工具
- 02按范围搜索并分页
- 03检索时应用信任留置
- 04沿关系图扩展上下文
- 05校验记忆的新旧与关系
适用场景
- 01执行仓库任务前查找相关记忆
- 02检查高风险或过时记忆
- 03追踪记忆之间的关联
MCP 相关
在 Doctrine MCP 服务可用时,优先使用 memory_search、memory_retrieve、memory_show 和 memory_list;否则可切换到 doctrine memory CLI。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ davidlee/ doctrine --skill retrieve-memory安装后在 Claude Code 中输入/retrieve-memory确认已加载。
详细介绍
检索记忆
默认规则:如果无法引用仓库中的权威来源文件、文档或 ADR, 请先查询记忆,然后再继续。记忆模型记录在 [[mem.concept.doctrine.memory-model]] 中。
工具偏好
如果你的运行环境支持 MCP 工具,且已连接 doctrine 的 MCP 服务
(你能在工具列表中看到 memory_search、memory_retrieve、memory_show、memory_list),请优先使用这些 MCP 工具,而不是 CLI。它们会在 MCP 内容块中返回可供机器解析的 JSON 文本,无需启动
shell;memory_show 还会通过解析反向链接来补充结果。
渐进式披露(MCP 模式)
memory_search— 首先进行范围受限的发现。至少提供一个筛选条件(路径、glob、标签、类型或自由文本查询)。仅返回元数据,不含正文。行中包含held_back_on_retrieve标记——不要将高风险记忆视为可直接使用的知识。- 查找与浏览。 自由文本搜索范围有限:只会返回对查询有词法证据或精确键匹配的记忆;仅使用筛选条件则会按严重性排序浏览所有匹配范围的内容。无论哪种方式,都会返回一页结果(默认 20 条);通过
offset=next_offset继续翻页(CLI:--page)。 - 空结果也是答案。 自由文本搜索结果为空表示“未找到匹配项”,不表示“语料库为空”——请改用记忆中可能出现的术语重新查询,或移除查询条件,按范围浏览。
- 查找与浏览。 自由文本搜索范围有限:只会返回对查询有词法证据或精确键匹配的记忆;仅使用筛选条件则会按严重性排序浏览所有匹配范围的内容。无论哪种方式,都会返回一页结果(默认 20 条);通过
memory_retrieve— 安全地回忆第 1 步中找到的候选内容。此工具会强制执行保留限制;低可信度、高严重性的记忆会被自动屏蔽。memory_show— 仅在需要完整信息时进行全面查看。为节省 token,请使用view: summary。被保留的记忆会附带警告;不要将其作为知识使用。memory_list— 仅用于浏览和索引。优先使用范围受限的memory_search。
当 MCP 工具不可用时(例如,在纯 shell 环境中),请改用下文所述的 doctrine memory CLI 命令。
两种接口
doctrine memory retrieve— 查看doctrine memory retrieve --help,了解其将数据与指令区分开来的说明,以及不可绕过的可信度保留限制。doctrine memory search— 返回能明确显示风险的排序结果(不受保留限制)。使用它来发现和分类内容,包括retrieve会隐藏的风险记忆。doctrine memory show <UID|KEY>— 查看一条记忆的完整正文。
图遍历
doctrine memory backlinks <REF>— 查找反向边:哪些记忆指向此记忆。找到某条记忆后,如果需要了解依赖于它的内容,请使用此命令。doctrine memory retrieve --expand N— 沿[[relation]]边扩展结果图 N 跳。每一跳都会纳入直接相连的记忆。当单条记忆提供的上下文过于有限时,可使用此命令。--lifespan筛选条件(用于retrieve和search)——限制结果,仅显示生命周期不低于给定阈值的记忆;identity返回所有内容;semantic会过滤掉episodic/working;procedural会排除working。深入调查时,可使用此条件减少临时信息干扰。
问题与记忆无关时
doctrine memory search 只会搜索记忆语料库。对于“内容在哪里 / 在这里应该怎么做?”这类问题,如果答案可能存在于 ADR、规范、切片、RFC 或待办事项中,请改用 doctrine search <query>——它会在实体语料库中执行一次排序查询。此命令仅搜索实体,且默认的类型集合不包含策略和标准;lib:reference/using-doctrine.md 说明了搜索范围以及如何扩大范围。
流程(快速 → 彻底)
-
先限定范围查询。 运行
doctrine memory retrieve,将范围限定为你预计要读取或编辑的具体文件,以及即将运行的命令上下文(使用--help查看标志;动词模型参见lib:reference/using-doctrine.md)。 按 glob 限定范围的记忆仍会匹配路径范围——无需单独设置标志。范围探测条件采用 OR 逻辑;类型/状态是 AND 硬过滤条件,因此除非确定,否则不要过度过滤。 -
调整检索范围。 查看
doctrine memory retrieve --help中的--limit和--min-trust(只会提高默认信任阈值,不会降低)。 -
检查风险。 如果
search显示与任务相关、存在风险或被暂缓的记忆,请用show查看并判断——不要对retrieve未返回的内容视而不见。 -
建立关联。 检索后,检查关键记忆的关联,并沿关联边查找相关知识:
memory show <REF>会显示关联行;memory backlinks <REF>会显示反向关联;memory retrieve --expand 1会提取图中的直接邻域。孤立的记忆不如能看到关联边的记忆有用。 -
行动前验证。 依赖较旧或严重性较高的记忆之前,运行
doctrine memory validate <REF>,检查悬空关联、过时的验证记录和草稿到期情况。六个月前看似确凿的记忆可能已经发生变化。先验证,再行动。
信任哪些内容
- 排名已综合严重性、权重、范围具体程度和时效性——优先参考排名靠前的条目。
- 记忆带有验证状态。依赖某条记忆时,应定性说明其状态:从未获证实 → 如实说明;自获证实后已有许多次提交 → “请谨慎对待,其范围已多次变动”;近期获证实 → “范围近期稳定”。
- 如果记忆之间存在冲突,不要取平均值——在进行重大变更之前升级处理(
/consult,或更新/替换过时的记忆)。
输出规范
根据记忆采取行动时,请注明其 uid/key 以及它指向的来源。请在深入阅读或编辑之前运行限定范围的查询,以便在变更成本仍较低时发现按 glob 限定范围的注意事项。