mcpField
M
memory-lifecycle

memory-lifecycle

github.com/basicmachines-co生产力23546 次安装28 周前更新
代码仓库

关于 memory-lifecycle

memory-lifecycle 是用于管理 Basic Memory 实体状态流转的技能,适合维护知识图谱中的任务和其他实体。它强调将完成或取消的内容归档而非删除,并同步更新位置与状态。

主要功能

  1. 01按状态移动实体文件
  2. 02更新笔记 frontmatter 状态
  3. 03保留归档实体及其历史
  4. 04支持重新激活与部分完成
  5. 05遇到匹配歧义时先询问

适用场景

  1. 01将已完成任务移入归档目录
  2. 02恢复误归档的实体
  3. 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 之后依然可用。
  • 确认信息要简洁。 用户了解自己的系统——只需报告变更内容。
  • 有歧义时先询问。 如果多个实体匹配或目标文件夹不明确,应询问而非猜测。
  • 可以批量操作。 如果用户说“归档所有已完成任务”,先找出全部任务,确认列表,然后按顺序移动它们。

评论

支持 Markdown