Cloudflare Agents 从入门到精通
附录

§21 工作流与人工审批:可恢复的多步管线

21.1 什么时候用 Workflow

任务超过 30 秒、多步、要自动重试、中间要人批一道——上 Workflow。

21.2 定义工作流

import { AgentWorkflow } from "agents/workflows";

export class ProcessingWorkflow extends AgentWorkflow<MyAgent, TaskParams> {
  async run(event: AgentWorkflowEvent<TaskParams>, step: AgentWorkflowStep) {
    const params = event.payload;
    const result = await step.do("process-data", async () => processData(params.data)); // 持久+重试
    await this.reportProgress({ step: "process", status: "complete", percent: 0.5 });
    await step.do("save-results", async () => this.agent.saveResult(params.taskId, result));
    await step.reportComplete(result);
    return result;
  }
}

21.3 从 Agent 启动

// Agent 内
const instanceId = await this.runWorkflow("PROCESSING_WORKFLOW", { taskId, data });

// wrangler 注册 workflow
"workflows": [{ "name": "processing-workflow", "binding": "PROCESSING_WORKFLOW", "class_name": "ProcessingWorkflow" }]

21.4 人工审批闸门

const approvalData = await this.waitForApproval<{ approvedBy: string }>(step, { timeout: "7 days" });
// Agent 端:this.approveWorkflow(id, {...}) / this.rejectWorkflow(id, {...})
维度 Schedule Workflow 标叔的结论
语义 定时触发 多步持久管线 复杂流程用流
重试 回调级 步骤级幂等 流更稳
审批 waitForApproval 流有闸门
注意
工作流可在子 Agent 内启动,但追踪记录在子 Agent 自己的 SQLite,父看不到。需要全局视图要自己汇总。

工作流讲完。下一章把"人类在环"四种模式一次讲清。