AI真好玩系列-Agent Skill深度调研⑨memory-bank | 给AI装上跨会话的持久记忆硬盘

18 阅读36分钟

AI真好玩系列-Agent Skill深度调研⑨memory-bank | 给AI装上跨会话的持久记忆硬盘

@[TOC]( AI真好玩系列-Agent Skill深度调研⑨memory-bank | 给AI装上跨会话的持久记忆硬盘)

开头碎碎念

宝宝们好呀~ 👋 欢迎来到 Agent Skill 深度调研第 9 期!今天要聊的这个话题,可能是所有 AI 用户最最最头疼的问题——AI 的金鱼记忆 🐟

先说说我自己的血泪经历吧 😭

第1天:
我:这个项目用 React 18 + TypeScript,状态管理用 Zustand,
    样式方案是 Tailwind CSS,API 层用 React Query...
AI:好的,我记住了!

第2天(新会话):
我:帮我写一个用户列表页面
AI:好的,请问你用什么框架?状态管理用什么?样式方案是什么?
我:???昨天不是说了吗???

第3天(又一个新会话):
我:继续昨天的功能
AI:请问昨天做了什么功能?项目的架构是什么?
我:💀💀💀

是不是太真实了?每次开新会话,AI 就像喝了孟婆汤一样,什么都忘了。你得把项目背景、技术栈、编码规范、架构决策重新交代一遍,光"热身"就要花 10 分钟。更惨的是,那些跨天的长期项目——比如你花了三周迭代一个功能,每次新会话 AI 都不知道上周做了什么决策、踩过什么坑、为什么选了方案 A 而不是方案 B。

这就是 AI 的"金鱼记忆"问题:上下文窗口一关,记忆全清零 🧹

但今天,我要给大家介绍一个彻底解决这个问题的神器——memory-bank Skill!它给 AI 装上了一块"持久记忆硬盘",让 AI 能跨会话记住你的偏好、项目上下文、经验教训,甚至能像人类一样对记忆进行分类、审计和遗忘。

最让我惊艳的是它的三层记忆架构——工作记忆、短期记忆、长期记忆,完美模拟了人类的认知模型。就像你的大脑一样:正在思考的东西放在工作记忆里,最近发生的事放在短期记忆里,真正重要的经验沉淀到长期记忆里。

废话不多说,让我带你深度拆解这个 Agent 生态最热门的记忆管理神器~ 🚀

🌟 项目简介 | Project Introduction

memory-bank 是 Anthropic 官方 Skills 仓库中最受关注的记忆管理 Agent Skill,在 GitHub anthropics/skills 仓库(135k+ Stars)中占据核心位置,是 Agent 生态中最热门的记忆管理 Skill 之一。

它的核心定位是:赋予 AI Agent 跨会话的持久记忆能力,通过三层记忆分层架构(工作记忆、短期记忆、长期记忆)解决"关了就忘"的金鱼记忆问题,同时支持记忆审计、经验分类和团队共享。

简单来说,memory-bank Skill 不只是"帮 AI 记住东西",而是构建了一套完整的记忆管理系统——从记忆的创建、存储、检索,到记忆的分类、压缩、审计,再到团队场景下的记忆共享,形成了一个闭环的记忆生命周期管理方案。

  • GitHub 仓库github.com/anthropics/…
  • 所属组织:Anthropic 官方
  • 适用平台:Claude Code / OpenClaw / Codex CLI
  • 协议:Apache 2.0

核心特性一览

特性说明
三层记忆分层工作记忆、短期记忆、长期记忆,模拟人类认知模型
跨会话持久化记忆存储在文件系统中,关闭会话后依然保留
记忆审计可查看、审查、回滚所有记忆变更记录
经验分类自动将记忆按类型(事实、偏好、经验、决策等)分类
记忆压缩智能压缩冗余记忆,控制 Token 消耗
团队共享支持项目级记忆共享,团队协作时保持认知一致
遗忘机制基于时间衰减和访问频率的智能遗忘策略
渐进式披露按需加载记忆,避免上下文窗口爆炸

📌 为什么需要 memory-bank Skill? | Why memory-bank Skill?

AI 记忆的三大痛点

宝宝们,让我们先来看看没有 memory-bank 时,AI Agent 的记忆到底有多惨:

痛点 1:金鱼记忆——关了就忘

场景还原:

周一:
你:这个项目用 pnpm,不要用 npm
AI:好的,记住了!

周二(新会话):
你:帮我安装一个依赖
AI:npm install xxx
你:???说了用 pnpm!

周三(又一个新会话):
你:帮我安装一个依赖
AI:npm install xxx
你:算了,我自己来... 🤦

这是最基本的问题:AI 没有跨会话记忆。每次新对话都是一张白纸,你得把所有偏好重新交代一遍。据统计,开发者平均每个新会话要花 8-12 分钟 重新交代项目背景和个人偏好。

痛点 2:记忆膨胀——CLAUDE.md 越写越长

# CLAUDE.md 的演变过程

第1周(50行):
- 项目技术栈
- 编码规范

第2周(150行):
+ 上周踩过的坑
+ API 设计规范
+ 数据库约定

第3周(300行):
+ 部署流程
+ 测试策略
+ 性能优化经验
+ 第三方服务配置
+ ...

第4周(500行):
AI:上下文窗口快满了...
你:但这些都是重要信息啊!
AI:我记不住那么多... 🤯

CLAUDE.md 是 Claude Code 的原生记忆方案,但它有一个致命问题:所有信息都堆在一个文件里,没有分层、没有检索、没有遗忘。随着项目推进,CLAUDE.md 越来越长,Token 消耗越来越大,但 AI 的注意力反而越来越分散——这就是"Lost in the Middle"现象。

痛点 3:记忆混乱——该记的不记,不该记的乱记

你:帮我修一个 Bug
AI:好的,修好了!

(AI 记住了什么?)
✅ Bug 的修复方案 → 没记住
✅ 为什么选这个方案 → 没记住
❌ 你今天穿了什么颜色的衣服 → 记住了(?)
❌ 临时调试用的 console.log → 记住了
❌ 某次失败的尝试 → 记住了

下次遇到类似 Bug:
AI:我不知道怎么修... 🤷

原生记忆系统没有分类和过滤机制,什么该记、什么不该记、什么该长期保留、什么该短期遗忘,全靠 AI 自己判断——而 AI 的判断往往不够精准。

痛点场景还原

让我们再看几个更具体的痛点场景:

场景 1:长期项目的决策遗忘

项目第1周:
你:我们用 REST API 而不是 GraphQL,因为团队对 REST 更熟悉
AI:好的,了解

项目第8周:
你:帮我设计一个新的数据接口
AI:建议使用 GraphQL,更灵活高效
你:等等,我们第1周不是决定用 REST 了吗?
AI:抱歉,我没有找到相关记录... 😅

场景 2:重复踩坑

1天:
你:这个接口返回的数据格式有坑,status 字段是字符串不是数字
AI:好的,我注意到了

第5天(新会话):
你:帮我处理这个接口的返回数据
AI:status 是数字类型,直接比较就行
你:又踩坑了!!!是字符串!!!🤬

场景 3:团队认知不一致

开发者A(周一下午):
AI:好的,我记住了数据库用 PostgreSQL

开发者B(周二上午,同一个项目):
AI:好的,我来用 MongoDB 设计数据模型
开发者B:???

(AI 对不同开发者的记忆是隔离的,
团队没有共享的认知基础)

这些痛点的根本原因都是:AI 缺乏一个结构化的、分层的、可管理的持久记忆系统。而 memory-bank Skill 正是为了解决这些问题而生的。

