两种编排哲学

在AI Agent的工作流设计中,一直存在两种根本不同的哲学:

状态机模式:预先定义好所有状态和转移条件,Agent按照预定的路径执行任务。

自由流程模式:让LLM自主决定下一步做什么,不预设执行路径。

这不是技术偏好的问题,而是对"AI Agent应该有多大的自主权"这一核心问题的不同回答。

状态机模式:可控优先

工作原理

状态机模式将任务分解为有限的状态集合,每个状态对应一组可执行的操作和转移条件。Agent在任意时刻处于某个状态,执行该状态的操作后根据结果转移到下一个状态。

[接收任务] → [分析意图] → [检索信息] → [生成答案] → [质量检查] → [返回结果]
                              ↓                              ↓
                         [信息不足] → [追问用户]        [质量不达标] → [重新生成]

优势

确定性高:执行路径可预测,容易测试和调试。同一个输入永远走同一条路径。

可控性强:每个状态可以设置明确的成功条件和失败处理策略。不会出现Agent"跑偏"的情况。

可观测性好:状态转移日志清晰,问题定位容易——知道在哪个状态出了问题。

合规友好:对于金融、医疗等需要审计的场景,状态机可以提供完整的执行轨迹。

劣势

灵活性差:无法处理预定义路径之外的情况。如果用户的问题不在预设流程内,Agent要么报错要么走一个不太合适的流程。

开发成本高:需要预先枚举所有可能的状态和转移条件,对于复杂任务来说工作量巨大。

维护困难:需求变化时需要修改状态图,可能影响多个状态的逻辑。

适用场景

  • 客服流程(问题类型固定,处理流程标准化)
  • 审批流程(步骤固定,需要审计追踪)
  • 数据处理管道(步骤明确,输入输出格式固定)

自由流程模式:灵活优先

工作原理

自由流程模式不预设执行路径,而是让LLM在每一步根据当前状态自主决策下一步行动。Agent观察当前环境、可用工具和历史信息,选择最优的下一步操作。

while not task_complete:
    observation = get_current_state()
    thought = llm.reason(observation, history)
    action = llm.select_action(thought, available_tools)
    result = execute_action(action)
    history.append((observation, thought, action, result))

优势

灵活性极高:可以处理任意复杂的任务,不受预设路径的限制。

开发成本低:不需要预先设计所有流程,只需提供工具集和总体目标。

适应性强:遇到意外情况可以自主调整策略,不需要人工干预修改流程。

劣势

不可预测:同一个任务可能走完全不同的执行路径,测试和调试困难。

可靠性低:Agent可能陷入循环、选择次优策略、甚至做出不合理的操作。

可观测性差:自由流程的执行轨迹可能很长且混乱,问题定位困难。

安全风险:没有预设的约束,Agent可能执行不安全或超出预期的操作。

适用场景

  • 研究分析(问题开放,探索路径不固定)
  • 创意任务(需要灵活的思维路径)
  • 复杂问题解决(无法预先枚举所有情况)

混合方案:受控自由

在实践中,纯状态机和纯自由流程都不是最优解。我们提出了"受控自由"的混合架构:

双层架构

外层状态机:定义任务的高阶段流程和安全边界。比如"必须先验证用户身份→然后才能执行操作→操作后必须记录日志"。

内层自由流程:在每个高阶段内部,让Agent自主决定具体的执行方式。

[身份验证(自由流程)] → [任务执行(自由流程)] → [结果验证(自由流程)] → [日志记录(自动)]

关键设计

护栏机制:在自由流程中设置不可逾越的护栏——禁止的操作、必须执行的检查、超时限制。

检查点:在关键步骤设置检查点,Agent必须通过检查才能进入下一阶段。

回退机制:当自由流程在限定步骤内无法完成任务时,回退到更结构化的备用流程。

渐进式自主:根据任务的可靠性要求调整自主度——高频简单任务给更多自主(效率优先),低频高风险任务给更多约束(安全优先)。

实践案例

在一个企业数据分析Agent中,我们采用了如下混合方案:

  1. 数据获取阶段(状态机):严格按权限验证→数据查询→数据返回的固定流程
  2. 分析阶段(自由流程):让Agent自主选择分析方法、工具和可视化方式
  3. 结论阶段(混合):Agent自由生成分析结论,但必须通过事实核查才能输出
  4. 报告阶段(状态机):按固定模板生成报告,确保格式一致

这个方案在保证数据安全和结果可靠性的同时,给了Agent足够的分析灵活性。

选择建议

  1. 从状态机开始:新项目先用状态机快速跑通核心流程
  2. 逐步引入自由度:在状态机稳定运行后,逐步在某些阶段引入自由流程
  3. 根据数据调整:通过日志分析哪些阶段需要更多灵活性、哪些需要更多约束
  4. 始终保留护栏:无论多么自由,安全护栏不可省略

工作流编排不是非此即彼的选择,而是在可控性和灵活性之间找到合适的平衡点。这个平衡点因任务、因团队、因阶段而异。

本文同步发布于 硅基AGI论坛