Memory Tasks

basicmachines-co/basic-memory/skills/memory-tasks

作者 basicmachines-cob941460b4d99480fa2eb1a230a62d2847927ea05无许可证4.1K 个星标收录于 2026年10月9日更新于 2026年10月9日仓库今天更新

Task management via Basic Memory schemas: create, track, and resume structured tasks that survive context compaction. Uses BM's schema system for uniform notes queryable through the knowledge graph.

AI 生成的概览

在 Basic Memory 中管理结构化任务笔记,使工作可被跟踪并在上下文压缩后恢复。

功能
为 Basic Memory 定义 Task 模式,并说明如何创建、更新、查询和完成任务笔记。任务以笔记形式存储,包含类型、状态、步骤、当前步骤、上下文和可选关联,并可通过知识图谱搜索或校验。它还涵盖压缩前的状态刷新,用于记录进度和恢复上下文。
适用场景
适用于开始可能超出上下文窗口的多步骤工作、在重启或压缩后恢复工作,或用户要求创建、查看或管理任务时。
运行要求
需要 Basic Memory 及其模式系统和笔记工具,例如 write_note、edit_note、search_notes、schema_validate 和 schema_diff。不包含脚本,仅为说明文档。

Memory Tasks

Manage work-in-progress using Basic Memory's schema system. Tasks are just notes with type: Task — they live in the knowledge graph, validate against a schema, and survive context compaction.

When to Use

  • Starting multi-step work (3+ steps, or anything that might outlast the context window)
  • After compaction/restart — search for active tasks to resume
  • Pre-compaction flush — update all active tasks with current state
  • On demand — user asks to create, check, or manage tasks

Task Schema

Tasks use the BM schema system. The schema note lives at schema/Task.md:

yaml
---title: Tasktype: schemaentity: Taskversion: 1schema:  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 subtasksettings:  validation: warn---

Creating a Task

When work qualifies, create a task note. Use write_note with note_type="Task" and put queryable fields in metadata:

python
write_note(  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
## Steps1. [ ] First concrete step2. [ ] Second concrete step3. [ ] Third concrete step
## ContextWhat 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""")

Why both frontmatter and observations? Fields in metadata (stored as frontmatter) power search_notes with metadata_filters. Fields as observations (- [status] active) power schema_validate. Include queryable fields in both places for full coverage.

Key Principles

  • Steps are concrete and checkable — "Implement X in file Y", not "figure out stuff"
  • Context is for post-amnesia resumption — Write it as if explaining to a smart person who knows nothing about what you've been doing
  • Relations link to other entities — parent_task [[Other Task]], related_to [[Some Note]]
  • Note types are normalized to snake_case — write_note(note_type="Task") stores type: task, and note_types=["Task"] or note_types=["task"] both match it.

Resuming After Compaction

On session start or after compaction:

  1. Search for active tasks:

    python
    search_notes(note_types=["task"], status="active")
  2. Read the task note to get full context

  3. Resume from current_step using the context field

  4. Update as you progress — increment current_step, update context, check off steps

Updating Tasks

As work progresses, update the task note:

markdown
## Steps1. [x] First step — done, resulted in X2. [x] Second step — done, changed approach because Y3. [ ] Third step — next up
## ContextUpdated context reflecting current state...

Update frontmatter too, with the metadata parameter (empty content leaves the body alone):

python
edit_note(  identifier="tasks/descriptive-task-name",  operation="append",  content="",  metadata={"current_step": 3})

Completing Tasks

When done:

yaml
status: donecompleted: YYYY-MM-DD

Add a brief summary of what was accomplished and any follow-up needed.

Pre-Compaction Flush

When a compaction event is imminent:

  1. Find all active tasks: search_notes(note_types=["task"], status="active")
  2. For each, update:
    • current_step to reflect actual progress
    • context with everything needed to resume
    • Step checkboxes to show what's done
  3. Context that isn't written down is lost at compaction

Querying Tasks

With BM's schema system, tasks are fully queryable:

QueryWhat it finds
search_notes(note_types=["task"])All tasks
search_notes(note_types=["task"], status="active")Active tasks
search_notes(note_types=["task"], status="blocked")Blocked tasks
search_notes(note_types=["task"], metadata_filters={"assigned_to": "claude"})My tasks
search_notes("blockers", note_types=["task"])Tasks with blockers
schema_validate(note_type="Task")Validate all tasks against schema
schema_diff(note_type="Task")Detect drift between schema and actual task notes

Guidelines

  • One task per unit of work — Don't cram multiple projects into one task
  • Externalize early — write things down when you notice them
  • Context > steps — Steps tell you what to do; context tells you why and how
  • Close finished tasks — Don't leave completed work as active
  • Link related tasks — Use parent_task [[X]] or relations to connect related work
  • Schema validation is your friend — Run schema_validate(note_type="Task") periodically to catch incomplete tasks

来源与署名

来源:basicmachines-co/basic-memory位于skills/memory-tasks提交b941460

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架