触发器与动作
什么启动它,它做什么,它如何决策
三个问题,这个平台上的每个工作流都是对它们的回答。本页是词汇表:运行可以如何开始,步骤可以做什么,以及塑造两者之间路径的各个部件。
触发器
运行开始的四种方式
一个计划
每十分钟一次,每周一七点,每月第一个工作日。以你选择的时区表示,所以时钟回调不会变成事故。
一个 Webhook
你的商店、你的 CRM、你的计费系统,任何能发起 HTTP 请求的东西。签名验证默认开启,载荷会随运行一起保存。
来自世界的事件
演唱会公布、赛程排定、地震、洪水预警、空气质量跨档、供应商故障。超过 175 个数据源,每十到二十分钟刷新一次。
轮询,或人工
监视一个端点、一个邮箱或一个文件夹,有变化时启动。或者从控制台手动启动,因为有时这才是诚实的答案。
一件事只运行一次。同一底层事件触发两次的触发器——发送方重试的 Webhook、再次看到同一行的轮询——只会启动一次运行,而不是两次。去重以标识该事物的键为准,当发送方的 id 设计不如你的想法时,你可以自己设置这个键。
操作
执行操作的步骤
动作改变运行之外的东西:写入、发送、扣款、预订、获取或归档。分两类,区别在于是否涉及模型。
确定性动作
调用 HTTP 端点。读写你自己的系统。重塑载荷。在参考数据中查找。发送电子邮件、短信、推送通知或纸质信件。提供可预订时段。收款。生成短链接。获取附带许可信息的图片。写入一行、一个文件、一条记录。
相同输入,相同输出。运行它们不花任何成本,所以诚实的建议是:一切不需要真正判断的事情都用它们。
AI 动作
给这条消息分类。起草那封回复。把一个讨论串总结成三个要点。从非结构化文档中提取字段。根据你用文字写下的规则在选项之间做选择。翻译,并保留语气。
每个 AI 步骤都会声明其返回结果的结构,并在运行继续之前对该返回结果进行校验。如果模型产出了格式错误的内容,该步骤会干净地失败,而不会污染接下来的十二个步骤。

某件事发生了。接着,正确的事情随之发生。
Flow:只负责思考本次运行的步骤
条件根据某个值进行分支。两条路径始终都有定义——缺少 else 分支的条件是自动化悄悄丢失记录的最常见原因,因此这里不允许留下悬空的分支。
等待会暂停一次运行,直到某个时刻或某个事件。等待是写在运行本身上的一个 wake_at,而不是队列里的一行记录,这就是为什么一个工作流可以让一万人等上三个星期,却分文不花、无人察觉。
免打扰时段防止外发消息在凌晨三点送达。在免打扰时段内到达发送步骤的运行会等到时段结束。严重级别可以有意覆盖它,用于那些本就该把人叫醒的警报。
分流把一部分运行送入路径 A,其余送入路径 B,这样你就可以在真实流量上对比两个标题、两个等待时长或两种顺序。
目标标记工作流要达成的那件事。当运行到达目标时,它就在那里停止,无论下游还剩什么——已经买了单的客户不会再收到第三次购买提醒。
- ⚡触发器购物车闲置 40 分钟。按购物车 ID 去重。
- ?条件购物车超过 150 兹罗提?是——走较长的那条路径。
- ⏸等待运行上的一个
wake_at。没有队列记录,没有成本。 - A拆分标题按 50/50 分流。本次运行采用了变体 A。
- ✉发送带短链接的电子邮件,按收件人统计重定向。
- ★目标订单已下单。运行在此停止;第二次提醒永远不会发送。
调用过模型的步骤:1零成本的步骤:5
错误是流程的一部分,而不是流程的例外
失败的步骤有地方可去。带退避地重试,并限制重试次数。走一条替代路径。停止运行,并把它归档到有人会看到的地方。或者照常继续,因为那个步骤本来就是可选的,你宁愿拿到大部分结果,也不愿一无所获。
对于要和别人的系统打交道的步骤,默认做法是重试几次然后停止——因为一个在 09:14 宕机的系统通常在 09:19 就恢复了,也因为一个已经停止的运行,比一个半途发生的运行更容易理清。
你不能做的事:步骤不能跳回更早的步骤。工作流是一条有向路径,不是带跳转指令的程序。如果你的任务确实需要循环,可以在单个步骤内遍历一个列表,或者为每一项启动一次运行——这两种方式都受支持,而且事后读起来都比一个循环清晰得多。