Skip to content

Agent 系统设计面试题:如何讲清楚一个生产级 Agent ​

这篇文章解决什么问题 ​

面试中经常会被问:

  • 你怎么设计一个 AI Agent 系统?
  • Agent 和普通 LLM 应用有什么区别?
  • Agent 怎么调用工具?
  • Agent 怎么保证执行过程可追踪?
  • Agent 效果怎么评估?
  • Agent 出错怎么恢复?
  • Agent 怎么做权限控制和安全审计?

如果你只回答"用 LangChain / LangGraph"或者"写好 Prompt 就行",面试官会觉得你没有工程落地经验。

核心观点:回答 Agent 系统设计时,不能只说框架名,而要讲清楚系统分层、执行链路、状态管理、工具权限、可观测性和评测闭环。

这篇文章基于 HFL AI Agent Lab 站点建设中积累的 Agent 工程理解,整理面试中如何讲清楚一个生产级 Agent 系统。


面试官真正想考什么 ​

考察点面试官想确认什么
是否理解 Agent 和普通 LLM 应用的区别你知不知道 Agent 不只是调 API 返回文本
是否理解 Runtime你知不知道 Agent 需要一个执行引擎来组织模型、工具和状态
是否理解工具调用工程化你知不知道 Tool Calling 不是简单函数调用
是否理解状态管理你知不知道多步骤任务需要 State 推进
是否理解 Trace你知不知道生产级 Agent 需要可追踪的执行轨迹
是否理解 Evaluation你知不知道 Agent 需要评测闭环
是否理解安全边界你知不知道 Agent 调用工具会带来安全风险
是否有工程落地意识你能不能把概念落地成可执行的系统设计

面试官不是想听你背概念,而是想确认你有没有想过"如果真要做一个 Agent 系统,应该怎么设计"。

回答 Agent 系统设计时,要展示你考虑到了工程落地的各个方面:不只是模型能做什么,还有系统怎么保证可控、可追踪、可评估、可恢复。


一句话回答框架 ​

如果让我设计一个生产级 Agent 系统,我会把它拆成请求入口、Agent Runtime、工具系统、Memory / State、Trace、Evaluation、安全控制和部署监控几个模块。Runtime 负责接管任务、组织模型调用、选择工具、推进状态和生成结果;工具系统负责 Schema、参数校验、权限和执行;Trace 记录每一次模型调用、工具调用和状态变化;Evaluation 负责评估任务完成率、工具调用准确率、成本和安全风险。这样系统不是只会生成文本,而是可以执行、可追踪、可评估、可恢复。

这个回答框架的核心是:不讲框架名,讲系统模块;不讲 Prompt,讲执行链路;不讲"能做什么",讲"怎么保证可控"。


Agent 系统分层 ​

层级作用面试表达
API 层接收用户请求,返回结果负责请求接入、鉴权、限流和结果格式化
Runtime 层任务执行引擎,组织模型、工具、状态和 Trace负责创建 run_id、推进 step、调用模型、选择工具、生成结果
Tool 层工具注册、Schema、参数校验、权限和执行负责工具调用的安全、规范和可追踪
Memory / State 层管理会话上下文、长期记忆和任务状态负责 Context 构建、State 推进和 Memory 复用
Trace 层记录每次模型调用、工具调用和状态变化负责执行轨迹的完整记录和问题定位
Evaluation 层评估任务完成率、工具准确率、成本和安全负责质量闭环和持续优化
Security 层权限控制、审计日志、敏感信息脱敏负责工具调用的安全边界和合规
Storage 层持久化任务数据、Trace、Memory 和评测结果负责数据的可靠存储和查询
Deployment 层部署、监控、告警和扩缩容负责系统上线后的稳定运行

面试时不需要每一层都展开,但要让面试官知道你考虑到了这些层面。


Agent 执行链路怎么讲 ​

一条完整的 Agent 执行链路:

用户请求 → API 接入 → Runtime 创建 run_id → 读取 Session / Memory / State → 调用模型 → 解析 Action → 校验工具参数 → 权限检查 → 执行工具 → 更新状态 → 记录 Trace → 判断是否继续 → 生成最终结果 → 进入 Evaluation

