AI Agent智能体系统设计AI EngineerMCP协议System DesignHebbia架构

AI Agent 系统设计面试全景指南 2026:Planner-Executor、MCP 协议、流式状态机与长任务调度

2026 年大模型智能体 (AI Agent) 系统设计面试深度复盘:涵盖 Orchestrator-Worker 架构、Hebbia 多智能体长任务状态机、MCP 协议集成、Token 预算与主动取消机制。

Interview Coach Pro · · 24 分钟阅读

面试高频场景:复杂金融研报提取(如 Hebbia Multi-Agent)、自主代码审查与修复 Agent、招聘猎头智能体(如 LinkedIn Assistant)、自动化客服流程编排
核心考核点:如何设计多智能体任务分解?如何处理长达数分钟的长任务与中间状态流式推送?如何支持用户随时中断取消?如何控制 Token 爆炸与死循环?


2026 年工业级 AI Agent 核心架构演进

从 2024 年简单的单轮 ReAct(Reasoning + Action)循环,到 2026 年工业级多智能体系统(Multi-Agent System),Agent 系统设计已经演变为包含**编排调度器(Orchestrator)、异构子智能体(Specialized Sub-Agents)、协议总线(MCP Bus)与流式状态机(Streaming State Machine)**的复杂分布式架构。

┌────────────────────────────────────────────────────────────────────────────────┐
│                         工业级多智能体协同架构 (Multi-Agent)                     │
└───────────────────────────────────────┬────────────────────────────────────────┘
                                        │ User Prompt (例如: "比对 5 家车企最新 10-K 财报中的研发投入")

                        ┌───────────────────────────────┐
                        │   Orchestrator Agent (大脑)   │
                        │  - 任务分解 (Task Decompose)  │
                        │  - 依赖拓扑构建 (DAG Planner)  │
                        │  - 动态调度与重试策略          │
                        └───────┬───────────────┬───────┘
                                │               │
                ┌───────────────┘               └───────────────┐
                ▼                                               ▼
┌───────────────────────────────┐               ┌───────────────────────────────┐
│ SEC Document Retrieval Agent  │               │ Financial Metric Parser Agent │
│ (子智能体 A: 海量文档检索)     │               │ (子智能体 B: 结构化表格提取)   │
│ - 调用向量检索与 BM25 API     │               │ - 调用 OCR 与 Code Interpreter│
└───────────────┬───────────────┘               └───────────────┬───────────────┘
                │                                               │
                └───────────────────────┬───────────────────────┘
                                        │ 子任务执行结果与中间事件汇聚

                        ┌───────────────────────────────┐
                        │   Output / Synthesis Agent    │
                        │  - 交叉对比分析与结果汇总      │
                        │  - SSE 流式推送 + 引用标注     │
                        └───────────────┬───────────────┘


                        ┌───────────────────────────────┐
                        │ Frontend UI (实时加载/取消)   │
                        └───────────────────────────────┘

经典系统设计真题实战:Hebbia 风格的多智能体 SEC 研报分析系统

面试真题背景

设计一套面向华尔街分析师的 Hebbia Chat 多智能体系统。系统由 Orchestrator AgentSEC Filings Agent(负责检索与抽取文档)和 Output Agent(负责流式生成与渲染)组成。

  • 系统约束
    1. 整个多智能体分析过程可能持续长达 1–5 分钟。
    2. 必须在每个子 Agent 执行前后,向前端实时推送加载事件(Real-time Loading States)。
    3. 支持用户随时在前端点击“取消(Cancel)”,立即释放下游模型调用资源。
    4. 严格限制单次会话的 Token 预算与最大迭代轮次,防止 Agent 进入死循环。

核心技术实现:支持异步流式事件与取消令牌的 Agent 状态机

import asyncio
from typing import AsyncGenerator, Dict, Any, List, Optional

class CancellationToken:
    """支持跨异步协程传播的主动取消标记"""
    def __init__(self):
        self.is_cancelled = False

    def cancel(self):
        self.is_cancelled = True

