本地 AI 代理最初往往只是一个“能跑起来”的工具:在桌面机上安装,接入模型,配置几个插件,再接入聊天渠道或浏览器能力。这个阶段的重点是验证可用性,而不是长期运行。

但当一个 AI 代理开始承担更多日常任务,例如消息通道响应、文件处理、浏览器辅助、系统状态检查、项目资料检索,它就不再只是一个临时工具,而会逐渐变成本地基础设施的一部分。此时,运行位置、可用性、状态目录、外部访问入口、权限边界和数据分工都会变得重要。

这次迁移的核心,就是把 OpenClaw 的主安装实例从一台桌面 Linux 主机迁移到一台树莓派上,让树莓派承担长期在线的主服务角色,而桌面机则退回为扩展资源主机。

迁移前的结构

迁移前,OpenClaw 主实例运行在一台日常使用的桌面 Linux 主机上。它同时承担多个角色:

  • OpenClaw 主安装实例
  • 主工作区
  • 状态目录和配置目录
  • 消息通道后端
  • 浏览器/CDP 能力所在主机
  • 大型本地项目所在主机
  • 日常桌面使用环境

这种结构在早期很方便。所有东西都在同一台机器上,路径简单,浏览器也直接可见,调试成本低。需要排查时,打开终端就能看到服务、配置和日志。

但随着 OpenClaw 逐渐变成一个长期使用的代理系统,这种结构的问题也越来越明显。

首先,桌面机不是理想的 24 小时在线主机。它可能重启、关机、休眠,也可能因为桌面环境、浏览器、图形会话或用户操作影响服务状态。

其次,桌面机上同时有用户日常使用的程序和 OpenClaw 的自动化任务。一旦 AI 代理具备操作浏览器、文件和系统命令的能力,就必须严格区分“代理可管理的资源”和“用户私人使用的资源”。

第三,桌面机上的 OpenClaw 历史安装路径、配置目录、浏览器 profile、systemd user service、shell alias、旧备份目录等内容逐渐混杂。继续在原地修补,会让整个系统越来越难判断边界。

因此,迁移的目标不是单纯“换一台机器运行”,而是重新划分职责。

迁移后的目标架构

迁移后的结构可以概括为:

树莓派节点:
- OpenClaw 主安装实例
- 主状态目录
- 主工作区
- 消息通道后端
- gateway / dashboard 主入口
- 长期在线运行

桌面节点:
- 不再运行旧 OpenClaw 主实例
- 不再作为 gateway 主机
- 保留浏览器/CDP 扩展能力
- 保留因容量原因暂未迁移的大型项目目录
- 作为按需调用的扩展资源主机

也就是说,树莓派成为 OpenClaw 的主节点,桌面机只保留少量无法或不适合迁移的能力。

这种设计的好处是,主服务变得更加稳定。树莓派功耗低,适合常驻;桌面机可以继续作为高性能或图形资源节点,但不再承担 OpenClaw 主实例的核心状态。

为什么选择树莓派作为主节点

树莓派并不适合承载所有任务。它的存储容量、CPU 性能和 I/O 能力都有限,尤其不适合大型数据库、大型本地项目和图形浏览器长期高负载运行。

但它很适合承担以下角色:

  • 低功耗常驻主机
  • 消息通道后端
  • OpenClaw gateway
  • 轻量级工作区
  • 配置、规则和记忆文件的主存放位置
  • 外部请求的统一入口

对一个本地 AI 代理来说,真正需要 24 小时在线的部分,往往不是所有计算任务,而是“入口”和“状态”。只要主实例、消息入口和规则文件稳定在线,重型任务可以交给其他机器按需完成。

这也是本次迁移的基本思路:主实例轻量化,扩展能力外置化。

域名和外部入口保持不变

迁移过程中,一个重要原则是尽量不改变外部访问入口。

原来的外部访问结构大致是:

公网域名
  -> 反向代理
  -> 内网主机上的 OpenClaw gateway

迁移后,公网域名和反向代理入口保持不变,只是后端实际承载 OpenClaw gateway 的机器从桌面机变成了树莓派。

这样做的好处是:

  • 外部 webhook 地址不需要大规模重配
  • 已有消息通道配置可以继续使用
  • dashboard 访问入口保持一致
  • 迁移风险集中在内网后端,不扩散到公网配置

也就是说,公网入口不代表 OpenClaw 必须运行在原来的机器上。只要反向代理或内网转发链路指向新的后端,外部域名可以保持稳定。

主状态目录和工作区迁移

OpenClaw 迁移中最关键的不是程序本身,而是状态和工作区。

