AgentHarness 课程

Memory 记忆系统

短期/中期/长期记忆、知识沉淀、跨会话记忆

引言

CodeBuddy 的 Memory 记忆系统是其区别于普通 AI 助手的核心能力之一。它让智能体能够"记住"你的偏好、项目规范、历史决策,在跨会话间复用知识,真正成为你的长期开发伙伴。

想象一下:你花了半小时向 AI 解释项目的认证架构和编码规范,结果新会话又要重新说明——这就是没有记忆系统的痛点。CodeBuddy 的三层记忆架构彻底解决了这个问题。


一、三层记忆架构详解

1.1 架构总览

记忆层级生命周期存储范围优先级典型内容
短期 Session当前会话单次对话最高当前任务上下文、临时变量
中期 Project项目级持久项目目录编码规范、架构决策、API 约定
长期 Organizational跨项目共享全局配置通用最佳实践、团队偏好

1.2 短期 Session 记忆

Session 记忆存在于当前会话的上下文窗口中,会话结束即消散。它负责维护当前对话的连贯性。

# Session 记忆工作原理:
# 用户:"帮我创建一个用户注册接口"
# AI 记住了:正在创建注册接口,使用 Express + TypeScript
# 用户:"再加上邮箱验证"
# AI 知道"加上"是指给注册接口加,而不是其他东西

特点

  • 作用范围:单次对话
  • 存储方式:上下文窗口
  • 生命周期:会话结束自动清除
  • 无需手动管理

1.3 中期 Project 记忆

Project 记忆是 CodeBuddy 最核心的记忆层。它将项目的关键信息持久化存储,跨会话保持可用。

# 存储位置:.codebuddy/memory/project.md

## 项目架构
- 前端:React 18 + TypeScript + Vite
- 后端:Express + Prisma + PostgreSQL
- 部署:CloudBase Serverless

## 编码规范
- 使用 camelCase 命名变量和函数
- 使用 PascalCase 命名组件和类
- 所有 API 返回统一格式:{ code, data, message }

## 架构决策记录
- 2024-01-15: 选择 JWT 而非 Session 认证,因为需要支持移动端
- 2024-01-20: 使用 Zod 做请求参数校验

管理命令

# 查看当前项目记忆
/memory show

# 添加项目记忆
/memory add "数据库使用 PostgreSQL,连接池大小为 20"

# 清除过时记忆
/memory clear --expired

1.4 长期 Organizational 记忆

Organizational 记忆存储在用户全局配置目录中,适用于跨项目的通用知识。

# 存储位置:~/.codebuddy/memory/global.md

## 通用偏好
- 代码风格:简洁优先,避免过度抽象
- 注释风格:只在复杂逻辑处添加注释
- 测试偏好:Jest + React Testing Library

## 常用技术栈
- 包管理器:pnpm
- 状态管理:Zustand
- CSS 方案:Tailwind CSS

二、记忆存储位置与格式

2.1 文件结构

项目根目录/
├── .codebuddy/
│   ├── memory/
│   │   ├── project.md      # 项目级记忆
│   │   ├── conversations/   # 历史对话摘要
│   │   │   ├── 2024-01-15.md
│   │   │   └── 2024-01-16.md
│   │   └── index.md         # 记忆索引
│   └── config.json

用户目录/
└── .codebuddy/
    └── memory/
        └── global.md        # 全局记忆

2.2 记忆格式规范

记忆文件使用 Markdown 格式,便于人类阅读和编辑:

# 项目记忆

## 上下文
- 项目类型:全栈 Web 应用
- 团队规模:5 人
- 开发阶段:中期开发

## 关键决策
| 日期 | 决策 | 原因 | 影响范围 |
|------|------|------|----------|
| 2024-01-15 | 使用 JWT | 支持移动端 | 全局认证模块 |
| 2024-01-20 | 使用 Zod | 类型安全 | 所有 API 接口 |

## 常见问题
- 数据库连接超时:检查连接池配置,当前设置为 20
- CORS 跨域错误:确保前端域名已添加到白名单

三、记忆管理命令详解

3.1 查看记忆

# 查看所有记忆概览
/memory

