跳到主要内容

Agent 工作流:不是让模型“自己聊”,而是把任务变成可控执行链

很多人一说 Agent,就想到“模型自己思考、自己决定、自己干活”。这个理解太泛了。更准确的理解是:Agent 工作流(Agent Workflow)本质上是在任务执行过程中,把模型决策、工具调用、状态流转、检查回路和人工介入组织成一条可控的运行链。

0. 面试速答(30 秒版 TL;DR)

  • Agent 工作流不是单轮问答,而是“状态 + 路由 + 工具 + 终止条件”的组合。
  • 常见模式包括:
    • ReAct 循环
    • Plan-and-Execute
    • Router
    • Reviewer / Supervisor
    • Human-in-the-loop
  • 不是所有任务都需要 Agent。
    • 简单问答、固定表单、纯确定性流程,通常没必要上 Agent。
  • 真正的难点不在“让模型会想”,而在:
    • 工具定义清不清楚
    • 状态能不能恢复
    • 终止条件稳不稳
    • 结果能不能评估
  • 一句话:Agent 工作流的核心不是更聪明,而是更可执行、更可观测、更可控。

1. 先分清:工作流不等于完全自治 Agent

这是面试里最容易拉开层次的一点。

可以把它们粗分成两类:

  • 工作流(Workflow):很多步骤、分支和工具调用,是由开发者预先定义好的。
  • Agent:模型在运行中拥有更强的动态决策权,决定下一步做什么、调哪个工具、何时结束。

真实系统里,大多数并不是纯粹二选一,而是:

  • 确定性流程 + 模型决策节点 的混合结构

所以你可以这样记:

  • 工作流偏“预设路径”
  • Agent 偏“动态路由”

最常见的生产实践,其实是两者混合。

2. Agent 工作流的核心心智模型

不要把 Agent 工作流想成“多轮聊天”。更好的心智模型是:

  • 用户提出目标
  • 系统维护状态
  • 模型决定下一步
  • 工具返回外部事实
  • 检查器判断是否通过
  • 不通过就继续循环
  • 达到终止条件才结束

先记主链路:目标 -> 状态 -> 路由 -> 执行 -> 检查 -> 结束,不达标时再回到路由节点。

这张图说明了 Agent 工作流和普通问答的根本差异:

  • 它有 状态
  • 它有 工具
  • 它有 循环
  • 它有 检查
  • 它有 退出条件

3. 组成一个 Agent 工作流,通常要哪些构件

3.1 状态(State)

状态不是附属品,而是核心。

通常至少包括:

  • 用户目标
  • 中间结果
  • 已调用工具记录
  • 当前步骤
  • 错误信息
  • 人工批注

如果没有显式状态,复杂流程很快会乱。

3.2 工具(Tools)

工具是 Agent 真正和外部世界交互的手。

常见工具包括:

  • 搜索
  • 数据库查询
  • HTTP API 调用
  • 文件读写
  • 代码执行
  • 业务动作执行

一个 Agent 没有工具,很多时候就只是“会说话的助手”,不是“能执行的系统”。

3.3 路由(Routing)

路由决定:

  • 该回答
  • 该搜资料
  • 该调工具
  • 该转人工
  • 该结束

没有路由,工作流只会变成固定链条,无法适应复杂任务。

3.4 检查器(Reviewer / Judge)

这是很多人最容易漏掉的一层。

如果没有检查器,你就只能相信模型第一版答案。但真实任务通常需要:

  • 完整性检查
  • 格式检查
  • 事实依据检查
  • 业务规则检查

3.5 终止条件(Stopping Conditions)

必须明确:

  • 最大循环次数
  • 成功判定
  • 失败退出
  • 人工接管条件

否则 Agent 很容易进入高成本空转。

4. 常见 Agent 工作流模式

4.1 ReAct:边想边做

这类模式通常是:

  • 先思考当前情况
  • 决定调用哪个工具
  • 根据工具结果继续思考

优点:

  • 简单直接
  • 对单任务型工具代理很常见

缺点:

  • 状态和可观测性容易做浅
  • 复杂任务下容易反复横跳

4.2 Plan-and-Execute:先规划,再执行

常见做法是:

  • 先由 Planner 拆任务
  • 再由 Executor 执行各子步骤
  • 必要时由 Reviewer 返工

它更适合:

  • 长任务
  • 可拆分任务
  • 需要多阶段交付的任务

4.3 Router:先分类,再走不同路径

例如:

  • FAQ 问题直接回答
  • 资料问题走 RAG
  • 高风险动作转人工审批

这类模式本质上是在做 动态分流

4.4 Supervisor / Multi-Agent:角色分工协作

典型形态是:

  • Supervisor 分派任务
  • Researcher 查资料
  • Executor 执行
  • Reviewer 审查

它的优势是职责清晰,缺点是成本和调试复杂度更高。

4.5 Human-in-the-loop:把人工审批放进链路

这对高风险任务非常重要,例如:

  • 发邮件
  • 改正式数据
  • 调资金接口
  • 发布线上配置

成熟系统不是追求“完全无人”,而是追求“该自动自动,该确认确认”。

5. 一个最小可落地示例

下面给一个极简的 TypeScript 风格伪代码,帮助建立结构感:

