关于 memory-lifecycle
memory-lifecycle 是管理 Basic Memory 实体状态流转的技能,核心做法是归档而非删除,以保留知识图谱中的观察和关系。它涵盖查找实体、移动笔记、更新状态及重新激活。
主要功能
- 01按状态将实体移入相应文件夹
- 02更新状态及完成日期
- 03保留已结束实体及其关系
- 04重新激活误归档的实体
- 05对不明确的匹配请求澄清
适用场景
- 01归档已完成或取消的工作
- 02将暂停项目的状态改为暂停
- 03重新打开误标为完成的实体
- 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移动后,指向该实体的链接仍然有效。 - 确认时简明扼要。 用户了解自己的系统,只需说明更改了什么。
- 遇到歧义时询问。 如果有多个匹配实体,或目标文件夹不明确,请先询问,不要猜测。
- 可以批量操作。 如果用户说“归档所有已完成的任务”,先找出所有任务并确认列表,然后依次移动。