# 临时记忆生命周期执行原理

## 一、概述

临时记忆是 `auto_improve` 系统的自动触发层，无需用户干预即可从对话中提取有价值的信息。生命周期为：**创建 → 注入 system prompt → 过期清理**。

## 二、创建机制

### 被动触发入口

```python
# plugins/auto_improve/tool.py
def run_auto_improve_trigger(provider, chat, user_name):
    """被动模式：从最近对话中提取信息写入临时层"""
```

### 触发条件
1. **cron 定时触发**：每小时（3600 秒）由 cron 线程执行
2. **对话结束触发**：`run_chat_turn()` 结束后（如配置启用）

### 提取流程

```
最近 N 条对话消息
  → 构建分析 prompt → provider.respond(analyze_prompt)
  → 解析返回的 JSON
  → 写入临时文件:
    users/<name>/improve/memory/temporary/xxx.md
    users/<name>/improve/self-improving/temporary/yyy.md
    users/<name>/improve/ontology/temporary/zzz.md
```

## 三、注入到 System Prompt

在 `build_system_prompt()` 中，临时记忆作为第 ④ 段注入：

```
[SYSTEM-INTERNAL:临时记忆]
## 事实与偏好
- xxx.md: 用户偏好 Python 3.12

## 行为规则
- yyy.md: 不要在回复中使用颜文字

## 概念关系
- zzz.md: Plana 是 AI 助手

这些是系统自动提取的临时观察。可被 auto_improve_review 吸收为永久记忆。
```

## 四、生命周期管理

### 过期判断
- 判断依据：文件最后修改时间（mtime）
- 默认保留：7 天
- 修改文件会重置计时器

### 清理执行
- cron 线程每 60 秒检查一次
- 遍历三个临时目录，mtime 超过 7 天的文件删除

## 五、临时 → 永久的转化

```
用户: "整理记忆" → auto_improve_review()
  → 读取所有临时文件 + 当前对话
  → LLM 分析哪些值得保留
  → 有价值的写入永久层
  → 清理已被吸收的临时文件
```

## 六、完整生命周期时序

```
Day 0: 对话中用户说 "我喜欢 Python"
  → 被动触发 → 创建 temporary/python_pref.md (mtime=Day0)
Day 0~6: system prompt 注入 "用户喜欢 Python"
Day 3: 用户执行 "整理记忆" → 吸收到永久层 → 临时文件删除
Day 3+: 永久层生效，通过 auto_improve_get() 按需读取

--- 如果用户从未审阅 ---
Day 7+: run_forget() 自动清理临时文件
```

## 七、关键设计要点

1. **零干预**：被动触发不需要用户操作
2. **自动过期**：防止临时记忆无限积累
3. **system prompt 注入**：确保 LLM 行为受临时记忆影响
4. **审阅升级**：有价值的临时记忆可通过审阅转为永久
5. **隔离存储**：临时层和永久层物理隔离，互不干扰
