不一定。流程结束、活动收到取消通知、外部任务实际停止,需要分别核对。先确认所用框架和集成方式的取消语义,再查询执行状态及外部结果;不能只凭界面显示“已取消”认定全部动作已停止。本文依据三家官方文档整理,未做产品实测。
- 取消请求被接收,不代表目标任务已经停止。
- 常规活动、子流程和外部服务的取消边界可能不同。
- 用任务状态与外部记录验收,不把取消等同于回滚。
先分清:停止的是流程,还是已经派出的工作?
设想一个智能体已经把素材交给外部服务处理,用户随后点击取消。此时至少要问三件事:编排流程是否停止推进、执行活动是否获知取消、外部服务是否已经停下。它们可以有不同的确认时间,本文用这个假设场景说明检查方法,不代表实际运行结果。
Microsoft 的实例管理文档指出,终止操作会进入任务中心队列,状态不是立即变为 Terminated,需要通过实例查询确认。文档还说明,实例终止不会自动传播给活动函数和子编排。[1] 这表明,仅核对父流程状态不足以证明所有派生工作都已停止。 此处的终止也不应与可恢复的暂停混为一谈。
取消信号需要接收方配合
Temporal TypeScript SDK 的活动说明把取消作为通知与清理机会。在允许取消传播的配置下,常规活动需依靠心跳获知取消,Local Activities 是不依赖心跳的例外;活动实现还需订阅取消,或把 AbortSignal 传给支持它的调用库。[2] 这里仅引用该 SDK 文档,不能套用到所有 Temporal SDK。把按钮连到取消接口,只完成了其中一部分。
编辑建议:在设计表中为每一步标明“如何接收取消、何时检查、清理哪些资源、到哪里查询结果”。对不支持中断的外部动作,应显示“外部结果待核对”,而不是根据本地界面状态自动判定它已停止。这些字段是项目设计建议,不是框架默认提供的业务功能。
集成服务的取消,也可能只是尽力尝试
AWS Step Functions 文档对 Run a Job(.sync)模式说明:任务被中止后,系统会尽力取消对应工作,但权限不足或服务暂时故障等情况可能使取消失败,集成服务也可能产生额外费用。[3] 该说明有明确集成模式,不能推广成所有 AWS 调用的统一行为。
编辑建议:让执行身份具备项目所需的取消权限,同时保留外部任务标识与查询入口。若取消没有确认结果,交给明确的接手人继续核对。不要用“停止等待返回”替代外部状态核验,也不要仅凭取消请求成功就承诺后续不再产生用量。
把取消做成一项可复核的验收
可以填写一张检查表:业务任务编号|父流程状态|活动状态|外部任务编号|取消请求时间|最后确认的结果|清理或补偿安排|接手人。一次取消可能对应多项外部工作,应分别列出,不把多项结果压成一个勾选框。记录只保留排查必需的信息,避免保存密钥和不必要的敏感原文。
在授权测试环境演练三种时点:尚未派出工作、外部任务执行中、外部已经完成但本地尚未拿到回执。分别记录取消请求、状态变化与目标系统结果。即便外部工作已完成,也不要把取消理解为自动撤销已有结果;需要撤回或清理时,另行确认目标系统支持的操作与授权。这是验收建议,本篇没有执行这些测试。
相关阅读:本站《智能体工作流遇到失败,什么时候该停止重试?》讨论重试的停止条件;本篇聚焦取消请求怎样传递,以及取消后如何核对已派出的工作。原文:https://www.aixinzhi.com.cn/insights/2026-10-15-agent-retry-stop-rules/
适用条件与限制
核对日期2026-11-04。本文仅依据所引官方资料,Azure实例终止、Temporal TypeScript活动取消及Step Functions .sync集成各有边界,不能作为所有SDK、运行版本或第三方工具的统一规则。未登录产品、未执行取消、未验证实际费用或清理结果;取消不构成零后续操作、零费用或自动回滚保证。