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 --version 或 openclaw --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 格式的三大优势:
- 人类可读:你可以直接用文本编辑器打开查看和修改
- Git 友好:diff 清晰,版本控制自然
- 渐进式披露: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,000 │ 64% │
│ 短期记忆 │ 8 │ ~3,500 │ 28% │
│ 工作记忆 │ 3 │ ~1,000 │ 8% │
├──────────────┼───────┼───────────┼────────────┤
│ 合计 │ 23 │ ~12,500 │ 100% │
└──────────────┴───────┴───────────┴────────────┘
二、分类分布
┌──────────────┬───────┬─────────────────────────┐
│ 分类 │ 数量 │ 代表性记忆 │
├──────────────┼───────┼─────────────────────────┤
│ 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.md | memory-bank |
|---|---|---|---|
| 存储方式 | 会话内内存 | 单一 Markdown 文件 | 分层文件系统 |
| 持久性 | 会话结束即消失 | 永久(随 Git) | 分层持久(工作/短期/长期) |
| 容量 | 受上下文窗口限制 | 200行/25KB 硬上限 | 理论无限(按需加载) |
| 检索方式 | 全量加载 | 全量加载 | 索引 + 按需加载 |
| 分类能力 | 无 | 无 | 6 种分类体系 |
| 遗忘机制 | 无(直接丢弃) | 静默截断 | 智能衰减 |
| 可审计性 | 无 | 低 | 高(完整变更历史) |
| 团队协作 | 不支持 | 通过 Git | 分类共享 + 私有 |
| Token 效率 | 低(全量) | 中(固定消耗) | 高(按需加载) |
| 人类可读性 | 低(JSON) | 高 | 高(Markdown) |
| 版本控制 | 无 | Git | Git + 内置快照 |
| 调试友好度 | 低 | 中 | 高 |
memory-bank vs 向量数据库方案(如 mem0 / MemMachine)
| 维度 | memory-bank | mem0 | MemMachine |
|---|---|---|---|
| 存储介质 | 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 Creator | github.com/anthropics/… | 创建自定义 Skill 的官方工具 |
| Claude Code 文档 | docs.anthropic.com/claude/docs | Claude Code 官方文档 |
社区资源
| 资源 | 链接 | 说明 |
|---|---|---|
| Awesome Claude Skills | github.com/ComposioHQ/… | 社区精选 Skill 清单(26k+ Stars) |
| SkillsMP | skillsmp.com/zh | 中文 Skill 搜索引擎(80W+ 技能) |
| OpenSkills | github.com/numman-ali/… | 跨平台 Skill 安装工具(7.2k Stars) |
| claude-mem | GitHub 搜索 | BM25 + 向量混合搜索的记忆方案 |
| Nocturne Memory | github.com/Dataojitori… | AI 义体和海马体,拒绝遗忘 |
相关记忆系统对比学习
| 项目 | 特点 | 适合场景 |
|---|---|---|
| memory-bank | 文件系统 + 分层 + 审计 | 开发者日常 |
| mem0 | 向量数据库 + 语义检索 | 企业级 RAG |
| MemMachine | 图数据库 + 用户画像 | 复杂关系推理 |
| claude-mem | BM25 + 向量混合 + Hook | 本地高级检索 |
| Nocturne | SQLite + 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! ~~~ | 欢迎路过的小哥哥小姐姐们提出更好的意见哇~~