什么是 Agent?和 workflow、和「调用一次大模型」的本质区别?

Q3-01Agent 定义与边界高频AgentWorkflow控制权自治度Harness概念辨析

谁在问:一面必问;简历写了 Agent 的候选人开场第一题,也是大厂/AI 创业公司通用的真伪探针

口语化问法

  • 你简历里写了 Agent。先跟我说说,你理解的 Agent 和一个 workflow,本质区别在哪?
  • 我写段代码,调一次大模型让它返回 JSON,再按 JSON 去查库——这算 Agent 吗?
  • 现在什么都叫 Agent。如果只让你说一条判据,你会说哪一条?

考察意图

面试官不是在等百科定义,他同时在做四件事:

  1. 验简历真伪。 转型候选人最高频的写法是「基于 XX 框架开发了智能客服 Agent」,一追问发现是固定三步管线。你能不能自己划清边界,直接决定后面简历深挖阶段你是被信任还是被拷打。
  2. 看有没有判据思维。 背「感知—规划—记忆—行动四要素」是读过;能给一条拿来就能判定一个具体系统的标准,才是自己想过。
  3. 看知不知道代价。 说清定义只是及格,说得出「因此它不可复现、成本有长尾、调试要看轨迹」才说明上过线。
  4. 埋钩子。 这题的答法决定他下一题是问 Q3-02(选型判断)还是 Q3-06(ReAct 循环实现)。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

三种形态的差别不在用了什么框架,在下一步由谁决定

  • 单次调用大模型:输入→输出一次映射,没有循环,也不碰外部世界。模型只是个函数。
  • Workflow(工作流):路径是我写死的。某个节点里也可能调模型(比如让它做意图分类),但所有可能走的路我都能提前画在一张图上,模型只是图里的一个算子。
  • Agent(智能体):模型在循环里自己决定下一步——调哪个工具、要不要再来一轮、什么时候停。路径是运行时长出来的,我提前画不出来。

配套三个差别:环境反馈会不会回灌进下一轮上下文;终止条件由谁判断;执行步数是恒定的还是不定的。

一句话收口:Workflow 是我编排模型,Agent 是模型编排我给它的工具。

90

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。)

追问链

图 1 · 五层追问树:面试官会往哪儿挖
不问定义,问的是控制权归谁、失控谁兜底、这笔账谁算

  1. 链里有个 if-else 分支,条件是让 LLM 判断的,这算 Agent 吗?

    期望不算。LLM 参与判断 ≠ 模型持有控制权 —— 分支候选是人预先闭合的,模型只是个分类器;分辨点在能否产生你没预设过的动作序列、能否自决「再来一轮」。这类 LLM 路由的 workflow 常常就是生产最优解:可测、可复现、成本恒定,别为名分改造它
    信号落到「候选集合是否闭合」「能否自决再来一轮」→ 自己想过;拿框架名当判据(用了 AgentExecutor 就是)→ 只读过教程
  2. Agent 的循环靠什么终止?只靠模型说「我答完了」够吗?

    期望正常出口是不带工具调用的答案,但代码侧必须兜底max_steps、时间与费用预算、重复动作检测(连续 N 次同工具同参数即断)、工具连续失败熔断。死循环形态是换措辞反复调同一工具、两工具互等。超限后要区分中断与降级 —— 回落固定管线、转人工、返回「已得信息 + 未完成项」
    信号说得出三种以上兜底并区分中断与降级 → 做过线上;只答 max_iterations、追问「超限之后呢」答「就报错」→ 停在 demo
  3. harness 里到底装了什么?挑两样你调过的说说

    期望组成:schema 描述、上下文组装压缩、结果回灌格式、错误消息、终止重试、trace 与评测。挑两样讲量化差别:报错从堆栈改成「参数 dateYYYY-MM-DD」后自愈率变化、工具 20 个收到 8 个后准确率变化。harness 越厚越贴当前模型,换代要拆
    信号举得出具体改动 + 观察到的指标变化(哪怕只是几十条粗糙对比)→ 真调过;把 harness 说成「就是提示词」→ 看过文章
  4. 业务方问「这功能多久出结果、一次多少钱」,你怎么答?

    期望步数是长尾分布,不能报平均值 —— 报 P50/P95 和上限,因为有 max_steps 和预算熔断,上限是可以承诺的。成本非线性:每轮重发完整上下文,工具结果一进上下文就在后续每轮复利计费,「多两步」不等于多两步的钱。把不确定性转成有上界的承诺:预算上限 + 超限降级路径
    信号主动给上界并解释上下文累计计费 → 算过账;报个平均值交差、或答「这个说不准」→ 没做过成本治理
  5. 跑得挺稳的 workflow,产品经理要求改造成 Agent「对外讲更先进」,你怎么办?

    期望先归因,别站队:badcase 是「路径没覆盖到」(Agent 化有收益)还是「某一步答得差」(改提示词就够)→ 前者占比个位数,收益就抵不过成本方差与评测成本 → 折中:外层 workflow 守 SLA,badcase 那一步做成受限 agentic(白名单 + max_steps=3 + 超时回落),先小流量 A/B。拒的不是需求,是没评测就全量替换
    信号先归因 badcase 再给方案、路径可回滚、照顾到业务方真实诉求 → 有协作经验;顶回去说「伪需求」或答应全量改造却说不出怎么证明更好 → 都扣分
简历上写「开发过智能客服 Agent」的,第 1 层就现原形 —— 一追问是条固定三步管线。真分水岭在第 4、5 层:能不能把自治换算成钱和承诺。

评分要点

  1. 抓住唯一硬判据:下一步由谁决定(控制权归属)
  2. 讲清三层递进:单次调用 / workflow / Agent
  3. 提到环境反馈回灌与终止条件的归属
  4. 能反向检验假 Agent(同输入是否同轨迹、路径能否枚举)
  5. 知道自治是连续谱,生产常见「骨架 + 局部 agentic」混合形态
  6. 说得出 Agent 化的工程后果(成本长尾、不可复现、按轨迹调试)
  7. 加分:知道 Agent = Model + Harness,能列 harness 组成
  8. 加分:主动说明自己项目落在哪一格并给出理由

常见错误

「Agent 有感知、规划、记忆、行动四大模块」——纯背定义,没有一条能拿来判定具体系统;追问「那 workflow 有没有记忆」立刻塌。
「用了 LangChain / AgentExecutor 就是 Agent」——用框架名代替概念。
「Agent 就是能调工具的大模型」——混淆 Function Calling 与 Agent。调一次工具就返回的仍然是 workflow(见 Q3-03)。
「Agent 更智能、更自动化」——形容词答案,没有边界。
全程只讲优点,说不出不可复现、成本长尾、轨迹调试——典型没上过线。
「我们的 Agent 每次都是先检索、再总结、再回复」——自曝是 workflow。此时正确姿势是主动承认并说明为什么这样设计更合适,硬撑必被后续追问打穿。

关联学习