# 查看项目记忆详情
/memory show --project

# 查看全局记忆
/memory show --global

# 搜索记忆内容
/memory search "认证方案"

3.2 添加记忆

# 添加项目记忆
/memory add "API 接口版本号为 v1,所有接口以 /api/v1/ 开头"

# 添加带标签的记忆
/memory add --tag "database" "主从复制延迟阈值为 5 秒"

# 从对话中自动提取记忆
/memory extract

3.3 清除记忆

# 清除过时记忆
/memory clear --expired

# 清除特定标签的记忆
/memory clear --tag "temp"

# 重置项目记忆(谨慎使用)
/memory reset --project

四、跨会话知识复用案例

案例一:多人协作项目

会话 1 - 项目初始化(周一)

/memory add "本项目使用 Next.js 14 App Router"
/memory add "数据库 ORM 使用 Prisma,数据库为 PostgreSQL"
/memory add "API 设计遵循 RESTful 规范"
/memory add "错误处理使用统一的 ErrorHandler 中间件"

会话 2 - 新功能开发(周三新会话)

用户:帮我创建一个文章列表接口

CodeBuddy:(自动读取 Project Memory)
好的,基于项目的 Prisma + PostgreSQL 技术栈和 RESTful 规范,
我将创建 GET /api/v1/articles 接口,包含分页和筛选功能。

案例二:编码规范传承

# 第一次会话中建立规范
/memory add "组件文件使用 PascalCase 命名:UserProfile.tsx"
/memory add "工具函数使用 camelCase 命名:formatDate.ts"
/memory add "常量使用 UPPER_SNAKE_CASE:MAX_RETRY_COUNT"

# 后续会话中 CodeBuddy 自动遵循这些规范
# 用户:"帮我创建一个日期选择器组件"
# AI 会自动命名为 DatePicker.tsx(而非 date-picker.tsx)

五、Memory 与 Rules 的关系

对比表格

特性MemoryRules
主要用途记录事实和上下文定义行为规范
内容类型项目信息、决策记录、偏好编码规范、工作流程
修改频率频繁更新相对稳定
格式自由 Markdown结构化规则
示例"数据库用 PostgreSQL""所有函数必须有错误处理"
触发方式手动添加或自动提取每次对话自动加载

协同工作模式

# Memory 记录事实
/memory add "项目使用 Tailwind CSS v3"
/memory add "设计系统定义在 src/design-tokens/ 目录"

# Rules 定义规范
/rules add "使用 Tailwind 时优先使用语义化类名"
/rules add "颜色值必须引用 design-tokens 中的变量"

最佳实践:Memory 存储"是什么"(What),Rules 定义"怎么做"(How)。两者互补,形成完整的项目知识体系。


六、常见陷阱与最佳实践

常见错误

  1. 记忆过时未清理:项目重构后旧的记忆仍存在,导致建议不准确
  2. 记忆过于笼统:写"代码要规范"不如写"函数不超过 50 行,圈复杂度不超过 10"
  3. 敏感信息写入:不要在记忆中存储密码、密钥等敏感信息
  4. 记忆冲突:不同会话添加了矛盾的记忆,导致 AI 困惑

最佳实践

  1. 定期维护:每月审查一次 Project Memory,清理过时内容
  2. 具体明确:记忆内容越具体,CodeBuddy 的建议越准确
  3. 分层管理:项目特有信息放 Project Memory,通用偏好放 Global Memory
  4. 配合 Rules:记忆记录事实,规则定义行为
  5. 使用标签:给记忆打标签便于分类管理和检索

总结

CodeBuddy 的三层记忆架构让智能体真正成为你的"长期搭档":

  1. Session 记忆:维护当前对话连贯性,无需手动管理
  2. Project 记忆:持久化项目关键信息,跨会话复用
  3. Organizational 记忆:存储跨项目的通用偏好
  4. 协同工作:Memory 记录事实,Rules 定义规范,两者互补
  5. 定期维护:保持记忆的准确性和时效性

下一章我们将深入探索 Plan 模式,了解 CodeBuddy 如何通过苏格拉底式提问帮助你理清复杂需求。