10 个卡点逐一拆解 · 风险评级 · 缓解方案 · Clash Verge 迁移指南
描述:Homebrew 安装依赖 Xcode Command Line Tools,首次安装可能弹出 GUI 对话框
影响:用户需在 Mac mini 屏幕上点一次"安装"按钮
缓解:用户在 bootstrap 阶段在场,可手动确认。bootstrap.sh 预先执行 xcode-select --install
结论:不阻塞
描述:VPS 通过反向 SSH 隧道(VPS:22022 → Mac:22)远程控制 Mac mini,依赖家庭宽带稳定性
影响:家庭网络断开 = Hermes 失联,无法远程操作
缓解:LaunchDaemon KeepAlive=true + ServerAliveInterval=30s + 自动重连。家庭宽带通常稳定(宽带运营商 SLA > 99.5%)
结论:可接受,隧道断开后自动恢复(< 1 分钟重连)
描述:Homebrew + 全套软件安装约 20-30 分钟,期间隧道需保持连接
影响:如果中途断网,部分安装未完成
缓解:所有 brew 命令幂等(重复执行不报错),安装脚本支持断点续装
结论:不阻塞
描述:state.db 311MB、skills 22MB、总 3.2GB,经反向 SSH 隧道传输
影响:新加坡 VPS → Mac mini 经隧道,速度受家庭宽带上行限制
缓解(三选一):
① 先 rsync 主体(非 db),再单独 rsync state.db
② rsync -avz --compress 压缩传输
③ MacBook 直连 Mac mini 内网传输(千兆局域网,最快)
结论:可接受,一次性操作
描述:Discord bot token 只允许一个 WebSocket 连接。必须先停 VPS gateway,再启 Mac mini gateway
影响:切换期间(~30s)Discord 无响应。如果两端同时在线,Discord 会踢旧连接导致不稳定
缓解:脚本化严格执行 stop → wait 5s → start 序列:
# VPS 侧 systemctl --user stop hermes-gateway sleep 5 # Mac mini 侧(通过隧道 SSH) ssh mac-mini "hermes gateway start"
结论:⚠️ 需严格按序执行,但机制明确可控
描述:用户在腾讯云控制台购买轻量应用服务器 2核2G 北京地域
推荐配置:腾讯云轻量应用服务器 2核2G 3Mbps 50GB SSD,Ubuntu 22.04,北京地域,~50元/月
结论:不阻塞
描述:Hermes SSH 登录北京 VPS,apt 安装 WireGuard,生成密钥对,配置服务端
影响:标准 Linux 操作,Hermes 完全可远程完成
结论:不阻塞
描述:Clash Verge 的 TUN 模式和 WireGuard 都会修改系统路由表和 DNS。如果路由范围重叠,可能导致流量环路或断网
结论:已消除 ✅ — 用户确认 Clash Verge 使用系统代理模式(非 TUN),不修改路由表,与 WireGuard 完全不冲突。WireGuard 正常配置 AllowedIPs = 10.0.0.0/24 即可。
描述:Clash Verge Rev 是 GUI 应用,通常需要显示器操作
结论:已解决 ✅ — 用户在 Mac mini 上自己安装 Clash Verge Rev 并手动填入订阅 URL(与 MacBook 上操作一致),不需要 Hermes 远程预配置。Hermes 只负责安装其他所有软件。
描述:用户需在 Mac mini 上配置 Clash Verge
结论:已解决 ✅ — 用户自行在 Mac mini 上安装 Clash Verge Rev + 填入订阅 URL,无需 Hermes 介入。与 MacBook 上的操作完全一致。
| 编号 | 名称 | 风险等级 | 状态 |
|---|---|---|---|
| 0 | Xcode CLT 首次安装 | 🟢 低 | 用户在场可解决 |
| 1 | 反向 SSH 隧道稳定性 | 🟡 中 | KeepAlive 自动重连 |
| 2 | brew install 耗时 | 🟢 低 | 幂等可断点续装 |
| 3 | 数据迁移 3.2GB | 🟡 中 | 压缩/内网传输 |
| 4 | Discord Gateway 切换 | 🔴 高 | ⚠️ 脚本化严格序列 |
| 5 | 北京 VPS 购买 | 🟢 低 | 纯用户操作 |
| 6 | WireGuard 安装 | 🟢 低 | 标准远程操作 |
| 7 | Clash+WG 路由冲突 | ✅ 消除 | 不开 TUN,无冲突 |
| 8 | Clash Verge GUI 依赖 | 🟢 低 | 用户自行配置 |
| 9 | Clash 配置迁移 | 🟢 低 | 用户自行配置 |
10 个卡点中:低风险/已消除 8 个 · 中风险 1 个 · 高风险 1 个
仅 1 个高风险点(Discord 切换)有明确缓解方案,Clash 相关卡点已全部降级为低风险
方案可行,无致命阻塞 ✅
打开 Clash Verge Rev → 订阅管理 → 找到当前订阅的 URL(形如 https://xxx.com/api/v1/client/subscribe?token=...)
或终端执行:cat ~/Library/Application\ Support/io.github.clash-verge-rev.clash-verge/profiles/*.yaml | grep -m1 url
在 Discord 对话中把订阅 URL 发给我。我会在 Mac mini 上自动安装 Clash Verge Rev 并配置好。
brew install --cask clash-verge-rev # 预配置 profiles 目录 # 设置系统代理 + 开机自启 # TUN 模式排除 wg0 接口
curl --proxy socks5://127.0.0.1:7890 https://www.google.com 返回 200
或 curl https://ipinfo.io 确认出口 IP 变为代理节点
如果你在 Clash Verge 中有自定义规则(非纯订阅),需要完整迁移配置目录:
MacBook 上执行:
cd ~/Library/Application\ Support/ tar czf ~/clash-verge-backup.tar.gz io.github.clash-verge-rev.clash-verge/
传输到 Mac mini:AirDrop / scp / U盘均可
Mac mini 上执行(Hermes 自动):
cd ~/Library/Application\ Support/ tar xzf clash-verge-backup.tar.gz # 重启 Clash Verge Rev
建账户、连 Wi-Fi,~10 分钟
curl -fsSL https://mac-mini-setup-b0h.pages.dev/bootstrap.sh | bash,输一次密码,~2 分钟
等 Hermes 远程安装完通知你,~30 分钟(期间你可以做别的)
轻量应用服务器 2核2G 北京,~10 分钟
和 MacBook 上一样的操作,系统代理模式(不开 TUN),~5 分钟
用户实际操作时间:~25 分钟(不含等待)
Mac mini 是 7x24 AI 中枢,MacBook Pro 是你的移动办公主力。两种连接场景:
| 用途 | 方式 | 操作 |
|---|---|---|
| SSH 终端 | 内网直连 | ssh 用户名@Mac-mini的局域网IP(Mac mini 上 System Settings → General → Sharing → Remote Login 已由 bootstrap 开启) |
| 屏幕共享 | macOS VNC | MacBook 上 Finder → ⌘K → vnc://Mac-mini的局域网IP或 System Settings → Sharing → Screen Sharing (bootstrap 会自动开启) |
| 文件传输 | Syncthing / scp | Syncthing 自动同步指定目录; 临时传文件 scp 文件 用户名@Mac-mini-IP:~/ |
| Hermes 交互 | Discord | 直接在 Discord 对话即可,Mac mini 上的 Hermes 响应 |
| 用途 | 方式 | 操作 |
|---|---|---|
| SSH 终端 | WireGuard VPN | MacBook 开启 WireGuard → ssh 用户名@10.0.0.2(Mac mini 的 WG 内网 IP) |
| 屏幕共享 | WireGuard + VNC | MacBook 开启 WireGuard → Finder ⌘K → vnc://10.0.0.2 |
| Hermes 交互 | Discord(不需 VPN) | Discord 是 WebSocket 出站连接,不需要 VPN,直接对话即可 |
MacBook 从 App Store 安装 WireGuard app → 导入 Hermes 提供的配置文件(含北京 VPS 公钥、MacBook 私钥/公钥对、分配的 IP 10.0.0.3)
日常使用:点菜单栏 WireGuard 图标 → Toggle 开关即可连接/断开
无需始终保持连接——只有需要 SSH/屏幕共享 Mac mini 时才开。Discord 对话 Hermes 不需要 VPN。
迁移后 Hermes 必须和迁移前完全一致——会话历史、记忆、技能、定时任务、配置不丢失不变形。
| 迁移项 | 内容 | 大小 | 验证方法 |
|---|---|---|---|
| 会话数据库 | state.db(39 个会话,17000+ 条消息,FTS5 全文搜索索引) | 311 MB | 迁移后 hermes sessions 列出 39 个会话 |
| 会话路由 | sessions.json(Discord/Telegram 线程→会话映射) | 60 KB | Discord 发消息→路由到正确会话 |
| 持久记忆 | memories/(用户偏好、环境事实、工具经验) | 6 个文件 | Hermes 能回忆迁移前的上下文 |
| 技能库 | skills/(project-blueprint、claude-code 等 50+ 技能) | 798 个文件 | hermes skills list 列出全部 |
| 定时任务 | cron jobs(天气监控、模型追踪、仪表盘等 10 个) | 27 KB | hermes cron list 列出 10 个,下次触发时间正确 |
| 主配置 | config.yaml(provider、模型、工具链配置) | 5.3 KB | 0 处硬编码路径(已验证 ✅) |
| 密钥文件 | .cf_token、.git-credentials、.cc-switch-cli/ | ~1 KB | wrangler 部署正常、git push 正常 |
Discord bot token 只允许一个 WebSocket 连接。迁移时必须严格按序:
# 1. VPS 停 gateway(断开 WebSocket) systemctl --user stop hermes-gateway # 2. 等待 5 秒确保连接完全释放 sleep 5 # 3. Mac mini 启 gateway(接管 WebSocket) hermes gateway start # 4. Discord 发测试消息验证响应
顺序不能反、不能同时。如果两端同时在线,Discord 会反复踢旧连接,导致不稳定。
切换窗口约 30 秒,期间 Discord 消息无响应(正常现象)。
迁移前已扫描全部 10 个 cron job,发现 2 个 job(模型更新追踪、成果仪表盘)的 prompt 中含 /home/ubuntu/ 硬编码路径。
已全部替换为 ~/(9 处),迁移到 Mac mini 后路径自动适配新用户目录。
config.yaml 经验证 0 处硬编码路径,无需修改。
Hermes 在 Mac mini 上启动后,自动验证以下项:
① hermes sessions → 39 个会话可见
② hermes cron list → 10 个 job 全部 active
③ Discord 发消息 → Hermes 正常响应
④ hermes skills list → 技能库完整
⑤ hermes memory → 记忆内容可见
⑥ hermes doctor → 无报错
6 项全绿 = 无缝衔接成功 ✅