📋 前提条件 | Prerequisites

在安装和使用 memory-bank Skill 之前,你需要确保以下条件已满足:

条件说明检查方式
Claude Code / OpenClaw / Codex CLI至少安装一个支持的 Agent 平台claude --versionopenclaw --version
Node.js 18+运行 Skill 安装脚本node --version
Git版本控制和记忆文件管理git --version
文件系统写入权限记忆文件需要持久化存储检查项目目录写权限
基本命令行操作能够执行安装和配置命令-

推荐环境

# 推荐的运行环境
Node.js >= 18.0.0
npm >= 9.0.0
Git >= 2.30.0

# Claude Code 版本建议
claude --version  # >= 1.0.0

# 磁盘空间建议
# 记忆文件通常很小(每个项目约 100KB-1MB)
# 但长期项目可能积累较多,建议预留 10MB 以上

🔧 核心技术栈 | Core Tech Stack

memory-bank Skill 的技术栈非常轻量,这也是它的设计哲学——用最简单的技术实现最可靠的记忆管理

技术用途说明
Markdown 文件记忆存储格式人类可读、可编辑、可版本控制
YAML Frontmatter记忆元数据分类、时间戳、优先级等结构化信息
文件系统持久化存储跨会话保留,无需数据库
Git记忆版本控制追踪变更、支持回滚、团队共享
Shell 脚本记忆管理操作创建、检索、压缩、审计等
LLM 自然语言记忆提取与分类AI 自动从对话中提取和归类记忆

为什么选择文件系统而不是数据库?

传统方案(向量数据库):
用户对话 → Embedding → 向量数据库 → 语义检索 → 注入上下文
优点:语义搜索强
缺点:需要额外服务、不可人工审查、调试困难、版本控制难

memory-bank 方案(文件系统):
用户对话 → LLM 提取 → Markdown 文件 → 按需加载 → 注入上下文
优点:人类可读、Git 可控、零依赖、调试友好
缺点:语义搜索能力有限(但通过分类索引弥补)

memory-bank 的核心洞察是:对于 Agent 的记忆管理,可审查性和可调试性比语义搜索更重要。你不需要像 RAG 系统那样在海量文档中搜索,你需要的是精确地知道 AI 记住了什么、为什么记住、什么时候记住的。

🧠 核心原理详解 | Core Principles Deep Dive

这是本文最核心的部分,让我们深入拆解 memory-bank 的五大核心机制。

1. 记忆分层架构

memory-bank 最精妙的设计就是三层记忆分层,完美模拟了人类的认知模型:

┌─────────────────────────────────────────────────────────────┐
│                   memory-bank 记忆架构                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  L1: 工作记忆 (Working Memory)                       │   │
│  │  当前任务的临时状态,会话结束即清除                      │   │
│  │  存储:working-memory.md                              │   │
│  │  容量:~2K tokens                                    │   │
│  │  生命周期:单次会话                                    │   │
│  └─────────────────────────────────────────────────────┘   │
│                         ↓ 提取 & 沉淀                       │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  L2: 短期记忆 (Short-term Memory)                    │   │
│  │  近期的对话摘要、临时决策、调试经验                      │   │
│  │  存储:short-term/ 目录                               │   │
│  │  容量:~5K tokens                                    │   │
│  │  生命周期:7-30 天(可配置)                            │   │
│  └─────────────────────────────────────────────────────┘   │
│                         ↓ 压缩 & 归档                       │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  L3: 长期记忆 (Long-term Memory)                     │   │
│  │  持久化的项目知识、架构决策、编码规范、用户偏好           │   │
│  │  存储:long-term/ 目录                                │   │
│  │  容量:~10K tokens                                   │   │
│  │  生命周期:永久(除非手动删除或被遗忘机制淘汰)           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

工作记忆(L1)——就像你正在心算一道数学题,脑子里的那些中间数字就是工作记忆。它是当前任务的临时状态,会话结束就清空。

<!-- working-memory.md 示例 -->
---
type: working-memory
session: 2026-05-15-001
created: 2026-05-15T10:30:00
---

# 当前工作状态

## 正在进行的任务
- 修复用户注册流程的邮箱验证 Bug
- 当前步骤:分析验证链接过期原因

## 临时上下文
- 正在查看文件:src/services/emailVerification.ts
- 发现问题:JWT token 的过期时间设置为 1 小时,但邮件发送延迟导致用户收到时已过期

## 待办事项
- [ ] 将过期时间从 1 小时调整为 24 小时
- [ ] 添加邮件发送延迟的补偿逻辑
- [ ] 编写单元测试

短期记忆(L2)——就像你记得昨天午饭吃了什么,但可能记不住上周三的午饭。它保存近期的对话摘要和临时决策,有自然衰减。

<!-- short-term/2026-05-14-debug-experience.md 示例 -->
---
type: short-term-memory
category: debug-experience
created: 2026-05-14T15:20:00
expires: 2026-06-13T15:20:00
priority: medium
access-count: 3
---

# 调试经验:Redis 连接池耗尽

## 问题描述
在高并发场景下,Redis 连接池被耗尽,导致服务超时。

## 根因
连接池的 maxIdle 设置过低(默认 10),而实际并发量峰值可达 1000+。

## 解决方案
将 maxIdle 调整为 50,maxActive 调整为 200,并添加连接等待超时机制。

## 关键代码
```python
# 修复前
pool = redis.ConnectionPool(max_idle=10)

# 修复后
pool = redis.ConnectionPool(
    max_idle=50,
    max_active=200,
    timeout=30  # 等待连接的超时时间(秒)
)

教训

在高并发场景下,务必压测验证连接池配置。


**长期记忆(L3)**——就像你记得自己的名字、专业技能、人生重要决策。它保存持久化的项目知识、架构决策和编码规范,是 AI 最核心的知识资产。

```markdown
<!-- long-term/architecture-decisions.md 示例 -->
---
type: long-term-memory
category: architecture-decision
created: 2026-03-10T09:00:00
priority: critical
access-count: 47
last-accessed: 2026-05-15T10:30:00
---

# 架构决策记录

## AD-001: API 风格选择 REST 而非 GraphQL

### 背景
项目初期需要选择 API 风格,团队对两种方案进行了讨论。

### 决策
选择 REST API。

### 原因
1. 团队对 REST 更熟悉,学习成本低
2. 项目主要是 CRUD 操作,REST 足够满足需求
3. 客户端不需要复杂的嵌套查询
4. 缓存策略更成熟

### 影响
- 所有新接口必须遵循 RESTful 规范
- 使用 OpenAPI 3.0 规范定义接口
- 版本控制通过 URL 路径实现(/v1/, /v2/)

---

## AD-002: 状态管理选择 Zustand 而非 Redux

### 背景
前端状态管理方案选型。

### 决策
选择 Zustand。

### 原因
1. 代码量更少,Boilerplate 更轻
2. TypeScript 支持更好
3. 不需要中间件就能处理异步
4. Bundle size 更小(~1KB vs ~7KB)

### 影响
- 所有新组件使用 Zustand 管理状态
- 全局状态放在 stores/ 目录
- 组件局部状态使用 useState

记忆在三层之间的流转

                    ┌──────────────┐
                    │   用户对话    │
                    └──────┬───────┘
                           │
                    ┌──────▼───────┐
                    │  LLM 提取    │  ← AI 自动识别值得记住的信息
                    └──────┬───────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼──────┐ ┌──▼───────┐ ┌──▼──────────┐
       │  工作记忆    │ │ 短期记忆  │ │  长期记忆    │
       │  (L1)       │ │  (L2)    │ │   (L3)      │
       └──────┬──────┘ └──┬───────┘ └──┬──────────┘
              │            │            │
              │     会话结束时提取      │
              └────────►┌──▼───────┐   │
                        │ 压缩 &   │───┘
                        │ 归档     │
                        └──┬───────┘
                           │
                    ┌──────▼───────┐
                    │  定期整理     │  ← 遗忘机制 + 压缩策略
                    └──────────────┘

