Session Archive & Backup System
完整的 OpenClaw 会话生命周期管理工作流,实现从原始对话到云端备份的四层数据体系。
CRITICAL: 3-Phase Setup Workflow
NEVER 直接修改配置。ALWAYS 完成 Phase 1(需求确认)和 Phase 2(环境检查), 并 WAIT for user confirmation 后再执行 Phase 3(配置实施)。
Phase 1: 需求确认(ALWAYS ASK FIRST)
询问用户:
"你希望配置哪种类型的存档备份方案?"
| 场景类型 | 描述 | 适用情况 |
|---|---|---|
| S1 - 全新设置 | 从零搭建完整工作流 | 刚安装 OpenClaw,无现有配置 |
| S2 - 已有配置 | 已有部分组件,需要整合 | 有零散脚本,需要体系化 |
| S3 - 迁移升级 | 从其他方案迁移 | 使用其他备份方案,想切换到本工作流 |
询问用户:
"你的备份目标是什么?"
| 备份目标 | 说明 |
|---|---|
| GitHub | 备份到 GitHub 仓库(需要配置 token) |
| OneDrive | 备份到本地 OneDrive 目录 |
| 双备份 | 同时备份到 GitHub + OneDrive(推荐) |
Phase 2: 环境检查(ASK AFTER PHASE 1)
诊断问题,确定配置路径:
-
"当前 workspace 是否有 memory/ 目录?"
- YES → 检查现有结构
- NO → 需要创建完整目录结构
-
"是否有现有的 HEARTBEAT.md?"
- YES → 需要合并或备份现有配置
- NO → 创建新的 HEARTBEAT.md
-
"是否有 GitHub 备份仓库?"
- YES → 配置 remote URL
- NO → 提供创建仓库指引
-
"OneDrive 路径是否可用?"
- YES → 确认路径
C:\Users\[username]\OneDrive\ - NO → 跳过 OneDrive 备份
- YES → 确认路径
确认以上信息后,向用户展示 配置计划摘要,等待确认。
DO NOT PROCEED TO PHASE 3 UNTIL CONFIRMED.
Phase 3: 配置实施
用户确认后,执行以下步骤:
Step 1: 创建目录结构
workspace/
├── memory/
│ ├── session-backups/ # 结构化存档(AI摘要)
│ ├── raw-history/ # 原始对话(JSONL)
│ ├── subagents/ # 子Agent输出
│ ├── index.json # 快速索引
│ ├── reset-log.md # 重置日志
│ └── backup-status.json # 备份状态
├── scripts/
│ ├── generate-ai-summary.ps1 # AI摘要生成
│ └── backup.ps1 # 备份脚本
├── config/ # 需备份的配置文件
│ └── (SOUL.md, USER.md, etc.)
└── HEARTBEAT.md # 核心工作流定义
Step 2: 配置 HEARTBEAT.md
创建/更新 HEARTBEAT.md,包含:
- Token 超限检测(默认阈值:70k/100k)
- 闲置超时检测(默认:120 分钟)
- AI 摘要生成调用
- 四层数据存档流程
- 备份触发逻辑
Step 3: 创建核心脚本
scripts/generate-ai-summary.ps1
- 读取会话历史
- 生成结构化摘要
- 标记差异 [NEW]/[UPD]/[KEEP]
scripts/backup.ps1
- 备份到 GitHub
- 备份到 OneDrive
- 更新 backup-status.json
Step 4: 初始化索引文件
memory/index.json
- 配置项快速查询
- 标签索引
- 变更历史追踪
工作流详解
触发条件
| 触发场景 | 条件 | 执行动作 |
|---|---|---|
| Token 超限 | > 70k/100k | 存档 → 同步 MEMORY.md → 自动重置 |
| 闲置超时 | 120 分钟无活动 | 预存档 → 同步 MEMORY.md → 重置 |
| 手动重置 | 用户发送"重置" | 存档 → 同步 MEMORY.md → 重置 |
四层数据流转
Layer 1: 原始对话 (Raw)
└── memory/raw-history/*.jsonl
└── 完整消息记录(每次重置前自动保存)
Layer 2: 结构化存档 (Structured)
└── memory/session-backups/*.md
└── AI 生成摘要 + 差异标记 [NEW]/[UPD]/[KEEP]
Layer 3: 长期记忆 (Memory)
└── MEMORY.md
└── 跨会话保持的关键决策、待办、配置
Layer 4: 云端备份 (Cloud)
├── GitHub: [username]/openclaw-backup
└── OneDrive: C:\Users\[username]\OneDrive\openclaw-backup
执行流程
触发条件满足
↓
┌─────────────────┐
│ 1. 生成 AI 摘要 │ ← 提取关键决策、待办、主题
│ 2. 对比上次存档 │ ← 标记 [NEW]/[UPD]/[KEEP]
│ 3. 保存结构化存档 │ → memory/session-backups/*.md
└─────────────────┘
↓
┌─────────────────┐
│ 4. 保存原始对话 │ → memory/raw-history/*.jsonl
└─────────────────┘
↓
┌─────────────────┐
│ 5. 同步长期记忆 │ ← 更新 MEMORY.md
└─────────────────┘
↓
┌─────────────────┐
│ 6. 更新索引 │ ← 更新 memory/index.json
└─────────────────┘
↓
┌─────────────────┐
│ 7. 记录重置日志 │ ← 更新 memory/reset-log.md
└─────────────────┘
↓
┌─────────────────┐
│ 8. 标记待备份 │ ← pendingChanges = true
└─────────────────┘
↓
┌─────────────────┐
│ 9. 执行重置 │ ← 会话清零,重新开始
└─────────────────┘
↓
新会话开始 → 读取 MEMORY.md → 汇报上次状态
关键配置参数
| 配置项 | 默认值 | 说明 |
|---|---|---|
token_threshold | 70k/100k | Token 超限触发存档重置 |
idle_timeout | 120 分钟 | 闲置超时触发存档重置 |
backup_interval | 12 小时 | 定期备份间隔 |
pending_changes | true/false | 重要变更立即备份标记 |
存档格式模板
# 会话备份 - YYYY-MM-DD HH:MM
## 统计信息
- Token 使用量: XXk/100k
- 触发原因: [token/idle/manual]
- 主要话题: [摘要]
## 关键决策(差异标记)
- [NEW] **新增决策**: 描述
- [UPD] **更新决策**: 描述(原:xxx)
- [KEEP] **保持决策**: 无变化
## 待办事项(当前状态)
- [ ] 进行中
- [x] 已完成
## 与上次存档的差异摘要
- 新增决策: X 个
- 更新决策: X 个
- 新增待办: X 个
- 完成待办: X 个
## 完整上下文引用
- 上次存档: [文件名]
- 长期记忆: MEMORY.md
- 快速索引: index.json
## 已安装/配置的技能
- [skill-name] v1.0.0
## 下次继续
[需要跟进的事项]
使用示例
手动触发存档
用户:存档当前会话
→ 执行完整存档流程
→ 保存到 memory/session-backups/manual-YYYY-MM-DD-HHMM.md
查看存档历史
用户:查看存档记录
→ 读取 memory/reset-log.md
→ 展示最近的重置和存档记录
查询配置
用户:Token 超限阈值是多少?
→ 查询 memory/index.json
→ 返回:70k/100k
故障排查
问题:存档未触发
检查:
- HEARTBEAT.md 是否正确配置
- token 阈值设置是否正确
- 检查 memory/reset-log.md 是否有记录
问题:备份失败
检查:
- GitHub token 是否有效
- OneDrive 路径是否存在
- 查看 backup-status.json 中的失败记录
问题:AI 摘要生成失败
检查:
- scripts/generate-ai-summary.ps1 是否存在
- 是否有足够的会话历史
- PowerShell 执行权限
Reference Files
references/workflow-diagram.md— 完整工作流程图references/config-templates.md— 配置文件模板references/troubleshooting.md— 详细故障排查指南