关于 memory-lifecycle
memory-lifecycle 是用于管理 Basic Memory 实体状态流转的技能,适合维护知识图谱中的任务和其他实体。它强调将完成或取消的内容归档而非删除,并同步更新位置与状态。
主要功能
- 01按状态移动实体文件
- 02更新笔记 frontmatter 状态
- 03保留归档实体及其历史
- 04支持重新激活与部分完成
- 05遇到匹配歧义时先询问
适用场景
- 01将已完成任务移入归档目录
- 02恢复误归档的实体
- 03定期整理长期未更新的项目
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ basicmachines-co/ basic-memory-skills --skill memory-lifecycle安装后在 Claude Code 中输入/memory-lifecycle确认已加载。
详细介绍
记忆生命周期
管理实体在 Basic Memory 中如何流转于各个状态阶段。核心原则:归档,绝不删除。 已完成的工作是有价值的上下文——将它移出活跃视图,但保留在知识图谱中。
何时使用
- 用户表示某事项"已完成"、"做完了"、"已提交"、"已错过"或"已取消"
- 在状态文件夹之间移动实体(active → archive、pipeline → active 等)
- 撤销误标的完成状态
- 定期清理过期的活跃事项
核心原则:归档,绝不删除
删除笔记会将其从知识图谱中移除——它的所有观察、关系和历史都会消失。归档则保留一切,同时表明该实体不再活跃。
# Good — entity stays in the knowledge graph
move_note → active/ to archive/
# Bad — knowledge is lost
delete_note
唯一的例外:因失误创建的笔记(拼写错误、真正的重复项)可以删除。
文件夹约定
使用文件夹按状态组织实体。具体的文件夹名称取决于你的领域,但应遵循一致的模式:
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
选择符合你领域的文件夹名称。模式比具体名称更重要。
状态识别
当用户提到完成或状态变更时,提取其意图:
| 信号 | 状态 | 操作 |
|---|---|---|
| "finished"、"done"、"completed"、"shipped" | 已完成 | 移至 archive/completed 文件夹 |
| "submitted"、"sent"、"delivered" | 已完成 | 移至 archive/completed 文件夹 |
| "missed"、"passed"、"skipped"、"expired" | 已错过 | 移至 archive 或 missed 文件夹 |
| "cancelled"、"abandoned"、"killed" | 已取消 | 移至 archive 文件夹 |
| "paused"、"on hold"、"deferred" | 已暂停 | 更新 frontmatter 状态,保持原位 |
| "restarting"、"reopening"、"reviving" | 重新激活 | 移回 active 文件夹 |
工作流
1. 查找实体
使用多种变体搜索 Basic Memory 以定位实体:
search_notes(query="quarterly report")
search_notes(query="Q1 report")
如果返回多个匹配项,列出选项并询问是哪一个。
如果找不到匹配项,请求澄清——不要猜测。
2. 移动文件
使用 move_note 将实体移动到相应的状态文件夹:
move_note(
identifier="tasks/active/quarterly-report",
destination_path="tasks/completed/quarterly-report.md"
)
永久链接保持不变,因此所有现有的 [[wiki-links]] 和 memory:// URL 仍可解析。
3. 更新 Frontmatter
移动后,更新 frontmatter 中的状态以保持一致:
edit_note(
identifier="quarterly-report",
operation="find_replace",
find_text="status: active",
content="status: completed"
)
如果有完成日期字段,设置它:
edit_note(
identifier="quarterly-report",
operation="find_replace",
find_text="completed:",
content="completed: 2026-02-22"
)
4. 确认
简洁地报告所做操作:
Marked complete: Quarterly Report
Moved to: tasks/completed/quarterly-report.md
Status: completed
边界情况
已归档
如果实体已在 archive/completed 文件夹中,通知用户:
"Quarterly Report 已经在 tasks/completed/ 中了。需要我更新它的什么内容吗?"
部分完成
有时实体只有一部分完成。不要移动它——而是在实体内部更新观察或状态笔记以反映部分进展。
撤销 / 重新激活
如果某事项被误归档,将其移回:
move_note(
identifier="tasks/completed/quarterly-report",
destination_path="tasks/active/quarterly-report.md"
)
edit_note(
identifier="quarterly-report",
operation="find_replace",
find_text="status: completed",
content="status: active"
)
无移动的状态变更
某些状态变更不需要移动文件夹——"paused" 或 "blocked" 的事项通常留在 active/ 中,只需更新 frontmatter。将文件夹移动保留给终态或重大状态转换。
与其他技能的关系
- memory-tasks:任务是生命周期的一个具体案例。本技能涵盖通用模式;memory-tasks 涵盖任务专属字段(steps、current_step、context)。
- memory-notes:在转换实体之前,使用先搜索后创建(来自 memory-notes)来查找实体。
- memory-defrag:定期碎片整理可以识别出应归档的过期活跃事项。
准则
- 归档,绝不删除。 知识图谱受益于历史上下文。
- 先移动,再更新 frontmatter。 这一顺序确保即使编辑步骤失败,文件也位于正确位置。
- 永久链接在移动后仍然有效。 指向实体的链接在
move_note之后依然可用。 - 确认信息要简洁。 用户了解自己的系统——只需报告变更内容。
- 有歧义时先询问。 如果多个实体匹配或目标文件夹不明确,应询问而非猜测。
- 可以批量操作。 如果用户说“归档所有已完成任务”,先找出全部任务,确认列表,然后按顺序移动它们。