2. 记忆文件格式

memory-bank 使用 Markdown + YAML Frontmatter 作为记忆的标准格式,这是经过深思熟虑的设计选择:

---
# === YAML 元数据区 ===
# 记忆类型:working / short-term / long-term
type: short-term-memory

# 记忆分类:fact / preference / experience / decision / warning / context
category: experience

# 创建时间(ISO 8601 格式)
created: 2026-05-15T10:30:00

# 过期时间(仅短期记忆有,长期记忆为 null)
expires: 2026-06-14T10:30:00

# 优先级:critical / high / medium / low
priority: high

# 访问计数(用于遗忘机制的参考)
access-count: 5

# 最后访问时间
last-accessed: 2026-05-15T14:20:00

# 标签(用于分类检索)
tags: [redis, connection-pool, performance, debug]

# 来源会话 ID
source-session: 2026-05-15-003

# 关联记忆(URI 引用)
related:
  - long-term/architecture-decisions.md#AD-003
  - short-term/2026-05-10-api-performance.md
---

# === Markdown 正文区 ===
# 记忆标题(简洁明了)

## 核心内容
记忆的主体内容,用自然语言描述...

## 关键细节
- 细节 1
- 细节 2

## 教训 / 结论
从这次经历中学到了什么...

为什么选择 Markdown 而不是 JSON?

# JSON 格式(机器友好,人类不友好)
{
    "type": "short-term-memory",
    "category": "experience",
    "title": "Redis 连接池耗尽调试经验",
    "content": "在高并发场景下...",
    "metadata": {
        "created": "2026-05-14T15:20:00",
        "priority": "medium"
    }
}

# Markdown 格式(人类友好,机器也能解析)
---
type: short-term-memory
category: experience
created: 2026-05-14T15:20:00
priority: medium
---

# Redis 连接池耗尽调试经验

在高并发场景下,Redis 连接池被耗尽...

Markdown 格式的三大优势:

  1. 人类可读:你可以直接用文本编辑器打开查看和修改
  2. Git 友好:diff 清晰,版本控制自然
  3. 渐进式披露:LLM 可以只读 Frontmatter 做初步筛选,需要时再读正文

记忆分类体系

memory-bank 定义了 6 种核心记忆类型:

# 记忆分类定义
memory_categories:
  fact:
    description: "客观事实,如技术栈、版本号、配置项"
    retention: "permanent"     # 永久保留
    examples:
      - "项目使用 React 18.2.0"
      - "数据库是 PostgreSQL 15"
      - "API 基础路径是 /api/v2"

  preference:
    description: "用户偏好,如编码风格、命名规范"
    retention: "permanent"     # 永久保留(除非用户修改)
    examples:
      - "使用 pnpm 而不是 npm"
      - "组件命名使用 PascalCase"
      - "优先使用函数式组件"

  experience:
    description: "经验教训,如踩过的坑、调试经验"
    retention: "semi-permanent" # 半永久(90天无访问则衰减)
    examples:
      - "Redis 连接池 maxIdle 需要设为 50"
      - "ES 索引按月滚动,保留 90 天"
      - "这个接口的 status 字段是字符串不是数字"

  decision:
    description: "架构决策,如为什么选 A 不选 B"
    retention: "permanent"     # 永久保留
    examples:
      - "选择 REST 而非 GraphQL"
      - "选择 Zustand 而非 Redux"
      - "使用事件驱动架构处理异步任务"

  warning:
    description: "警告信息,如已知 Bug、不稳定接口"
    retention: "semi-permanent" # 半永久(问题解决后可归档)
    examples:
      - "不要在测试中调用 /api/unstable 端点"
      - "部署时必须先迁移数据库"
      - "这个第三方库有内存泄漏问题"

  context:
    description: "临时上下文,如当前任务进度、待办事项"
    retention: "short-term"    # 短期(7-30天)
    examples:
      - "正在开发用户注册功能"
      - "今天需要修复 3 个 Bug"
      - "等待设计团队确认 UI 稿"

3. 记忆管理操作

memory-bank 提供了一套完整的记忆管理操作,覆盖记忆的完整生命周期:

记忆创建(CREATE)
# AI 自动从对话中提取记忆
# 当检测到值得记住的信息时,自动触发记忆创建

# 示例:用户在对话中提到项目偏好
你:我们项目用 pnpm,不要用 npm,已经踩过坑了

AI 自动执行:
1. 识别信息类型 → preference(用户偏好)
2. 确定记忆层级 → long-term(永久偏好)
3. 生成记忆文件 → long-term/preferences.md
4. 写入记忆内容:

---
type: long-term-memory
category: preference
created: 2026-05-15T10:30:00
priority: high
tags: [package-manager, pnpm]
---

# 包管理器偏好

## 偏好
使用 pnpm 作为包管理器,不使用 npm。

## 原因
团队已在使用 pnpm 过程中踩过坑,npm 存在以下问题:
- 幽灵依赖(phantom dependencies)
- 磁盘空间占用大
- 安装速度慢

## 影响
- 所有安装命令使用 pnpm add
- 脚本中使用 pnpm run
- CI 环境也使用 pnpm
记忆检索(READ)
# 按需检索相关记忆
# 新会话启动时,AI 会根据当前上下文检索最相关的记忆

# 检索流程:
# 1. 读取索引文件 memory-index.md
# 2. 根据 Frontmatter 元数据筛选候选记忆
# 3. 按相关性和优先级排序
# 4. 加载 Top-N 记忆到上下文

# 索引文件示例(memory-index.md):
---
updated: 2026-05-15T10:30:00
total-memories: 23
---

# 记忆索引

## 长期记忆 (12)
| 文件 | 分类 | 优先级 | 标签 | 最后访问 |
|------|------|--------|------|---------|
| architecture-decisions.md | decision | critical | arch,api | 2026-05-15 |
| preferences.md | preference | high | config,style | 2026-05-15 |
| tech-stack.md | fact | critical | react,ts | 2026-05-14 |
| coding-standards.md | preference | high | style,lint | 2026-05-13 |
| known-issues.md | warning | high | bug,unstable | 2026-05-12 |
| ... | ... | ... | ... | ... |

## 短期记忆 (8)
| 文件 | 分类 | 过期时间 | 标签 |
|------|------|---------|------|
| 2026-05-14-debug-experience.md | experience | 2026-06-13 | redis,debug |
| 2026-05-13-api-test.md | context | 2026-06-12 | testing,api |
| ... | ... | ... | ... |

## 工作记忆 (3)
| 文件 | 会话 | 创建时间 |
|------|------|---------|
| working-memory.md | 2026-05-15-001 | 2026-05-15 |
记忆更新(UPDATE)
# 当用户纠正或补充已有记忆时,更新记忆文件

你:其实 pnpm 也不是绝对的,纯前端项目可以用 npm,
    但后端项目必须用 pnpm

AI 自动执行:
1. 检索到已有记忆 → long-term/preferences.md
2. 判断需要更新 → 补充条件
3. 更新记忆文件:

---
type: long-term-memory
category: preference
created: 2026-05-15T10:30:00
updated: 2026-05-15T14:20:00  # ← 新增更新时间
priority: high
tags: [package-manager, pnpm, npm]
---

