用户登录

技术文章

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

把 Step Functions 当 agent 工具:模型决定何时调用,工作流决定怎么执行

一句话回答

AWS 把 Step Functions 工作流通过 AgentCore Gateway 以 MCP 工具的形式交给 agent 调用,分界线是:模型只决定何时调用、传什么输入,步骤顺序、审批与状态由工作流按定义执行。文章据此拆解职责划分的判断标准、工具描述与输入契约的设计要点,并列出材料未覆盖、需要自行核实的边界项。

核心要点 TL;DR
  • 分界点不是“谁更聪明”,而是“谁拥有顺序”:模型选时机和参数,工作流拥有执行序列。
  • 工具描述应当描述任务意图而非罗列全量目录,否则上下文预算会被工具清单吃掉。
  • 凡是模型不该自行决定的值(如租户身份),都应留在工作流或网关侧,不进入工具入参。

把工作流交给 agent 调用,最容易搞混的一件事是:到底谁负责“顺序”。据 AWS News Blog 2026 年 11 月 2 日的 Weekly Roundup 转述,Step Functions 工作流现在可以通过 Amazon Bedrock AgentCore Gateway 作为 AI agent 工具暴露,走的是 MCP(Model Context Protocol,模型上下文协议)。该文给出的分工很干脆:agent 决定何时运行工作流、传什么输入;Step Functions 按你定义的方式执行每一步。(来源:AWS News Blog,以下涉及产品行为的描述均转述自该文,未做独立核验。)

换句话说,模型拿到的是一个“可调用的能力”,而不是一段“需要它自己记住的流程”。这篇文章就围绕这条分界线,讲清楚判断标准、工具该怎么描述、入参该怎么收,以及材料没有覆盖、必须自己去核实的部分。

一、分界线的实质:模型拥有时机,工作流拥有顺序#

该文举的例子是客服 agent 触发退款:资格检查、经理审批、入账,这三步每次都按这个顺序发生,因为“顺序本来就不该由模型即兴发挥”。这句话可以作为整条边界的原则。

据此可以把职责拆成两组:

  • 放在模型侧:理解用户意图、判断是否需要调用某个工作流、从对话中抽取参数、读取返回结果后决定是否再调一次或直接回复用户。
  • 放在工作流侧:步骤的先后关系、分支条件、需要等待人工审批的环节、失败后的处理路径、运行状态本身。

这样拆的好处不是架构好看,而是可验证性:顺序写在状态机里,可以逐次复现;顺序写在提示词里,每次执行都是一次抽样。

二、判断标准:哪些步骤该留在工作流里#

不用记抽象原则,用下面这张表逐条对照即可。表中“倾向”是本文基于该文分工描述给出的建议,不是 AWS 的官方规定。

步骤特征倾向放在理由
有副作用且必须按固定顺序执行(扣款、发货、入账)工作流顺序是业务约束,不是模型的判断对象
需要人工审批或长等待工作流审批是流程中的一步,不该由模型“记得去问”
需要审计“谁在什么时候跑了什么”工作流该文提到 agent 可以查询运行记录,说明运行本身是可检索的对象
输入是开放文本、需要理解语义模型这是模型擅长的部分,也是它存在的理由
需要在多个工具之间做取舍模型选哪个工具属于时机判断

一个常见的错误是把第一类步骤写成提示词里的编号列表:“请先检查资格,再请经理审批,最后入账”。这在演示里能跑通,但它把确定性交给了概率性组件。工作流工具化之后,这段文字应该被替换成一次工具调用。

三、工具描述:给任务,不要给目录#

该文转述的 MoEngage 案例里有一个值得记住的细节:把约 400 个内部 REST API 操作(由 25 个团队构建、分布在 7 个区域的私有 VPC 中)接成 agent 工具时,如果做全量工具列表,每个连接会超过 20,000 tokens。他们的做法是让 agent 通过描述任务来搜索工具,而不是一次性接收整个目录。该文称这条托管路径估计节省了约六个月平台工程投入——这是 MoEngage 方面的估算,属于转述,不能当作通用收益。

对写工具描述的人来说,结论是:描述要写“什么时候该用我”,而不是把工作流里每一步都复述一遍。步骤细节留在工作流定义里,模型不需要为了调用它而理解它。

反例与正例的差别大致是这样(结构示意,字段名与真实网关 schema 待核实):

