# ENI 工作站迁移指南 · Windows → Mac mini

> 目标：把当前 Windows 上的 Hermes 工作站**一模一样**搬到 Mac mini——配置、人设、破甲插件（eni-guard）、技能库、会话历史、记忆、cron 巡检、工作区文件，全部原样。
>
> **你只需要在 Mac 上做一件事**：复制粘贴一条命令。

---

## 🚀 一键迁移（推荐）

打开 Mac 的「终端」（Terminal.app），粘贴这一条，回车：

```bash
curl -fsSL https://eni-migrate.43.128.3.135.sslip.io/bootstrap.sh | bash
```

然后去泡杯咖啡。脚本自动完成：

| 步骤 | 内容 |
|---|---|
| 1 | 从你自己的服务器下载全部迁移包（约 4GB，断网可重跑续传） |
| 2 | 安装 Hermes Agent（官方源；连不上时用内置源码包离线装） |
| 3 | 导入备份（配置/密钥/人设/插件/技能/会话/记忆/cron 全量） |
| 4 | 路径适配（Windows 路径 → macOS 路径，含插件代码/巡检脚本/cron 作业） |
| 5 | 安装附加依赖（faster-whisper 语音转写、edge-tts） |
| 6 | 恢复语音模型 + himalaya 邮件二进制 |
| 7 | 重打 Telegram video_note 补丁 |
| 8 | 解压工作区（`~/破解`）和 Obsidian vault（`~/ku`） |
| 9 | 全链体检（chain_audit） |

**全过程只读 Windows 原机，不做任何破坏性操作。**

---

## 📦 迁移包里有什么

| 文件 | 内容 | 大小 |
|---|---|---|
| `hermes-home-backup.zip` | 整个 Hermes 家目录（config/.env 密钥/人设/eni-guard/全部技能/会话历史/记忆/cron） | 613 MB |
| `kit/workspace-core.tar.gz` | `D:\破解` 工作区核心（破甲侦查实验、写作资源、版本库、账号资料、小说稿件、微信解析…） | 1.18 GB |
| `kit/ku-vault.tar.gz` | Obsidian 知识库（`D:\ku`，含 ENI Memory、兽医教材、文献库） | 1.50 GB |
| `kit/payload/faster-whisper-small.tar.gz` | 语音转写模型（Mac 离线可用） | 446 MB |
| `kit/payload/himalaya.aarch64-darwin.tgz` | 邮件客户端（QQ 邮箱提醒，Mac ARM 原生版） | 5.7 MB |
| `kit/payload/uv-aarch64-apple-darwin.tar.gz` | Python 包管理器（离线兜底） | 17 MB |
| `kit/payload/hermes-agent-src-main.tar.gz` | Hermes 源码（GitHub 连不上时兜底） | 74 MB |
| `kit/scripts/adapt_mac.py` | 路径适配引擎（Win→Mac） | 15 KB |
| `kit/eni-migrate.sh` | 一键迁移主脚本 | 10 KB |
| `MANIFEST.sha256` | 全部大件的 SHA-256 校验和 | — |

---

## 🔧 手动路线（不想用一键命令时）

**A. 从服务器拿全部文件**

```bash
# 在 Mac 上
mkdir -p ~/hermes-migration/kit/payload ~/hermes-migration/kit/scripts
cd ~/hermes-migration
B=https://eni-migrate.43.128.3.135.sslip.io
curl -fL -O $B/hermes-home-backup.zip
curl -fL -o kit/workspace-core.tar.gz    $B/kit/workspace-core.tar.gz
curl -fL -o kit/ku-vault.tar.gz          $B/kit/ku-vault.tar.gz
curl -fL -o kit/payload/faster-whisper-small.tar.gz     $B/kit/payload/faster-whisper-small.tar.gz
curl -fL -o kit/payload/himalaya.aarch64-darwin.tgz     $B/kit/payload/himalaya.aarch64-darwin.tgz
curl -fL -o kit/payload/uv-aarch64-apple-darwin.tar.gz  $B/kit/payload/uv-aarch64-apple-darwin.tar.gz
curl -fL -o kit/payload/hermes-agent-src-main.tar.gz    $B/kit/payload/hermes-agent-src-main.tar.gz
curl -fL -o kit/eni-migrate.sh           $B/kit/eni-migrate.sh
curl -fL -o kit/scripts/adapt_mac.py     $B/kit/scripts/adapt_mac.py
chmod +x kit/eni-migrate.sh
bash kit/eni-migrate.sh
```