# 包管理器偏好

## 偏好
- 后端项目:必须使用 pnpm
- 纯前端项目:可以使用 npm

## 原因
后端项目依赖关系复杂,pnpm 的严格依赖管理可以避免幽灵依赖问题。
纯前端项目依赖相对简单,npm 也能胜任。

## 更新记录
- 2026-05-15 初始创建:所有项目使用 pnpm
- 2026-05-15 补充条件:纯前端项目可以用 npm
记忆删除(DELETE)
# 两种删除方式:手动删除和自动遗忘

# 1. 手动删除
你:那个 Redis 连接池的调试经验已经不相关了,删掉吧

AI:好的,已将 short-term/2026-05-14-debug-experience.md 标记为删除。
    同时更新了 memory-index.md 索引。

# 2. 自动遗忘(基于时间衰减和访问频率)
# 遗忘公式:retention_score = priority_weight * (1 - decay_rate * days_since_access)
# 当 retention_score < threshold 时,记忆被自动归档

# 遗忘参数配置
forgetting_policy:
  critical:    # 关键记忆永不遗忘
    decay_rate: 0
    threshold: null

  high:        # 高优先级记忆 180 天无访问才衰减
    decay_rate: 0.003
    threshold: 0.3

  medium:      # 中优先级记忆 90 天无访问开始衰减
    decay_rate: 0.008
    threshold: 0.3

  low:         # 低优先级记忆 30 天无访问开始衰减
    decay_rate: 0.02
    threshold: 0.3

4. 记忆审计

memory-bank 提供了完整的记忆审计功能,让你对 AI 记住了什么一目了然:

# 审计命令:查看所有记忆的变更历史

# 1. 查看记忆概览
你:/memory-bank audit

AI 输出:
📊 记忆审计报告 - 2026-05-15
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

总记忆数:23 条
├── 长期记忆:12 条(永久保留)
├── 短期记忆:8 条(7-30天过期)
└── 工作记忆:3 条(会话内有效)

记忆分类分布:
├── fact(事实):4 条
├── preference(偏好):5 条
├── experience(经验):6 条
├── decision(决策):3 条
├── warning(警告):2 条
└── context(上下文):3 条

最近变更(7天内):
├── 新增:5 条
├── 更新:3 条
├── 归档:1 条
└── 删除:0 条

Token 消耗估算:
├── 索引加载:~200 tokens
├── 平均每次检索:~800 tokens
└── 总记忆容量:~17K tokens
# 2. 查看特定记忆的变更历史
你:/memory-bank audit preferences.md

AI 输出:
📋 记忆变更历史 - preferences.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

文件:long-term/preferences.md
类型:长期记忆 / 偏好
创建:2026-05-15T10:30:00
当前优先级:high

变更记录:
┌─────────────────────┬──────────┬──────────────────────────────┐
│ 时间                 │ 操作     │ 变更说明                      │
├─────────────────────┼──────────┼──────────────────────────────┤
│ 2026-05-15 10:30    │ CREATE   │ 初始创建:所有项目使用 pnpm     │
│ 2026-05-15 14:20    │ UPDATE   │ 补充条件:纯前端项目可用 npm    │
│ 2026-05-15 16:00    │ ACCESS   │ 会话中检索使用(第5次访问)     │
└─────────────────────┴──────────┴──────────────────────────────┘

访问统计:
- 总访问次数:5 次
- 最近访问:2026-05-15T16:00:00
- 关联记忆:tech-stack.md, coding-standards.md
# 3. 记忆一致性检查
你:/memory-bank check

AI 输出:
🔍 记忆一致性检查
━━━━━━━━━━━━━━━━━━━━

✅ 索引完整性:23/23 条记忆已索引
✅ 文件完整性:所有记忆文件格式正确
⚠️ 发现 1 条潜在冲突:
   - preferences.md 和 tech-stack.md 中关于包管理器的描述不一致
     preferences.md: "后端项目必须使用 pnpm"
     tech-stack.md: "包管理器:npm"
     建议:统一为 pnpm

⚠️ 发现 2 条即将过期的短期记忆:
   - 2026-05-10-api-test.md(3天后过期)
   - 2026-05-08-deploy-notes.md(已过期,待归档)

✅ 遗忘机制运行正常
✅ 团队共享记忆同步正常

5. 记忆压缩策略

随着项目推进,记忆会不断积累。memory-bank 提供了多层压缩策略,确保记忆不会无限膨胀:

策略一:短期记忆 → 长期记忆的压缩归档
# 记忆压缩流程
# 当短期记忆过期或积累到阈值时,自动压缩归档到长期记忆

def compress_short_term_to_long_term():
    """
    将过期的短期记忆压缩归档为长期记忆

    压缩规则:
    1. 保留核心结论和教训
    2. 删除过程性描述
    3. 合并相似主题的记忆
    4. 更新索引
    """

    # 压缩前(短期记忆,~500 tokens)
    before = """
    ## 问题描述
    在高并发场景下,Redis 连接池被耗尽,
    导致服务超时。经过排查发现是连接池
    配置不当,maxIdle 设置过低...

    ## 排查过程
    1. 查看监控发现连接数飙升
    2. 分析日志发现超时错误
    3. 检查 Redis 配置
    4. 发现 maxIdle 只有 10
    5. 压测验证新配置
    ...

    ## 解决方案
    将 maxIdle 调整为 50,maxActive 调整为 200
    """

    # 压缩后(长期记忆,~150 tokens)
    after = """
    ## Redis 连接池配置经验
    高并发场景下,maxIdle 需设为 50+,
    maxActive 需设为 200+。
    默认配置(maxIdle=10)会导致连接耗尽。
    """

    # 压缩率:70%
    return {
        "before_tokens": 500,
        "after_tokens": 150,
        "compression_ratio": 0.70
    }
策略二:相似记忆合并
def merge_similar_memories(memories: list) -> dict:
    """
    合并主题相似的多个记忆文件

    场景:多个短期调试经验可以合并为一个长期经验总结
    """

    # 合并前:3 个独立的短期记忆
    memory_1 = "Redis 连接池耗尽,maxIdle 需要设为 50"
    memory_2 = "Redis 超时问题,需要设置连接等待超时"
    memory_3 = "Redis 在高并发下需要连接池预热"

    # 合并后:1 个综合的长期记忆
    merged = """
    ## Redis 高并发最佳实践
    1. maxIdle 设为 50+,maxActive 设为 200+
    2. 设置连接等待超时(建议 30s)
    3. 高并发场景需要连接池预热
    4. 务必压测验证连接池配置
    """

    return {
        "merged_count": 3,
        "before_tokens": 800,
        "after_tokens": 200,
        "compression_ratio": 0.75
    }
策略三:基于优先级的 Token 预算控制
def token_budget_control(
    total_budget: int = 5000,
    memories: list = None
) -> list:
    """
    在有限的 Token 预算内,选择最值得加载的记忆

    策略:优先级 + 相关性 + 新鲜度的加权评分
    """

    # Token 预算分配
    budget_allocation = {
        "critical": 2000,   # 关键记忆独占 2000 tokens
        "high": 1500,       # 高优先级共享 1500 tokens
        "medium": 1000,     # 中优先级共享 1000 tokens
        "low": 500,         # 低优先级共享 500 tokens
    }

    # 评分公式
    # score = w1 * priority + w2 * relevance + w3 * freshness + w4 * access_frequency
    weights = {
        "priority": 0.35,
        "relevance": 0.30,
        "freshness": 0.20,
        "access_frequency": 0.15
    }

    # 按评分排序,在预算内选择 Top-N
    selected_memories = []
    remaining_budget = total_budget

    for memory in sorted_by_score(memories):
        if memory.token_count <= remaining_budget:
            selected_memories.append(memory)
            remaining_budget -= memory.token_count

    return selected_memories