class MultiAgentOrchestrator:
    def __init__(self, max_iterations: int = 5, token_limit: int = 50000):
        self.max_iterations = max_iterations
        self.token_limit = token_limit
        self.used_tokens = 0

    async def execute_workflow(
        self, 
        query: str, 
        cancel_token: CancellationToken
    ) -> AsyncGenerator[Dict[str, Any], None]:
        """
        流式生成事件与最终文本
        """
        # 1. 任务启动通知
        yield {"event": "WORKFLOW_START", "message": "Orchestrator analyzing query..."}
        await asyncio.sleep(0.1)

        # 检查取消
        if cancel_token.is_cancelled:
            yield {"event": "CANCELLED", "message": "Task cancelled by user."}
            return

        # 2. 调度 SEC Filings Agent (可多轮执行)
        for i in range(2):
            if cancel_token.is_cancelled:
                yield {"event": "CANCELLED", "message": "Task cancelled by user."}
                return

            yield {"event": "AGENT_BEFORE_EXECUTE", "agent": "SEC Filings Agent", "step": i + 1}
            # 模拟执行子 Agent 工具调用
            await asyncio.sleep(0.5)
            self.used_tokens += 1200

            yield {"event": "AGENT_AFTER_EXECUTE", "agent": "SEC Filings Agent", "status": "COMPLETED", "documents_found": 3}

        # 3. 调度 Output Agent 执行流式合成
        yield {"event": "AGENT_BEFORE_EXECUTE", "agent": "Output Synthesis Agent", "step": 1}
        
        sample_response = [
            "根据最新 10-K 文件显示:",
            "特斯拉 2025 年研发投入达到 45 亿美元,同比增长 18%;",
            "通用汽车同期研发投入为 38 亿美元,主要集中在电池工厂转型。"
        ]

        for chunk in sample_response:
            if cancel_token.is_cancelled:
                yield {"event": "CANCELLED", "message": "Streaming stopped by user."}
                return
            await asyncio.sleep(0.2)
            yield {"event": "OUTPUT_TOKEN", "text": chunk}

        yield {"event": "WORKFLOW_COMPLETE", "total_tokens_used": self.used_tokens}

Agent 系统设计的高频追问(Follow-up Questions)

1. 如何防止 Agent 工具调用的死循环与雪崩?

  • 硬性拦截器(Circuit Breakers):设定 max_hops = 8,一旦 Agent 在相同入参下连续 2 次触发相同 Tool 且返回空结果,强制将状态流转给 Fallback Agent 或直接向用户报错求助。
  • Token 熔断监控:累加单次 Session 消费的 Prompt + Completion Tokens,达到 80% 阈值时强制注入 System Reminder 提示模型进入总结收敛阶段。

2. 长时间运行的 Agent 任务状态如何持久化?

  • State Store 选型:使用 Redis 维护会话级临时状态机,使用 PostgreSQL / DynamoDB 异步持久化每一步 Agent 的输入、输出与 Tool Call Payload。
  • 断点重试与幂等性(Idempotency):给每个子任务分配唯一 subtask_id,若某 Worker 发生网络抖动或 Crash,Orchestrator 仅重试该子任务,而无需重新运行上游已完成的全部步骤。

相关推荐阅读


💡 需要针对 AI Agent 架构的专业 Mock 辅导?

I

关于作者

Interview Coach Pro 是 Interview Coach Pro 的技术面试教练,长期辅导在美国求职的中文候选人准备 SDE、System Design、Behavioral、Data Engineer 和 ML Engineer 面试。

本文基于匿名面试复盘、公开岗位要求和一对一辅导中的高频问题整理,发布前会检查内容结构、术语准确性和可操作性。你也可以查看我们的 辅导团队辅导方法

相关面试辅导

如果你正在准备类似面试,可以直接从下面的专项辅导开始。

准备好拿下下一次面试了吗?

获取针对你的目标岗位和公司的个性化辅导方案。

联系我们