Skip to main content
Task Flow 是位于后台任务之上的编排层。Flow 是多步骤工作的持久记录,拥有自己的状态、JSON 状态数据、修订计数器和关联的任务记录。Flow 可在 Gateway 网关重启后继续存在;各个任务仍是分离式工作的基本单位。

何时使用 Task Flow

同步模式

托管模式

托管 Flow 有一个控制器:插件代码通过插件运行时 Task Flow API,使用目标和必需的控制器 ID 创建 Flow,然后显式驱动它。
  • 每个步骤都作为在该 Flow 下创建的后台任务运行;Flow 的所有者键和请求方来源会传递给子任务。
  • 控制器在 runningwaiting 和终止状态之间推进 Flow,并在 Flow 记录中存储任意 JSON 步骤状态。
  • 每次变更都会传入 Flow 的预期修订版本。过期写入会因修订冲突而被拒绝,而不会覆盖更新的状态。
  • 请求取消后,系统会拒绝新的子任务;当没有子任务仍处于活动状态时,Flow 会最终变为 cancelled
示例:一个每周报告 Flow,其中 (1) 收集数据,(2) 生成报告,(3) 交付报告,每个步骤对应一个后台任务:

镜像模式

当分离式 ACP 或子智能体运行开始时(具有可交付完成结果的会话范围任务),OpenClaw 会自动创建一个镜像的单任务 Flow。Flow 记录会镜像其唯一的后端任务——状态、目标和时间信息——因此分离式生成操作无需控制器,即可获得稳定的 Flow 句柄,用于状态查询和重试界面。镜像 Flow 在 CLI 中显示同步模式 task_mirrored

Flow 状态

持久状态和修订跟踪

Flow 记录与任务记录一起持久化到共享 SQLite 状态数据库(~/.openclaw/state/openclaw.sqliteflow_runs 表)中,因此进度可在 Gateway 网关重启后继续保留。每次写入都会递增 Flow 的 revision;传入过期预期修订版本的并发写入方会遇到冲突,必须重新读取。SQLite 自动检查点和定期被动检查点会限制 WAL 的增长,并在关闭时执行截断检查点。旧安装中的旧版 flows/registry.sqlite 辅助文件由 openclaw doctor 导入。

取消行为

openclaw tasks flow cancel 会在 Flow 上设置持久的取消意图,取消其活动子任务,并拒绝新的托管子任务。当没有子任务仍处于活动状态时,Flow 会最终变为 cancelled——可能立即完成,也可能在子任务需要更长时间才能结束时,由维护扫描完成。该意图会持久化,因此即使所有子任务终止前 Gateway 网关重启,已取消的 Flow 仍会保持取消状态。

CLI 命令

openclaw tasks audit(过期或损坏的 Flow 检查结果)和 openclaw tasks maintenance(完成卡住的取消操作,并在 7 天后清理终止的 Flow)也涵盖 Flow。

可靠的定时工作流模式

对于市场情报简报等重复工作流,应将调度、编排和可靠性检查视为独立的层:
  1. 使用定时任务安排时间。
  2. 当工作流需要基于先前上下文继续执行时,使用持久 cron 会话。
  3. 使用 Lobster 实现确定性步骤、审批关卡和恢复令牌。
  4. 使用 Task Flow 跨子任务、等待、重试和 Gateway 网关重启跟踪多步骤运行。
cron 示例结构:
当重复工作流需要有意保留历史记录、先前运行摘要或长期上下文时,使用 --session session:<id>,而不是 isolated。当每次运行都应从全新状态开始,并且工作流中已显式提供所有必需状态时,使用 isolated 在工作流内部,将可靠性检查放在 LLM 摘要步骤之前:
建议的预检项目:
  • 浏览器可用性和配置文件选择,例如使用 openclaw 管理状态,或在需要已登录的 Chrome 会话时使用 user。请参阅浏览器
  • 各个来源的 API 凭据和配额。
  • 所需端点的网络可达性。
  • 为智能体启用所需工具,例如 lobsterbrowserllm-task
  • 为 cron 配置失败目标,以便预检失败可见。请参阅定时任务
建议为每个收集的项目提供以下数据溯源字段:
让工作流在摘要生成前拒绝过期项目或将其标记为过期。LLM 步骤应仅接收结构化 JSON,并应要求其在输出中保留 sourceUrlretrievedAtasOf。当工作流中需要经过架构验证的模型步骤时,请使用 LLM 任务 对于可供团队或社区复用的工作流,将 CLI、.lobster 文件和所有设置说明打包为 Skill 或插件,并通过 ClawHub 发布。除非插件 API 缺少所需的通用能力,否则应将工作流特定的防护措施保留在该包中。

Flow 与任务的关系

Flow 协调任务,而不是取代任务。单个 Flow 在其生命周期内可以驱动多个后台任务。使用 openclaw tasks 检查各个任务记录,使用 openclaw tasks flow 检查负责协调的 Flow。

相关内容