每一步的作用:

  1. 用户请求:用户通过 API 发起任务。
  2. API 接入:鉴权、限流、格式化请求。
  3. Runtime 创建 run_id:为这次任务创建唯一标识。
  4. 读取 Session / Memory / State:构建当前上下文。
  5. 调用模型:传入上下文,获取下一步行动。
  6. 解析 Action:把模型输出解析成结构化行动。
  7. 校验工具参数:检查参数是否符合 Schema。
  8. 权限检查:检查用户是否有权限调用该工具。
  9. 执行工具:调用工具系统执行操作。
  10. 更新状态:根据工具结果更新任务状态。
  11. 记录 Trace:记录这次调用的完整信息。
  12. 判断是否继续:检查停止条件,决定继续还是结束。
  13. 生成最终结果:整理所有信息,生成用户可读结果。
  14. 进入 Evaluation:对结果进行质量评估。

Runtime 怎么讲 ​

面试中要强调:

  • Runtime 不是模型。模型负责推理,Runtime 负责执行。
  • Runtime 是任务执行引擎。它组织模型调用、工具调用、状态推进和结果生成。
  • Runtime 要有停止条件。最大 step 数、最大耗时、成本上限。
  • Runtime 要有错误处理。工具失败、模型输出异常、超时。
  • Runtime 要有成本统计。记录每次模型调用的 token 消耗。
  • Runtime 要有状态恢复。任务中断后能从断点继续。

面试表达:

我会把 Runtime 设计成任务执行中心,每次任务生成 run_id,每个阶段生成 step_id,模型调用、工具调用和状态变化都挂在同一个执行轨迹下。Runtime 不只是 while loop,还要处理权限控制、Trace 记录、错误恢复、成本统计和人工审批。

Runtime 的核心设计原则是:每次任务执行都有唯一标识,每个步骤都有状态记录,每个工具调用都有权限检查,每个错误都有处理策略,每次执行都有成本统计。这样系统才是可控的、可追踪的、可优化的。


Tool Calling 怎么讲 ​

工具调用不是普通函数调用,而是一套完整的工程机制。工具 Schema 至少要定义:

  • tool_name:工具唯一标识。
  • description:功能描述,帮助模型判断什么时候用。
  • input_schema:输入参数的 JSON Schema。
  • output_schema:输出结果的结构定义。
  • permission_level:权限等级。
  • risk_level:风险等级。
  • timeout:超时时间。
  • retry_policy:重试策略。
  • audit_log:审计日志。

必须讲的工程点:

  • 参数校验:模型生成的参数不能直接执行,需要校验类型、必填字段、值域和安全风险。
  • 权限控制:检查当前用户是否有权限调用该工具。
  • 高风险审批:删除数据、发送消息、执行代码等操作需要审批。
  • 错误处理:根据错误类型决定重试、降级还是终止。
  • 结果结构化:返回 status、data、error_code、latency_ms。
  • Trace 记录:每次工具调用都记录到 Trace。

面试表达:

我不会把 Tool Calling 当成普通函数调用。模型生成的参数可能有格式错误、类型不匹配甚至安全风险,必须经过参数校验和权限检查才能执行。高风险工具还需要审批机制,不能只靠 Prompt 约束。


Memory / State 怎么讲 ​

面试中不要把 Memory 简化成聊天记录。要区分五个概念:

  • Session:当前会话容器。
  • Context:当前模型调用看到的信息。
  • Memory:长期可复用信息,跨会话持久化。
  • State:任务执行状态,记录当前步骤和进度。
  • Trace:执行过程记录。

面试表达:

State 用于任务推进——记录当前步骤、已完成步骤、待处理操作和关键状态摘要。Memory 用于长期复用——保存用户偏好、项目背景和历史经验。Trace 用于复盘和审计——记录每次模型调用、工具调用和状态变化。这三者有不同的生命周期和管理策略。

面试中还要提到上下文压缩:长任务会导致上下文膨胀,需要压缩策略——保留关键状态摘要和工具调用结果,丢弃低价值的历史内容。这样既保证模型有足够的信息,又不会超出 token 限制。


Trace 怎么讲 ​

生产级 Agent 必须记录完整执行轨迹:

  • run_id:任务执行唯一标识。
  • step_id:当前步骤标识。
  • model_call:模型调用的输入、输出和耗时。
  • tool_call:工具调用的名称、参数、结果和状态。
  • state_change:任务状态的变化。
  • error_event:错误信息和处理方式。
  • latency:执行耗时。
  • token_usage:token 消耗。
  • cost:成本。
  • final_result:最终结果。

面试表达:

我不会只保存最终答案,而会保存完整执行轨迹。这样当 Agent 出错时,可以定位是模型输出问题、工具参数问题、权限问题、外部服务问题还是状态推进问题。Trace 也是 Evaluation 的数据来源——通过分析 Trace 可以发现哪些步骤容易失败、哪些工具调用不准确。

