用户登录

技术文章

外部链接将在新标签页打开。

把工作流状态机当 agent 工具:Step Functions 接入后的编排取舍

一句话回答

AWS 已让 Step Functions 工作流通过 AgentCore Gateway 以 MCP 工具形式交给 agent 调用,分工是 agent 决定何时跑、传什么,状态机按既定顺序执行每一步。本文按材料区分已确认事实与待核实项,给出顺序、输入、失败处理三个决策点的取舍建议,并说明工具粒度、目录膨胀与接入前核对清单。

核心要点 TL;DR
  • Step Functions 作为 agent 工具的价值,是把不可协商的执行顺序留在状态机里,而不是让模型即兴编排。
  • 接入时要先切分三件事:顺序归状态机、输入由 agent 填但身份不能由模型设置、失败与补偿留在工作流内。
  • 工具粒度是主要取舍:一个 workflow 一个工具能压缩工具目录,但输入 schema 会变复杂;细粒度则相反。
  • 材料未说明 connector 的入参 schema、载荷上限、错误暴露方式和身份传播细节,这些都需要在接入前实测核对。

"把状态机当 agent 工具"这件事,答案不是能不能调,而是调完之后谁来负责。按 AWS 在 2026 年 11 月 2 日 Weekly Roundup 中的说法,Step Functions 现在可以通过 Amazon Bedrock AgentCore Gateway,以 Model Context Protocol(MCP)工具的形式交给 agent 使用,已有的 Standard 和 Express 工作流可以作为 connector target,不需要重写(AWS News Blog,2026-11-02)。

真正需要设计的是分工:agent 决定什么时候跑、传什么参数;状态机负责按你写好的顺序逐步执行。下面按"材料确认了什么—取舍在哪里—接之前核对什么"展开,凡材料没写的,一律标为待核实,不替 AWS 补文档。

材料确认的事实边界#

  • 规模背景:Step Functions 此前已用于编排 220 多个 AWS 服务(AWS 表述),现在这些工作流可以被 agent 当作工具调用。
  • 接入方式:经 Amazon Bedrock AgentCore Gateway 暴露,走 MCP 协议连接 agent 与工具,不是让模型直接生成状态机定义。
  • 分工示例:AWS 给的例子是客服 agent 触发退款——资格校验、经理审批、实际入账仍按固定顺序执行,因为"顺序从来不是交给模型即兴发挥的"。
  • 覆盖面:现有 Standard 与 Express 工作流都符合 connector target 的条件;agent 还可以查询运行记录。
  • 可用性与计费:在与 AgentCore Gateway 相同的区域提供,按标准费率计费。

材料没有说明的部分,同样重要:connector 的工具描述和入参 schema 由谁生成、能否手写约束;单次调用的输入输出载荷上限;工作流失败时 agent 看到的是错误码、异常信息还是完整执行历史;Express 工作流被调用时是同步返回结果还是只返回运行标识;终端用户身份如何传播到这次状态机执行;以及具体的区域清单和费率数字。以上均待核实,不要在方案评审里把它们当成已知条件。

取舍一:顺序归谁#

状态机当工具的核心收益是"顺序不可协商"。只要一步接一步的次序是合规要求或业务硬约束——审批在入账前、校验在扣款前——把它留在状态机里,模型就没有改写的余地。反过来,如果流程本身就是"看情况决定下一步做什么",硬塞进状态机只会逼你写一堆分支和占位步骤,最后状态机变成了模型决策的记录本。

一个可操作的判断:把流程里"审计时能指着说这一步必须在下一步之前"的环节挑出来,这些属于状态机;剩下"这次先查 A 还是先查 B"的环节,属于 agent 或它直接调用的细粒度工具。

取舍二:输入由谁构造#

agent 传参是必要的,但传什么参数需要划界。同一篇 Roundup 里提到 MoEngage 用 AgentCore Gateway 把约 400 个内部 REST API 操作变成 agent 工具,横跨 25 个团队、分布在 7 个区域的私有 VPC 中,其中一条硬约束是:租户身份绝不能变成模型可以设置的参数。这条原则平移到 Step Functions 上同样成立——订单号、退款原因可以来自模型,租户 ID、调用者身份这类决定"能看见谁的数据"的字段,应该来自网关或执行角色,而不是工具入参。

代价是:入参越窄,工具描述就越需要写清楚哪些字段是必填、哪些由平台注入。而 connector 是否支持在工具 schema 层面做这种收窄,材料没有说明,待核实。

取舍三:失败与补偿由谁承担#

状态机本来就擅长处理重试、超时、补偿步骤,把这些留在工作流内是顺理成章的。但有一件事需要提前确认:agent 拿到失败信号后,能不能判断"该重试"还是"该换一条路"。如果它只看到一个笼统的失败,就可能反复触发同一个注定失败的工作流,把重试策略从状态机里搬到模型侧——那是最不划算的搬法。

建议在工作流内部就把可重试错误和终态错误分开,并让最终返回给 agent 的结果明确表达"这次是彻底失败还是可再试"。具体能暴露到什么粒度,取决于 connector 的错误映射,待核实。

取舍四:工具粒度与目录膨胀#

