~/.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 共用同一套选區语言。下單见 訂購入口,操作说明见 幫助中心,檔位见 定價頁。