mcpField
M
memory-lifecycle

memory-lifecycle

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

关于 memory-lifecycle

memory-lifecycle 是管理 Basic Memory 实体状态流转的技能,核心做法是归档而非删除,以保留知识图谱中的观察和关系。它涵盖查找实体、移动笔记、更新状态及重新激活。

主要功能

  1. 01按状态将实体移入相应文件夹
  2. 02更新状态及完成日期
  3. 03保留已结束实体及其关系
  4. 04重新激活误归档的实体
  5. 05对不明确的匹配请求澄清

适用场景

  1. 01归档已完成或取消的工作
  2. 02将暂停项目的状态改为暂停
  3. 03重新打开误标为完成的实体
  4. 04定期整理过时的进行中事项

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/basicmachines-co/basic-memory --skill memory-lifecycle

安装后在 Claude Code 中输入/memory-lifecycle确认已加载。

详细介绍

记忆生命周期

管理实体在 Basic Memory 中如何在各个状态阶段之间流转。核心原则:归档,不删除。 已完成的工作是宝贵的上下文——将它移出活动视图,但保留在知识图谱中。

适用场景

  • 用户表示某事已“完成”“做完”“提交”“错过”或“取消”
  • 在状态文件夹之间移动实体(活动 → 归档、待处理 → 活动等)
  • 撤销误标为已完成的状态
  • 定期清理过时的活动事项

核心原则:归档,不删除

删除笔记会将其从知识图谱中移除——其中的观察和关系都会消失,其他笔记中指向它的链接也会变成无法解析的链接。归档则会保留所有内容,同时表明该实体已不再处于活动状态。

# Good — entity stays in the knowledge graph
bm_move → active/ to archive/

# Bad — knowledge is lost
bm_delete

唯一的例外:因失误创建的笔记(拼写错误、确实重复的笔记)可以删除。

文件夹约定

使用文件夹按状态组织实体。具体的文件夹名称取决于你的领域,但请遵循一致的模式:

entities/
  active/          # Currently relevant, in-progress
  archive/         # Completed, no longer active, but worth keeping
  pipeline/        # Future items, not yet started

对于任务,具体可采用:

tasks/
  active/          # Work in progress
  completed/       # Finished work

对于任何具有明确生命周期的实体类型:

[type]/
  active/          # Current
  [end-state]/     # Whatever "done" means for this type

选择符合你领域的文件夹名称。模式比具体名称更重要。

状态识别

当用户提到完成或状态变更时,提取其意图:

信号状态操作
“完成了”“做完了”“已完成”“已交付”已完成移至归档/已完成文件夹
“已提交”“已发送”“已送达”已完成移至归档/已完成文件夹
“错过了”“已过期”“跳过了”“已失效”已错过移至归档或已错过文件夹
“已取消”“已放弃”“已终止”已取消移至归档文件夹
“已暂停”“搁置中”“延期”已暂停更新 frontmatter 状态,保留原位置
“重新开始”“重新开启”“恢复”重新激活移回活动文件夹

工作流

1. 查找实体

使用多个变体在 Basic Memory 中搜索,以定位实体:

bm_search(query="quarterly report")
bm_search(query="Q1 report")

如果返回多个匹配项,请列出选项并询问用户要选哪一个。

如果没有找到匹配项,请请求用户澄清,不要猜测。

2. 移动文件

使用 bm_move 将实体移至相应的状态文件夹:

bm_move(
  identifier="tasks/active/quarterly-report",
  destination="tasks/completed/quarterly-report.md"
)

默认情况下,移动后永久链接会保持不变,因此链接仍可正常解析。启用了 update_permalinks_on_move 的项目会根据新路径重写永久链接。

3. 更新 Frontmatter

移动后,使用 command="set_metadata" 和 metadata 参数,将新的状态(以及该类型所跟踪的完成日期,如有)合并到 frontmatter 中;此操作不会更改正文:

bm_edit(
  identifier="tasks/completed/quarterly-report.md",
  command="set_metadata",
  metadata={"status": "completed", "completed": "2026-02-22"}
)

如果笔记中还包含 - [status] 观察项,也要一并更新(例如,对 - [status] active 使用 find_replace)。

4. 确认

简洁地说明已完成的操作:

Marked complete: Quarterly Report
  Moved to: tasks/completed/quarterly-report.md
  Status: completed

边缘情况

已归档

如果实体已在归档/已完成文件夹中,请告知用户:

“Quarterly Report 已在 tasks/completed/ 中。需要我更新其中的内容吗?”

部分完成

有时只有实体的一部分已完成。这时不要移动实体,而应更新实体内的观察项或状态说明,以反映部分进度。

已锁定笔记

frontmatter 中包含 locked: true 的笔记仍可移动,且会保留锁定状态, 但第 3 步中的状态编辑会被拒绝。请说明笔记已移动,但状态未更改。只有用户可以通过编辑文件来解除锁定。

撤销 / 重新激活

如果某项内容被误归档,请将其移回:

bm_move(
  identifier="tasks/completed/quarterly-report",
  destination="tasks/active/quarterly-report.md"
)

bm_edit(
  identifier="tasks/active/quarterly-report.md",
  command="set_metadata",
  metadata={"status": "active"}
)
仅更改状态,不移动

某些状态变更不需要移动文件夹——“已暂停”或“受阻”的事项通常保留在 active/ 中,只需更新 frontmatter。仅在终止或重大状态转换时移动文件夹。

与其他技能的关系

  • memory-tasks:任务是生命周期中的一个特定场景。此技能涵盖通用模式;memory-tasks 涵盖任务专属字段(steps、current_step、context)。
  • memory-notes:使用 memory-notes 中的先搜索再创建原则,在转换实体之前先找到它。
  • memory-defrag:定期整理可以识别应归档的过时活跃项目。

指南

  • 归档,绝不删除。 知识图谱可以从历史上下文中受益。
  • 先移动,再更新 frontmatter。 这样即使编辑步骤失败,文件也已位于正确位置。
  • 默认情况下,永久链接在移动后仍然有效。 除非项目启用了 update_permalinks_on_move,否则通过 bm_move 移动后,指向该实体的链接仍然有效。
  • 确认时简明扼要。 用户了解自己的系统,只需说明更改了什么。
  • 遇到歧义时询问。 如果有多个匹配实体,或目标文件夹不明确,请先询问,不要猜测。
  • 可以批量操作。 如果用户说“归档所有已完成的任务”,先找出所有任务并确认列表,然后依次移动。

评论

支持 Markdown