目录:初始化 · flows 运维命令示例占位 · 目录隔离 · 失败取消 · FAQ
适合已在节点上跑通网关的读者;多角色并发预算可对照《CrewAI 多 Agent 网关》,结构化输出契约见《Instructor 与 JSON Schema》。帮助中心与博客索引均为免登录入口;选型用购买页与定价页。
痛点速记:一列表缺 parent 过滤,排障靠猜。二多项目共用默认可写区,工具缓存互相污染。三取消只杀编排入口,子解释器或侧车推理仍占统一内存。
| 策略 | 收益 | 代价 |
|---|---|---|
| 显式父子 ID | 列表与审计可折叠展示,取消可广播 | 编排器需一次写入两处字段 |
| 进程组包装 | 信号沿会话树传递,降孤儿概率 | 入口脚本与 launchd 单元多几步 |
| 项目级状态目录 | 身份与 scratch 不串租户 | 磁盘配额与清理策略要单独设 |
初始化
按序勾选:一固定 Node 与 OpenClaw 版本,跑通 openclaw doctor --json。二为每个仓库导出 OPENCLAW_PROJECT_SLUG 并写入 flows 元数据。三把 Task Brain 数据目录指到项目子树而非用户根。四在编排器创建父任务时同步下发 parent_task_id 给子步骤。五 worker 用进程组或 setsid 包装,保证取消能传到子进程。六健康探针在任务结束后断言端口与状态机回到 idle。
- 令牌文件权限六百,日志单独卷或分区,避免与模型权重抢 IO。
- 同一 trace 键贯通网关与侧车,便于按请求联动中止。
flows 运维命令示例占位
以下命令名为占位,请用你安装的实际子命令与端口替换;重点是始终携带项目键并支持 JSON 输出便于流水线解析。
# 列出活跃 flows(按项目过滤)
openclaw flows list --project "${OPENCLAW_PROJECT_SLUG}" --state running --json
# 列出某父任务下的子任务
openclaw task list --project "${OPENCLAW_PROJECT_SLUG}" --parent "${PARENT_TASK_ID}" --json
# 取消父任务并请求级联子任务
openclaw task cancel --project "${OPENCLAW_PROJECT_SLUG}" --id "${PARENT_TASK_ID}" --cascade children
# 仅取消单个子任务(热修场景)
openclaw task cancel --project "${OPENCLAW_PROJECT_SLUG}" --id "${CHILD_TASK_ID}" --no-cascade目录隔离
为每个 OPENCLAW_PROJECT_SLUG 分配独立的 OPENCLAW_STATE_DIR、AGENT_IDENTITY_DIR 与 SCRATCH_ROOT,工具下载与中间件缓存只写该 SCRATCH_ROOT;公共只读依赖可留在镜像层或只读挂载。与《IDE 桥接沙箱》同样思路:代码只读、执行可写,差异统计才可信。
失败取消
失败路径上先写原因码再动刀:编排级对父任务标记 failed 并触发子任务取消;运行时级对进程组发 TERM,宽限后 KILL;侧车级用同一 trace_id 调用上游中止或关闭流。避免只删队列记录不回收进程;夜间 soak 用专用节点,合盖笔记本易放大尾超时。
- 取消与重试共用退避,防止风暴占满网关队列。
- launchd 建议配置超时与
ThrottleInterval,防止崩溃重启打爆 CPU。
可引用签核条:
- 父子字段在创建子任务时同步写入,禁止事后补链。
- 取消后三十秒内零监听残留、进程表无同名 worker。
- 每项目 scratch 按周轮转并压缩,单卷占用有硬上限。
FAQ
子任务已跑完还要写 parent 吗?要;否则历史列表无法折叠,事故复盘也难对齐。
能共用全局默认 flows 吗?仅适合单租户 demo;多项目务必复制 flows 定义并改状态目录,否则身份文件会互相覆盖。
取消后 GPU 仍忙?检查侧车是否脱离 Task Brain 生命周期;必要时在网关层对同一别名加并发上限并联动硬中止。🚀