2026年 OpenClaw 插件 fail-closed 与 manifest 强制声明在远程物理 Mac 7×24 网关落地:openclaw doctor 审计清单、ACP dispatch 开关与受控回滚 Runbook(grep 片段 + FAQ)
平台与安全工程把 OpenClaw 跑在租用的远程物理 Mac上当 7×24 网关时,插件「多装一个就多一分攻击面」;本文给出fail-closed 默认拒绝与 manifest 强制声明的落地组合,并用 openclaw doctor 做可签字审计。你将拿到谁适用何种策略的结论、双决策矩阵、七步受控回滚 Runbook、可复制 grep 片段与 FAQ。对外通道与 Hooks 细节可继续对照
Webhook/Hooks 与 CI 触发 Runbook;远程接入路径见
SSH 转发与 Tailscale Serve 选型。
1. 导语与边界
远程机房里的 Mac 网关无人值守时,插件即供应链:一次「隐式放行」可能让未声明网络或文件权限的代码在凌晨被调用。2026 年主流做法是 manifest 强制(没有合格清单就不加载)叠加 fail-closed(校验失败时拒绝执行而非降级放行)。
本文收益:把策略拆成可执行的 doctor 检查项与 grep 片段,并把 ACP(Agent Client Protocol)dispatch 当作「谁能触发插件」的总闸,配合快照回滚把 RTO 压在维护窗内。边界:不涉及具体第三方模型合同;假设你已用 launchd 固定用户与 WorkingDirectory。
2. 痛点拆解
- 限制:隐式权限与「能跑就行」。未在 manifest 声明的
fs/network/subprocess能力在 fail-open 模式下常被静默允许,审计时无法证明「当时允许了什么」。 - 隐性成本:doctor 绿 ≠ 策略生效。
openclaw doctor可能只覆盖运行时与端口;若配置热重载未加载新 manifest 校验开关,对外仍表现为旧行为。 - 稳定性与审计:无快照的回滚是假回滚。fail-closed 切狠了会把合法自动化打断;没有配置 + 插件包成对快照,只能连夜手工改 JSON,违背 7×24 SLO。
3. fail-closed × manifest:决策矩阵
第一张表回答「什么时候该多硬」;第二张表对齐「变更类型 × 验收」。
| 环境 | manifest | fail-closed | ACP dispatch |
|---|---|---|---|
| 生产 7×24 网关 | 强制 | 开 | 仅允许名单内 clientId/workspace |
| 预发联调 | 强制 | 开(可对单插件临时 shadow) | 可放宽到团队租户,全程 JSONL |
| 开发者本机 | 建议强制以贴近生产 | 可关以便快速迭代 | 本地全开或绑定 loopback |
| 变更信号 | 推荐动作 | 验收补充 |
|---|---|---|
| 新增插件或升级 major | 先金丝雀节点 + 双 manifest diff | doctor + grep 校验声明版本号 |
| 对外 ACP/Agent 客户端增多 | 收紧 dispatch 白名单与速率 | 按 requestId 追踪插件 span |
| 错误率突增且日志含 denied | 先切 shadow 计数再决定是否回滚 | 对比回滚前后 5 分钟窗口 |
4. openclaw doctor 审计清单
把 doctor 当作「策略是否真的加载」的第一道门:下列项建议在变更工单里逐条打勾(具体键名以你发行版文档为准,可映射到 openclaw.json 或环境变量)。
- 运行时与 PATH:与 launchd 用户一致;
which openclaw与 plist 中一致。 - manifest 解析:打印有效插件根路径;拒绝「目录存在但无 manifest」的插件。
- fail-closed 标志位:doctor 应报告当前布尔值与来源文件;WARN 视为发布阻断项。
- ACP dispatch:开关状态 + 白名单条目数;空白名单且开关开时应明确提示「无客户端可入站」。
- 对外探活:本机
curl与(若存在)/ready联合验收,避免「自检绿、反代红」。
5. ACP dispatch 开关怎么配
ACP dispatch 在这里指:来自 Agent 客户端(IDE、CLI、外部编排器)的请求,是否允许进入「插件调度器」。与 fail-closed 组合时,推荐顺序是:先 manifest 校验插件集,再 用 dispatch 控制入口,避免「客户端被攻破 → 直接打穿到高危 hook」。
示意配置(键名为说明性占位,上线前请替换为当前版本 schema):
{
"plugins": {
"requireManifest": true,
"failClosed": true,
"manifestSchemaVersion": "2026-05"
},
"acp": {
"dispatchEnabled": true,
"allowedClientIds": ["ci-runner-prod", "vscode-workspace-ops"],
"denyByDefault": true
}
}
生产环境务必将 allowedClientIds 与内部 OAuth/mTLS 主体对齐,并在 JSONL 中记录 clientId 与 pluginId 的笛卡尔积,便于事后取证。
6. 验收用 grep 片段
在归档目录或当前工作区执行(路径按你机器调整):
# 是否显式打开 fail-closed / requireManifest
grep -RniE 'failClosed|fail_closed|requireManifest|require_manifest' \
~/.config/openclaw ./openclaw.json 2>/dev/null
# 插件目录是否都存在 manifest(缺失即应拒绝加载)
find "$OPENCLAW_PLUGIN_ROOT" -maxdepth 2 -type f \( -name 'manifest.json' -o -name 'plugin.yaml' \) | wc -l
# ACP dispatch 白名单是否非空(生产)
grep -Rni 'dispatchEnabled|allowedClientIds|denyByDefault' ~/.config/openclaw ./openclaw.json 2>/dev/null
若第一条无命中,说明配置仍停留在默认 fail-open;不要仅凭「以前能跑」签字上线。
7. 七步受控回滚 Runbook
- 冻结:挂维护公告;暂停会放大调用面的定时任务。
- 快照:打包
openclaw.json、插件目录、launchd plist 与 doctor 文本输出。 - 打开 manifest 强制:reload 后 grep 校验;观察「拒绝加载」计数。
- 打开 fail-closed:对未声明能力返回统一错误码;保留 JSONL 5 分钟基线。
- 收紧 ACP dispatch:先 shadow(只记日志不拒绝),再切 deny-by-default。
- 回滚触发:若 SLO 跌破阈值,恢复成对快照(配置 + 插件包),
launchctl kickstart后复跑 doctor。 - RCA:更新 grep 清单与变更记录,安排下次金丝雀。
与发布通道、openclaw update 同机交织时,优先阅读
发布通道与可回滚升级 Runbook,避免「升版本」与「改策略」在同窗叠加导致归因困难。
8. 可引用信息
- 观测窗口:策略变更后至少观察 5 分钟滑动窗口再判断去留,避免把启动尖峰误判为故障。
- 快照保留:生产建议保留最近 3 份可恢复配置修订(含插件 tarball 校验和)。
- 审计留存:doctor 全量输出与相关 grep 结果随工单保留 ≥30 天,满足多数内部合规抽查。
9. FAQ
Q:manifest 已写 capabilities,为何仍报未声明?
核对 doctor 打印的实际解析路径是否与编辑文件一致;注意 schema 版本与字段名大小写。必要时在 staging 用同一份包跑一遍完整加载日志。
Q:关闭 dispatch 后旧会话还会调插件吗?
依赖实现与队列:稳妥做法是 reload 并丢弃未确认队列,再对关键路径做只读冒烟。
Q:fail-closed 与「灰度 shadow」能并存吗?
可以:shadow 阶段仅记录「本会拒绝」的计数而不改返回码;指标稳定后再硬切换。
10. 总结与节点选型
插件治理的本质,是把「信任」从人情改成可机器验收的策略:manifest 管能力边界,fail-closed 管失败态,ACP dispatch 管入口面,doctor 与 grep 管签字证据链。
这类策略在 macOS 上与 launchd、统一日志和 Gatekeeper/SIP 同向叠加:Apple Silicon Mac mini M4 待机约 4W 量级,适合长期跑网关与观测代理;与同价位通用小主机相比,你在同一台远程物理机上同时跑 OpenClaw、探针与轻量 Runner 时,崩溃率与能耗曲线通常更友好。
若你希望把上述 Runbook 落在免自建机房的专用节点上,Mac mini M4 仍是 2026 年高性价比起点——现在即可获取一台远程物理 Mac,把插件策略与回滚练成标准工序。
要用专用远程 Mac 跑 OpenClaw 插件治理?
获取 Mac mini 云端节点,适合 7×24 网关、manifest 强校验与可审计回滚。