关于 memory-curate
memory-curate 是一项用于整理和连接 Basic Memory 知识图谱中笔记的 Agent 技能。它可发现孤立笔记、潜在重复、标签不一致和文件夹问题,并在确认后建议调整。
主要功能
- 01查找没有关联的笔记
- 02建议带类型的笔记关联
- 03识别相似或重复笔记
- 04检查文件夹与标签一致性
- 05为相关主题创建索引笔记
适用场景
- 01检查知识图谱中的孤立笔记
- 02审查可能重复的笔记
- 03统一标签和文件夹组织
- 04为一组相关笔记建立索引
MCP 相关
使用 Basic Memory 的 MCP 工具(如 bm_search、bm_read、bm_edit、bm_find、bm_move 和 bm_write)检查并整理图谱。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ basicmachines-co/ basic-memory --skill memory-curate安装后在 Claude Code 中输入/memory-curate确认已加载。
详细介绍
Memory Curate
维护健康且关联紧密的知识图谱。随着笔记不断积累,定期整理、链接和维护知识库大有裨益,这样孤立的笔记就能汇入相互连接的图谱。
此技能维护知识图谱——构成知识库的笔记、关系和标签。(如需整理笔记内容——拆分臃肿的笔记、汇总分散的信息、清理过时条目——请参阅 memory-defrag。)
使用时机
- 有人要求整理、清理或改进知识库
- 有人询问笔记之间的关联,或哪些笔记尚未链接
- 有人提到孤立或未链接的笔记
- 有人询问重复或相似的笔记
- 有人请求协助整理文件夹或统一标签
- 出现“帮我整理一下”“查找相关笔记”“哪些笔记还没链接”“清理我的笔记”等说法
整理能力
1. 查找孤立笔记
孤立笔记与其他笔记没有任何关系,是图谱中的孤岛。
# List notes, then read each to inspect its Relations section
bm_search(query="*", mode="text", page_size=50)
bm_read(identifier="note-to-check")
# Orphans have an empty (or missing) Relations section
query="*" 只有在使用 mode="text" 时才会列出全部内容。即使没有 Relations 部分,正文中链接到其他笔记的笔记(使用 wikilink 或普通 Markdown 链接)也不属于孤立笔记。
如果可以使用 bm CLI,bm orphans 一次调用即可列出没有任何关系的笔记。
如何处理孤立笔记:
- 根据内容相似度建议建立关系
- 询问是否应将它们关联到现有主题
- 提议创建枢纽笔记来汇集相关的孤立笔记(参见能力 6)
2. 建议带类型的关系
分析笔记内容并提出有意义的关联。
bm_read(identifier="note-to-analyze")
# Pull out key terms, then search for related notes
bm_search(query="key terms from the note")
根据共同主题、互补内容(问题/解决方案、问题/答案)、顺序(第 1 部分 → 第 2 部分)或层级(上位概念 → 细节)建议建立关系。
关系类型词汇:
relates_to— 一般主题关联extends— 在此基础上扩展或详述implements— 实现某个概念或规范depends_on— 需要先理解part_of— 层级或组成关系contrasts_with— 呈现另一种观点inspired_by— 灵感来源enables— 使某事成为可能
也可以使用自定义关系类型——选择能清楚描述关系的动词即可。
使用 bm_edit 添加已确认的关系:
bm_edit(
identifier="API Design Decisions",
command="insert_after_section",
section="Relations",
content="- depends_on [[Rate Limiter]]",
)
insert_after_section 需要指定的标题已存在,而孤立笔记通常没有 ## Relations。此时应改为追加该部分:
bm_edit(
identifier="API Design Decisions",
command="append",
content="\n## Relations\n- depends_on [[Rate Limiter]]",
)
3. 查找相似或重复的笔记
找出可能涵盖相同内容的笔记。
bm_search(query="topic keywords")
# Compare results for: similar titles, overlapping observations,
# shared tags, close-together timestamps
重复笔记的处理方式:
- 合并为一篇全面的笔记,然后添加关系,将被合并的笔记指向新笔记。如果选择删除被合并的笔记,其他笔记中指向它的链接会变成无法解析的链接;应先更新这些链接
- 一篇笔记修订另一篇时,使用
supersedes/updates建立链接 - 区分笔记,为其添加上下文,明确各自不同的侧重点
# Point an older note at the one that replaces it
bm_edit(
identifier="DB Schema v1",
command="insert_after_section",
section="Relations",
content="- updates [[DB Schema v2]]",
)
4. 检查文件夹组织
bm_find(path="/", depth=3, project="<project>")
查找内容过多的文件夹、只含一篇笔记的文件夹、命名不一致的文件夹,以及放错位置的笔记。建议将相关笔记归入主题文件夹,为较大的类别添加子文件夹,并采用一致的命名规则。使用 bm_move 移动放错位置的笔记。默认情况下,移动后永久链接保持不变,因此链接仍可正常解析。启用了 update_permalinks_on_move 的项目会根据新路径重写永久链接。
bm_move(
identifier="API Design Decisions",
destination="architecture/api-design-decisions.md",
)
5. 统一标签
bm_search(query="*", mode="text", page_size=100)
# Inspect tag patterns across results
检查以下情况:
- 变体标签 —
architecture与arch;选择一个并统一使用 - 未使用的标签 — 仅用于一篇笔记,不再发挥作用
- 过度使用的通用标签 — 范围太广,无法帮助查找
- 缺失的标签 — 相关笔记缺少明显适用的标签
6. 创建索引或枢纽笔记
找到一组相关笔记后,创建一个导航枢纽。
bm_write(
title="Architecture Decisions Index",
directory="indexes",
tags=["architecture", "index"],
note_type="index",
content="""# Architecture Decisions Index
A hub linking architecture-related decisions and patterns.
## Decisions
- [[Database Selection Decision]]
- [[API Design Patterns]]
- [[Authentication Architecture]]
## Patterns
- [[Repository Pattern]]
- [[Async Client Pattern]]
## Observations
- [index] Central hub for architecture knowledge #navigation
## Relations
- indexes [[Architecture]]""",
)
7. 丰富内容稀疏的笔记
找出结构不完整的笔记,并补充内容。
bm_read(identifier="sparse-note")
如果笔记缺少 Observations 部分,请建议分类。如果没有 Relations,请建议添加链接。如果没有标签,请建议相关标签。如果缺少上下文,请建议补充背景信息。使用 bm_edit 应用更改。
整理工作流
根据请求确定整理范围。健康检查会报告孤立笔记、可能重复的笔记、近期活动(bm_project(command="recent"))和文件夹分布。深度整理会按检查结果建议的顺序,逐一处理上述功能。主题整理会使用 bm_search 和 bm_context 梳理某个主题,补齐发现的空白,并以一篇中心笔记收尾。
最佳实践
- **循序渐进。**不要一次性重组所有内容。
- **更改前先确认。**移动、合并或编辑笔记前,务必征求用户同意。
- **保留永久链接。**更改永久链接会导致指向它的
memory://链接失效。默认情况下,移动笔记会保留永久链接(除非项目启用了update_permalinks_on_move)。 - **说明建议理由。**解释建立关联或合并笔记的原因。
- **尊重现有体系。**完善用户已有的组织方式,而不是强加新的分类法。
- **展示关系图。**使用
bm_context帮助用户了解笔记之间的联系。
对话示例
用户:“帮我整理笔记”
助手:
- 对知识库进行健康检查
- 报告:“你有 47 篇笔记。我发现了 12 篇孤立笔记和 3 组可能重复的笔记。”
- 询问:“想先建立孤立笔记之间的联系,还是先检查重复项?”
用户:“找出应该链接到我的 API 设计笔记的笔记”
助手:
- 阅读 API 设计笔记
- 搜索相关内容
- 建议:“有 5 篇笔记可能相关 —
- ‘REST 最佳实践’ →
relates_to - ‘身份验证流程’ →
implements - ‘速率限制决策’ →
extends要添加其中哪些关联吗?”
- ‘REST 最佳实践’ →
用户:“有没有主题相似的笔记?”
助手:
- 分析标题和内容,查找聚类
- 报告:“可能存在内容重叠 —
- ‘身份验证流程’和‘身份验证设计’讨论的内容相似
- ‘DB Schema v1’和‘DB Schema v2’可能需要建立
supersedes关联 想检查其中一组吗?”