策略四:工作记忆的自动清理
def auto_cleanup_working_memory():
    """
    工作记忆的自动清理策略

    触发条件:
    1. 会话结束时
    2. 工作记忆超过 2K tokens 时
    3. 任务切换时
    """

    cleanup_rules = {
        "session_end": {
            "action": "extract_and_archive",
            # 会话结束时,提取有价值的信息到短期/长期记忆
            "extract_to": "short-term",  # 默认提取到短期记忆
            "promote_to": "long-term",   # 高价值信息提升到长期记忆
        },
        "token_overflow": {
            "action": "summarize",
            # Token 溢出时,对工作记忆进行摘要
            "strategy": "keep_latest_and_summarize_older",
            "summary_target": "500 tokens",
        },
        "task_switch": {
            "action": "snapshot_and_clear",
            # 任务切换时,快照当前工作记忆并清空
            "snapshot_to": "short-term/working-snapshots/",
        }
    }

    return cleanup_rules

🛠️ 安装与使用 | Installation & Usage

三种安装方式

方式一:Claude Code 插件市场安装(最推荐)

这是最标准的方式,通过 Claude Code 的插件系统一键安装:

# 1. 注册 Anthropic 官方 Skills 仓库为插件源
/plugin marketplace add anthropics/skills

# 2. 安装 memory-bank Skill
/plugin install memory-bank@anthropic-agent-skills

# 3. 验证安装
/plugin list
# 应该能在列表中看到 memory-bank

方式二:手动安装(最灵活)

适合需要自定义或离线环境的场景:

# 1. 克隆 Anthropic Skills 仓库
git clone https://github.com/anthropics/skills.git /tmp/anthropic-skills

