vault backup: 2026-06-09 23:15:17

This commit is contained in:
2026-06-09 23:15:17 +08:00
parent 31fd89aafe
commit e92c0327d9
111 changed files with 7276 additions and 8846 deletions
+47 -55
View File
@@ -1,12 +1,17 @@
---
tags: [auto-dream, 记忆整理, 后台任务, fork-agent]
create time: 2026-06-09 22:30
---
# Auto Dream — 自动记忆整理
## 概述
Auto Dream 是 Claude Code 的后台记忆整合机制。它在会话间自动审查、组织和修剪持久化记忆文件,确保未来会话能快速获得准确的上下文。
记忆系统存储在文件系统中(默认 `~/.claude/projects/<project-slug>/memory/`),由 `MEMORY.md` 索引文件和若干主题文件(如 `user_language.md`、`project_overview.md`)组成。随着会话积累,记忆会变得过时、冗余或矛盾——Dream 负责清理这些堆积。
记忆系统存储在文件系统中(默认 `~/.claude/projects/<project-slug>/memory/`),由 `MEMORY.md` 索引文件和若干主题文件组成。随着会话积累,记忆会变得过时、冗余或矛盾——Dream 负责清理这些堆积。
## 架构
## 正文
### 核心模块
@@ -29,30 +34,21 @@ Auto Dream 是 Claude Code 的后台记忆整合机制。它在会话间自动
其中 `memoryBase` = `CLAUDE_CODE_REMOTE_MEMORY_DIR` 或 `~/.claude`。
## 触发机制
### 触发机制
### 自动触发(Auto Dream)
#### 自动触发(Auto Dream)
每个对话轮次结束后,`executeAutoDream()` 按顺序检查三重门控:
```
┌─────────────────────────────────────────────────────┐
│ Gate 1: 全局开关 │
│ isAutoMemoryEnabled() && isAutoDreamEnabled() │
│ 排除: KAIROS 模式 / Remote 模式 │
├─────────────────────────────────────────────────────┤
│ Gate 2: 时间门控 │
│ hoursSince(lastConsolidatedAt) >= minHours │
│ 默认: 24 小时 │
├─────────────────────────────────────────────────────┤
│ Gate 3: 会话门控 │
│ sessionsTouchedSince(lastConsolidatedAt) >= minSessions │
│ 默认: 5 个会话(排除当前会话) │
├─────────────────────────────────────────────────────┤
│ Lock: PID 锁文件 │
│ .consolidate-lock (mtime = lastConsolidatedAt) │
│ 死进程检测 + 1 小时过期 │
└─────────────────────────────────────────────────────┘
```mermaid
flowchart TD
A["Gate 1: 全局开关"] --> B{"isAutoMemoryEnabled() && isAutoDreamEnabled()?"}
B -->|"排除 KAIROS / Remote 模式"| C["Gate 2: 时间门控"]
C --> D{"hoursSince(lastConsolidatedAt) >= minHours?"}
D -->|"默认 24 小时"| E["Gate 3: 会话门控"]
E --> F{"sessionsTouchedSince >= minSessions?"}
F -->|"默认 5 个会话"| G["Lock: PID 锁文件"]
G --> H["以 forked agent 方式运行整理任务"]
```
全部通过后,以 **forked agent**(受限子代理)方式运行整理任务:
@@ -61,7 +57,7 @@ Auto Dream 是 Claude Code 的后台记忆整合机制。它在会话间自动
- 只能读写记忆目录内的文件
- 用户可在 Shift+Down 后台任务面板中查看进度或终止
### 手动触发(`/dream` 命令)
#### 手动触发(`/dream` 命令)
通过 `/dream` 命令随时触发,无门控限制:
@@ -69,7 +65,7 @@ Auto Dream 是 Claude Code 的后台记忆整合机制。它在会话间自动
- 用户可实时观察操作过程
- 执行前自动更新锁文件 mtime
### 配置开关
#### 配置开关
| 开关 | 位置 | 作用 |
|------|------|------|
@@ -85,17 +81,17 @@ minHours: 24 // 距上次整理至少 24 小时
minSessions: 5 // 至少有 5 个新会话
```
## 整理流程(4 阶段)
### 整理流程(4 阶段)
Dream agent 执行的提示词包含 4 个阶段:
### Phase 1 — 定位(Orient)
#### Phase 1 — 定位(Orient)
- `ls` 记忆目录,查看现有文件
- 读取 `MEMORY.md` 索引
- 浏览现有主题文件,避免重复创建
### Phase 2 — 采集信号(Gather)
#### Phase 2 — 采集信号(Gather)
按优先级收集新信息:
@@ -103,19 +99,19 @@ Dream agent 执行的提示词包含 4 个阶段:
2. **过时记忆** — 与当前代码库状态矛盾的事实
3. **会话记录** — 窄关键词 grep JSONL 文件(不全文读取)
### Phase 3 — 整合(Consolidate)
#### Phase 3 — 整合(Consolidate)
- 合并新信号到现有主题文件,而非创建近似重复
- 将相对日期("昨天"、"上周")转为绝对日期
- 删除被推翻的事实
### Phase 4 — 修剪与索引(Prune)
#### Phase 4 — 修剪与索引(Prune)
- `MEMORY.md` 保持在 200 行以内、25KB 以内
- 每条索引项一行,不超过 150 字符
- 移除过时/错误/被取代的指针
## 记忆类型
### 记忆类型
记忆系统使用 4 种类型(`src/memdir/memoryTypes.ts`):
@@ -126,9 +122,10 @@ Dream agent 执行的提示词包含 4 个阶段:
| `project` | 项目上下文(非代码可推导的) | 合并冻结从 3 月 5 日开始;认证重写是合规需求 |
| `reference` | 外部系统指针 | Linear INGEST 项目跟踪 pipeline bugs |
**不保存的内容**:代码模式、架构、文件路径(可从代码推导);Git 历史(`git log` 权威);调试方案(代码中已有)。
> [!tip]
> **不保存的内容**:代码模式、架构、文件路径(可从代码推导);Git 历史(`git log` 权威);调试方案(代码中已有)。
## 锁文件机制
### 锁文件机制
`.consolidate-lock` 文件位于记忆目录内:
@@ -138,45 +135,40 @@ Dream agent 执行的提示词包含 4 个阶段:
- **竞态处理**:双进程同时写入时,后读验证 PID,失败者退出
- **回滚**:forked agent 失败或被用户终止时,mtime 回退到获取前的值
## 使用场景
### 使用场景
### 场景 1:日常开发中的自动整理
#### 场景 1:日常开发中的自动整理
开发者连续多天使用 Claude Code 处理不同任务。Auto Dream 在积累 5+ 个会话且距上次整理 24 小时后自动触发,整合分散在多次会话中的用户偏好和项目决策。
### 场景 2:手动整理记忆
#### 场景 2:手动整理记忆
用户发现 Claude 重复犯相同错误或遗忘之前的决策。输入 `/dream` 立即触发整理,无需等待自动触发周期。
### 场景 3:新会话快速上下文
#### 场景 3:新会话快速上下文
新会话启动时,`MEMORY.md` 被加载到上下文中。经过 Dream 整理的记忆文件结构清晰、信息准确,让 Claude 快速了解用户和项目。
### 场景 4:KAIROS 模式下的日志蒸馏
#### 场景 4:KAIROS 模式下的日志蒸馏
KAIROS(长驻助手模式)中,agent 以追加方式写入日期日志文件。Dream 负责将这些日志蒸馏为主题文件和 `MEMORY.md` 索引。
## 与其他系统的关系
### 与其他系统的关系
```
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
│ 会话交互 │────▶│ 记忆写入 │────▶│ MEMORY.md │
│ (主 agent) │ │ (即时保存) │ │ + 主题文件 │
└─────────────┘ └──────────────┘ └───────┬───────┘
│
┌───────────────────────────────────────┘
▼
┌──────────────┐ ┌──────────────┐
│ Auto Dream │────▶│ 整理/修剪 │
│ (后台触发) │ │ 去重/纠错 │
└──────────────┘ └──────────────┘
▲
┌──────────────┐
│ /dream 命令 │
│ (手动触发) │
└──────────────┘
```mermaid
flowchart TD
A["会话交互 主 agent"] -->|"即时保存"| B["记忆写入"]
B --> C["MEMORY.md + 主题文件"]
C --> D["Auto Dream 后台触发"]
D --> E["整理/修剪 去重/纠错"]
F["/dream 命令 手动触发"] --> D
```
- **extractMemories**(`src/services/extractMemories/`):每轮次结束时从对话中提取新记忆并写入。Dream 不负责提取,只负责整理。
- **CLAUDE.md**:项目级指令文件,加载到上下文中但不属于记忆系统。
- **Team Memory**(`TEAMMEM` feature):团队共享记忆目录,与个人记忆使用相同的 Dream 机制。
## 关联笔记
- [[claude-code-best/docs/features/kairos]]
- [[claude-code-best/docs/features/teammem]]