Step Functions 的接入有一个天然优势:一个 workflow 就是一个工具,工具数量等于你愿意暴露的工作流数量,而不是内部步骤数量。MoEngage 的案例从反面说明了这件事的分量——材料提到,如果一次性列出全部工具,每条连接的清单会超过 20,000 tokens,所以他们的做法是让 agent 通过描述任务来检索工具,而不是把目录整个塞给模型。

由此产生的取舍是:

粒度好处代价
粗(一个业务动作一个 workflow)工具数量少,模型选择压力小,顺序约束强入参 schema 复杂,模型填错参数的概率上升
细(一个步骤一个工具)参数简单,组合灵活顺序约束回到模型手里,工具目录迅速膨胀

如果暴露的工作流会到几十上百个,就需要考虑工具检索这条路;但 Step Functions connector 自身是否支持按描述检索、还是只能靠网关侧做工具分组,材料未说明,待核实。

什么情况下不该走这条路#

  • 单步、低延迟的调用:状态机的价值在多步与持久化,为一次查询包一层工作流,多出来的是一次跳转和一层 schema(这是推断,具体延迟差异需自行测量,材料未给数据)。
  • 每步都要模型读中间结果再改参数:如果中间结果不向 agent 暴露,模型只能依据最终输出决定下一步,这类交互式流程不适合整段塞进状态机。
  • 流程每周都在改:工作流一旦作为工具暴露,描述和 schema 的维护成本就跟着流程变化走,变更频率高时先评估这部分开销。

接入前核对清单#

  1. 确认工作流类型:Standard 还是 Express,以及被工具调用时的返回语义是否符合你的交互设计(待核实)。
  2. 确认工具描述与入参 schema 的来源:自动生成还是可以手写覆盖(待核实)。
  3. 确认身份注入点:租户/用户身份从网关或执行角色来,不出现在模型可写的字段里。
  4. 确认错误映射:可重试错误与终态错误在返回结果里是否可区分(待核实)。
  5. 确认载荷上限:输入输出大小限制、是否支持引用大对象而非内联传递(待核实)。
  6. 确认运行查询能力:agent 能查到哪些运行字段,是否足以支撑审计(待核实)。
  7. 确认区域与计费:AgentCore Gateway 的实际可用区域清单与标准费率的具体数字(待核实)。

一个未执行的示例#

下面两段仅用于说明结构,未实际执行,字段名与调用方式需以实际 connector schema 为准(待核实)。

{
  "workflowArn": "arn:aws:states:REGION:ACCOUNT:stateMachine:YOUR_WORKFLOW",
  "input": {
    "orderId": "ORDER-EXAMPLE-0001",
    "reason": "duplicate_charge",
    "tenantId": "INJECTED_BY_GATEWAY_NOT_BY_MODEL"
  }
}

对应的状态机骨架大致如下,重点是顺序显式写死在定义里,而不是留给调用方:

{
  "StartAt": "CheckEligibility",
  "States": {
    "CheckEligibility": { "Type": "Task", "Next": "ManagerApproval" },
    "ManagerApproval":  { "Type": "Task", "Next": "IssueCredit" },
    "IssueCredit":      { "Type": "Task", "End": true }
  }
}

观测与成本#

材料提到 agent 可以查询运行记录,这为审计留了一条线索:出问题时至少能区分"模型没调用"和"调用了但工作流失败"。至于这条线索能细到什么程度、是否覆盖每次调用的输入快照,待核实。

成本方面,AWS 的说法是"按标准费率",没有给出数字。可以确定的是计费会叠加两部分:状态转换本身,以及 AgentCore Gateway 一侧的调用。具体量级只能在自己的调用模式下测,材料里没有可引用的数字。

结论#

把 Step Functions 当 agent 工具,适合的场景很明确:你有一段顺序不能改、需要审计、已经有工作流在跑的业务流程,而 agent 只负责判断"要不要跑、跑哪一条、带什么参数"。不适合的场景同样明确:流程本身是探索式的,或者每一步都需要模型看着中间结果改主意。

落地前把三件事写进设计文档:顺序留在状态机、身份不进模型参数、失败语义先核对再依赖。剩下的细节——schema、载荷、错误粒度、区域与费率——材料里没有答案,请以接入时的实际文档和一次受控试跑为准。

常见问题(FAQ)

已有的 Standard 和 Express 工作流需要重写才能当工具用吗?
按 AWS 的说法不需要重写:现有 Standard 和 Express 工作流都可作为 connector target,agent 还能查询运行记录。但两类工作流在同步返回、执行时长和计费模型上本就不同,作为工具被调用时 agent 拿到的是同步结果还是运行标识,材料未说明,需在接入时核对。
agent 调用工作流后,能看到中间步骤的结果吗?
材料只说明 agent 可以查询运行(look up runs),没有说明它能看到状态机历史里的哪些字段。如果中间结果不对模型暴露,就意味着 agent 只能根据最终输出决定下一步;如果你的场景需要模型逐步读中间结果改参数,这条链路可能不适用。

参考来源

  1. AWS Weekly Roundup: GPT-6.1 Terra on Bedrock, Step Functions as agent tools, and more (November 2, 2026)

以上为本文写作时的参考资料,引用观点以原文为准。

作者:沐小悠

本文约 11 分钟读完 · 关键词:Step Functions、AgentCore Gateway、MCP、agent 工具、工作流编排

更多文章 GET 示例接口

「」标签下的其他文章