怎么考「什么是 Agent?和 workflow、和「调用一次大模型」的本质区别?」
谁在问:一面必问;简历写了 Agent 的候选人开场第一题,也是大厂/AI 创业公司通用的真伪探针
开场怎么问
你简历里写了 Agent。先跟我说说,你理解的 Agent 和一个 workflow,本质区别在哪?
换个问法
- 我写段代码,调一次大模型让它返回 JSON,再按 JSON 去查库——这算 Agent 吗?
- 现在什么都叫 Agent。如果只让你说一条判据,你会说哪一条?
五层追问链
左边照着问,右边对着听。最后一层是压力面,不必每个候选人都问到。
一条链中间有个 if-else 分支,分支条件是让 LLM 判断的——这算 Agent 吗?
- 期望
- 不算。LLM 参与判断 ≠ 模型持有控制权——分支候选集合是人预先闭合的,模型只是在既定选项里选一个,本质是个分类器。真正的分辨点是:模型能不能产生你没预设过的动作序列?能不能自己决定「再来一轮」?加一句实践判断:这类「LLM 做路由的 workflow」往往就是生产最优解,可测、可复现、成本恒定,别为了名分改造它。
- 信号
- 能落到「候选集合是否闭合」「能否自决再来一轮」的,是自己想过;答「用了 LLM 就算 Agent」或者拿框架名当判据(「用了 AgentExecutor 就是」)的,只读过教程。
Agent 的循环靠什么终止?只靠模型说「我答完了」够吗?
- 期望
- 正常终止是模型返回不带工具调用的最终答案,但代码侧必须有兜底:max_steps、时间预算、费用预算、重复动作检测(连续 N 次同工具同参数即中断)、工具连续失败熔断。死循环的典型形态是模型反复换措辞调同一个检索工具、两个工具互相等对方结果、工具报错文案不可操作导致无限重试。关键区分「中断」和「降级」:超限之后要有出口——回落固定管线、转人工、或返回「已得信息 + 未完成项」。
- 信号
- 说得出三种以上兜底并且区分中断与降级的,做过线上;只会答 max_iterations、追问「超限之后呢」回答「就报错」的,停在 demo。
你说 harness 决定一半能力,那 harness 里具体装了什么?挑两样说说你调过的。
- 期望
- 能列出组成——工具集与 schema 描述、上下文组装与压缩策略、工具结果的裁剪与回灌格式、错误消息设计、终止与重试、权限与人工确认、trace 与评测。然后挑两样讲改动前后的可量化差别:比如把工具报错从异常堆栈改成「参数 date 需 YYYY-MM-DD,你传的是『上周』」之后自愈率的变化;或者把工具从 20 个收敛到 8 个之后选择准确率的变化。加分项是承认反向代价:harness 越厚越贴当前模型,模型换代要拆一遍。
- 信号
- 举的是具体改动 + 观察到的指标变化(哪怕只是几十条样本的粗糙对比)的,是真调过;把 harness 说成「就是提示词」或只会复述那句口号的,是看过文章。
业务方问「这功能到底多久出结果、一次多少钱」,你怎么答?
- 期望
- 承认 Agent 步数是长尾分布,不能报平均值,要报 P50/P95 和上限——因为有 max_steps 和预算熔断,上限是可以承诺的。解释成本非线性:每一轮都要重发完整上下文,工具结果一旦进上下文就在后续每轮复利计费,所以「多两步」不等于多两步的钱。最终把不确定性转成「有上界的承诺」:设预算上限 + 超限降级路径。
- 信号
- 主动给上界并解释上下文累计计费的,算过账;报个平均值交差、或者答「这个说不准」的,没做过成本治理。
现在有条跑得挺稳的 workflow,产品经理要求「改造成 Agent,对外讲的时候更先进」。你怎么办?
- 期望
- 先别站队,先统一价值口径——现在的 badcase 长什么样?是「路径没覆盖到」(这类 Agent 化有收益)还是「某一步答得差」(改模型/改提示词就够了)。用 badcase 分类代替观点辩论。给量化条件:如果「需要预设外路径」的 badcase 占比很低(个位数百分比量级),Agent 化的收益抵不过成本方差和评测成本。给折中方案:外层保留 workflow 守住 SLA、审计和可复现,把 badcase 集中的那一步做成受限 agentic(工具白名单 + max_steps=3 + 超时回落固定路径),先小流量 A/B。对「要讲故事」的真实诉求也给出路:对外可以讲自治能力,但内部要有成功率、成本、时延三条线的对比数据,避免上线后被自己的 demo 反噬。底线一句话:不拒绝需求,拒绝的是没有评测就全量替换。
- 信号
- 先归因 badcase 再给方案、给出可回滚的小步走路径、并且照顾到业务方真实诉求的,是有协作经验的工程师;两种极端都扣分——直接顶回去说「这是伪需求」,或者立刻答应全量改造却说不出改完怎么证明更好。
危险信号
听到这些话,基本可以判定是背题而不是做过。
评分卡
- 抓住唯一硬判据:下一步由谁决定(控制权归属)
- 讲清三层递进:单次调用 / workflow / Agent
- 提到环境反馈回灌与终止条件的归属
- 能反向检验假 Agent(同输入是否同轨迹、路径能否枚举)
- 知道自治是连续谱,生产常见「骨架 + 局部 agentic」混合形态
- 说得出 Agent 化的工程后果(成本长尾、不可复现、按轨迹调试)
- 加分:知道 Agent = Model + Harness,能列 harness 组成
- 加分:主动说明自己项目落在哪一格并给出理由
参考答案与考察意图面试中途别看这一段
考察意图
面试官不是在等百科定义,他同时在做四件事:
参考答案
60 分答案(及格线)
三种形态的差别不在用了什么框架,在下一步由谁决定:
- 单次调用大模型:输入→输出一次映射,没有循环,也不碰外部世界。模型只是个函数。
- Workflow(工作流):路径是我写死的。某个节点里也可能调模型(比如让它做意图分类),但所有可能走的路我都能提前画在一张图上,模型只是图里的一个算子。
- Agent(智能体):模型在循环里自己决定下一步——调哪个工具、要不要再来一轮、什么时候停。路径是运行时长出来的,我提前画不出来。
配套三个差别:环境反馈会不会回灌进下一轮上下文;终止条件由谁判断;执行步数是恒定的还是不定的。
一句话收口:Workflow 是我编排模型,Agent 是模型编排我给它的工具。
90 分答案(有生产经验的回答)
在 60 分基础上补四层。
1. 给一张能当场画出来的判据表
| 判据 | 单次调用 | Workflow | Agent |
|---|---|---|---|
| 下一步谁决定 | 无下一步 | 代码 / DAG | 模型 |
| 可能路径 | 1 条 | 有限、可枚举 | 运行时生成、不可枚举 |
| 环境反馈 | 无 | 流向人定的下一节点 | 回灌上下文,影响下一次决策 |
| 终止 | 生成结束 | 走到终点节点 | 模型自判 + 代码兜底(步数/预算/超时) |
| 成本与耗时 | 恒定 | 恒定或小方差 | 长尾分布,只能报 P50/P95 |
| 失败定位 | 看这次输出 | 看哪个节点挂了 | 看整条轨迹的哪一步决策错了 |
2. 反向检验,这是分水岭。 我判断一个系统是不是真 Agent,只问一句:同样的输入跑两次,轨迹会不会不一样? 永远一样就是 workflow,哪怕它是用 Agent 框架写的。生产里这种「用 AgentExecutor 包一条固定三步管线」的东西很多——白白付了不确定性的代价,没拿到不确定性的收益。
3. 自治是连续谱,不是二分。 真落地我一般写成「workflow 骨架 + 局部 agentic 节点」:外层固定流程守住 SLA 和可审计,只在真正需要探索的那一步(比如「这个问题该查哪几个数据源、查几轮」)放开让模型决定,并且配工具白名单和 max_steps。这样成本方差可控,出问题也能定位到具体那一格。
4. Agent = Model + Harness。 截至 2026-08,业内比较统一的说法是 Agent 的能力一半在模型、一半在 harness(LangChain 2026-03 那句「If you're not the model, you're the harness」)。同一个模型换一套 harness——工具集与 schema、上下文组装与压缩、错误反馈格式、重试与终止、权限与人工确认——任务成功率能差一个数量级。这也是「Agent 不就是套壳」这个说法不成立的原因:难的工程量全在 harness 里。模型变强确实会让 harness 变薄(早期要手写的 planner、self-critique 现在很多可以删),但不会消失——权限、预算、可观测、可回滚这些约束不属于模型。
(如果被追问「那你项目算哪一格」,老实答,并说清为什么选那一格。见 Q3-02。)