360 Secure SkillHub
360 安全技能中心

Autobiographical Memory

为智能体提供分层个人记忆:情景层用 memory/YYYY-MM-DD.md 记录事件与决策,语义层用 MEMORY.md 保存偏好、事实与经验;支持定期整编、检索召回与遗忘过滤,并附 consolidate.py 与 stats.py 辅助脚本。

xuyucheneureka
xuyucheneureka
热度 38.71
最近更新 2026-05-11 17:48:05
分类:知识依赖:读写文件 / 代码执行应用场景:笔记整理 / 摘要总结 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add autobiographical-memory
Metadata
name
autobiographical-memory
description
Structured personal memory system that enables agents to persist, consolidate, and recall episodic and semantic memories across sessions. Use when: (1) recording significant events, decisions, or conversations, (2) consolidating daily logs into long-term memory, (3) recalling relevant past context before answering, (4) managing memory files (MEMORY.md, daily notes), (5) reasoning about what to remember vs forget.

Autobiographical Memory

Core Concepts

Memory has two complementary layers:

Layer File What it stores
Episodic memory/YYYY-MM-DD.md Raw daily events, conversations, decisions, observations
Semantic MEMORY.md Curated knowledge: user preferences, facts, lessons, identity

The memory lifecycle: Capture → Consolidate → Recall → Review

Quick Start

# Recording an event (episodic)
Append to `memory/YYYY-MM-DD.md`:
- Met with [person] about [topic]. Decision: [outcome].
- User prefers [preference]. Updated MEMORY.md.

# Recalling before responding
1. Run `memory_search` with relevant keywords
2. If results are thin, read recent `memory/YYYY-MM-DD.md` files
3. Check `MEMORY.md` for long-term facts

# Consolidating (periodic maintenance)
1. Read recent daily files (last 7-30 days)
2. Extract significant items → update MEMORY.md
3. Remove stale entries from MEMORY.md

Episodic Memory — Daily Notes

What to Record

Always write to daily notes for:

  • Decisions with rationale: "Chose X over Y because Z"
  • User preferences discovered implicitly or explicitly
  • Important conversations — summary, not transcript
  • Mistakes & lessons — what went wrong, what to do differently
  • Project milestones — what was done, what's blocked
  • Identity changes — if SOUL.md, USER.md, or other self-files changed

What to Skip

  • Routine operations ("checked email, nothing new")
  • Transient states ("feeling tired")
  • Content better stored elsewhere (code snippets in projects, API keys in config)
  • Something the user explicitly said doesn't matter

Format Convention

## Events
- [event description]

## Decisions
- [decision + rationale]

## Observations
- [insights or patterns noticed]

## Notes
- [anything else worth remembering]

Semantic Memory — MEMORY.md

Structure

## User Preferences
- Directly stated preferences without inference

## Project Context
- Active projects and their status

## Relationships & People
- Key people, roles, context

## Technical Environment
- Tools, config, quirks discovered

## Lessons Learned
- Mistakes to avoid, patterns that work

When to Update MEMORY.md

  • User states a clear preference
  • A project direction is set
  • A mistake teaches a lesson worth preserving
  • Every few days during heartbeat: consolidate from daily notes

When to Remove from MEMORY.md

  • Project is done / abandoned
  • Preference was explicitly reversed
  • Information is now obvious context (e.g. "user speaks Chinese" — that's already in USER.md)
  • Stale for >3 months without reference

Consolidation Workflow

Suitable for heartbeat routines. Do this every 3-7 days:

1. List memory/*.md, sort by date (newest first)
2. Read files since last consolidation
3. For each significant item:
   a. Is it already in MEMORY.md? → Skip or update
   b. Is it transient? → Skip (leave in daily note)
   c. Is it important? → Add to MEMORY.md
4. Read MEMORY.md for stale entries → remove or archive
5. Write updated MEMORY.md

Recall Strategy

Before answering questions about prior work, people, preferences, or context:

  1. Search first: memory_search(query="relevant terms") — this searches both daily notes and MEMORY.md
  2. Narrow scope: If search returns weak results, try multiple query phrasings
  3. Deep dive: For specific periods, memory_get(path="memory/YYYY-MM-DD.md") to read raw daily notes
  4. Cross-reference: Check USER.md, SOUL.md, TOOLS.md for identity/preference info

When Recall Fails

  • Say clearly "I checked my records and don't have information about that"
  • Don't fabricate memories
  • If the user says "don't you remember? I told you X" — apologize and record it properly this time

The Forgetting Curve

Not everything needs to persist. Use these filters:

  • Keep in daily notes: Everything noteworthy for 30-90 days
  • Promote to MEMORY.md: Only what's likely to be needed again
  • Delete/archive: What's clearly obsolete after review

References

Scripts

  • scripts/consolidate.py — Scan recent daily notes and suggest MEMORY.md updates
  • scripts/stats.py — Memory file statistics (sizes, dates, coverage)