关于 memory-tasks
memory-tasks 是一套基于 Basic Memory schema 系统管理进行中工作的技能,将任务保存为可查询、可验证的知识图谱笔记,便于在上下文压缩或重启后继续处理。
主要功能
- 01创建带状态与元数据的任务笔记
- 02按状态和字段搜索任务
- 03记录步骤、上下文与截止日期
- 04通过 schema 验证任务
- 05使用校验和避免并发覆盖
适用场景
- 01拆分并跟踪多步骤工作
- 02上下文压缩后恢复任务
- 03压缩前保存任务进度
- 04查找阻塞或即将到期的任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ basicmachines-co/ basic-memory --skill memory-tasks安装后在 Claude Code 中输入/memory-tasks确认已加载。
详细介绍
记忆任务
使用 Basic Memory 的架构系统管理进行中的工作。任务只是带有 type: Task 的笔记——它们存在于知识图谱中,依照架构验证,并且在上下文压缩后仍会保留。
何时使用
- 开始多步骤工作时(3 个或更多步骤,或任何可能超出上下文窗口的工作)
- 压缩/重启后——搜索活动任务以继续处理
- 压缩前刷新——使用当前状态更新所有活动任务
- 按需——用户要求创建、检查或管理任务时
任务架构
任务使用 BM 架构系统。架构笔记位于 schema/Task.md:
---
title: Task
type: schema
entity: Task
version: 1
schema:
description: string, what needs to be done
status?(enum, current state): [active, blocked, done, abandoned]
assigned_to?: string, who is working on this
steps?(array): string, ordered steps to complete
current_step?: integer, which step number we're on (1-indexed)
context?: string, key context needed to resume after memory loss
started?: string, when work began
completed?: string, when work finished
blockers?(array): string, what's preventing progress
parent_task?: Task, parent task if this is a subtask
settings:
validation: warn
---
创建任务
当工作符合条件时,创建一条任务笔记。使用 bm_write,设置 note_type="Task",并将可查询字段放入 metadata:
bm_write(
title="Descriptive task name",
directory="tasks",
note_type="Task",
metadata={
"status": "active",
"priority": "high",
"assigned_to": "claude",
"current_step": 1,
"steps": ["First step", "Second step", "Third step"]
},
tags=["task"],
content="""# Descriptive task name
## Observations
- [description] What needs to be done, concisely
- [status] active
- [assigned_to] claude
- [current_step] 1
## Steps
1. [ ] First concrete step
2. [ ] Second concrete step
3. [ ] Third concrete step
## Context
What future-you needs to pick up this work. Include:
- Key file paths and repos involved
- Decisions already made and why
- What was tried and what worked/didn't
- Where to look for related context"""
)
为什么要同时使用 frontmatter 和 observations? metadata 中的字段(存储为 frontmatter)可通过 filters 用于 bm_search;作为 observations 的字段(- [status] active)可用于 bm_schema(command="validate")。两处都包含可查询字段,才能全面覆盖。
关键原则
- 步骤要具体且可检查——写“在文件 Y 中实现 X”,而不是“想办法解决问题”
- 上下文用于在失忆后恢复工作——写得像是在向一个聪明但完全不了解你此前工作的人解释
- 关系用于链接其他实体——
parent_task [[Other Task]]、related_to [[Some Note]] - 笔记类型会规范为 snake_case——
bm_write(note_type="Task")会存储为type: task,而note_types=["Task"]和note_types=["task"]都能匹配。
压缩后恢复工作
在会话开始时或压缩后:
-
搜索活动任务:
bm_search(note_types=["task"], filters={"status": "active"}) -
读取任务笔记以获取完整上下文
-
使用
context字段,从current_step继续工作 -
随进展更新——递增
current_step、更新上下文并勾选已完成的步骤
更新任务
随着工作推进,更新任务笔记:
## Steps
1. [x] First step — done, resulted in X
2. [x] Second step — done, changed approach because Y
3. [ ] Third step — next up
## Context
Updated context reflecting current state...
先将任务读取为 JSON,并在每次编辑时将其校验和作为 expected_checksum 传入。
两个会话经常会更新同一任务,例如在压缩前刷新时;修订冲突表示另一个会话先写入了,因此请重新读取后再写入。
也要更新 frontmatter,使用 command="set_metadata" 和 metadata 参数(正文保持不变):
task = bm_read(identifier="tasks/descriptive-task-name", output_format="json")
bm_edit(
identifier="tasks/descriptive-task-name",
command="set_metadata",
metadata={"current_step": 3},
expected_checksum=task["checksum"]
)
完成任务
完成后:
status: done
completed: YYYY-MM-DD
简要总结已完成的工作以及后续需要处理的事项。
压缩前刷新
即将发生压缩事件时:
- 查找所有活动任务:
bm_search(note_types=["task"], filters={"status": "active"}) - 对每个任务进行更新:
- 更新
current_step,使其反映实际进度 - 在
context中写入恢复工作所需的所有内容 - 勾选已完成的步骤
- 更新
- 压缩时,未记录的上下文会丢失
查询任务
借助 BM 的架构系统,可以全面查询任务:
| 查询 | 查找内容 |
|---|---|
bm_search(note_types=["task"]) | 所有任务 |
bm_search(note_types=["task"], filters={"status": "active"}) | 活动任务 |
bm_search(note_types=["task"], filters={"status": "blocked"}) | 受阻任务 |
bm_search(note_types=["task"], filters={"assigned_to": "claude"}) | 分配给我的任务 |
bm_search("blockers", note_types=["task"]) | 存在阻碍的任务 |
bm_search(note_types=["task"], time_kind="due", valid_overlaps="[2026-10-14,2026-10-21)") | 本周有步骤到期的任务 |
bm_schema(command="validate", note_type="Task") | 根据架构验证所有任务 |
bm_schema(command="diff", note_type="Task") | 检测架构与实际任务笔记之间的偏差 |
截止日期
为步骤或任务设置带限定符的截止日期(参见 memory-notes),这样只需一次搜索就能查找“即将到期”的事项:
- [deadline] @due:2026-10-20 Draft ready for review
精确到日的截止日期从当天起计,因此搜索本周到期事项时也会返回逾期事项。
指南
- 每个工作单元只处理一项任务——不要把多个项目塞进一项任务中
- 尽早外化信息——注意到问题时就记录下来
- 背景 > 步骤——步骤告诉你要做什么;背景告诉你原因和方法
- 关闭已完成的任务——不要让已完成的工作仍处于
active状态 - 关联相关任务——使用
parent_task [[X]]或关系来关联相关工作 - Schema 验证是你的好帮手——定期运行
bm_schema(command="validate", note_type="Task"),以发现未完成的任务