Skip to content

高频面试题

如何设计一个生产级的 Agent 系统架构?需要考虑哪些关键模块?

这道系统设计题的重点不是画一个“用户 -> LLM -> 工具”的线,而是把控制权、状态、权限、评估、可观测和可靠性边界讲完整。

适合阶段:Agent 架构 / 生产落地 / 系统设计面核心能力:Runtime · Tool Platform · Memory · Security · Eval · Observability

面试官角度分析,想考什么

  • 生产级 Agent 和 demo 差在哪?
    考意识:demo 跑通工具调用,生产要权限、状态、失败、评估、成本和审计。

  • 关键模块和控制权在哪里?
    考拆分:runtime、context、tools、memory、policy、trace;模型提议,系统决定执行。

  • 如何保证可靠、安全和持续改进?
    考落地:超时重试回滚、沙箱审批、trace 和离线 eval 回归。

可直接抄走的 30 秒参考答案

text
我会把生产级 Agent 设计成可控 runtime,而不是 LLM 直接调工具。入口层处理身份、租户、意图和风险;Runtime 管 loop、状态、终止条件和恢复;Context Builder 组装任务、记忆、RAG 和工具 schema;Tool Platform 统一管理工具注册、MCP 接入、执行、超时和幂等;Policy/Guardrail 做权限、沙箱、高危确认和输出检查;State/Memory 区分当前任务状态和长期记忆;Trace/Eval 记录全过程并做回归;部署层负责队列、隔离、限流、成本和告警。

面试回答详解,知其所以然

生产级 Agent 的核心原则是:模型可以动态决策,但系统必须拥有控制边界。架构不是为了让 Agent “更自由”,而是让它在可观测、可授权、可恢复、可评估的边界里完成任务。

1. 总体架构可以这样拆

text
Client / API
  -> Intent & Risk Router
  -> Agent Runtime / Runner
  -> Context Builder
  -> LLM Gateway
  -> Tool Platform / MCP Gateway
  -> State Store / Memory Store
  -> Policy & Guardrail
  -> Trace / Eval / Monitoring
  -> Human Review & Approval

这张图不用追求组件名字固定,关键是职责完整:入口分流、运行时控循环、上下文可控、工具可管、状态可恢复、安全可执行、质量可度量。

2. 入口层:任务、身份和风险先识别

入口层不只是收消息。它要先处理:

  • 用户身份、租户、会话和授权 scope。
  • 请求来源,例如 Web、Slack、IDE、API。
  • 意图分类和任务类型。
  • 风险分级,例如只读问答、内部写入、对外副作用、高危操作。
  • 文件、链接、外部文档等不可信输入标记。
  • 同步/异步任务选择。

高风险任务不要一开始就进入自由 Agent loop。可以先进入受限 workflow、要求澄清或人工确认。

3. Runtime 层:控制循环和停止条件

Runtime 是生产 Agent 的中心。它负责:

  • 加载状态和历史。
  • 计算当前允许动作。
  • 构建模型上下文。
  • 调用模型得到候选动作。
  • 调用 policy 决定是否执行。
  • 执行工具并把结果写回 state。
  • 判断继续、停止、澄清、降级或人工介入。

典型伪代码:

text
while not done:
  state = state_store.load(run_id)
  allowed_tools = policy.allowed_tools(user, state)
  context = context_builder.build(state, allowed_tools)
  action = llm.propose(context)
  decision = policy.authorize(action, user, state)
  state = executor.apply(decision, action, state)
  done = stop_checker.check(state)

面试里要强调:LLM 主导候选动作,不主导系统权限、终止条件和最终副作用。

4. Context Builder:上下文不是越多越好

Context Builder 负责把可用信息压成当前轮模型真正需要的输入:

  • system/developer 指令。
  • 当前任务目标和约束。
  • 最近对话摘要。
  • 工作记忆和当前计划。
  • RAG 检索结果。
  • 长期记忆中相关且有权限的记录。
  • 可用工具 schema。
  • 工具结果和 artifacts 摘要。

它还要处理上下文预算、优先级、去重、引用、过期信息和敏感信息脱敏。把所有历史、所有工具、所有文档全塞进去,既贵又容易污染。

5. Tool Platform:工具接入和执行边界