Trace 的设计原则是:只记录推进任务所需的信息,不记录无关细节。敏感信息(如 API Key、Token)需要脱敏后记录。


Evaluation 怎么讲 ​

Agent 评测不能只看最终文本。至少要看这些指标:

  • Task Success Rate:任务完成率。
  • Tool Call Accuracy:工具调用准确率。
  • Step Completion:步骤完成率。
  • Error Recovery:错误恢复率。
  • Latency:执行延迟。
  • Cost:token 消耗和工具调用成本。
  • Human Intervention Rate:人工干预率。
  • Safety Violation Rate:安全违规率。

面试表达:

Evaluation 要和 Trace 关联,通过 run_id 定位失败原因。比如某个任务失败了,通过 Trace 可以看到是第几步出了问题、工具调用参数是否正确、模型输出是否异常。这样评测不是黑盒打分,而是有据可查的改进依据。

Evaluation 还要区分离线评测和在线评测。离线评测用评测集跑指标,适合版本对比和回归测试;在线评测收集真实用户反馈,适合发现实际使用中的问题。两者结合才能建立完整的质量闭环。


Security 怎么讲 ​

Agent 能调用工具后,安全风险上升。必须考虑:

  • 权限上下文:当前用户是谁、有什么权限。
  • 工具白名单:只允许调用已注册的工具。
  • 高风险工具审批:删除、发送、执行等操作需要审批。
  • 敏感信息脱敏:Trace 中不保存 API Key、Token、密码。
  • 审计日志:记录所有工具调用和状态变化。
  • 沙箱执行:高风险操作在隔离环境中执行。
  • 人工确认:关键操作需要人工确认。
  • 失败回滚:操作失败后能回滚到安全状态。

面试表达:

Agent 的安全风险比普通 LLM 应用高,因为它能执行操作。我会在 Runtime 层面实现强制的权限检查和审批机制,而不是只靠 Prompt 约束。Prompt 可能被绕过或产生幻觉,但工程层面的权限检查是确定性的。

安全控制要贯穿整个 Agent 执行链路:请求接入时鉴权,工具调用前检查权限,执行过程中记录审计日志,敏感信息在 Trace 中脱敏,高风险操作需要人工审批。这样即使模型输出异常,也不会导致安全事故。


常见追问 ​

追问 1:Agent 和 Workflow 有什么区别? ​

回答要点:

  • Workflow 更偏预定义流程,按固定节点顺序执行。
  • Agent Runtime 更偏动态决策,根据模型输出和状态决定下一步。
  • 确定性任务适合 Workflow,开放性任务适合 Agent。
  • 二者可以结合——用 Workflow 定义大框架,用 Runtime 处理动态逻辑。

追问 2:Agent 怎么避免无限循环? ​

回答要点:

  • 最大 step 数限制:比如最多 20 步。
  • 最大耗时限制:比如最多 5 分钟。
  • 成本上限:比如最多消耗 10000 token。
  • 状态变化检测:如果连续多步状态没有变化,说明 Agent 可能陷入了循环,强制停止。
  • 人工接管机制:超时或超限后通知人工介入。

追问 3:Agent 工具调用失败怎么办? ​

回答要点:

  • 根据错误类型决定处理策略。
  • 临时性错误(超时、服务不可用)可以重试,设置最大重试次数。
  • 参数错误需要让模型重新生成参数,可能需要补充错误信息到上下文。
  • 权限不足需要提示用户,不能自动重试。
  • 外部服务不可用可以降级或换工具。
  • 记录错误到 Trace,用于后续分析和优化。

追问 4:多工具冲突怎么办? ​

回答要点:

  • 定义工具优先级。
  • 引入 Reviewer 检查冲突。
  • 记录冲突原因到 Trace。
  • 需要时引入人工确认。

追问 5:如何判断 Agent 是否完成任务? ​

回答要点:

  • 模型输出 final_answer 类型的 Action:这是最直接的完成信号。
  • 达到最大 step 数:防止无限循环。
  • 达到最大耗时:防止任务卡住。
  • 达到成本上限:控制 token 消耗。
  • 用户主动终止:用户可以随时取消任务。

追问 6:如何记录执行过程? ​

回答要点:

  • 每次模型调用记录到 Trace。
  • 每次工具调用记录到 Trace。
  • 每次状态变化记录到 Trace。
  • 通过 run_id 和 step_id 关联所有记录。

追问 7:如何做安全控制? ​

