Linux systemd 下 OpenClaw 网关与用户环境变量示意

2026 年 OpenClaw 在 Linux systemd 上升级后「网关能起但配置像空的」:service 环境(HOME/User)漂移、旧路径残留与按官方 Troubleshooting 的合并恢复闭环

非登录型 systemd 用户单元里跑 openclaw gateway 时,升级后常出现进程 active 但面板像空配置:多半是 HOME/XDG 与交互 shell 不一致,或旧 json 未合并到新默认路径。本文给三分层 + 环境核对 + 合并快照 + doctor 阶梯,并联 split brain、Docker 令牌、macOS gateway restart 专文边界。

1. 现象三分层:进程在 / RPC 不通 / 配置空壳

进程层systemctl --user status 为 active,ss 也能看到监听端口,但不代表读到了你熟悉的 openclaw.json。User 单元若未设置 WorkingDirectoryHOME,Node 侧可能回落到包内默认目录并生成空壳配置树

RPC 层openclaw gateway status 若 build 与 CLI semver 不一致,应优先对照《split brain 与 meta.lastTouchedVersion》,而不是先删整个 ~/.openclaw

配置壳层:目录存在但 pluginschannels 块像被「重置」,常见是写到另一份 XDG_CONFIG_HOME;升级脚本若改动默认搜索顺序,旧文件仍躺在上一大版本路径里,看起来像「升级吃配置」。

  1. journal:搜 ENOENTHOMEconfig path
  2. 三路径 diff:登录 shell、非登录、systemctl --user show 的 Environment。
  3. 先 tar 快照再合并,避免不可逆误操作。

2. status→gateway status→logs→doctor 阶梯

与《官方 gateway probe 阶梯》一致:先证 RPC/监听再 doctor,避免把 HOME 漂移误判为 429 或插件 shape。doctor 修复前后各跑一次 gateway status 写入变更单。

3. 决策矩阵:仅重启 vs 合并 vs install --force

用于升级窗口分钟级决策;多机 fleet 先冻结镜像再滚动。

症状签名 首选动作 风险
Environment 缺 HOME,配置落在 /tmp 或包内 drop-in 补 HOME/WorkingDirectory 后重启 低:可回滚单元
旧路径仍有完整 json,新路径 skeleton 合并 + 提升 meta 版本记录 中:合并冲突需人工 diff
CLI 与 gateway semver 分裂且 doctor 报 install gateway install 或 --force(变更窗内) 高:改写服务文件

4. How-to:七步合并与验证清单

服务名以单元 Id= 为准;维护窗口执行并留审计副本。

# 1) 查看用户单元实际环境(示例)
systemctl --user show openclaw-gateway.service -p Environment -p WorkingDirectory

# 2) 与交互 shell 对照
echo "$HOME" "$XDG_CONFIG_HOME"

# 3) 快照(示例路径请按主机调整)
tar czf ~/openclaw-premerge-$(date +%Y%m%d%H%M).tgz ~/.openclaw ~/.config/openclaw 2>/dev/null
  1. 冻结并发:禁并行 install 与 vim 同一 json。
  2. 导出 root/登录/单元三份 env
  3. gateway status 的 config root 为准。
  4. channels、credentials、plugins 分块合并。
  5. doctor 后复验 status 与 channels。
  6. 无头场景核对 loginctl linger。
  7. 变更单记 semver、drop-in 哈希、回滚 tar。

5. 可引用检查项与环境对照表

可打印进值班手册。

检查项 命令/线索 期望
User 单元 HOMEsystemctl --user show与拥有配置的用户主目录一致
lingerloginctl show-user无头场景下会话不随 SSH 断开而灭
journal 关键字journalctl --user -u无持续 ENOENT 读配置

6. 与 split brain、Docker、macOS 文的边界

split brain管 CLI/守护 semver 与 meta,可与 HOME 漂移叠加,先版本后路径。《Docker Compose 令牌》属容器平面,与裸 User 单元 drop-in 不同。

macOS 见《gateway restart》:plist/Node 前缀;Linux 重 UserWorkingDirectory、linger。

7. FAQ

问:能否直接删除 skeleton 再 cp 旧文件?答:可以但务必先快照并停服务,避免运行中半写 json;更稳妥是分块 merge 并跑 doctor。

问:root 与同名用户各跑一份网关会怎样?答:端口与配置根都会冲突;请在单元里用 User= 明确属主并禁用多余副本。

问:升级频率高的小团队如何减负?答:把可重复环境交给托管平面,减少自建机上「人肉合并」次数;见下文。

8. 总结与远程 Mac 托管收束

要「读对配置」须把 HOME/XDG 与单元写入同一真相源,用官方阶梯验 RPC,而非盲重启。

自建仍要人盯 drop-in、镜像与合并纪律;高频升级下漂移会复发。

若要把网关稳定与目录隔离迁到对齐 Apple 生态的远程 Mac 托管,见 SFTPMAC 远程 Mac 租赁 与帮助中心,收敛升级空配置类问题。