OpenClaw 网关用共享密钥鉴权 RPC。在 macOS 上,该密钥常经三条通道到达进程:磁盘 openclaw.json、可能重写配置的 macOS 应用 向导,以及为无头会话注入变量的 LaunchAgent。任一层不一致就会出现「CLI 正常、菜单栏一直断开」的幽灵故障。本文给出双矩阵、八步推广与 HowTo 序列,让你的 Mac mini M4 网关主机告别「修好」与「401 Unauthorized」之间的振荡。
先读 令牌与 launchd 漂移,重启务必遵循 外部 Shell 重启手册。安装基线:安装与部署;健康自动化:doctor 与诊断。账号见 帮助;增购主机见 定价。
更像「令牌分裂」而非「模型坏了」的症状
- 人格分裂:CLI 成功而菜单栏应用卡在设置向导。
- 仅重启后 401:loginwindow 会话缺环境变量但文件令牌正确。
- 升级后 401:应用小版本升级重写 JSON,而 launchd 仍导出旧变量。
- 间歇成功:重载瞬间两个网关进程短暂竞争不同配置。
矩阵 A:各客户端从哪里读凭据
| 客户端 | 主来源 | 常见漂移 | 稳定器 |
|---|---|---|---|
| SSH 上的 CLI | 用户主目录 openclaw.json |
服务用户与管理员 $HOME 不同 |
编辑前始终 sudo 到服务账户 |
| macOS 应用 | 沙盒偏好 + JSON 合并逻辑 | 检测「无网关」后向导覆盖 | 变更控制固定应用版本;文件权威后再打开应用 |
| launchd 网关 | Plist EnvironmentVariables + 工作目录文件 | 陈旧的 OPENCLAW_GATEWAY_TOKEN 导出 |
单一写入脚本原子更新二者 |
| 自动化 Agent | 父 Shell 继承环境 | 工具沙盒剥离 env 导致缺令牌 | 在工具清单中显式指定 config 路径 |
矩阵 B:变更风险与缓解
| 变更 | 爆炸半径 | 缓解 |
|---|---|---|
| 每月轮换令牌 | 客户端重载前所有聊天通道 | 双写旧+新至少 15 分钟并监控 401 率 |
| 迁移网关用户 | 绝对路径与 plist Label | 重建符号链接;按恢复文用 --force 重装模式 |
| 新增区域主机 | 运维把令牌粘贴到错机 | 密钥库按主机命名;禁用复用剪贴板宏 |
| 启用非 loopback 绑定 | 更严鉴权要求 | 与 网关限流 白名单配对 |
数值护栏
- 轮换重叠:磁盘发布新令牌后旧令牌至少保留 900 秒。
- 相等性检查:生产网关每 6 小时 自动 diff plist 环境与文件令牌。
- 事故预算:若 401 占 RPC 超 1% 持续五分钟,自动冻结应用升级。
GUI 提示:若隐私弹窗阻止无人值守写令牌,可一次性用 VNC 点授权,再回到纯 SSH 维护。
八步推广
- 声明每台主机上权威令牌文件路径。
- 移除与 launchd 冲突的 Shell 重复导出。
- 脚本原子更新 JSON + plist,一次事务并带备份路径。
- 增加类 CI 检查:各层哈希不一致则部署失败。
- 在 CMDB 行把应用版本钉与网关 semver 并列记录。
- 每次升级后先跑 doctor 再宣布健康。
- 培训值班:先当配置漂移读 401,再当模型故障。
- 生产与实验分机:团队无法统一写入者时,拆两台 NodeMac Mac mini M4。
常见问题
令牌放钥匙串更好吗?
若所有消费者一致支持可以;混合栈通常先同步文件+plist,再迁移。
成员笔记本怎么办?
勿在笔记本复用生产令牌;用短效开发令牌与独立网关主机,避免咖啡馆误连生产 RPC。
launchd 会继承 shell profile 吗?
不会。这正是「重启后令牌消失直到写入 plist 或网关可读文件」的根因。
令牌卫生偏爱「无聊」硬件:NodeMac 的专用 Mac mini M4 提供 Apple Silicon 余量跑常驻网关、原生 macOS 与开发者笔记本一致的行为,以及需要 GUI 同意时的 SSH 加 VNC。节点覆盖香港、日本、韩国、新加坡、美国,可把网关靠近用户同时把密钥移出共享笔记本。租用而非采购 使「生产网关」与「实验网关」隔离在成本上可行,令牌轮换不必再变成政治博弈。拆机前先看 分区定价。