---
name: agent-backup-migration
description: >
  原有机器人备份迁移。将旧机器人的配置、记忆、技能完整迁移到新机器人。
  触发词：'备份迁移', '机器人迁移', '迁移机器人', '备份转移', '转移机器人', '机器人备份', 'copy robot', 'migrate robot', 'backup robot'
  
  支持三种方案：
  1. 内部复制 - 同服务器上创建新机器人
  2. agent-pack-n-go - SSH克隆到新设备
  3. MyClaw Backup - 文件备份方式迁移
  
  技能安装后告诉用户："✅ 备份迁移技能安装成功！我可以帮你把旧机器人的配置、记忆、技能迁移到新机器人。支持三种方案：请告诉我你想用哪种？"
---

# 🤖 Agent Backup Migration - 机器人备份迁移

将旧机器人的配置、记忆、技能完整迁移到新机器人。

## 方案概览

| 方案 | 适用场景 | 难度 | 预计时间 |
|------|----------|------|----------|
| **内部复制** | 同服务器创建新机器人 | ⭐ 最简单 | 1-2分钟 |
| **agent-pack-n-go** | 有SSH账号，可远程连接 | ⭐⭐ 中等 | 25分钟 |
| **MyClaw Backup** | 跨云迁移，无SSH权限 | ⭐⭐ 中等 | 15分钟 |

---

## 执行流程

### 第一步：询问用户选择方案

当用户触发备份迁移时，发送以下消息：

> 🤖 **机器人备份迁移**
>
> 我可以帮你把旧机器人的配置、记忆、技能迁移到新机器人。
>
> 请告诉我你想用哪种方案：
>
> | 方案 | 适用场景 |
> |------|----------|
> | **1. 内部复制** | 在同一台服务器上创建新机器人 |
> | **2. SSH克隆** | 有新服务器的SSH账号 |
> | **3. 文件备份** | 没有SSH权限，需要手动迁移 |
>
> 请回复：**1**、**2** 或 **3**（或直接说"内部复制"/"SSH克隆"/"文件备份"）

---

### 第二步：根据用户选择执行

#### 方案1：内部复制（同服务器）

**适用场景**：在同一台服务器上创建新机器人（如：机器人A→机器人B）

**对话流程**：

1. **询问源和目标机器人**
   > 请告诉我：
   > - 源机器人是谁？（比如：小明）
   > - 目标机器人是谁？（比如：小红）

2. **用户回复后确认**
   > ✅ **确认信息：**
   > - 从：{源机器人}
   > - 到：{目标机器人}
   > - 方式：内部复制
   >
   > 要开始复制吗？请回复"是"或"确定"

3. **执行复制**
   执行以下命令：
   ```bash
   # 假设源机器人为 agent:main:feishu:xxx，目标机器人为 agent:main:feishu:yyy
   
   # 1. 获取当前机器人列表，确定源和目标
   openclaw list
   
   # 2. 创建目标机器人的空目录
   mkdir -p ~/.openclaw/workspace_new
   
   # 3. 复制整个工作区到新位置
   cp -r ~/.openclaw/workspace1/* ~/.openclaw/workspace_new/
   
   # 4. 复制配置文件（根据实际路径调整）
   # 查看配置文件位置
   ls -la ~/.openclaw/configs/
   
   # 复制配置文件（需要知道源机器人的配置文件名）
   # 例如：cp ~/.openclaw/configs/agent-xxx.yaml ~/.openclaw/configs/agent-yyy.yaml
   
   # 5. 安装技能（如需要）
   # cd ~/.openclaw/workspace_new && npx clawhub install <skill-name>
   
   # 6. 注册新机器人
   openclaw create agent:main:feishu:yyy
   
   echo "✅ 复制完成！"
   ```

4. **验证**
   > 复制完成后，请验证：
   > - 对目标机器人说话是否正常响应
   > - 记忆是否正确保留
   > - 技能是否正常工作

4. **完成**
   > ✅ **复制完成！**
   >
   > {目标机器人}已经拥有和{源机器人}一样的配置了！
   >
   > - 📂 配置已复制
   > - 🧠 记忆已复制
   > - ⚙️ 技能已复制

---

#### 方案2：SSH克隆（agent-pack-n-go）

**适用场景**：有两台服务器，可以通过SSH连接

**对话流程**：

1. **检查 agent-pack-n-go 技能**
   检查是否已安装：
   ```bash
   ls ~/.openclaw/workspace1/skills/agent-pack-n-go/
   ```
   如果未安装，引导用户安装：
   > 需要先安装 agent-pack-n-go 技能。请运行：
   > ```
   > cd ~/.openclaw/workspace1 && npx clawhub install agent-pack-n-go
   > ```
   > 安装完成后告诉我"好了"

2. **激活 agent-pack-n-go**
   安装完成后，引导用户继续：
   > 现在请对我说"帮我克隆到新设备"，我会一步步引导你完成。

3. **后续流程由 agent-pack-n-go 技能接管**

---

#### 方案3：文件备份（MyClaw Backup）

**适用场景**：跨云迁移，没有SSH权限