回答要点:

  • 工具权限分级:不同角色有不同的工具访问权限。
  • 高风险工具审批:删除、发送、执行等操作需要人工确认。
  • 敏感信息脱敏:Trace 中不保存 API Key、Token、密码。
  • 审计日志:记录所有工具调用和状态变化。
  • 沙箱执行:高风险操作在隔离环境中执行。

追问 8:如何做线上评测? ​

回答要点:

  • 通过 Trace 收集执行数据。
  • 定义评测指标(Task Success、Tool Accuracy、Cost)。
  • 定期跑评测集。
  • 对比版本间的效果变化。
  • 失败样本进入迭代优化。

线上评测和离线评测结合,才能建立完整的质量闭环。


容易踩坑的回答 ​

  • 只说"我会用 LangChain / LangGraph"——面试官会觉得你只会用框架,不理解原理。
  • 只讲 Prompt——面试官会觉得你没有工程概念。
  • 把 Tool Calling 当普通函数调用——面试官会觉得你没考虑安全和规范。
  • 不提权限和审计——面试官会觉得你没有安全意识。
  • 不提 Trace——面试官会觉得你不知道怎么调试 Agent。
  • 不提 Evaluation——面试官会觉得你不知道怎么评估效果。
  • 不提错误恢复——面试官会觉得你只考虑了正常流程。
  • 不提成本和延迟——面试官会觉得你没有生产意识。
  • 把 Agent 说成万能自动化系统——面试官会觉得你对 Agent 能力边界没有认知。

更好的表达方式 ​

不推荐表达更好的表达
我会用 LangChain 来做 Agent我会把 Agent 系统拆成 Runtime、Tool、Memory、Trace、Eval 等模块,框架只是实现方式之一
Agent 就是 LLM + Tool CallingAgent 是一个任务执行系统,Runtime 负责组织模型调用、工具调用、状态推进和结果生成
工具调用就是一个函数工具调用需要 Schema 定义、参数校验、权限控制、错误处理和 Trace 记录
保存聊天记录就是 Memory要区分 Session、Context、Memory、State 和 Trace,它们有不同的生命周期
Prompt 写好就行Prompt 只是输入,还需要 Runtime 来组织执行、Trace 来记录过程、Evaluation 来评估效果
Agent 能自动完成所有任务Agent 有明确的能力边界,高风险操作需要人工审批,复杂任务需要人机协作
测试一下就知道效果需要建立评测指标体系,通过 Trace 定位失败原因,用失败样本驱动迭代
直接部署就行了需要考虑监控、告警、成本控制、权限管理和审计日志
Agent 出错就让模型重新回答需要根据错误类型决定重试、换工具、降级或人工接管,不能只靠模型
多 Agent 就是多个角色协作需要讲清楚调度机制、状态共享、工具权限、冲突处理和结果聚合

对个人项目的启发 ​

项目 A(RAG 工单系统):

RAG 查询可以设计成可追踪的 run。从用户提问到返回答案,整个过程可以用 Runtime 的思路来管理。文档检索、Rerank、答案生成、引用返回都可以记录为 step。后续可以加入 Evaluation Pipeline,通过 Trace 分析每次查询的效果。这样项目 A 不仅是一个 RAG 应用,更是一个可追踪、可评估的 Agent 系统。

面试时可以这样表达:我把 RAG 查询设计成一个完整的 Agent 执行链路,每次查询有 run_id,每个阶段有 step_id,检索结果、排序分数、引用来源都记录到 Trace。这样当答案质量不好时,可以精确定位是哪个环节出了问题。

项目 B(多 Agent 运营中台 Copilot):

后续可以围绕 Runtime、Tool、State、Trace、Evaluation 设计多 Agent 协作。不能只讲多角色协作,要讲任务分派、工具权限、状态共享和结果聚合。Project B 已整理为作品集入口,面试表达时可以结合该项目讲清楚规划思路。

面试时可以这样表达:我的多 Agent 设计思路是围绕 Runtime 展开的——Planner 负责任务拆解,Executor 负责执行操作,Reviewer 负责审查结果,Aggregator 负责汇总输出。每个 Agent 有独立的工具权限,通过 Shared State 共享必要信息,通过 Trace 记录完整执行过程。


后续 TODO ​

  • 补充 Agent 系统设计图,展示各模块的关系和数据流。
  • 补充 Agent 系统设计 3 分钟口述稿,用于面试快速表达。
  • 补充 Runtime / Tool / Trace / Eval 的项目表达模板,可直接迁移到项目 A 和项目 B。
  • 补充 Agent 系统设计模拟面试问答,覆盖常见追问和进阶问题。