生产工具层通常包括:

  • Tool Registry:schema、版本、owner、risk、权限要求。
  • Tool Executor:本地函数、HTTP API、队列、浏览器、代码沙箱、MCP Server。
  • MCP Gateway:连接外部 tools/resources/prompts。
  • 参数校验和业务规则。
  • 幂等、超时、重试、熔断、降级。
  • 结果标准化和错误回传。
  • 审计日志和调用指标。

工具层是副作用发生的地方,所以也是安全边界最硬的一层。

6. Policy、Guardrail 和 Human-in-the-loop

安全模块要覆盖三类问题:

  • 输入侧:prompt injection、恶意文件、越权请求、敏感数据。
  • 执行侧:工具白名单、ACL、参数级权限、沙箱、高危确认。
  • 输出侧:事实一致性、PII、合规、HTML/Markdown sanitize、对外话术。

Human-in-the-loop 应该按风险触发,而不是每一步都问。对外发送、删除、退款、资金、权限、批量操作、不可逆动作通常需要确认或审批。

7. State 和 Memory:区分运行状态与长期记忆

生产架构里至少有两类状态:

  • Run State:当前任务的事件流、计划、工具结果、审批、错误、checkpoint。
  • Long-term Memory:跨会话复用的用户偏好、项目事实、历史经验、组织知识。

Run State 强调恢复和审计;Long-term Memory 强调写入治理、检索、权限、冲突、删除和过期。不要把聊天记录全量当长期记忆。

8. Observability 和 Eval:上线后能不能改进

生产 Agent 必须记录结构化 trace:

  • 模型调用、token、延迟、成本。
  • 工具调用、参数、结果、错误。
  • policy 判定、人工确认。
  • RAG 检索、引用、memory 命中。
  • 最终输出、用户反馈和业务状态。

Eval 则把 trace 变成改进闭环:

  • 离线回归集。
  • 任务完成度评估。
  • 工具正确性评估。
  • 忠实性和引用评估。
  • 安全红队 case。
  • 线上采样 judge 和人工抽检。

没有 trace 和 eval,Agent 质量只能靠感觉调 prompt。

9. 部署和可靠性

生产系统还要考虑非模型工程:

  • 同步 vs 异步任务队列。
  • worker 隔离和租户隔离。
  • 模型和工具超时。
  • 重试、幂等、回滚和补偿事务。
  • 成本预算、限流和配额。
  • 灰度、A/B、模型版本和 prompt 版本。
  • secrets 管理和日志脱敏。
  • SLA、告警和事故响应。

这部分往往是面试加分点,因为它说明你真的把 Agent 当生产系统,而不是聊天 demo。

面试官追问3个问题

追问一:生产 Agent 的控制权到底在哪里?

  • 考察点:是否避免“模型全权代理”。
  • 回答方向:Runtime 控 loop 和终止,Policy 控权限和风险,Tool Platform 控执行,LLM 只生成候选动作和解释。

追问二:如果工具失败怎么办?

  • 考察点:可靠性设计。
  • 回答方向:把错误作为 observation 写回 state;按错误类型重试、换工具、降级、澄清或人工介入;写操作要幂等,外部副作用要可审计和补偿。

追问三:长期任务怎么恢复?

  • 考察点:状态设计。
  • 回答方向:用事件流记录每步输入、模型动作、工具结果和审批,用 checkpoint 保存当前状态。worker 重启后从 checkpoint 继续,必要时重放事件。

扩展知识

Demo 架构和生产架构的差别

text
Demo: prompt + tools + while loop
Production: runtime + state + tools + policy + trace + eval + ops

Demo 关心能不能完成;生产关心能不能稳定、可控、可审计、可恢复、可迭代。

Workflow 和 Agent 可以混合

高风险业务不一定适合完全自由 Agent。常见做法是外层 workflow 控制关键状态,局部节点使用 Agent 处理长尾语义和工具选择。这类 constrained agentic workflow 在生产里很实用。

人机协同是架构模块,不是临时弹窗

审批、澄清、人工接管、结果验收、任务恢复都需要产品和后端支持。Human-in-the-loop 如果没有状态和 trace 支撑,就很难规模化。

基于 MIT 协议开源