把「读仓库、改代码、跑长构建」拆给主会话与子代理并行时,真正拖慢进度的往往是三道闸门:tools.profile 白名单、sessions_spawn(或网关侧等价的子会话创建能力),以及 maxSpawnDepth。下面按 2026 年常见报错顺序给出排查要点、可落地的最小权限示意,并对照多地区 Mac mini M4 云 Mac 做长任务分摊的短案例,方便你对齐团队规范与网关配置。
一、先对齐 tools.profile:白名单是默认安全边界
多数「子代理什么都能想、什么都不能做」来自工具配置与主会话继承不一致:主会话在 read / restricted 档位下只允许枚举内的工具,子会话若未显式放宽,会继续命中拒绝。实务上先做三件事:在网关或工作区配置里确认当前 profile 名称;对照官方/内建工具表核对子任务会调用的 API(例如读文件、执行命令、拉取会话状态);把「子代理专用」profile 写成单独片段,避免与人工交互会话共用一份「过宽」列表。
二、sessions_spawn 与 maxSpawnDepth:典型报错与排查顺序
1)子会话创建被拒:检查是否关闭了 spawn 能力、配额或策略里禁止嵌套会话。2)能创建但立刻空转:常见是子会话继承了空工作区或未挂载同一仓库路径,先对齐 Skills / workspace 的单一事实来源(与 onboarding 文档一致)。3)报深度超限:递归拆任务时每层再 spawn 会指数放大;把 maxSpawnDepth 调到合理上限(例如 2~3)的同时,用「队列 + 单个子会话批处理」替代链式再派生。
- 网关版本与文档字段名是否一致(部分发行版用
sessions.create等别名)。 - 子会话是否继承同一
tools.profile,避免「主窄子宽」造成审计缺口。 - 长耗时步骤是否误放在最内层会话,导致超时与重试雪崩。
三、最小权限模板(示意,按你环境字段名映射)
下面是一段结构示意,提交前请替换为实际网关 schema,并走一次 staging 验证。
tools:
profile: agent-restricted
allow: [read_file, grep, run_terminal_cmd]
sessions:
spawn: allow
maxSpawnDepth: 2
inheritToolsProfile: true # 需要子会话同档位时保持 true
更细的 Skills、工作区与 TCC 边界,可参考 OpenClaw Skills 与工作区 onboarding 权限 FAQ 中的自检顺序。
四、多地区 Mac mini M4 云 Mac:长任务分摊短案例
假设流水线要在 macOS 上跑多模块构建:可在新加坡 / 东京 / 首尔 / 香港 / 美西 / 美东各起一台独享 Mac mini M4,主会话只做编排与合并结果;每个子会话固定落在一台云 Mac 上执行「单模块 + 缓存上传」,避免单机会话里无限 spawn。与席位轮换、并联队列相关的容量取舍,可对照 跨国团队云 Mac 席位与并联队列 FAQ;若你侧已上 Bazel/Gradle 远端构建,可再看 远端构建与缓存命中率 FAQ,把「子会话 = 构建分片」与远端缓存策略绑在一起。
在 vpszap 云上,这一切更简单
工具白名单与子会话策略,最终都要落在稳定、可独占的 macOS 环境里验收。vpszap 提供物理 M4 Mac Mini——无虚拟化争抢,CPU/内存/SSD 独享;约五分钟开通,SSH 与 VNC 同时交付;按天/周/月/季计费、无长约,适合你用短租在多区域各起一台,对齐 OpenClaw 子会话与 CI 分片。全球多节点布局也有利于把控制面与长任务执行机放在离团队更近的机房,降低交互延迟。
若要把本文方案跑在最接近生产的硬件上,vpszap 云端 Mac mini 可以直接作为子会话背后的执行池节点。