type WorkflowState = {
goal: string
step: 'route' | 'retrieve' | 'act' | 'review' | 'done'
category?: 'faq' | 'search' | 'action'
docs?: string[]
result?: string
attempts: number
}

async function runWorkflow(state: WorkflowState) {
while (state.step !== 'done' && state.attempts < 5) {
if (state.step === 'route') {
state.category = await classifyGoal(state.goal)
state.step = state.category === 'faq' ? 'review' : 'retrieve'
} else if (state.step === 'retrieve') {
state.docs = await searchDocs(state.goal)
state.step = 'act'
} else if (state.step === 'act') {
state.result = await callModelWithTools(state.goal, state.docs)
state.step = 'review'
} else if (state.step === 'review') {
const passed = await reviewResult(state.result)
state.step = passed ? 'done' : 'retrieve'
state.attempts += 1
}
}

return state
}

这个示例虽然简化,但它已经体现出 Agent 工作流最关键的 4 个点:

  • 有显式状态
  • 有路由
  • 有工具阶段
  • 有检查与退出

6. 为什么状态和终止条件是一等公民

很多 Agent Demo 看起来很聪明,但一上线就出问题,原因经常不在模型本身,而在工作流设计。

6.1 没有显式状态,流程很难恢复

如果一次任务跑了很久,中途断了:

  • 断在哪一步
  • 哪个工具已经执行过
  • 哪些中间结果还能复用

都需要状态来支撑。

6.2 没有终止条件,成本会失控

没有终止条件的 Agent 很容易出现:

  • 一直查资料
  • 一直重试
  • 一直自我反思

最后不是答案更好了,而是 token 更贵了。

6.3 没有观测,排障几乎不可能

你至少要知道:

  • 每一步走了什么路由
  • 调了什么工具
  • 哪一步失败
  • 最终为什么结束

否则 Agent 出错时,你只能“感觉它不太对”。

7. 什么场景适合 Agent 工作流

更适合的通常是:

  • 多步骤任务
  • 需要工具调用
  • 有中间检查点
  • 成功标准相对明确
  • 允许分阶段推进

例如:

  • 客服助手接知识库和工单系统
  • 编码助手接搜索、编辑、测试工具
  • 研究助理接检索、阅读、总结、审校流程

8. 什么场景不适合

不适合硬上 Agent 的通常是:

  • 单轮问答
  • 纯模板填充
  • 完全确定性的业务流
  • 没有工具也没有外部动作的简单聊天

如果任务本身就是固定规则,用普通代码往往更稳定、更便宜。

9. 如何评估一个 Agent 工作流是不是好

不要只看最终回答像不像。

成熟评估至少拆成这些维度:

9.1 任务成功率

有没有真的把任务做完。

9.2 工具调用质量

包括:

  • 调没调对工具
  • 参数对不对
  • 是否过度调用

9.3 迭代成本

包括:

  • 平均循环次数
  • 平均 token 消耗
  • 平均完成时延

9.4 升级与回退能力

工作流变复杂后,能不能:

  • 灰度发布
  • 快速回滚
  • 对比新旧策略

这决定了它是不是生产可维护系统。

10. 面试高频追问

10.1 为什么 Agent 工作流不应该只靠 Prompt 堆出来?

标准答法:

因为复杂任务不仅需要语言理解,还需要状态管理、工具调用、错误恢复、人工介入和退出控制。只靠 Prompt 堆出来,流程不可观测、不可恢复、也不可治理。

10.2 工作流和自治 Agent,怎么选?

标准答法:

任务明确、步骤稳定、可预测时,更适合工作流;任务开放、路径不固定、需要模型根据环境动态决策时,才更适合更强自治的 Agent。生产实践里通常是混合方案。

10.3 Agent 工作流最容易失控的点是什么?

标准答法:

最容易失控的是工具边界不清、状态设计薄弱、缺少终止条件和缺少评估闭环。很多系统不是模型不会做,而是流程没有被设计成可控系统。

11. 常见误区

  • 误区一:把多轮聊天当成 Agent 工作流。 真正的工作流至少还需要状态、工具和路由。
  • 误区二:任务一复杂就拆成很多 Agent。 Agent 数量变多,不等于系统更强,只会先增加调试难度和成本。
  • 误区三:只看最终答案,不看过程指标。 这样很难定位问题到底出在路由、工具还是检查阶段。
  • 误区四:不做人类兜底。 高风险动作没有审批,会把系统风险放大。

12. 版本与事实说明

截至 2026 年 3 月 30 日,主流 Agent 工程实践的共识仍然偏向:先用简单、可组合的工作流,再在必要时增加自治能力。 官方和社区资料也越来越强调状态、工具接口、检查机制、人工介入和可观测性,而不是一味追求“完全自动”的黑盒代理。因此在面试或设计系统时,重点应放在 工作流如何被设计成可控系统,而不是把 Agent 理解成会无限自主行动的模型。

13. 速记要点

  • Agent 工作流核心是 状态 + 路由 + 工具 + 终止条件
  • 常见模式:ReAct / Plan-and-Execute / Router / Reviewer / HITL
  • 真正难点在 可控、可观测、可恢复
  • 不是所有任务都需要 Agent
  • 生产实践常是 工作流和 Agent 的混合体