程序可以重新安装,但以下内容必须谨慎迁移:

  • 配置文件
  • SecretRef 或 token 引用
  • 插件配置
  • 工作区文件
  • memory 文件
  • sessions / transcript
  • channel 配置
  • dashboard 授权状态
  • 插件 registry 状态

迁移后,树莓派上的主目录成为新的事实来源:

主状态目录:<saturn-openclaw-state>
主工作区:<saturn-openclaw-workspace>

桌面机上的旧状态目录不再作为 OpenClaw 主状态来源。旧安装路径、旧服务、旧命令入口、旧 shell alias 也需要清理,否则后续很容易误操作旧实例。

这一步的核心判断是:迁移完成后,只能有一个主实例。否则一旦桌面机和树莓派上都残留可启动的 OpenClaw gateway,就很难判断当前响应消息的是哪个实例,配置修改写到了哪边,插件状态又属于哪一边。

桌面机不再是主实例,但仍然有价值

迁移完成后,桌面机没有被完全废弃,而是被重新定位。

它保留两个主要角色:

第一,作为浏览器/CDP 扩展主机。

树莓派可以运行 OpenClaw 主实例,但不一定适合运行完整图形浏览器。桌面机本来就有图形环境、浏览器、窗口系统和更强的桌面交互能力,因此更适合提供按需浏览器能力。

第二,作为大型项目的扩展存储和计算节点。

部分大型项目由于容量或性能原因,没有迁移到树莓派。这类目录继续保留在桌面机上,由 OpenClaw 在需要时通过 SSH 或其他方式调用。

因此,迁移后的桌面机并不是“旧主机残留”,而是一个明确降级后的扩展资源节点。

为什么不能把所有东西都迁到树莓派

理论上,完整迁移意味着所有工作区、项目、浏览器 profile 和历史数据都转移到树莓派。但实际操作中,这并不总是合理。

树莓派的 SD 卡容量有限,大型项目、虚拟环境、数据集、历史输出文件可能会占用大量空间。强行全部迁移,会让树莓派成为新的瓶颈。

更合理的做法是区分三类数据:

必须迁移:
- OpenClaw 主配置
- 主工作区
- 规则文件
- 记忆文件
- 消息通道配置
- 当前运行状态所需文件

可以留在桌面机:
- 大型项目
- 数据集
- 图形浏览器 profile
- 临时输出
- 不适合放在 SD 卡上的资源

应该清理:
- 旧安装目录
- 旧服务文件
- 已经迁移且内容完全一致的重复文件
- 旧 shell alias / PATH 残留
- 无意义的历史缓存

这样,迁移不是简单复制,而是一次结构整理。

迁移后的最终分工

迁移完成后,系统分工变得清晰:

树莓派节点:
- OpenClaw 主实例
- gateway
- dashboard
- 消息通道
- 主工作区
- 长期规则和记忆
- 插件配置

桌面节点:
- 不运行旧 OpenClaw gateway
- 不保存主状态
- 保留专用浏览器 profile
- 保留大型扩展项目
- 按需接受主节点调用

这种分工避免了“两个主实例”并存,也避免了桌面机长期承担后台服务的压力。

迁移的真正目的

这次迁移表面上是从一台桌面机迁到一台树莓派,实际上是一次本地 AI 代理基础设施的角色重构。

迁移前,OpenClaw 是一个运行在桌面机上的工具。

迁移后,它变成了一个以树莓派为主节点、桌面机为扩展节点的本地代理系统。

最重要的变化不是路径,也不是端口,而是职责边界:

  • 主实例只有一个
  • 状态来源只有一个
  • 桌面机不再承载主服务
  • 扩展资源按需调用
  • 浏览器和大型项目从主实例中解耦
  • 旧实例彻底退出运行链路

这让整个系统更接近一个可长期维护的结构,而不是不断叠加补丁的临时安装。

小结

本次迁移可以总结为一句话:

把 OpenClaw 的主状态和长期在线能力迁到树莓派,把桌面机降级为按需调用的扩展资源主机。

这种结构并不追求所有任务都在树莓派上完成,而是让树莓派承担稳定入口和主状态,让桌面机继续提供浏览器、图形环境和大型项目能力。

对本地 AI 代理来说,这种分工比“所有东西塞进一台机器”更容易维护,也更容易控制风险。

后续还需要处理迁移后的插件修复、旧实例清理、浏览器/CDP 调用规则、AI 代理误操作边界,以及重复文件审计清理等问题。这些内容属于迁移后的收尾和加固阶段,可以拆成后续几篇继续展开。

Leave a Reply

Your email address will not be published. Required fields are marked *