# Session Archive Backup

> OpenClaw 会话重置-存档-备份完整工作流管理。自动化处理 Token 超限、闲置超时、手动重置时的四层数据存档体系，支持 GitHub/OneDrive 双备份。 TRIGGERS: - 用户说"设置存档工作流"、"配置自动备份" - 需要建立会话生命周期管理机制 - 想要自动化重置-存档-备份流程

- Skill: `dvcrn/session-archive-backup` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add dvcrn/session-archive-backup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/session-archive-backup/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/session-archive-backup

---


# 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）

诊断问题，确定配置路径：

1. **"当前 workspace 是否有 memory/ 目录？"**
   - YES → 检查现有结构
   - NO → 需要创建完整目录结构

2. **"是否有现有的 HEARTBEAT.md？"**
   - YES → 需要合并或备份现有配置
   - NO → 创建新的 HEARTBEAT.md

3. **"是否有 GitHub 备份仓库？"**
   - YES → 配置 remote URL
   - NO → 提供创建仓库指引

4. **"OneDrive 路径是否可用？"**
   - YES → 确认路径 `C:\Users\[username]\OneDrive\`
   - NO → 跳过 OneDrive 备份

确认以上信息后，向用户展示 **配置计划摘要**，等待确认。

**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 | 重要变更立即备份标记 |

---

## 存档格式模板

```markdown
# 会话备份 - 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
```

---

## 故障排查

### 问题：存档未触发
**检查**：
1. HEARTBEAT.md 是否正确配置
2. token 阈值设置是否正确
3. 检查 memory/reset-log.md 是否有记录

### 问题：备份失败
**检查**：
1. GitHub token 是否有效
2. OneDrive 路径是否存在
3. 查看 backup-status.json 中的失败记录

### 问题：AI 摘要生成失败
**检查**：
1. scripts/generate-ai-summary.ps1 是否存在
2. 是否有足够的会话历史
3. PowerShell 执行权限

---

## Reference Files

- `references/workflow-diagram.md` — 完整工作流程图
- `references/config-templates.md` — 配置文件模板
- `references/troubleshooting.md` — 详细故障排查指南

