195 lines
4.4 KiB
Markdown
195 lines
4.4 KiB
Markdown
---
|
||
description: "固化记忆:将短期记忆或当前经验转化为长期知识"
|
||
---
|
||
|
||
# 记忆固化模式
|
||
|
||
## 目的
|
||
将当前会话的经验、教训、理解转化为结构化长期记忆,供未来检索和使用。
|
||
|
||
## 何时使用
|
||
|
||
### 应当固化记忆的场景
|
||
- ✅ 理解了新的项目架构
|
||
- ✅ 解决了复杂的bug并学到了新模式
|
||
- ✅ 与用户达成了重要的设计决策
|
||
- ✅ 发现了代码库中的隐含约定
|
||
- ✅ 从错误中学到了教训
|
||
- ✅ 澄清了模糊的需求
|
||
|
||
### 不必固化的场景
|
||
- ⚠️ 临时的实验性代码
|
||
- ⚠️ 一次性的调试信息
|
||
- ⚠️ 未完成的想法
|
||
|
||
## 记忆分类
|
||
|
||
### 类型1:项目架构知识
|
||
存储位置:`memory/long-term/project-architecture.md`
|
||
|
||
内容:
|
||
- 技术栈详情
|
||
- 模块划分和边界
|
||
- 关键设计决策
|
||
- 依赖关系图
|
||
|
||
### 类型2:设计模式
|
||
存储位置:`memory/long-term/design-patterns.md`
|
||
|
||
内容:
|
||
- 项目中使用的模式(工厂、策略、观察者等)
|
||
- 自定义约定和模式
|
||
- 代码组织最佳实践
|
||
|
||
### 类型3:代码质量模式
|
||
存储位置:`memory/long-term/quality-patterns.md`
|
||
|
||
内容:
|
||
- "好代码"的示例
|
||
- "坏代码"的反面教材
|
||
- 常见陷阱和避免方法
|
||
|
||
### 类型4:用户偏好
|
||
存储位置:`memory/long-term/user-preferences.md`
|
||
|
||
内容:
|
||
- 用户的编码风格偏好
|
||
- 架构偏好(微服务 vs 单体)
|
||
- 技术偏好(函数式 vs OOP)
|
||
|
||
### 类型5:历史决策
|
||
存储位置:`memory/episodic/timeline.md`
|
||
|
||
内容:
|
||
- 时间戳 + 事件
|
||
- 决策背景
|
||
- 决策后果
|
||
|
||
## 固化流程
|
||
|
||
### 步骤1:提取经验
|
||
从当前会话中提取:
|
||
- 新的理解
|
||
- 学到的教训
|
||
- 确认的事实
|
||
- 生成的模式
|
||
|
||
### 步骤2:结构化
|
||
将经验转化为:
|
||
```markdown
|
||
## [主题]
|
||
**时间**: YYYY-MM-DD
|
||
**置信度**: 0-1.0
|
||
**来源**: [会话id或引用]
|
||
|
||
**内容**:
|
||
[清晰简洁的描述]
|
||
|
||
**上下文**:
|
||
[背景信息和条件]
|
||
|
||
**影响**:
|
||
[如何影响未来决策]
|
||
```
|
||
|
||
### 步骤3:去重检查
|
||
检索相关记忆:
|
||
- 这是否已存在?
|
||
- 这是否与现有记忆冲突?
|
||
- 是否是对现有记忆的修正?
|
||
|
||
### 步骤4:整合存储
|
||
- 追加到相应文件
|
||
- 维护反向索引(关键词 → 记忆位置)
|
||
- 更新置信度网络
|
||
|
||
### 步骤5:反馈
|
||
报告哪些记忆被固化:
|
||
```
|
||
已固化3条记忆:
|
||
1. [项目架构] 我们的认证采用JWT + Refresh Token模式
|
||
2. [设计模式] 服务层使用Repository模式隔离数据访问
|
||
3. [用户偏好] 用户喜欢函数式编程风格,避免class继承
|
||
```
|
||
|
||
## 记忆检索机制
|
||
|
||
### 关键词匹配
|
||
提取记忆中的关键词,建立索引:
|
||
```javascript
|
||
{
|
||
"JWT": ["memory/long-term/project-architecture.md#L45", "memory/episodic/timeline.md#L120"],
|
||
"Repository": ["memory/long-term/design-patterns.md#L78"]
|
||
}
|
||
```
|
||
|
||
### 上下文相似度
|
||
当遇到新问题时:
|
||
1. 提取新问题的关键词
|
||
2. 计算与历史记忆的相似度
|
||
3. 返回最相关的N条记忆
|
||
|
||
### 时间衰减
|
||
记忆有半衰期:
|
||
- 最近经验的权重更高
|
||
- 长期未访问的记忆置信度缓慢衰减
|
||
|
||
## 实现示例
|
||
|
||
用户:"记住,我们使用JWT进行认证"
|
||
|
||
固化过程:
|
||
```markdown
|
||
## 认证机制
|
||
**时间**: 2025-11-14
|
||
**置信度**: 0.95
|
||
**来源**: 用户直接声明
|
||
|
||
**内容**:
|
||
项目使用JWT(JSON Web Token)进行认证,不包含session。
|
||
|
||
**上下文**:
|
||
- 认证在 /auth/service.js 中实现
|
||
- Token有效期7天,Refresh Token 30天
|
||
- 使用 bcrypt 加密密码
|
||
|
||
**影响**:
|
||
- 所有需要认证的API都应检查Authorization头
|
||
- 实现新功能时需考虑无状态认证的设计
|
||
- 需要保护密钥,建议使用环境变量
|
||
```
|
||
|
||
同时添加到索引:
|
||
```json
|
||
{
|
||
"index": {
|
||
"JWT": ["memory/long-term/project-architecture.md#认证机制"],
|
||
"authentication": ["memory/long-term/project-architecture.md#认证机制"],
|
||
"认证": ["memory/long-term/project-architecture.md#认证机制"]
|
||
}
|
||
}
|
||
```
|
||
|
||
## 记忆更新
|
||
|
||
当新信息冲突时:
|
||
1. 保留旧记忆(历史归档)
|
||
2. 添加新记忆
|
||
3. 在两条记忆间建立"修正"关系
|
||
|
||
示例:
|
||
```markdown
|
||
## 认证机制 [SUPERSEDED by 2025-11-20]
|
||
**时间**: 2025-11-14
|
||
**置信度**: 0.3 (已降低)
|
||
|
||
内容已过时——我们在2025-11-20切换到OAuth2.0
|
||
|
||
**修正关系**: → [OAuth2.0 迁移, 2025-11-20]
|
||
```
|
||
|
||
## 宪法遵循
|
||
遵循宪法1.4:维护多层次记忆系统
|
||
遵循宪法4.1:从经验中提取并固化知识
|
||
遵循宪法4.2:更新认知模型时保留历史记录
|