生产级 Agent 面试 11 问:从 ReAct 背诵到工程落地的差距

lxiol
📝
面试官问「生产级 Agent 怎么设计」,背 ReAct/Function Calling/Skills 是不够的。本文用 PaiCLI 项目实战拆解 11 道核心面试题:多模式共享 Harness、Map-Reduce 上下文压缩、时间衰减记忆、渐进式 Skill 加载、智能客服四层架构、大促削峰五道防线。

原文链接:面试官皱眉:”让你负责一个生产级 Agent,你会怎么设计?”
作者:沉默王二
项目:PaiCLI-Python(MIT,Python)


概念谁都会背,但能把概念落成生产环境里跑得起来的工程细节,这才是面试官真正想听到的。

01 多模式 Agent 的 Harness

PaiCLI 支持三种运行模式——ReAct 主循环Plan-and-ExecuteMulti-Agent 多角色协作。三种模式共用一套基础设施:

  • 工具注册表
  • 记忆系统
  • 安全审批
  • 审计日志

核心挑战:同一操作在不同模式下行为一致。比如文件写入在 ReAct 和 Multi-Agent 模式下都要弹审批;ReAct 模式存下的用户偏好切到 Plan 模式也要能读到。这就是 Harness——模式可换,底座不动。


02 Map-Reduce 上下文压缩

压缩策略分三步:

步骤 操作 细节
切片 旧消息每 5 条一组 -
Map 摘要 每片独立生成摘要 保留需求意图、操作结果、决策结论
Reduce 合并 多片合并为整体摘要 单片 ≤200 字,合并 ≤300 字

压缩完成后清空旧消息,摘要写回对话历史,最近 3 轮完整对话原样保留。模型下一轮看到的是「摘要 + 最近几轮」。


03 三层防丢保护

压缩必然丢失信息,没有无损压缩这回事。

机制 说明
第一层 事实提取 压缩前把跨会话稳定事实(交易金额、用户偏好)存入长期记忆,不参与压缩
第二层 摘要指令 压缩 prompt 明确要求保留需求意图、操作结果、决策结论、技术细节
第三层 近期缓冲 最近几轮完整对话原样保留,不压缩

04 时间衰减记忆

用户一个月前说喜欢吃辣,一周前又说不能吃辣,怎么判断?

  • 两条记忆都存,不强行合并、不强行删除
  • 检索时按时间衰减打分,越新权重越高
  • PaiCLI 衰减曲线:24 小时从满分衰减到半分
  • 旧记录不删——万一「不能吃辣」是临时状态,过两周恢复了?

关键决策:PaiCLI 没用向量数据库存记忆。几百上千条事实信息用关键词匹配就够——毫秒级、可解释、可调试。向量数据库适合 RAG 知识库(几十 G 文档)。


05 记忆更新策略

步骤 说明
语义检索 找旧记录
删除旧向量 -
重新 embedding 新内容向量化
写回 加乐观锁/时间戳防冲突

06 重要信息的定义

「跨会话仍然成立、未来复用仍有价值的稳定事实」

三层过滤:

过滤层 规则 示例
排除临时任务 开头含”用户想””帮我””创建””删除””本次任务” “帮我写个脚本”
排除推测 含”可能””应该””猜测””推测” “可能是 bug”
保留持久信号 含”偏好””习惯””项目””仓库””配置””版本””技术栈””约定””规则” “项目用 pytest”

07 指数退避重试

重试 等待时间
第 1 次 500ms
第 2 次 1s
第 3 次 2s
上限 30s

每次 +20% 随机抖动,避免惊群效应。可重试:408/429/5xx、网络异常、流式中断。不可重试:SSL 错误、JSON 解析错误、线程中断。服务端返回 Retry-After 头时取较大值。


08 Token 消耗排查

三个高发原因:

  1. 工具输出太长 — 一次 shell 输出几万字符塞进上下文
  2. 压缩触发太晚 — 默认 90% 才触发,调低到 80%
  3. 上下文膨胀 — 同一信息反复检索注入,去重不到位

09 Skill 渐进式披露

不用的 Skill 不进上下文,用到的时候再展开。

阶段 操作
启动时 名称 + 一句话描述注入 system prompt(单条 ≤500 字符,最多 20 个)
按需加载 模型主动调用 load_skill 加载完整指引
注入缓冲 写入缓冲区,下一轮自动拼到用户消息前(最多保留 3 个,LRU 淘汰)

20 个 Skill × 2000 token = 40K token 常驻 vs 按需只加载 1-2 个。


10 智能客服 Agent 四层架构

1
意图识别 → 知识检索(RAG) → 工具执行 → 兜底升级(转人工)

关键设计:

  • 准确性:chunk 512-1024 token + 20% 重叠 + Reranker 二次排序
  • 延迟:流式输出 + 高频问题缓存
  • 安全性:防提示词注入(工具返回不可信数据)、敏感信息脱敏
  • 兜底:连续两轮无效回答或用户要求 → 立即转人工

11 大促流量尖刺五道防线

防线 机制
① 请求队列异步化 消息队列解耦,前端秒级返回”处理中”
② 模型分层 简单问题走小模型/规则引擎,复杂问题才走大模型
③ 热点缓存 高频问题预生成答案缓存(支持手动失效)
④ 限流保护 每用户每分钟请求数上限
⑤ 熔断降级 LLM 延迟/错误率超阈值 → 模板答案或转人工

核心启示:以前面试考 CRUD 和中间件参数,现在考的是上下文怎么压缩、记忆怎么管、Token 怎么省、流量来了怎么扛。Agent 工程化才刚刚起步,谁先把坑踩过一遍,谁就有了别人没有的底气。

  • 标题: 生产级 Agent 面试 11 问:从 ReAct 背诵到工程落地的差距
  • 作者: lxiol
  • 创建于 : 2026-07-27 13:00:00
  • 更新于 : 2026-07-27 12:03:32
  • 链接: https://blog.lxiol.cn/2026/07/27/生产级Agent面试11问-从ReAct背诵到工程落地/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。