mcpField
R
retrieve-memory

retrieve-memory

github.com/davidleeAgent 工作流2144 次安装3 天前更新
代码仓库

关于 retrieve-memory

retrieve-memory 是面向使用 Doctrine 记忆库的 Agent 的检索技能,指导按范围搜索、检索和检查记忆。它强调风险留置、信任校验及沿关系图扩展上下文。

主要功能

  1. 01优先使用 MCP 记忆工具
  2. 02按范围搜索并分页
  3. 03检索时应用信任留置
  4. 04沿关系图扩展上下文
  5. 05校验记忆的新旧与关系

适用场景

  1. 01执行仓库任务前查找相关记忆
  2. 02检查高风险或过时记忆
  3. 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 模式)
  1. memory_search — 首先进行范围受限的发现。至少提供一个筛选条件(路径、glob、标签、类型或自由文本查询)。仅返回元数据,不含正文。行中包含 held_back_on_retrieve 标记——不要将高风险记忆视为可直接使用的知识。
    • 查找与浏览。 自由文本搜索范围有限:只会返回对查询有词法证据或精确键匹配的记忆;仅使用筛选条件则会按严重性排序浏览所有匹配范围的内容。无论哪种方式,都会返回一页结果(默认 20 条);通过 offset = next_offset 继续翻页(CLI:--page)。
    • 空结果也是答案。 自由文本搜索结果为空表示“未找到匹配项”,不表示“语料库为空”——请改用记忆中可能出现的术语重新查询,或移除查询条件,按范围浏览。
  2. memory_retrieve — 安全地回忆第 1 步中找到的候选内容。此工具会强制执行保留限制;低可信度、高严重性的记忆会被自动屏蔽。
  3. memory_show — 仅在需要完整信息时进行全面查看。为节省 token,请使用 view: summary。被保留的记忆会附带警告;不要将其作为知识使用。
  4. 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 说明了搜索范围以及如何扩大范围。

流程(快速 → 彻底)

  1. 先限定范围查询。 运行 doctrine memory retrieve,将范围限定为你预计要读取或编辑的具体文件,以及即将运行的命令上下文(使用 --help 查看标志;动词模型参见 lib:reference/using-doctrine.md)。 按 glob 限定范围的记忆仍会匹配路径范围——无需单独设置标志。范围探测条件采用 OR 逻辑;类型/状态是 AND 硬过滤条件,因此除非确定,否则不要过度过滤。

  2. 调整检索范围。 查看 doctrine memory retrieve --help 中的 --limit 和 --min-trust(只会提高默认信任阈值,不会降低)。

  3. 检查风险。 如果 search 显示与任务相关、存在风险或被暂缓的记忆,请用 show 查看并判断——不要对 retrieve 未返回的内容视而不见。

  4. 建立关联。 检索后,检查关键记忆的关联,并沿关联边查找相关知识:memory show <REF> 会显示关联行;memory backlinks <REF> 会显示反向关联;memory retrieve --expand 1 会提取图中的直接邻域。孤立的记忆不如能看到关联边的记忆有用。

  5. 行动前验证。 依赖较旧或严重性较高的记忆之前,运行 doctrine memory validate <REF>,检查悬空关联、过时的验证记录和草稿到期情况。六个月前看似确凿的记忆可能已经发生变化。先验证,再行动。

信任哪些内容

  • 排名已综合严重性、权重、范围具体程度和时效性——优先参考排名靠前的条目。
  • 记忆带有验证状态。依赖某条记忆时,应定性说明其状态:从未获证实 → 如实说明;自获证实后已有许多次提交 → “请谨慎对待,其范围已多次变动”;近期获证实 → “范围近期稳定”。
  • 如果记忆之间存在冲突,不要取平均值——在进行重大变更之前升级处理(/consult,或更新/替换过时的记忆)。

输出规范

根据记忆采取行动时,请注明其 uid/key 以及它指向的来源。请在深入阅读或编辑之前运行限定范围的查询,以便在变更成本仍较低时发现按 glob 限定范围的注意事项。

评论

支持 Markdown