openclaw重启后配置丢失是因未正确持久化或读取错误路径。需验证配置路径、强制重写标准配置、启用git声明式恢复、固化服务启动上下文、禁用自动初始化。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您重启 OpenClaw 后发现配置文件内容恢复默认、插件未加载或会话策略重置,则很可能是配置未正确持久化或服务启动时读取了错误路径的配置文件。以下是解决此问题的步骤:
一、验证配置文件实际读取路径与状态
OpenClaw 启动时严格依据 ~/.openclaw/openclaw.json 路径加载配置,若该路径下文件缺失、为空或格式非法,将触发默认配置回退。需确认当前运行实例是否真正使用该路径。
1、执行命令检查实际加载路径:
openclaw config path
2、确认文件是否存在且可读:
Test-Path "$HOME\.openclaw\openclaw.json"(Windows PowerShell)
或
ls -l ~/.openclaw/openclaw.json(macOS/Linux)
3、检查文件内容是否符合 JSON Schema:
openclaw doctor --validate-config
二、强制重写并锁定标准配置文件
当检测到配置被覆盖或未写入时,应绕过临时缓存,直接向标准路径写入完整、合法的配置模板,确保每次启动均加载一致定义。
1、停止当前运行的服务:
openclaw stop
2、备份现有配置(如存在):
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
3、生成标准配置文件(含基础会话策略与插件占位):
echo '{\"version\":\"1.0\",\"session\":{\"reset\":{\"mode\":\"idle\",\"timeout\":3600}},\"plugins\":[],\"gateway\":{\"mode\":\"local\",\"port\":18789}}' | Out-File -Encoding UTF8 ~/.openclaw/openclaw.json(PowerShell)
或
echo '{"version":"1.0","session":{"reset":{"mode":"idle","timeout":3600}},"plugins":[],"gateway":{"mode":"local","port":18789}}' > ~/.openclaw/openclaw.json(bash)
三、启用 Git 驱动的声明式恢复机制
OpenClaw 内置 RESTORE.md 作为配置快照载体,该文件随 Git 提交同步,可在任意新环境一键还原全部配置与插件状态,从根本上规避重启丢失风险。
1、确认项目根目录已初始化 Git:
git status
2、生成当前配置对应的声明式恢复文档:
openclaw restore export
3、提交该文件至版本库:
git add RESTORE.md && git commit -m "save config snapshot before reboot"
4、重启后立即执行恢复:
openclaw restore apply
四、校验并固化服务级启动上下文
部分系统(尤其是 macOS 和 systemd 环境)中,服务以不同用户身份或无 HOME 环境变量启动,导致 OpenClaw 无法定位 ~/.openclaw 目录,转而创建临时配置。必须显式绑定用户上下文与配置路径。
1、macOS 用户:编辑 launchd plist 文件,确保设置正确的 UserName 和 EnvironmentVariables:
vim ~/Library/LaunchAgents/io.openclaw.daemon.plist
2、在
3、Linux systemd 用户:检查 service 文件中 WorkingDirectory 与 User 字段:
sudo systemctl edit openclaw.service
4、添加覆盖项:
[Service]
WorkingDirectory=/home/youruser/.openclaw
User=youruser
五、禁用可能导致覆盖的自动初始化行为
OpenClaw 在未检测到有效配置时会自动生成最小化默认配置,该行为可能覆盖手动修改内容。需关闭非交互式初始化入口,防止意外重写。
1、检查是否启用了自动 init 钩子:
cat ~/.zshrc | grep "openclaw init"
或
cat ~/.bashrc | grep "openclaw init"
2、注释或删除类似行:
# openclaw init --force
3、验证启动脚本中无隐式调用:
openclaw start --no-init
4、永久禁用初始化钩子:
openclaw config set system.auto_init false










