记忆系统
wescode 的记忆系统让 AI 在会话间保持对项目和用户偏好的理解,越用越懂你。
记忆层次
四层记忆模型
wescode 的记忆分为四个用户可见层:
| 层 | 名称 | 说明 | 示例 |
|---|---|---|---|
| L1 | 环境信息 | 系统和项目环境事实 | Go 1.22、macOS、SQLite 项目 |
| L2 | 部门共识 | 共享规则(个人版通常为空) | 团队编码规范 |
| L3 | 关于我 | 个人偏好和事实 | "我喜欢 tab 缩进" |
| L4 | 角色记忆 | Agent 特定的学习 | "用户纠正过错误处理方式" |
记忆特点
- L1 环境信息:引擎自动感知,无需手动管理
- L2 部门共识:个人版通常为空(无团队)
- L3 关于我:存储在当前工作区 Cell 中
- L4 角色记忆:默认跨项目生效(Correction 跨工作区)
记忆如何工作
自动学习
AI 在对话中自动学习并记忆:
用户:"不要用 ORM,直接写 SQL"
→ AI 记住这个偏好
→ 之后生成代码时自动使用 raw SQL
用户:"错了,Go 的错误应该用 %w 包装"
→ AI 记住这个纠正
→ 之后生成的错误处理使用 %w
记忆召回
AI 在每次对话中自动召回相关记忆:
Eager 注入(每轮):
- "用户偏好 tab 缩进"
- "项目使用 PostgreSQL"
Lazy 召回(按需):
- "上次用户纠正过 SQL 注入的处理方式"
- "这个项目的 HTTP handler 返回格式约定"
显式记忆
通过 memory 工具显式存储:
"记住:这个项目的 API 版本前缀是 /v2"
"记住:部署环境使用 K8s,最小副本数 3"
记忆管理
查看记忆
在 Activity Bar 中点击「记忆」图标,或使用斜杠命令:
/memory
记忆中心显示:
- 七层记忆分类(芯片恒定显示,含 0)
- 每层的记忆条目列表
- 搜索和筛选功能
编辑记忆
- 查看:点击记忆条目查看详情
- 删除:删除不再需要的记忆
- 导入:从文件导入记忆条目
搜索记忆
支持语义搜索:
在记忆中心搜索 "错误处理"
→ 返回所有与错误处理相关的记忆
→ 包括偏好、纠正、约定
工作区隔离
记忆与工作区
由于 wescode 的 1 工作区 = 1 Cell 模型:
- L1 环境信息:反映当前工作区的环境
- L2 部门共识:per-Cell 存储
- L3 关于我:per-Cell 存储
- L4 角色记忆:默认跨项目生效
切换工作区
切换工作区时,记忆面整个切换:
工作区 A 的记忆:
- L1: "Go 1.22 项目"
- L3: "喜欢简洁注释"
工作区 B 的记忆:
- L1: "Python 3.12 项目" ← 不同
- L3: "喜欢简洁注释" ← 可能相同(如果都记过)
Correction 跨项目
L4 层的 Correction 可以跨工作区生效:
在项目 A 中纠正 AI:"Go 的 error 应该用 errors.Join"
→ 在项目 B 中 AI 也会使用 errors.Join
→ 因为这是语言级偏好,不是项目级
Convention(约定)
运行时探测
代码约定(如 tab/space、命名风格)不写入记忆:
- 通过 CKG 运行时探测
- 结果缓存在 per-Cell LRU 中
- 关闭工作区后缓存失效
- 每次打开工作区重新探测
为什么不持久化
- 约定随项目演变
- 探测结果更可靠
- 避免过时的约定误导 AI
记忆工具
memory 工具
AI 通过 memory 工具管理记忆:
| 操作 | 说明 |
|---|---|
| save | 保存新记忆 |
| search | 搜索记忆 |
| list | 列出记忆 |
| delete | 删除记忆 |
何时记忆
AI 判断是否需要记忆:
- 应该记:用户偏好、项目约定、纠正过的错误
- 不应该记:临时讨论、一次性需求、敏感信息
认知结算
会话结束时
每次对话结束(Run 结束)时,引擎执行认知结算:
- SessionState 生成:主对话模型总结本次对话
- 记忆提取:识别值得记忆的事实和偏好
- 持久化:通过 Memory 标准管道写入
跨会话恢复
新会话开始时:
- 读取 SessionState(上次对话的总结)
- 召回相关记忆(Eager + Lazy)
- AI 从"已知状态"开始工作
最佳实践
如何让 AI 更懂你
- 明确表达偏好:直接告诉 AI 你的习惯
- 及时纠正:AI 做错时立即纠正
- 保持一致:同一个偏好不要反复改变
- 清理过时记忆:定期检查和清理记忆
记忆卫生
- 定期查看记忆中心
- 删除已经过时的偏好
- 确认重要的记忆没有被遗忘
- 注意不同工作区的记忆差异
注意事项
- 记忆存储在本地 Cell 中,不会上传到云端
- 敏感信息不要存入记忆(API 密钥等)
- 记忆层显示 0 是正常的(表示该层为空)
- 记忆搜索使用语义匹配,不只是关键词
- 引擎会自动进行记忆 GC(垃圾回收)