---
title: 梦境蒸馏
description: Deep Dream — 从对话到永久记忆的自动蒸馏机制
---

梦境蒸馏（Deep Dream）是 CowAgent 记忆系统的核心整理机制，负责将分散的天级记忆蒸馏为精炼的长期记忆，并生成梦境日记。

## 记忆流转

CowAgent 的记忆从短期到长期经历三个阶段：

```
对话上下文（短期）→ 天级记忆（中期）→ MEMORY.md（长期）
```

### 1. 对话 → 天级记忆

当对话上下文被裁剪或每日定时总结时，系统使用 LLM 将对话内容摘要为关键事件，写入当天的天级记忆文件 `memory/YYYY-MM-DD.md`。

触发时机：
- **上下文裁剪** — 轮次或 token 超限时，裁剪的内容被总结写入
- **每日定时** — 23:55 自动触发全量总结
- **API 溢出** — 紧急保存当前对话摘要

### 2. 天级记忆 → MEMORY.md（蒸馏）

每日总结完成后，Deep Dream 自动执行蒸馏：

1. **读取材料** — 当前 `MEMORY.md` + 当天的天级记忆
2. **LLM 蒸馏** — 去重、合并、修剪、提取新信息
3. **覆写 MEMORY.md** — 输出精炼后的长期记忆
4. **生成梦境日记** — 记录整理过程的发现和洞察

### 3. MEMORY.md 的作用

`MEMORY.md` 会被注入到每次对话的系统提示词中，让 Agent 始终了解用户的偏好、决策和关键事实。因此它必须保持精炼——Deep Dream 会控制在约 30 条以内。

## 蒸馏规则

Deep Dream 遵循以下整理规则：

| 操作 | 说明 |
| --- | --- |
| **合并提炼** | 含义相近的多条合并为一条高密度表述 |
| **新增萃取** | 从天级记忆中提取偏好、决策、人物、经验等 |
| **冲突更新** | 新信息与旧条目矛盾时，以新信息为准 |
| **清理无效** | 删除临时性记录、空白条目、格式残留 |
| **删除冗余** | 已被更精炼表述涵盖的旧条目删除 |

## 梦境日记

每次蒸馏会生成一篇梦境日记，保存在 `memory/dreams/YYYY-MM-DD.md`，用叙事风格记录：

- 发现了哪些重复或矛盾
- 从天级记忆中提取了什么新洞察
- 做了哪些清理和优化
- 整体感受和观察

梦境日记可在 Web 控制台的「记忆管理 → 梦境日记」tab 中查看。

<Frame>
  <img src="https://cdn.link-ai.tech/doc/20260414110032.png" width="800" />
</Frame>

## 手动触发

除了每日自动执行外，也可以在对话中手动触发：

```text
/memory dream [N]
```

- `N`：整理近 N 天的记忆（默认 3 天，最大 30 天）
- 蒸馏在后台异步执行，完成后在对话中通知结果
- Web 端通知包含可点击链接，直接跳转查看 MEMORY.md 和梦境日记
- 无需 Agent 初始化，首次对话前即可使用

<Frame>
  <img src="https://cdn.link-ai.tech/doc/20260414120158.png" width="800" />
</Frame>

<Tip>
  首次部署后可以手动执行一次 `/memory dream 30`，将历史天级记忆全量蒸馏到 MEMORY.md。
</Tip>

## 配置开关

通过 `config.json` 中的 `deep_dream_enabled` 控制每晚的自动蒸馏：

```json
{
  "deep_dream_enabled": true
}
```

| 配置项 | 说明 | 默认值 |
| --- | --- | --- |
| `deep_dream_enabled` | 是否启用每日定时蒸馏 | `true` |

默认开启，保持与现有行为一致。关闭后每晚不再自动执行蒸馏，适合希望手动维护 MEMORY.md 或减少一次 LLM 调用的场景（每日记忆总结不受影响）。手动命令 `/memory dream` 也不受此开关影响，仍可随时触发。

## 安全机制

| 机制 | 说明 |
| --- | --- |
| **无新内容跳过** | 没有天级记忆时不执行蒸馏，避免空覆写 |
| **输入去重** | 定时任务中，输入材料未变化时自动跳过 |
| **异步执行** | 蒸馏在后台线程运行，不阻塞对话 |
| **顺序保证** | 定时任务中，天级 flush 全部完成后才启动蒸馏 |
| **禁止编造** | 提示词明确约束只能基于已有材料整理，不得推测或添加 |