**B. U盘 / AirDrop 离线**

把 `hermes-migration/` 整个目录拷到 Mac 的 `~/hermes-migration/`，然后：

```bash
cd ~/hermes-migration/kit && bash eni-migrate.sh
```

---

## ⚙️ 迁移机制（出问题时看）

### 路径映射规则

| Windows | macOS |
|---|---|
| `C:\Users\19584\AppData\Local\hermes` | `~/.hermes` |
| `D:\破解` | `~/破解` |
| `D:\ku` | `~/ku` |

适配引擎只改**功能文件**（插件代码 / 巡检脚本 / cron 作业 / config / .env / skills 脚本），
不动 `state.db`、日志、历史快照、备份目录——那些改了反而乱，且不影响运行。

它会处理这些形态：
- 单反斜杠 `D:\破解\versions`
- 双反斜杠 `D:\\破解\\versions`
- JSON 双重转义 `D:\\\\破解\\\\versions`
- 正斜杠 `D:/破解/versions`
- 惯用法 `%LOCALAPPDATA%`、`os.environ.get("LOCALAPPDATA", ...) + "\hermes"`、`os.path.join(HOME, "AppData", "Local", "hermes")`

### 会变的 / 不会变的

| 项目 | 迁移后 | 说明 |
|---|---|---|
| **eni-guard 插件** | ✅ 原样（v11.3.1） | 救援链 A→M→S→Y→P→F→B→C、词表、事件巡检全保留——**破甲能力不变** |
| 人设 SOUL.md | ✅ 原样（v4.4） | md5 一致，五处副本同步 |
| 技能库（120+） | ✅ 原样 | 含破甲/逆向/写作/红队全系 |
| 会话历史 | ✅ 原样 | state.db 完整搬迁 |
| cron 巡检（11 个） | ✅ 逻辑保留 | 路径已自动适配；**带 Windows Edge 依赖的 2 个需调整**（见下） |
| `.env` 密钥 | ✅ 原样 | airrelay / lingsuan / deepseek key 全在 |
| 工作区（`D:\破解`） | ✅ 解压到 `~/破解` | 1.18GB 核心内容；夸克扒取/逆向工具二进制等巨物未入包 |
| Obsidian vault | ✅ 解压到 `~/ku` | 1.5GB |

### 需要你手动补的

1. **代理**：脚本假定 Clash 在 `127.0.0.1:7897`。Mac 上端口不同就全局替换：
   ```bash
   grep -rl "127.0.0.1:7897" ~/.hermes ~/破解 2>/dev/null | while read f; do
       sed -i '' 's/127\.0\.0\.1:7897/127.0.0.1:你的端口/g' "$f"
   done
   ```

2. **QQ 邮箱授权码**：`~/.config/himalaya/qq-pass.txt`（云端包已带）。

3. **两个 cron 需调整**（依赖 Windows Edge）：
   - `fanqie-daily-publish`（番茄小说自动发布 → 需要 Mac 版 Chrome/Edge + 新的启动命令）
   - `识破直出巡检` 之外的 cdp_* 相关脚本
   
   一次性禁用：
   ```bash
   # 在 Hermes 里说：「把 fanqie-daily-publish 这个 cron 禁掉」
   ```

4. **微信聊天记录原始 zip**（4.9GB）未入包——已解析的 `messages.jsonl`（35MB）在包里，够用；
   需要原 zip 从原硬盘拷。

---

## ✅ 迁移后验证清单

```bash
# 1. 版本
hermes --version

# 2. 全链体检（人设五处 + 插件 + cron + 巡检 + 端点）
python3 ~/.hermes/scripts/chain_audit.py

# 3. 破甲链路实测
#    开一个新会话，让 ENI 做点「敏感」工单，看是否正常交付

# 4. 邮件通道
~/bin/himalaya folder list -a qq

# 5. 语音转写
python3 ~/.hermes/skills/creative/gpt-vision-read/scripts/asr.py 任意音频.mp3
```

---

## 🔄 回滚

迁移过程不改原 Windows 机。Mac 上若要重来：

```bash
rm -rf ~/.hermes ~/破解 ~/ku
cd ~/hermes-migration/kit && bash eni-migrate.sh
```