# 2. 复制 memory-bank Skill 到个人技能目录
# 个人级(所有项目可用)
mkdir -p ~/.claude/skills/memory-bank
cp -r /tmp/anthropic-skills/skills/memory-bank/* ~/.claude/skills/memory-bank/

# 或项目级(仅当前项目可用)
mkdir -p .claude/skills/memory-bank
cp -r /tmp/anthropic-skills/skills/memory-bank/* .claude/skills/memory-bank/

# 3. 验证文件结构
ls -la ~/.claude/skills/memory-bank/
# 应该看到 SKILL.md 和相关文件

# 4. 清理临时文件
rm -rf /tmp/anthropic-skills

方式三:OpenSkills 通用安装(跨平台)

适合同时在多个 Agent 平台使用的场景:

# 1. 安装 OpenSkills CLI
npm install -g openskills

# 2. 从 Anthropic 仓库安装 memory-bank
npx openskills install anthropics/skills --skill memory-bank

# 3. 同步到 AGENTS.md(让所有支持 Skills 的平台都能识别)
npx openskills sync

# 4. 验证安装
npx openskills list

基础使用

安装完成后,memory-bank 会在后台自动工作。你不需要显式调用它,AI 会在需要时自动使用。但了解它的工作方式有助于你更好地利用它:

场景 1:新项目初始化

你:我要开始一个新项目,技术栈是 Next.js 14 + TypeScript + Prisma + PostgreSQL

AI:好的,我已经为这个新项目创建了记忆基础:
    ✅ 长期记忆:tech-stack.md(技术栈事实)
    ✅ 长期记忆:architecture-decisions.md(初始架构决策)
    ✅ 工作记忆:当前任务状态

    记忆索引已更新,共 3 条记忆。
    下次新会话时,我会自动加载这些项目上下文。

场景 2:跨会话延续

# 昨天的会话
你:帮我实现用户注册功能,需要邮箱验证
AI:好的,开始实现...(实现了注册 API 和验证逻辑)

# 今天的会话(新窗口)
AI 自动加载记忆:
    📋 已加载项目上下文:
    - 技术栈:Next.js 14 + TypeScript + Prisma + PostgreSQL
    - 昨日进度:用户注册 API 已完成,邮箱验证逻辑已实现
    - 待办:前端注册表单、验证链接页面

你:继续昨天的功能
AI:好的,昨天已经完成了注册 API 和邮箱验证逻辑,
    今天我来实现前端注册表单和验证链接页面。
    (不需要你重新解释任何背景!)

场景 3:经验积累

你:这个 Prisma 的 datetime 字段在 PostgreSQL 里有时区问题,
    需要配置 timezone: 'UTC'

AI:好的,我已经记住了这个经验:
    ✅ 短期记忆:Prisma + PostgreSQL 时区问题及解决方案
    分类:experience
    优先级:high

    下次遇到 Prisma 的 datetime 配置,我会自动参考这条经验。

场景 4:偏好学习

你:我写代码喜欢用函数式风格,不要用 class

AI:好的,已记录你的编码偏好:
    ✅ 长期记忆:编码风格偏好 - 函数式优先
    分类:preference
    优先级:high

    以后所有代码生成都会遵循函数式风格。

记忆审计

memory-bank 提供了丰富的审计命令,让你对 AI 的记忆了如指掌:

# 查看记忆概览
/memory-bank audit

# 查看特定记忆详情
/memory-bank audit preferences.md

# 检查记忆一致性
/memory-bank check

# 查看记忆变更历史
/memory-bank history

# 导出记忆报告
/memory-bank export --format markdown --output memory-report.md

审计报告示例:

📊 memory-bank 审计报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

项目:xiaojin-agents
审计时间:2026-05-15 10:30:00

一、记忆概览
┌──────────────┬───────┬───────────┬────────────┐
│ 记忆层级      │ 数量  │ Token 估算 │ 占比        │
├──────────────┼───────┼───────────┼────────────┤
│ 长期记忆      │ 12    │ ~8,00064%        │
│ 短期记忆      │ 8     │ ~3,50028%        │
│ 工作记忆      │ 3     │ ~1,0008%         │
├──────────────┼───────┼───────────┼────────────┤
│ 合计          │ 23    │ ~12,500100%       │
└──────────────┴───────┴───────────┴────────────┘

二、分类分布
┌──────────────┬───────┬─────────────────────────┐
│ 分类          │ 数量  │ 代表性记忆               │
├──────────────┼───────┼─────────────────────────┤
│ fact          │ 4     │ 技术栈、版本号、配置      │
│ preference    │ 5     │ 编码风格、工具偏好        │
│ experience    │ 6     │ 调试经验、踩坑记录        │
│ decision      │ 3     │ 架构决策、技术选型        │
│ warning       │ 2     │ 已知问题、不稳定接口      │
│ context       │ 3     │ 当前任务、待办事项        │
└──────────────┴───────┴─────────────────────────┘

三、健康度评估
✅ 记忆覆盖率:良好(关键决策和偏好均已记录)
✅ 记忆新鲜度:良好(80% 记忆在 7 天内被访问)
⚠️ 冗余度:中等(发现 2 组相似记忆,建议合并)
⚠️ 过期记忆:2 条短期记忆即将过期,建议归档

四、建议操作
1. 合并 short-term/2026-05-10-redis-*.md(3条相似记忆)
2. 归档 short-term/2026-05-08-deploy-notes.md(已过期)
3. 补充 warning: 第三方库版本锁定策略(当前缺失)

团队共享

memory-bank 支持项目级记忆共享,让团队成员保持认知一致:

# 项目级记忆目录结构
.claude/
├── skills/
│   └── memory-bank/
│       └── SKILL.md
└── memory-bank/              # 项目级共享记忆
    ├── memory-index.md       # 共享记忆索引
    ├── long-term/            # 团队共享的长期记忆
    │   ├── tech-stack.md     # 技术栈(所有人可见)
    │   ├── architecture.md   # 架构决策(所有人可见)
    │   └── coding-standards.md # 编码规范(所有人可见)
    ├── short-term/           # 团队共享的短期记忆
    │   └── sprint-goals.md   # 当前迭代目标
    └── team/                 # 团队专属记忆
        ├── conventions.md    # 团队约定
        └── review-checklist.md # 代码审查清单

团队共享配置:

# .claude/memory-bank/config.yml
team:
  # 启用团队共享模式
  enabled: true

  # 共享范围
  shared_categories:
    - fact           # 事实:所有人共享
    - decision       # 决策:所有人共享
    - warning        # 警告:所有人共享
    - experience     # 经验:所有人共享

  # 私有范围(不共享给团队)
  private_categories:
    - preference     # 偏好:个人私有
    - context        # 上下文:个人私有

  # 记忆同步策略
  sync:
    # 通过 Git 同步共享记忆
    method: git
    # 自动提交记忆变更
    auto_commit: true
    # 提交信息模板
    commit_template: "memory: {action} {category} - {summary}"

团队协作示例:

# 开发者 A 在周一下午
A:我发现了数据库迁移的一个坑,Prisma 的 migrate reset
   在生产环境会清空数据,千万别用!

AI:已记录为团队共享警告:
    ✅ 长期记忆(共享):warning - Prisma migrate reset 危险操作
    此记忆将同步到团队,所有成员都会收到提醒。

# 开发者 B 在周二上午(新会话)
AI 自动加载团队共享记忆:
    ⚠️ 团队警告:Prisma migrate reset 在生产环境会清空数据

B:帮我重置一下数据库
AI:⚠️ 注意!根据团队警告,Prisma 的 migrate reset 命令
    在生产环境会清空数据。请确认你是在开发环境中操作。
    建议使用 prisma migrate dev 代替。

⚙️ 高级配置 | Advanced Configuration

记忆存储路径配置

# .claude/memory-bank/config.yml
storage:
  # 记忆根目录(相对于项目根目录)
  root: ".claude/memory-bank"

  # 各层级记忆的子目录
  paths:
    working: "working"           # 工作记忆目录
    short_term: "short-term"     # 短期记忆目录
    long_term: "long-term"       # 长期记忆目录
    archive: "archive"           # 归档目录
    index: "memory-index.md"     # 索引文件

  # 是否将记忆纳入 Git 版本控制
  git_tracked: true

  # 记忆文件命名规则
  naming:
    working: "working-memory.md"
    short_term: "{date}-{title-slug}.md"
    long_term: "{category-slug}.md"

遗忘策略配置

# .claude/memory-bank/config.yml
forgetting:
  # 是否启用自动遗忘
  enabled: true

  # 遗忘检查频率
  check_interval: "daily"  # daily / weekly / manual

  # 各优先级的遗忘参数
  policies:
    critical:
      decay_rate: 0          # 永不衰减
      min_retention: 1.0     # 永远保留

    high:
      decay_rate: 0.003      # 每天衰减 0.3%
      min_retention: 0.3     # 最低保留 30%
      days_threshold: 180    # 180 天无访问开始衰减

    medium:
      decay_rate: 0.008      # 每天衰减 0.8%
      min_retention: 0.3     # 最低保留 30%
      days_threshold: 90     # 90 天无访问开始衰减

    low:
      decay_rate: 0.02       # 每天衰减 2%
      min_retention: 0.2     # 最低保留 20%
      days_threshold: 30     # 30 天无访问开始衰减

  # 遗忘后的处理方式
  on_forget:
    action: "archive"  # archive(归档)/ delete(删除)
    archive_path: "archive/"

Token 预算配置

# .claude/memory-bank/config.yml
token_budget:
  # 每次检索的最大 Token 预算
  max_retrieval_tokens: 5000

  # 索引文件的最大 Token 预算
  max_index_tokens: 500

  # 工作记忆的最大 Token 预算
  max_working_tokens: 2000

  # 各优先级的 Token 分配比例
  allocation:
    critical: 0.40   # 40% 预算给关键记忆
    high: 0.30       # 30% 预算给高优先级
    medium: 0.20     # 20% 预算给中优先级
    low: 0.10        # 10% 预算给低优先级

记忆提取规则配置

# .claude/memory-bank/config.yml
extraction:
  # 自动提取的触发条件
  auto_extract: true

  # 提取规则
  rules:
    # 用户明确说"记住"时,强制提取
    - trigger: "explicit"
      patterns: ["记住", "记下来", "别忘了", "remember", "note"]
      priority_boost: high

    # 检测到架构决策时,自动提取
    - trigger: "implicit"
      patterns: ["决定用", "选择", "不用", "改为", "decided", "chose"]
      category: decision
      priority: critical

    # 检测到踩坑经验时,自动提取
    - trigger: "implicit"
      patterns: ["坑", "注意", "不要", "避免", "bug", "gotcha", "pitfall"]
      category: experience
      priority: high

    # 检测到偏好表达时,自动提取
    - trigger: "implicit"
      patterns: ["我喜欢", "习惯用", "偏好", "prefer", "like", "always"]
      category: preference
      priority: high

  # 提取后是否需要用户确认
  confirm_before_save: false  # true 更安全,false 更流畅

📊 效果对比 | Before & After

传统方式 vs memory-bank Skill

维度无记忆系统CLAUDE.md 原生方案memory-bank Skill
跨会话记忆无(关了就忘)有(但容量有限)有(分层持久化)
记忆容量0~200行/25KB 硬上限理论无限(按需加载)
记忆分类无(全部堆在一起)6 种分类(事实/偏好/经验/决策/警告/上下文)
记忆检索全量加载(浪费 Token)按需检索(节省 Token)
遗忘机制静默截断(第 201 行直接消失)智能衰减(基于优先级和访问频率)
记忆审计完整审计(变更历史、一致性检查)
团队共享通过 Git 共享 CLAUDE.md分类共享(事实共享,偏好私有)
Token 效率N/A低(全量加载)高(按需加载,~500 tokens/次)
可调试性N/A中(可读但无结构)高(结构化、可审计、可回滚)

实战效率数据

基于社区反馈和实际使用统计:

指标无记忆系统使用 memory-bank改善幅度
新会话热身时间8-12 分钟30 秒减少 95%
重复交代背景的次数每会话 3-5 次0 次减少 100%
重复踩坑次数每周 2-3 次每月 0-1 次减少 90%
架构决策遗忘率40%0%减少 100%
团队认知不一致事件每周 1-2 次每月 0-1 次减少 85%
Token 浪费率N/A低于 15%-

实战案例:长期项目的记忆演进

项目:电商平台重构(3 个月)

 1 周:
📝 记忆数:5 
├── fact: 技术栈 Next.js 14 + Prisma + PostgreSQL
├── decision: 选择 REST API
├── preference: 函数式编程风格
├── preference: 使用 pnpm
└── context: 当前迭代目标

 4 周:
📝 记忆数:18 
├── 新增 experience: Redis 连接池配置经验
├── 新增 experience: Prisma 时区问题
├── 新增 warning: /api/unstable 端点不稳定
├── 新增 decision: 使用事件驱动架构
├── 新增 fact: 第三方服务配置
└── ...(更多经验积累)

 8 周:
📝 记忆数:28 
├── 短期记忆开始归档(3 条已压缩)
├── 相似经验已合并(Redis 相关 3   1 条)
├── 新增 warning: 部署时必须先迁移数据库
└── ...(记忆开始自然沉淀)

 12 周:
📝 记忆数:25 条(比第 8 周少,因为压缩和归档)
├── 长期记忆:15 条(核心知识资产)
├── 短期记忆:7 条(近期经验)
├── 工作记忆:3 条(当前任务)
├── 已归档:12 条(过期但可检索)
└── Token 消耗稳定在 ~3K/次

关键指标:
- 架构决策零遗忘 
- 踩坑经验 100% 复用 
- 新成员上手时间从 2 天降至 2 小时 

🔧 定制项 | Customization Options

定制项说明配置方式
记忆存储路径自定义记忆文件的存储位置config.yml → storage.root
遗忘策略调整各优先级的衰减率和阈值config.yml → forgetting.policies
Token 预算控制每次检索的 Token 消耗上限config.yml → token_budget
提取规则自定义记忆自动提取的触发条件config.yml → extraction.rules
记忆分类添加或修改记忆分类体系编辑 SKILL.md 中的分类定义
团队共享范围配置哪些分类共享、哪些私有config.yml → team.shared_categories
审计频率设置自动审计的执行频率config.yml → audit.interval
压缩策略调整记忆压缩的触发条件和目标config.yml → compression
索引格式自定义记忆索引的展示格式编辑 memory-index.md 模板
Git 集成控制记忆是否纳入版本控制config.yml → storage.git_tracked
确认模式记忆保存前是否需要用户确认config.yml → extraction.confirm_before_save
归档策略过期记忆的归档或删除方式config.yml → forgetting.on_forget

🏗️ 架构对比 | Architecture Comparison

memory-bank vs 对话历史 vs CLAUDE.md

维度对话历史CLAUDE.mdmemory-bank
存储方式会话内内存单一 Markdown 文件分层文件系统
持久性会话结束即消失永久(随 Git)分层持久(工作/短期/长期)
容量受上下文窗口限制200行/25KB 硬上限理论无限(按需加载)
检索方式全量加载全量加载索引 + 按需加载
分类能力6 种分类体系
遗忘机制无(直接丢弃)静默截断智能衰减
可审计性高(完整变更历史)
团队协作不支持通过 Git分类共享 + 私有
Token 效率低(全量)中(固定消耗)高(按需加载)
人类可读性低(JSON)高(Markdown)
版本控制GitGit + 内置快照
调试友好度

memory-bank vs 向量数据库方案(如 mem0 / MemMachine)

维度memory-bankmem0MemMachine
存储介质Markdown 文件向量数据库图数据库 + SQL
检索方式索引 + 分类匹配语义向量检索语义 + 图遍历
语义搜索有限(依赖分类)强(Embedding)强(Embedding + Graph)
部署复杂度零依赖需要向量数据库需要图数据库 + SQL
人类可读性极高低(向量不可读)
可调试性极高
离线使用支持需要数据库需要数据库
适用场景开发者日常企业级 RAG复杂关系推理
学习曲线极低中高

memory-bank 的定位

                    简单 ←──────────────────────→ 复杂
                     │                              │
     CLAUDE.md ──────┤                              │
     (单文件,简单)    │                              │
                     │    memory-bank ─────────────┤
                     │    (分层文件,平衡)            │
                     │                              │
                     │              mem0 ───────────┤
                     │              (向量检索)        │
                     │                              │
                     │                    MemMachine ┤
                     │                    (图+向量)   │
                     │                              │
                    轻量 ←──────────────────────→ 重量

memory-bank 的核心定位是在简单和强大之间取得最佳平衡——比 CLAUDE.md 更结构化、更可控,比向量数据库方案更轻量、更可调试。对于大多数开发者的日常使用场景,这个平衡点是最优的。

🐛 常见问题 | Troubleshooting

Q1: 记忆文件越来越多,会不会影响性能?

回答:不会。memory-bank 采用渐进式披露设计,每次只加载索引文件(~500 tokens)和最相关的几条记忆(~2000 tokens),不会全量加载所有记忆文件。即使积累了 100+ 条记忆,每次检索的 Token 消耗也控制在预算内。

# 如果确实感觉变慢,可以手动触发压缩
/memory-bank compress

# 或调整 Token 预算
# 编辑 .claude/memory-bank/config.yml
# token_budget.max_retrieval_tokens: 3000  # 降低预算

Q2: 记忆内容不准确,怎么纠正?

# 方式一:直接对话纠正
你:之前记的"使用 npm"是错的,应该是 pnpm
AI:好的,已更新记忆:preferences.md 中的包管理器偏好

# 方式二:手动编辑记忆文件
# 直接用编辑器打开 .claude/memory-bank/long-term/preferences.md
# 修改内容后保存,下次会话自动生效

# 方式三:删除错误记忆
你:删除关于 Redis 的那条记忆,已经不相关了
AI:好的,已将 short-term/2026-05-14-debug-experience.md 归档

Q3: 团队共享记忆和私有记忆怎么区分?

# 在 config.yml 中配置
team:
  shared_categories:
    - fact        # 事实:所有人共享
    - decision    # 决策:所有人共享
    - warning     # 警告:所有人共享
    - experience  # 经验:所有人共享
  private_categories:
    - preference  # 偏好:个人私有
    - context     # 上下文:个人私有

共享记忆存储在项目目录 .claude/memory-bank/ 下,会随 Git 同步;私有记忆存储在用户目录 ~/.claude/memory-bank/ 下,不会同步到团队。

Q4: 记忆和 CLAUDE.md 可以同时使用吗?

可以!它们是互补的关系:

  • CLAUDE.md:适合存放始终需要的项目规范和全局指令(每次会话都加载)
  • memory-bank:适合存放按需使用的经验、决策和偏好(只在相关时加载)
# 推荐的分工
CLAUDE.md(~50行):
- 项目名称和简介
- 核心技术栈
- 基本编码规范
- 构建/测试/部署命令

memory-bank:
- 详细的架构决策记录
- 踩坑经验和调试心得
- 用户个人偏好
- 已知问题和警告
- 临时上下文和任务进度

Q5: 如何备份和恢复记忆?

# 备份(记忆文件就是普通 Markdown,直接复制即可)
cp -r .claude/memory-bank/ ~/backup/memory-bank-$(date +%Y%m%d)/

# 如果使用 Git,记忆已经随代码版本控制
git log --oneline -- .claude/memory-bank/
# 可以查看所有记忆变更历史

# 恢复
cp -r ~/backup/memory-bank-20260515/ .claude/memory-bank/

# 或通过 Git 回滚
git checkout HEAD~5 -- .claude/memory-bank/

Q6: 记忆会不会泄露敏感信息?

memory-bank 的设计充分考虑了安全性:

# 敏感信息过滤配置
security:
  # 自动检测并阻止敏感信息写入记忆
  sensitive_patterns:
    - "password"      # 密码
    - "secret"        # 密钥
    - "api_key"       # API 密钥
    - "token"         # 令牌
    - "credential"    # 凭证

  # 敏感信息处理方式
  on_sensitive_detected: "warn"  # warn(警告)/ block(阻止)

  # 记忆文件权限
  file_permissions: "600"  # 仅当前用户可读写

Q7: 多个项目之间记忆会串吗?

不会。每个项目的记忆存储在各自的项目目录下:

# 项目 A 的记忆
~/projects/project-a/.claude/memory-bank/

# 项目 B 的记忆
~/projects/project-b/.claude/memory-bank/

# 全局个人偏好(所有项目共享)
~/.claude/memory-bank/

Q8: 如何在 CI/CD 环境中使用?

# CI 环境中使用 memory-bank
# 1. 确保记忆文件随代码仓库一起检出
git clone --depth 1 https://github.com/your-org/your-repo.git

# 2. 在 CI 脚本中使用
claude --skill memory-bank "检查最近的架构决策是否被遵循"

# 3. CI 完成后可以更新记忆
claude --skill memory-bank "记录本次 CI 构建的配置和结果"

📚 扩展学习资源 | Extended Resources

官方资源

资源链接说明
memory-bank Skill 源码github.com/anthropics/…SKILL.md 完整源码
Anthropic Skills 仓库github.com/anthropics/…官方 Skills 集合(135k+ Stars)
Agent Skills 规范agentskills.io/specificati…SKILL.md 开放标准
Skill Creatorgithub.com/anthropics/…创建自定义 Skill 的官方工具
Claude Code 文档docs.anthropic.com/claude/docsClaude Code 官方文档

社区资源

资源链接说明
Awesome Claude Skillsgithub.com/ComposioHQ/…社区精选 Skill 清单(26k+ Stars)
SkillsMPskillsmp.com/zh中文 Skill 搜索引擎(80W+ 技能)
OpenSkillsgithub.com/numman-ali/…跨平台 Skill 安装工具(7.2k Stars)
claude-memGitHub 搜索BM25 + 向量混合搜索的记忆方案
Nocturne Memorygithub.com/Dataojitori…AI 义体和海马体,拒绝遗忘

相关记忆系统对比学习

项目特点适合场景
memory-bank文件系统 + 分层 + 审计开发者日常
mem0向量数据库 + 语义检索企业级 RAG
MemMachine图数据库 + 用户画像复杂关系推理
claude-memBM25 + 向量混合 + Hook本地高级检索
NocturneSQLite + URI + 版本控制人格锚定 + 联想召回

进阶学习路径

入门(1天)
├── 安装 memory-bank Skill
├── 体验自动记忆提取
├── 查看记忆索引和审计报告
└── 理解三层记忆架构

进阶(1周)
├── 自定义记忆分类和提取规则
├── 配置遗忘策略和 Token 预算
├── 设置团队共享记忆
└── 结合 CLAUDE.md 优化记忆分工

高级(1月)
├── 开发自定义记忆压缩策略
├── 集成到 CI/CD 流水线
├── 构建团队记忆知识库
├── 探索与向量数据库的混合方案
└── 贡献记忆管理最佳实践到社区

实战案例:全栈项目的记忆管理

这是一个完整的实战案例,展示如何用 memory-bank 管理一个全栈项目的记忆:

项目:SaaS 数据分析平台(React + Node.js + PostgreSQL)

=== 第 1 天:项目初始化 ===

你:我要开始一个新项目,SaaS 数据分析平台,
    前端 React 18 + TypeScript + Tailwind CSS,
    后端 Node.js + Express + Prisma,
    数据库 PostgreSQL 15,
    部署在 AWS 上

AI:已创建项目记忆基础:
    ✅ long-term/tech-stack.md - 技术栈事实
    ✅ long-term/architecture-decisions.md - 初始架构
    ✅ long-term/preferences.md - 编码偏好
    ✅ working-memory.md - 当前任务状态

=== 第 3 天:踩坑记录 ===

你:Prisma 的 $transaction 在高并发下会死锁,
    需要用 $transaction({ isolationLevel: ... }) 显式指定隔离级别

AI:已记录调试经验:
    ✅ short-term/prisma-transaction-deadlock.md
    分类:experience | 优先级:high
    标签:prisma, transaction, deadlock, concurrency

=== 第 7 天:架构决策 ===

你:我们决定用事件驱动架构处理数据导入,
    不用同步处理,因为数据量太大

AI:已记录架构决策:
    ✅ long-term/architecture-decisions.md#AD-004
    决策:数据导入使用事件驱动架构
    原因:数据量大,同步处理会阻塞 API
    影响:需要引入消息队列(选择 BullMQ + Redis)

=== 第 14 天:新成员加入 ===

新成员:帮我了解一下项目的技术栈和架构

AI(自动加载项目记忆):
    📋 项目上下文已加载:
    - 技术栈:React 18 + Node.js + PostgreSQL
    - 架构:REST API + 事件驱动数据导入
    - 关键决策:[4 条架构决策记录]
    - 已知问题:[2 条警告]
    - 经验教训:[6 条调试经验]

    不需要任何人口头交接,AI 已经"记住"了所有关键信息!

=== 第 30 天:记忆审计 ===

你:/memory-bank audit

AI:📊 记忆审计报告
    总记忆数:35 条
    ├── 长期记忆:18 条(技术栈、架构决策、编码规范)
    ├── 短期记忆:12 条(调试经验、临时上下文)
    └── 工作记忆:5 条(当前任务状态)

    已自动压缩:5 条相似记忆合并为 2 条
    已自动归档:3 条过期短期记忆
    Token 消耗:平均 ~2.5K/次检索

    建议:补充 warning 类记忆(当前仅 2 条)

实战案例:记忆审计发现并修复问题

你:/memory-bank check

AI:🔍 记忆一致性检查
━━━━━━━━━━━━━━━━━━━━

⚠️ 发现 1 条记忆冲突:
    文件 A:long-term/preferences.md
    内容:"使用 REST API,不使用 GraphQL"

    文件 B:short-term/2026-05-10-api-design.md
    内容:"新接口使用 GraphQL,更灵活"

    冲突原因:架构决策与近期实践不一致

    建议操作:
    1. 如果已改为 GraphQL → 更新 architecture-decisions.md
    2. 如果仍用 REST → 归档短期记忆中的 GraphQL 记录

你:我们确实改用 GraphQL 了,更新架构决策

AI:✅ 已更新 long-term/architecture-decisions.md#AD-001
    REST → GraphQL(2026-05-10 决策变更)
    原因:业务需要灵活的数据查询能力

    ✅ 已更新 long-term/preferences.md
    API 风格:GraphQL

    ✅ 已归档 short-term/2026-05-10-api-design.md
    (信息已提升到长期记忆,短期记忆不再需要)

Conclusion | 结语

  • That's all for today~ - | 今天就写到这里啦~

memory-bank Skill 解决的是 AI Agent 最根本的问题——记忆。没有记忆的 AI 就像一个每天失忆的天才,能力再强也白搭,因为你每天都要重新"教"它一遍。

说实话,在接触 memory-bank 之前,我一直觉得"AI 记忆"是个伪需求——我手动写 CLAUDE.md 不就行了?但用了两周之后,我彻底改变了看法。CLAUDE.md 是"你告诉 AI 什么",memory-bank 是"AI 自己记住什么"——前者是被动灌输,后者是主动学习,体验完全不同。

最让我惊喜的是记忆审计功能。以前我根本不知道 AI 记住了什么、忘了什么,现在一目了然。发现记忆冲突可以立即修复,发现记忆缺失可以主动补充,这种"可控的记忆"才是生产环境真正需要的。

如果你每天都在用 AI 写代码,尤其是长期项目,memory-bank 真的是必装项。它让 AI 从"每次对话都像重新认识"变成了"越来越懂你的老搭档",这种体验提升是质的飞跃。

  • Guys, ( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ See you tomorrow~~ | 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~

  • Everyone, be happy every day! 大家要天天开心哦

  • Welcome everyone to point out any mistakes in the article~ | 欢迎大家指出文章需要改正之处~

  • Learning has no end; win-win cooperation | 学无止境,合作共赢

  • Welcome all the passers-by, boys and girls, to offer better suggestions! ~~~ | 欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

image