你要从零设计一个客服 agent runtime,支持查订单、申请退款、解释政策和转人工。核心模块有哪些?
考察点:面试官在判断你是否理解 agent 不是一次模型调用,而是一个受控循环。必须讲清 observe → decide → act → observe → stop 的 run loop,以及谁负责预算、状态、工具、策略和恢复。
7+ 分回答骨架:高分答案先拆 runner、state store、tool registry、policy gate、context builder、trace/eval hook、human escalation。查订单是 read tool,可重试;退款是 side-effect tool,需要幂等键、审批、审计和恢复点。runner 控制 max step、timeout、cost、risk budget,policy gate 在工具执行前拦截越权和高风险动作。
继续追问会衍生:衍生知识点:stop condition、step budget、side effect、idempotency、trace replay、approval state。
知识展开
| 概念 | 是什么 | 工程落点 | 面试表达 / 常见坑 |
|---|---|---|---|
| stop condition | 停止条件不是“模型说结束”这么简单,而是 runner 判断任务已完成、预算用尽、风险升高、重复循环或需要人工介入。 | 放在 runner 层,结合 max_steps、max_cost、tool_result_hash、risk_level、final_answer_schema 判断是否继续。 | 面试里要说模型可以建议 final,但最终是否停止由 harness 控制。只说 max token 会显得不懂 agent loop。 |
| step budget | step 是一次模型决策或工具动作。预算控制的是行动次数、成本、延迟和风险,而不只是 token。 | RunConfig 中配置 per-run、per-tool、per-risk-level 的 step/time/cost 限制,trace 记录每一步消耗。 | 强回答要能解释为什么退款、发邮件这类高风险动作的 step budget 应该更紧。 |
| trace replay | trace replay 是用历史输入、工具结果、版本信息复现一次 agent 路径,定位到底是 prompt、工具、状态还是模型变化导致失败。 | trace 必须保存 prompt/model/tool schema/policy/index version、tool args/result、state diff。 | 如果没有 replay,线上坏 case 只能靠猜,无法变成回归 eval。 |