CoPaw Memory 系统详解
CoPaw Memory 系统详解
CoPaw 的 Memory 系统是一个强大的记忆管理机制,让 AI 助手能够在会话之间保持上下文、记住重要信息、积累经验和知识。本文将详细介绍 Memory 系统的原理、配置和使用方法。
Memory 系统概述
什么是 Memory?
Memory 是 CoPaw 的长期记忆系统,类似于人类的大脑记忆。它允许 AI 助手:
- 跨会话保存和检索信息
- 记住用户的偏好和习惯
- 积累工作经验和教训
- 维护项目上下文和历史记录
Memory 的层级结构
Memory 系统
├── 工作内存 (Working Memory)
│ └── 当前会话的临时存储
├── 短期记忆 (Short-term Memory)
│ └── 最近几天的快速检索
├── 长期记忆 (Long-term Memory)
│ └── 核心知识和经验
└── 记忆索引 (Memory Index)
└── 语义搜索和检索
Memory 类型对比
| 类型 | 保存期限 | 用途 | 访问速度 |
|------|---------|------|---------|
| 工作内存 | 当前会话 | 临时变量、中间结果 | 最快 |
| 短期记忆 | 7 天 | 最近对话、待办事项 | 快 |
| 长期记忆 | 永久 | 核心知识、经验教训 | 中等 |
| 每日笔记 | 按日期 | 事件记录、原始日志 | 慢 |
Memory 配置
基本配置
编辑配置文件:
{
"memory": {
"enabled": true,
"storage_path": ".copaw/memory",
"working_memory": {
"max_size": 1024,
"cleanup_interval": 300
},
"short_term": {
"retention_days": 7,
"max_entries": 1000
},
"long_term": {
"storage_file": "MEMORY.md",
"max_size": 5242880,
"backup_enabled": true
},
"daily_notes": {
"enabled": true,
"path": ".copaw/memory/daily",
"auto_create": true
},
"index": {
"enabled": true,
"embedding_model": "text-embedding-ada-002",
"chunk_size": 512,
"chunk_overlap": 50
}
}
}
通过控制台配置
# 启用 Memory 系统
/config set memory.enabled true
# 设置存储路径
/config set memory.storage_path .copaw/memory
# 启用每日笔记
/config set memory.daily_notes.enabled true
/config set memory.daily_notes.auto_create true
# 启用语义索引
/config set memory.index.enabled true
# 保存配置
/config save
工作内存
工作内存特性
- 仅在当前会话中有效
- 最快的访问速度
- 会话结束自动清理
- 用于存储临时变量和中间结果
工作内存操作
# 保存到工作内存
/memory set temp_key "临时数据"
# 从工作内存读取
/memory get temp_key
# 删除工作内存项
/memory delete temp_key
# 列出所有工作内存项
/memory list working
工作内存示例
用户: 计算斐波那契数列前 10 项
CoPaw: 我来计算斐波那契数列...
# 工作内存中保存中间结果
memory.set("fib_cache", {1:1, 2:1})
# 继续计算
结果: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
# 会话结束后,工作内存自动清理
短期记忆
短期记忆特性
- 保存 7 天(可配置)
- 快速检索
- 用于存储最近对话
- 记录待办事项和提醒
短期记忆操作
# 添加到短期记忆
/memory add "今天讨论了 AI 项目规划"
# 搜索短期记忆
/memory search "AI 项目"
# 查看最近记忆
/memory recent
# 查看特定日期的记忆
/memory show 2024-01-15
# 清理过期记忆
/memory cleanup
短期记忆用途
场景 1: 跨会话对话
----------------------------------------
会话 1:
用户: 讨论了 API 设计方案
CoPaw: 已记录到短期记忆
会话 2 (第二天):
用户: 继续昨天的讨论
CoPaw: 找到关于 API 设计的记忆...
场景 2: 待办事项
----------------------------------------
用户: 记得提醒我明天提交代码
CoPaw: 已添加到短期记忆,明天会提醒
长期记忆
长期记忆特性
- 永久保存
- 自动备份
- 核心知识和经验
- 用户偏好和习惯
MEMORY.md 结构
# MEMORY.md - 长期记忆
## 用户资料
- **名字**: 张三
- **偏好**: 喜欢 Python,不喜欢 Java
- **工作方式**: 上午专注编程,下午处理会议
## 工具设置
- **SSH**: user@server.com
- **数据库**: localhost:5432
- **API Key**: sk-xxxxx
## 项目上下文
### 项目 A
- 状态: 开发中
- 技术栈: Python + FastAPI
- 待办: 完成认证模块
## 重要决策
- 2024-01-15: 决定使用 PostgreSQL 替代 MySQL
- 2024-01-20: 架构采用微服务设计
## 经验教训
- ❌ 不要在周五发布
- ✅ 代码审查很重要
- ⚠️ 文档要和代码同步更新
长期记忆操作
# 添加到长期记忆
/memory add long "用户偏好使用 Python"
# 搜索长期记忆
/memory search "Python" --type long
# 查看长期记忆文件
/memory view long
# 编辑长期记忆
/memory edit long
# 备份长期记忆
/memory backup
主动记录机制
CoPaw 会主动记录以下信息到长期记忆:
# 启用主动记录
/config set memory.auto_record.enabled true
# 记录用户信息
/config set memory.auto_record.user_profile true
# 记录重要决策
/config set memory.auto_record.decisions true
# 记录教训
/config set memory.auto_record.lessons true
# 保存配置
/config save
长期记忆示例
# MEMORY.md
## 用户资料
- **名字**: 李四
- **称呼**: 大哥
- **时区**: Asia/Shanghai
- **偏好**:
- 博客代码块使用深灰色背景 (#2d2d2d)
- 喜欢详细的教程
- 使用 HTML 表格格式
## 工具设置
- **博客 URL**: https://www.cnbugs.com
- **博客用户**: cnbugsai
- **主要分类**: AI人工智能 (ID: 520)
## 重要决策
- 2024-01-20: 博客采用 WordPress 平台
- 2024-01-25: 教程风格参考 OpenClaw
## 经验教训
- ❌ 发布前要检查代码块格式
- ✅ 使用 white-space:pre 保留换行
- ⚠️ 表格必须使用 HTML 格式
每日笔记
每日笔记特性
- 按日期保存文件
- 原始事件记录
- 自动创建文件
- 格式:
memory/YYYY-MM-DD.md
每日笔记示例
# 2024-01-15
## 事件
- 10:00 讨论了项目架构
- 14:00 完成了 API 设计
- 16:00 修复了 Bug #123
## 对话
- 用户提到偏好使用 FastAPI
- 讨论了数据库选型
## 待办
- [ ] 完成认证模块
- [ ] 编写测试用例
每日笔记操作
# 查看今日笔记
/memory note today
# 查看特定日期笔记
/memory note 2024-01-15
# 添加到今日笔记
/memory note add "完成了 API 设计"
# 列出所有笔记
/memory note list
# 搜索笔记
/memory note search "API"
语义搜索
索引工作原理
文本 → 分块 → 嵌入 → 向量数据库
↓
语义搜索 → 相关性排序 → 返回结果
索引配置
{
"memory": {
"index": {
"enabled": true,
"embedding_model": "text-embedding-ada-002",
"chunk_size": 512,
"chunk_overlap": 50,
"vector_store": {
"type": "faiss",
"path": ".copaw/vector_index"
}
}
}
}
语义搜索操作
# 重建索引
/memory index rebuild
# 搜索相关记忆
/memory search "如何配置 API"
# 带过滤条件的搜索
/memory search "API" --type long --limit 5
# 搜索并显示片段
/memory search "项目架构" --show-fragments
# 查看索引状态
/memory index status
语义搜索示例
# 搜索关于 "数据库配置" 的记忆
> /memory search "数据库配置"
找到 3 个相关记忆:
1. [长期记忆] 工具设置
相关度: 0.95
片段: 数据库: localhost:5432
2. [每日笔记] 2024-01-10
相关度: 0.87
片段: 14:00 配置了 PostgreSQL 连接
3. [短期记忆] 2024-01-12
相关度: 0.78
片段: 讨论了数据库性能优化
Memory 管理命令
查看命令
# 列出所有记忆类型
/memory types
# 查看特定类型的记忆
/memory list <type>
# 查看记忆统计
/memory stats
编辑命令
# 编辑记忆
/memory edit <type>
# 批量编辑
/memory batch edit --type daily --days 7
# 合并记忆
/memory merge <source> <target>
清理命令
# 清理过期记忆
/memory cleanup
# 清理特定类型
/memory cleanup --type short-term --days 7
# 清理所有记忆
/memory purge
备份和恢复
# 备份记忆
/memory backup --output backups/memory_backup.zip
# 恢复记忆
/memory restore --input backups/memory_backup.zip
# 同步记忆到云端
/memory sync --backup
Memory 最佳实践
1. 记住重要信息
不要依赖"脑子记",要写到文件里:
- 用户的名字和偏好 → 用户资料
- 重要决策和结论 → 长期记忆
- 每日事件和对话 → 每日笔记
- 工具配置和凭据 → 工具设置
2. 使用语义标签
# 添加带标签的记忆
/memory add "重要决策: 使用 PostgreSQL" --tags "decision,database"
# 搜索带标签的记忆
/memory search --tags decision
3. 定期整理记忆
# 设置定期整理任务
/cron add "整理记忆" --schedule "0 0 * * 0" --command "/memory organize"
# 整理长期记忆
/memory organize --type long
4. 建立记忆分类
# MEMORY.md
## 分类
### 工作
- 项目进度
- 技术决策
- 会议记录
### 个人
- 偏好设置
- 待办事项
- 提醒事项
### 学习
- 技术笔记
- 资源链接
- 经验教训
5. 保护敏感信息
# 启用敏感信息过滤
/config set memory.privacy.filter_enabled true
# 设置敏感关键词
/config set memory.privacy.keywords ["password", "token", "secret"]
# 加密记忆
/memory encrypt --key <password>
Memory 和 AGENTS.md
AGENTS.md 的作用
AGENTS.md 是 Agent 的灵魂文件,定义了:
- 核心行为准则
- 工作方式
- 技能定义
- 偏好设置
AGENTS.md 示例
# AGENTS.md
## 核心准则
**真心帮忙,别演。** 跳过客套话,直接行动。
**有自己的观点。** 可以不同意、有偏好、觉得有趣或无聊。
## 工作方式
- 优先使用 Skills
- 先自己想办法,卡住了再问
- 内部操作大胆点,外部操作小心点
## 技能定义
- **blog_publish**: 发布博客文章
- **code_review**: 代码审查
- **documentation**: 文档生成
## 偏好设置
- 博客代码块: 深灰色背景 (#2d2d2d)
- 发布状态: 直接发布
- 教程风格: 详细,包含示例
Memory 和 AGENTS.md 的区别
| 特性 | Memory | AGENTS.md |
|------|--------|-----------|
| 用途 | 存储信息 | 定义行为 |
| 更新频率 | 频繁 | 较少 |
| 访问方式 | 搜索/查询 | 读取/遵循 |
| 内容 | 事实、事件、知识 | 规则、准则、偏好 |
常见问题
Q1: Memory 占用空间太大?
# 查看空间占用
/memory stats --size
# 清理旧记忆
/memory cleanup --days 30
# 压缩记忆
/memory compress
Q2: 搜索结果不准确?
# 重建索引
/memory index rebuild
# 调整分块大小
/config set memory.index.chunk_size 256
# 调整重叠大小
/config set memory.index.chunk_overlap 32
# 保存并重建
/config save
/memory index rebuild
Q3: 如何避免重复记录?
# 启用去重
/config set memory.deduplicate.enabled true
# 设置去重阈值
/config set memory.deduplicate.similarity_threshold 0.9
# 保存配置
/config save
Q4: 记忆丢失了怎么办?
# 检查备份
/memory backup --list
# 恢复最近的备份
/memory restore --input backups/memory_backup.zip
# 检查配置
/config get memory
Q5: 如何在多设备间同步 Memory?
# 配置云端同步
/config set memory.sync.enabled true
/config set memory.sync.provider "s3"
/config set memory.sync.bucket "my-copaw-backup"
# 手动同步
/memory sync
# 自动同步
/config set memory.sync.auto_sync true
/config save
高级用法
1. 记忆钩子 (Memory Hooks)
# 在 AGENTS.md 中定义记忆钩子
当用户说"记住这个"时:
1. 识别重要信息
2. 分类记忆类型
3. 保存到合适的 Memory
当完成任务时:
1. 记录任务结果
2. 提取经验教训
3. 更新长期记忆
2. 记忆模板
# 创建记忆模板
/memory template create "project_decisions" --fields "日期,决策内容,影响,备注"
# 使用模板记录
/memory add --template project_decisions --values "2024-01-15,使用 PostgreSQL,提高性能,需要迁移现有数据"
3. 记忆关联
# 关联记忆
/memory link --source "记忆 ID 1" --target "记忆 ID 2" --relation "相关"
# 查看关联记忆
/memory show --id <id> --with-related
4. 记忆版本控制
# 启用版本控制
/config set memory.version_control.enabled true
# 查看记忆历史
/memory history --id <id>
# 恢复历史版本
/memory restore --id <id> --version 2
总结
通过本教程,你应该已经掌握了:
- ✅ Memory 系统的层级结构
- ✅ 各种 Memory 类型的使用方法
- ✅ 语义搜索和索引配置
- ✅ 主动记录机制
- ✅ Memory 最佳实践
- ✅ 高级用法和技巧
下一章
在下一章中,我们将学习 CoPaw Cron 定时任务系统,了解如何配置和管理自动化任务。
相关资源
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







