~/.openclaw/workspace 迁到 workspace-main 等 per-agent 目录时未做可回滚备份。本文给出四类「迁移后失忆」根因对照表、迁移前必须打包与禁止直拷的目录清单、六步从本机打包到云节点 openclaw doctor 验收的可跟做路径,以及大 workspace 与旁路 Xcode 并存时的档型决策树;并与站内 官方 install-daemon、诊断梯子、channels 探针、常驻稳定性、无头 SSH 跟做 交叉阅读,避免在云上重复踩「只拷了配置、没拷记忆」的坑。
2026 年 OpenClaw 迁移后「像全新 Agent」:四类根因与可写入变更单的对照表
OpenClaw 把配置与凭据放在 ~/.openclaw/,把长期记忆、人格与 skills放在 workspace 树(默认 ~/.openclaw/workspace,多 Agent 场景可能是 workspace-{agentId})。社区在 2026.3.x 一带出现过从统一 workspace 迁到 per-agent 路径时未自动搬迁 MEMORY.md 与 memory/YYYY-MM-DD.md 的案例:Gateway 仍能启动,但对话上下文与 curated 记忆读的是空目录,体感就是「升级把脑子清空了」。若你尚未区分「配置丢失」与「workspace 丢失」,会误把排障时间花在换模型或重配 channels 上。
第二类根因是只 scp 了 openclaw.json,未打包 credentials/、sessions/ 与 workspace 下的 skills/、AGENTS.md、SOUL.md 等文件;Dashboard 能登录,工具链却像第一次 onboard。第三类是launchd 环境变量与交互 shell 不一致:本机打包路径在 plist 的 WorkingDirectory 或 OPENCLAW_* 变量里写死旧目录,迁云后进程读的是另一棵树。第四类是跨大版本未在目标机跑 openclaw doctor,schema 迁移半完成,表现为部分字段静默回默认。应先对照 常驻稳定性 把「状态目录不进同步盘」写进工单,再执行本文备份与六步迁移,否则高频小文件写入会在网盘同步层放大锁竞争。
per-agent 路径变更未拷贝:旧 workspace/* 仍在磁盘,但 Gateway 已指向 workspace-main 空目录。
只迁配置未迁 workspace:openclaw.json 在、MEMORY.md 不在。
守护进程工作目录漂移:launchd 仍指向本机用户路径或已释放的旧节点挂载点。
版本跨度未 doctor:配置 schema 与二进制不一致,字段静默回默认。
把设备 token 当可移植文件:复制无效,应在目标机重新配对并单独留痕。
当你已经按 官方 install-daemon 在云主机装好 Gateway,迁移验收的「单一事实源」应写成四行:workspace 绝对路径、openclaw 版本、doctor 退出码、首条业务消息 ID 或时间戳。任何换区或升档变更必须同时更新四行之一并保留上一版 tarball 哈希,便于回滚而不是口头「应该备份过了」。若 channels 在迁移后异常,应先用 channels 探针 确认监听与 token 真源,再判断是否为记忆目录问题。
平台负责人还应把「迁移」与「新装」拆成两条工单模板:新装可以空 workspace 起步,迁移必须附 tarball 校验和与 doctor 附件。混用模板会导致评审时把「接受清空记忆」误当成默认选项,事后无法向业务方解释为何 curated 记忆消失。
迁移前备份清单:必须打包、建议打包与禁止直拷的三类目录
备份的目标不是「把整个 home 目录打 tar」,而是让目标机上的 Gateway 在 doctor 之后能读到与源机相同的记忆与技能边界。必须打包项包括:~/.openclaw/openclaw.json、credentials/、sessions/(若团队依赖会话连续性)、以及完整 workspace 树——至少含 MEMORY.md、memory/、skills/、USER.md 等团队实际使用的文件。建议额外打包你们约定的持久日志分流目录最近七天的轮转文件,便于与 诊断梯子 对照,但不要把巨型日志打进生产迁移包拖慢传输。
下表可直接贴进变更单「迁移包内容」栏,与 无头 SSH 中的 PATH 验收并列执行:先证明 tarball 里有什么,再证明目标机读到了什么。
| 路径/对象 | 是否必须 | 迁移到云 Mac 的注意点 |
|---|---|---|
| openclaw.json + credentials | 必须 | 解压后权限收紧;禁止进团队同步盘 |
| workspace 全树(含 MEMORY、memory/、skills/) | 必须 | 核对目标 agentId 对应目录名 |
| sessions/ | 视团队策略 | 大体积时可只迁活跃会话子集 |
| 设备 token / 本机钥匙串项 | 禁止直拷 | 在目标机重新配对 |
| LaunchAgent plist 原样覆盖 | 谨慎 | 应改路径与 Label 后重装 daemon |
迁移包里没有 MEMORY.md,就不是迁移,只是重装 Gateway。
打包时建议在源机执行校验和并写入变更单,避免 SCP 中断后 silent truncate。对于要把 tarball 经公网传到云节点的团队,优先走团队已批准的加密通道(如经堡垒机 rsync),而不是把含 API 凭据的归档长期放在对象存储公开桶。若 workspace 已超过数 GB(大量 skill 资产或大体积 memory 日志),应在打包前评估目标机 SSD 档型,这与下文 M4 Pro 决策树直接相关,而不是等到解压时才发现根分区不足。
命令块:本机打包、上传云节点与 doctor 前的路径核对
下列命令块为公开文档常见骨架,落地时应替换为团队冻结的 openclaw 版本,并在变更单附上 tarball 的 shasum -a 256。执行前确认源机与目标机 Node 大版本一致,否则先在目标机完成 install 再解包 workspace,避免「二进制新、记忆旧」的半兼容状态。若目标机尚未装 CLI,请先完成 官方 install 再解包,不要倒序操作。
openclaw --version ls -la ~/.openclaw/workspace* tar -czf openclaw-migrate-$(date +%Y%m%d).tgz \ -C "$HOME" .openclaw/openclaw.json \ -C "$HOME" .openclaw/credentials \ -C "$HOME" .openclaw/workspace shasum -a 256 openclaw-migrate-*.tgz scp openclaw-migrate-*.tgz user@cloud-mac:~/ ssh user@cloud-mac 'openclaw gateway stop || true' ssh user@cloud-mac 'tar -xzf openclaw-migrate-*.tgz -C $HOME && openclaw doctor'
提示:若你使用 workspace-main 等多 Agent 目录,把 tar 的 -C 路径改成实际 workspace-* 名称;与 无头 SSH 跟做 中的 non-interactive PATH 口径保持一致。
解压后不要立刻 gateway start:先跑 openclaw doctor 并保存完整 stdout 到变更单附件,再对照 workspace 内 MEMORY.md 时间戳是否与源机一致。若 doctor 提示迁移 workspace 路径,按提示合并而非覆盖旧目录内容,除非变更单明确写了「接受清空记忆」。doctor 通过后再执行 install-daemon,避免 plist 指向尚未合并完成的空目录。
六步:从本机打包到云 Mac 首条消息验收的可回滚迁移路径
冻结版本并记录 workspace 路径:打印 openclaw --version 与 ls ~/.openclaw/workspace* 写入变更单。
停源机 Gateway 并打 tarball:含 json、credentials、完整 workspace;生成 sha256。
在云节点准备非同步盘目录:确认根分区余量大于 tarball 解压后 1.5 倍。
上传并停目标 Gateway:避免解压时双写 sessions。
解压后跑 doctor 再 install-daemon:与 官方路径 对齐 plist 真源。
首条消息验收并留痕:对照 MEMORY 片段、channels 探针(若已接)与 gateway 健康检查 JSON 一行。
六步完成后,工单应能回答「本次动的是 tarball 内容、workspace 路径、doctor 结果还是档型」四选一。若仅换 KVMNODE 区域而主机名不变,仍建议把 tarball 存一份到团队制品仓,因为区域迁移常伴随 IP 与出口策略变化,回滚时需要的是「记忆 + 配置」而不是重装空白 Gateway。验收周请固定每天一次 openclaw doctor 快照,便于与 诊断梯子 的 L1/L2 字段对齐。
换区与档型:大 workspace、多 skill 与旁路 Xcode 并存时的 M4 与 M4 Pro 决策
workspace 体积增长往往比 CPU 峰值更早触顶:大量 memory/*.md、skill 仓库与并行下载会同时占用磁盘 IOPS 与统一内存页缓存。若迁移后还要在同一独占机上跑 Xcode 或 Flutter archive,应把「迁移验收周」的观测指标设为:解压后根分区使用率、Gateway 健康检查 P95、并行构建时是否出现 memory pressure 日志。
workspace 解压后体积:超过 30GB 或周增长 >5GB 时,优先复查 memory 轮转与 skill 资产,再谈升档。
统一内存压力:迁移周若出现构建与 Gateway 同时触顶,记录 memory pressure 事件次数写入采购附件。
区域与 RTT: tarball 传输完成不等于数据面同洲;Git 与制品仍远区时先对齐选区再锁 M4 Pro。
| 画像 | M4 16GB/256 | 24GB/512 | M4 Pro 高统一内存 |
|---|---|---|---|
| 轻量 workspace + 单 Gateway | 可用 | 更稳 | 通常过度 |
| 大 MEMORY + 多 skill + 日更 memory 日志 | 风险 | 优先 | 视并行度 |
| 迁移周同时跑 iOS CI 与 Agent | 不推荐 | 中 | 优先 |
注意:不要把「迁到云」当成自动备份;云主机重建或换区仍可能清空本地盘, tarball 必须进团队保留策略。
用个人 Mac 做唯一备份源,合盖与睡眠会导致备份窗口不可预测,且无法合同化 7×24 验收;纯脚本 cron 在本机也常因用户切换或权限弹窗中断。sleep 频繁的笔记本也不适合作为「迁移后仍要持续写入 memory 日志」的宿主。对于要把 OpenClaw 记忆与 Gateway 一起迁到可审计、可换区、可升档独占机的团队,KVMNODE 的 Mac Mini 云端租赁通常是更优解:独占 Apple Silicon、六区节点、按天到可切换租期,让「打包—解压—doctor」与 CI 共用同一套选区语言。下单见 订购入口,操作说明见 帮助中心,档位见 定价页。