模块四 · 复杂协作

复杂状态建模、Subagent 派发与多智能体编排

为什么复杂的真实业务不能指望单条 Prompt 一气呵成?本章深入有限状态机 (FSM)、主从 Subagent 派发架构与多智能体拓扑解耦。

1
为什么线性 Prompt 崩溃?有限状态机 (FSM) 的救赎

在长流程(如全自动编写研报、数据清洗流水线、多步跨系统转账)中,如果仅让大模型在自由对话中“见机行事”,随着轮次增加,模型极易产生指令漂移 (Instruction Drift)、跳过关键校验、甚至反复陷入无意义调用。

💡 生产级解法:有限状态机 (Finite State Machine, FSM)

用确定性的状态机,包裹非确定性的大模型!
每个状态只允许执行特定动作并拥有独立的提示词与工具集。模型不能随意跳转到未开放的阶段,必须通过条件守卫(Guard Conditions)才能流转到下一状态。

typescript - Harness 核心状态机状态与转移定义
type AgentState = 'IDLE' | 'PLANNING' | 'EXEC_TOOL' | 'VERIFYING' | 'WAITING_HUMAN' | 'DONE';

interface StateContext {
  state: AgentState;
  userGoal: string;
  planSteps: string[];
  currentStepIndex: number;
  toolResults: Record<string, any>;
  retryCount: number;
}

class AgentStateMachine {
  private ctx: StateContext;

  transition(event: 'START' | 'PLAN_OK' | 'TOOL_SUCCESS' | 'TOOL_FAIL' | 'VERIFY_PASS' | 'VERIFY_FAIL') {
    switch (this.ctx.state) {
      case 'IDLE':
        if (event === 'START') this.ctx.state = 'PLANNING';
        break;
      case 'PLANNING':
        if (event === 'PLAN_OK') this.ctx.state = 'EXEC_TOOL';
        break;
      case 'EXEC_TOOL':
        if (event === 'TOOL_SUCCESS') this.ctx.state = 'VERIFYING';
        if (event === 'TOOL_FAIL' && ++this.ctx.retryCount > 3) this.ctx.state = 'WAITING_HUMAN';
        break;
      case 'VERIFYING':
        if (event === 'VERIFY_PASS') this.ctx.state = 'DONE';
        if (event === 'VERIFY_FAIL') this.ctx.state = 'PLANNING'; // 自反思回滚重构计划
        break;
    }
  }
}
2
交互式实战:FSM 状态机跳转与回滚演示

点击下方不同的触发事件,观察状态节点如何被激活、何时触发自反思回滚、何时暂停等待人工介入:

🕸️ 状态机流转控制台
IDLE 就绪空闲
➔
PLANNING 目标拆解
➔
EXEC_TOOL 工具调度
➔
VERIFYING Grounding 校验
➔
DONE 交付输出
[System] 状态机已初始化。当前状态: IDLE (等待用户任务)
3
Subagent (子智能体) 模式与多智能体拓扑

在候选人的专家能力和简历项目中,“多智能体编排与 Subagent 模式”被广泛运用。其核心理念是“分而治之,上下文强隔离”。

单智能体大杂烩 (Context Bleed)

一个 Agent 既要负责前端代码,又要负责分析金融时钟,还要撰写营销文案。所有上下文混在一起,Token 飞速爆表,模型注意力严重污染。

Master-Subagent 派发范式

主智能体 (Orchestrator) 负责高维拆解任务;派发独立的 子智能体 (Subagent) 专注于单一垂直领域。子智能体拥有纯净独立的上下文,执行完只返回结论,主智能体聚合最终交付!

多智能体主流协作拓扑 (Topologies)

4
本章知识通关自测
1. [单选] 在处理复杂多任务时,采用 Subagent (子智能体) 模式相比把所有指令堆在单一 Agent 中的最大优势是什么?
上一章 ← 3. 上下文工程与 KV Cache 下一章 5. 评测体系 (Eval) 与可靠性闭环 →