mcpField
M
memory-curate

memory-curate

github.com/basicmachines-co生产力4.4k1.3k 次安装今天更新
代码仓库

关于 memory-curate

memory-curate 是一项用于整理和连接 Basic Memory 知识图谱中笔记的 Agent 技能。它可发现孤立笔记、潜在重复、标签不一致和文件夹问题,并在确认后建议调整。

主要功能

  1. 01查找没有关联的笔记
  2. 02建议带类型的笔记关联
  3. 03识别相似或重复笔记
  4. 04检查文件夹与标签一致性
  5. 05为相关主题创建索引笔记

适用场景

  1. 01检查知识图谱中的孤立笔记
  2. 02审查可能重复的笔记
  3. 03统一标签和文件夹组织
  4. 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 梳理某个主题,补齐发现的空白,并以一篇中心笔记收尾。

最佳实践

  1. **循序渐进。**不要一次性重组所有内容。
  2. **更改前先确认。**移动、合并或编辑笔记前,务必征求用户同意。
  3. **保留永久链接。**更改永久链接会导致指向它的 memory:// 链接失效。默认情况下,移动笔记会保留永久链接(除非项目启用了 update_permalinks_on_move)。
  4. **说明建议理由。**解释建立关联或合并笔记的原因。
  5. **尊重现有体系。**完善用户已有的组织方式,而不是强加新的分类法。
  6. **展示关系图。**使用 bm_context 帮助用户了解笔记之间的联系。

对话示例

用户:“帮我整理笔记”

助手:

  1. 对知识库进行健康检查
  2. 报告:“你有 47 篇笔记。我发现了 12 篇孤立笔记和 3 组可能重复的笔记。”
  3. 询问:“想先建立孤立笔记之间的联系,还是先检查重复项?”

用户:“找出应该链接到我的 API 设计笔记的笔记”

助手:

  1. 阅读 API 设计笔记
  2. 搜索相关内容
  3. 建议:“有 5 篇笔记可能相关 —
    • ‘REST 最佳实践’ → relates_to
    • ‘身份验证流程’ → implements
    • ‘速率限制决策’ → extends 要添加其中哪些关联吗?”

用户:“有没有主题相似的笔记?”

助手:

  1. 分析标题和内容,查找聚类
  2. 报告:“可能存在内容重叠 —
    • ‘身份验证流程’和‘身份验证设计’讨论的内容相似
    • ‘DB Schema v1’和‘DB Schema v2’可能需要建立 supersedes 关联 想检查其中一组吗?”

评论

支持 Markdown