详细分析 ▾
运行时依赖
安装命令
点击复制技能文档
标签:workflow orchestration task-management 兼容性:openclaw 许可证:MIT
TaskFlow 当任务需要跨多个 prompt 或脱离单次运行继续存在,而你仍希望由同一会话拥有、同一上下文返回、同一入口查看或恢复时,请使用 TaskFlow。
使用场景
- 多步后台任务,由单一拥有者管理
- 需等待脱离的 ACP 或子代理任务
- 需向拥有者发送一次清晰更新的任务
- 步骤间需少量持久化状态
- 插件或工具任务需在重启与版本冲突后安全续跑
TaskFlow 管理
- flow identity、owner session、requester origin
- currentStep、stateJson、waitJson
- 关联的子任务及其父 flow id
- finish、fail、cancel、waiting、blocked 状态
- 冲突安全的版本追踪
不管理 分支或业务逻辑,请放在 Lobster、acpx 或调用代码中。
当前运行时形态 规范插件/运行时入口:api.runtime.tasks.flow api.runtime.taskFlow 仍作为别名存在,但 api.runtime.tasks.flow 是规范形态。
绑定方式
- api.runtime.tasks.flow.fromToolContext(ctx)
- api.runtime.tasks.flow.bindSession({ sessionKey, requesterOrigin })
托管流程生命周期 createManaged(...) → runTask(...) → setWaiting(...) → resume(...) → finish(...) / fail(...) requestCancel(...) 或 cancel(...) 用于整体停止
设计约束
- 当代码拥有编排权时,使用托管 TaskFlow
- 单任务镜像流由核心运行时创建,用于脱离的 ACP/子代理;本 skill 主要讲托管流
- 把 stateJson 当作持久化状态包,无独立 setFlowOutput API
- 每次变更均做版本检查,成功后携带最新 flow.revision
- runTask(...) 将子任务关联到流,替代手动创建脱离任务
示例 const taskFlow = api.runtime.tasks.flow.fromToolContext(ctx); const created = taskFlow.createManaged({ controllerId: "my-plugin/inbox-triage", goal: "triage inbox", currentStep: "classify", stateJson: { businessThreads: [], personalItems: [], eodSummary: [] }, }); ...
运行时之上保留条件判断
- 用 flow runtime 管理状态与任务关联
- 把决策留在编写层:
操作模式
- 仅存恢复所需最小状态
- 人类可读等待原因放 blockedSummary,结构化元数据放 waitJson
- 用 getTaskSummary(flowId) 快速查看子任务健康
- requestCancel(...) 让流立即停止调度;cancel(...) 同时取消活跃子任务
示例代码 skills/taskflow/examples/inbox-triage.lobster skills/taskflow/examples/pr-intake.lobster skills/taskflow-inbox-triage/SKILL.md 提供具体路由模式