核心用法
Gateway Guardian 是一款专为 OpenClaw 网关设计的三层防护守护技能,通过 systemd 服务集成实现无人值守的自动化运维。
第一层防护:配置监控与自动回滚
- 使用
inotifywait实时监控~/.openclaw/openclaw.json配置文件变更 - 检测到修改时自动创建带时间戳的备份(存储于
~/.openclaw/config-backups/) - 若新配置导致网关异常,支持快速回滚至历史版本
第二层防护:崩溃自动恢复
openclaw-recovery.service作为OnFailure钩子挂载至网关主服务- 网关进程异常退出时自动触发恢复脚本,尝试重启并发送状态通知
ExecStopPost钩子执行pre-stop.sh,确保清理操作完整
第三层防护:分级通知体系
- 技术通知(紧急/状态):动态检测最活跃会话,优先私聊,无私聊时发往最活跃群组
- 群通知:若配置
STAFF_GROUP_CHAT_ID,网关恢复后自动通知固定群组 - 多通道支持:飞书(
user:ou_xxx/oc_xxx)、Telegram(chat_id/-100超组)、Discord(纯数字频道 ID)
交互触发
- 安装:用户发送 GitHub 链接并说"install this"/"帮我安装"
- 状态查询:
gateway-guardian status/ "guardian 运行正常吗" - 卸载:
uninstall gateway-guardian/ "卸载 gateway-guardian" - 团队群配置:
设置通知群: <id>/set guardian group: <id>
显著优点
- 零手动配置:AI 代理自动解析当前对话的通道元数据,智能推断 fallback 通知目标
- 语言自适应:根据用户对话语言自动设置
zh/en通知语言 - 安全设计:
guardian.conf包含敏感通知配置,明确禁止上传 GitHub;配置备份跨卸载保留 - 最小侵入:通过 systemd drop-in 机制扩展,不修改原网关服务单元文件
- 运维友好:
systemctl --user用户级服务,无需 root 权限(仅inotify-tools安装可能需要 sudo)
潜在缺点与局限性
- 平台依赖:必须运行支持
systemd --user的 Linux 发行版;macOS/WSL1 无法原生支持 - 外部工具依赖:
inotifywait需系统包管理器安装,无 sudo 场景下需用户手动介入 - 通知可靠性:动态会话检测依赖 OpenClaw 运行时的内存状态,极端情况下可能降级至
FALLBACK_TARGET - 权限边界:用户级 systemd 服务无法处理系统级网络故障或机器级宕机
- 单点配置:
STAFF_GROUP_CHAT_ID仅支持单一固定群组,多团队场景需多次重装或手动修改配置
适合人群
- 使用 OpenClaw 网关托管生产/半生产服务的个人开发者或小团队
- 需要 7×24 无人值守运维、但对复杂监控体系(如 Prometheus+Alertmanager)过度设计的轻量级场景
- 主要工作于 Linux 服务器或桌面环境,熟悉基础 systemd 命令的技术用户
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 配置泄露 | `guardian.conf` 包含聊天 ID 等敏感信息 | 文件头明确标注禁止上传 GitHub;安装流程自动跳过已存在文件 |
| 通知轰炸 | 网关频繁崩溃导致重复恢复通知 | `StartLimitBurst=3/60s` 速率限制;建议同步排查根因 |
| 备份膨胀 | 高频配置变更导致备份目录无限增长 | 当前无自动清理,建议用户定期手动清理或配置 cron |
| 依赖失效 | `inotify-tools` 被卸载或路径变更 | 服务重启时会检测,但运行时故障需手动检查日志 `/tmp/config-watcher.log` |
| 权限提升 | `curl` 下载远程脚本未校验签名 | 依赖 GitHub 仓库可信度;建议用户审查 `Dios-Man/gateway-guardian` 代码后再授权安装 |