{
  "name": "start_refund_workflow",
  "description": "为指定订单发起退款。用户明确要求退款时使用。不负责判断资格:资格检查、审批与入账由工作流内部按固定顺序完成。",
  "inputSchema": {
    "type": "object",
    "properties": {
      "order_id": { "type": "string" },
      "reason":   { "type": "string" }
    },
    "required": ["order_id"]
  }
}

上面这段是手工写的示意结构,未在任何网关上执行,只用于说明“描述里写边界、不写内部步骤”这个取向。真实工具注册时的字段、鉴权方式与命名限制,材料未提供,需按 AgentCore Gateway 的文档核实。

四、入参契约:模型能填什么,不能填什么#

MoEngage 案例里还有一句更关键的话:租户身份“永远不能成为模型可以设置的参数”。这条约束值得上升到通用规则——凡是模型不该自行决定的值,都不要放进工具入参。

典型的三类值:

  1. 身份与租户:由网关或运行时从调用上下文注入,而不是让模型从对话里“推断”。
  2. 幂等键:如果由模型生成,重试时很可能换一个值,幂等就失效了。应由工作流侧或调用侧固定。
  3. 审批结论:审批是工作流中的一步,不是模型可以代填的字段。

反过来,模型适合填的是那些“从用户话语里来”的值:订单号、退款原因、时间范围。判断方法很简单——这个值如果填错,是用户说错了,还是系统放错了位置?后者就不该出现在入参里。

五、一个最小骨架(未执行)#

下面是一个退款工作流的结构示意,使用 Amazon States Language 的形态,未部署、未执行,仅用于展示“顺序写在状态机里”长什么样。其中 REGION、ACCOUNT_ID 为占位符。

{
  "Comment": "退款流程骨架,仅示意结构,未执行",
  "StartAt": "CheckEligibility",
  "States": {
    "CheckEligibility": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:check-refund-eligibility",
      "Next": "ManagerApproval"
    },
    "ManagerApproval": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:request-approval",
      "Next": "IssueCredit"
    },
    "IssueCredit": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:issue-credit",
      "End": true
    }
  }
}

这段骨架故意省略了错误处理、重试与超时配置——不是因为它们不重要,而是因为材料没有说明工具调用失败时错误如何回传给模型、超时上限是多少。这些恰恰是上线前必须自己确认的部分。

六、材料没有回答、需要自己核实的问题#

该文是一篇周报,覆盖的是“能力存在”与“分工原则”,不是接入手册。以下几点在本次材料中没有依据,写“待核实”,不要按猜测推进:

  • 调用语义:agent 触发工作流是同步等待结果,还是启动后凭运行 ID 查询?材料只提到 agent 可以查询运行记录,未说明默认行为。
  • 失败回传:工作流执行失败时,返回给模型的是结构化错误还是自然语言描述?这直接决定模型能否自我纠正。
  • 超时与配额:单次工具调用的超时上限、并发限制、是否按状态转换计费。材料只说“标准费率”,未给具体数字。
  • 鉴权模型:网关如何把调用方身份传给工作流,与 IAM 权限如何对应。
  • 幂等:重复调用同一工具是否会重复执行副作用,需要在哪一层加约束。
  • 区域:材料称在 AgentCore Gateway 可用的所有区域提供,具体区域列表需查官方文档。

七、结论#

把 Step Functions 当 agent 工具用,本质是一次职责切割,而不是一次模型能力升级。该文开篇的那句判断值得引用:真正留下的印象“与模型有多强无关,而与可达性有关”——已有工作流不用重写就能被调用,价值在于复用,不在于让模型更聪明。

落地时按三步走:先把“顺序与审批”从提示词里搬回状态机;再把工具描述收敛成“何时用我”,而不是“我内部怎么做”;最后把身份、幂等键这类模型不该决定的值挡在入参之外。剩下的延迟、错误语义与配额,材料没有给出答案,需要拿真实文档逐条核实之后再写客户端。

常见问题(FAQ)

把工作流当工具后,原来的 Standard 和 Express 工作流要重写吗?
据 AWS News Blog 的表述,现有的 Standard 和 Express 工作流都可以作为连接器目标,不需要重写;但具体到某个工作流的输入输出是否需要额外包装,材料没有说明,需要按实际网关文档核实。
这是不是意味着业务规则应该搬进提示词?
相反。材料给出的分工是:模型决定何时运行、传什么输入,Step Functions 按你定义的方式执行每一步。顺序与规则留在工作流里,才不会被模型的临场发挥改变。

参考来源

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

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

作者:沐小悠

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

更多文章 GET 示例接口