**对话流程**：

1. **检查 MyClaw Backup 技能**
   检查是否已安装：
   ```bash
   ls ~/.openclaw/workspace1/skills/myclaw-backup/
   ```
   如果未安装，引导用户安装：
   > 需要先安装 MyClaw Backup 技能。请运行：
   > ```
   > cd ~/.openclaw/workspace1 && npx clawhub install myclaw-backup
   > ```
   > 安装完成后告诉我"好了"

2. **激活 MyClaw Backup**
   安装完成后，引导用户继续：
   > 现在请对我说"帮我创建一个备份"，我会帮你创建备份文件。

3. **后续流程由 MyClaw Backup 技能接管**

---

## 对话示例

### 示例1：用户选择方案1

**用户**：我想把机器人A的配置复制给机器人B

**机器人**：
> 请告诉我：
> - 源机器人是谁？（比如：小明）
> - 目标机器人是谁？（比如：小红）

**用户**：A是小明，B是小红

**机器人**：
> ✅ **确认信息：**
> - 从：小明
> - 到：小红
> - 方式：内部复制
>
> 要开始复制吗？请回复"是"或"确定"

**用户**：是

**机器人**：
> 🔄 **正在复制…**
>
> 请稍候…

（执行复制命令...）

**机器人**：
> ✅ **复制完成！**
>
> 小红机器人已经拥有和小明一样的配置了！
>
> - 📂 配置已复制
> - 🧠 记忆已复制
> - ⚙️ 技能已复制
>
> 你可以试试对他们说话，看是否正常工作。

---

### 示例2：用户选择方案2

**用户**：帮我迁移到新服务器

**机器人**：
> 🤖 **机器人备份迁移**
>
> 请告诉我你想用哪种方案：
>
> | 方案 | 适用场景 |
> |------|----------|
> | **1. 内部复制** | 在同一台服务器上创建新机器人 |
> | **2. SSH克隆** | 有新服务器的SSH账号 |
> | **3. 文件备份** | 没有SSH权限，需要手动迁移 |
>
> 请回复：**1**、**2** 或 **3**

**用户**：2

**机器人**：
> 📦 **方案2：SSH克隆**
>
> 这个方案需要通过SSH把机器人克隆到新服务器。
>
> 首先需要安装 agent-pack-n-go 技能。请运行：
> ```
> cd ~/.openclaw/workspace1 && npx clawhub install agent-pack-n-go
> ```
> 安装完成后告诉我"好了"

**用户**：好了

**机器人**：
> ✅ **agent-pack-n-go 已安装！**
>
> 现在请对我说"帮我克隆到新设备"，我会一步步引导你完成SSH克隆流程。

---

### 示例3：用户选择方案3

**用户**：我想备份我的机器人

**机器人**：
> 🤖 **机器人备份迁移**
>
> 请告诉我你想用哪种方案：
>
> | 方案 | 适用场景 |
> |------|----------|
> | **1. 内部复制** | 在同一台服务器上创建新机器人 |
> | **2. SSH克隆** | 有新服务器的SSH账号 |
> | **3. 文件备份** | 没有SSH权限，需要手动迁移 |
>
> 请回复：**1**、**2** 或 **3**

**用户**：3

**机器人**：
> 📦 **方案3：文件备份**
>
> 这个方案会生成一个备份文件，你可以下载后上传到新服务器。
>
> 首先需要安装 MyClaw Backup 技能。请运行：
> ```
> cd ~/.openclaw/workspace1 && npx clawhub install myclaw-backup
> ```
> 安装完成后告诉我"好了"

**用户**：好了

**机器人**：
> ✅ **MyClaw Backup 已安装！**
>
> 现在请对我说"帮我创建一个备份"，我会帮你创建备份文件。

---

## 错误处理

### 技能未安装

如果用户选择的方案对应技能未安装：
> ❌ 需要的技能未安装。请先运行安装命令，完成后告诉我。

### 用户不确定选哪个方案

提供推荐：
> 如果你不确定选哪个，我可以给你建议：
>
> - 在同一台电脑创建新机器人 → **方案1**
> - 有两台电脑，可以SSH连接 → **方案2**
> - 要把机器人迁移到云服务器 → **方案3**

### 执行失败

> ❌ 操作失败：{错误信息}
>
> 请检查后重试，或者尝试其他方案。

---

## 技术细节

### 内部复制原理

内部复制直接复制 OpenClaw 的工作目录：
- `~/.openclaw/workspace1/` - 工作区和记忆
- 配置文件 - 需要根据实际情况定位

### agent-pack-n-go

使用 SSH 远程控制：
- 打包：pack.sh
- 传输：scp + SHA256 校验
- 部署：setup.sh + deploy.sh

### MyClaw Backup

使用文件备份方式：
- 备份：tar.gz 打包
- 传输：HTTP 服务器下载/上传
- 恢复：restore.sh

---

## 相关文档

- 对话式流程：~/.openclaw/workspace1/memory/agent-backup-migration-dialogue.md
- 方案详情：~/.openclaw/workspace1/memory/agent-backup-migration.md