Agent 类项目拷打追问链
结构:三段(卡动机 → 要基线与过程 → 压今天还会不会这么做)+ 「是不是 workflow 硬叫 Agent」压力分支
第一段 · 卡动机
拷问 1这个任务为什么需要 Agent?用写死的流程做不到吗?
期望要点:判据是「路径是否确定」。合格的回答:任务的步骤数和顺序无法预先确定、需要根据中间结果决定下一步、失败后需要换策略重试。加分:主动说「其中八成的请求路径其实是确定的,那部分我们走的是写死流程,Agent 只吃剩下两成的长尾」。
判别信号:能说出「Agent 更慢、更贵、更不可预测,所以能不用就不用」的,是真掂量过;答「Agent 是趋势 / 更智能」的,进压力分支。
分叉:如果描述出来的流程步骤固定、分支有限 → 直接进压力分支:「你这个听起来每一步都是确定的,和 if/else 加几个工具的区别在哪?」这一问答不好,整个项目的可信度就塌了。
拷问 2当时的基线是什么?不上 Agent 能做到多少?
期望要点:与 P1 同理,必须有基线。Agent 项目的合理基线是「规则分类 + 写死 workflow」,要能说出它覆盖了多少比例、剩下哪部分覆盖不了。
判别信号:没有基线的 Agent 项目,通常是「先决定要做 Agent,再去找场景」,顺序反了。
第二段 · 要基线与过程
拷问 3工具是怎么设计的?描述和参数怎么写模型才选得准、填得对?
期望要点:能讲出具体的设计动作:工具描述写「什么时候该用、什么时候不该用」而不只是「做什么」;参数尽量用枚举而不是自由文本;工具失败时的返回要能指导下一步(返回「订单号格式错误,应为 18 位数字」远好于返回「查询失败」)。加分:提到工具数量多了之后模型会选错,解决办法是分组、按阶段暴露,或者做工具检索。
判别信号:能说出「工具返回的错误信息本身是给模型看的提示词」的,是真调过;只说「写清楚描述」的,浮在表面。
分叉:提到 MCP → 追它解决了函数调用的什么问题(接入形态的标准化)、接第三方服务的安全风险(工具投毒、越权、描述里藏指令)。
拷问 4循环的退出条件和死循环兜底怎么设计的?
期望要点:至少三条:最大轮次上限、无进展检测(连续几轮没有新信息或重复调用同一工具同一参数)、成本上限。加分:提到「工具结果默认是上下文的永久居民,成本按剩余轮次复利」,所以要削减或摘要工具结果。
判别信号:只说「设了最大轮次」的,是最低配;能说出「重复调用同参数要当作无进展」的,被死循环坑过。
拷问 5上下文放不下了怎么办?压缩的时候什么必须保真?
期望要点:能说清压缩策略(滑动窗口 / 摘要 / 重要性过滤)的取舍,以及压缩的两条硬要求:要少次大压(频繁小压会反复击穿缓存前缀),以及关键约束必须活在结构化状态里而不是对话历史里——用户说过的"不要退款只要换货"这类约束一旦被摘要吞掉,Agent 就会做出违背用户意图的动作。
判别信号:能说出「关键约束要放进结构化状态,不能指望摘要保住」的,吃过亏;只说「用摘要压缩」的,还没遇到过丢约束的事故。
拷问 6它会调用写操作吗?护栏放在哪几层?
期望要点:护栏不能只写在提示词里。合格的三层:① 权限层——Agent 拿到的凭证本身受限,它不该有超额度的操作权限;② 工具层的不变量断言——写在工具语义里的负向断言(金额不超过订单实付、状态机不得非法跳转、同一单十分钟内不得重复通知);③ 分级自治——按不可逆程度决定自动执行 / 先确认 / 人工签字,而不是按置信度。加分:主动提幂等,因为重试、超时、用户重复提交都会导致重复执行。
判别信号:能把「权限层」和「工具层断言」分开的,理解纵深防御;能主动提幂等的,真做过写操作 Agent。
拷问 7这个 Agent 怎么评测的?只看最终结果会漏掉什么?
期望要点:三层收尾——用例层(真实任务回放,看结果)、指标层(成功率、轮次分布、成本、转人工率)、不变量层(跑对抗用例,断言「永远不会发生」的事,任何一条命中就阻断发布)。要能说出只看结果会漏三类:结果对了但过程危险(试过越权被断言拦下)、结果对了但成本失控(绕了十几轮)、结果错了但错得隐蔽(回了段合理模板,用户没追问就算解决)。
加分:说得出负向断言优于参考轨迹匹配——正确的路径有很多条,但不该发生的事是有限且明确的,拿标准轨迹去对比会把合理的替代路径判成错误。还要说得出评测层级下沉顺序:端到端 → 轨迹级 → 组件级,只在上一级掉分时下沉。
判别信号:这一问是 Agent 项目的主分水岭。能讲出不变量层的人,一定做过上线;只说「看任务成功率」的,停在 demo。
拷问 8成本怎么控的?每轮都调模型很贵。
期望要点:走成本三刀——先切输入侧/输出侧,Agent 的账通常压在输入侧(每轮重发前缀 + 工具结果堆积)。可操作的动作:削工具结果(复利效应最大)、保住前缀缓存(工具定义顺序要确定、静态前缀里别放时间戳、中途别改 effort 档位)、按任务类型分档降 effort(注意它同时会减少工具调用次数,可能导致返工)、把确定路径从 Agent 里摘出去。
判别信号:能说出「工具结果是上下文永久居民、成本按剩余轮次复利」的,算过账;只说「加缓存」的,没做过归因。
第三段 · 压「今天还会不会这么做」
拷问 9放到今天,这套还会这么做吗?
期望要点:能点到 2026 年的真实变化:推理模型已内化部分思维链,harness 变薄但不消失(该薄的是提示工程,不该薄的是权限、护栏、可观测);答得浅要提 effort 档位而不是加提示词;工具接入形态趋于标准化;渐进式披露让「把所有说明塞进系统提示」成为反模式。同时要能说不变的部分:护栏、分级自治、不变量断言这些和模型能力无关,今天照做。
判别信号:能区分「变薄的部分」和「不变的部分」的,判断力好;全盘说「现在模型强了不需要那么多工程」的,是没上过线。
拷问 10你用了多 Agent 吗?如果用了,它比单 Agent 好在哪、贵在哪?
期望要点:多 Agent 的代价要说得出来:上下文不共享导致信息损失、token 大致按参与方线性叠加、调试难度指数上升(错在哪一步、谁的责任说不清)。合格的判据是:任务确实可以并行且子任务之间弱耦合,才值得多 Agent;只是「角色扮演式分工」(规划师、执行者、审查者)通常是负收益。
判别信号:说「多 Agent 更智能」的,没量过成本;能说「我们试过多 Agent,后来砍回单 Agent 加子任务」的,是真做过。
拷问 11这个项目最大的遗憾是什么?
期望要点:同 P1,考诚实度。Agent 项目常见的真实遗憾:不变量断言加晚了、可观测做晚了导致排障全靠猜、一开始把太多确定流程塞进了 Agent。
这份模板怎么用
三段结构总览
第一段 卡动机 ── 为什么需要 Agent 而不是 workflow? → 挡「硬叫 Agent」 第二段 要基线与过程 ── 工具、循环、记忆、护栏、评测、成本 → 挡「跑通 demo 就写简历」 第三段 压今天 ── 换成今天你还会这么做吗? → 挡「知识停在做项目那一年」
压力分支:「这是不是一个 workflow 硬叫 Agent?」
第一段触发这条分支时,按顺序压:
- 「你的流程一共有几个分支?分支条件是谁定的?」——分支有限且条件写死,就是 workflow。
- 「有没有出现过模型自己决定多调一次工具的情况?举个例子。」——举不出来,就是 workflow。
- 「如果我把模型换成一个只会填参数的分类器,你的系统还能跑吗?」——能跑,就是 workflow。
- 「那这样叫 workflow 有什么不好?」——这一问是给台阶的。能坦然说「其实它就是个 workflow,这样更稳更便宜,我们当时叫它 Agent 是为了立项」的候选人,诚实度加分,不应该扣分。继续硬撑说它是 Agent 的,才该扣分。
排障分支:固定住一个变量,把问题一分为二
固定「文档」 → 切开 检索侧 / 生成侧 (Agent 里的检索工具答非所问) 固定「输入」 → 切开 流量侧 / 系统侧 (金丝雀集,线上突然变差) 固定「模型段」 → 切开 模型侧 / 链路侧 (延迟变高) 固定「token 类别」 → 切开 输入侧 / 输出侧 (成本变高) 固定「变更集」 → 切开 变更侧 / 环境侧 (上线后出事故)
Agent 场景还要加一刀专属的:固定「轨迹」——把一条真实失败轨迹逐步回放,切开「工具选错」/「参数填错」/「结果理解错」,这三类的修法完全不同(分别改描述、改 schema、改结果格式)。
危险信号清单
出现下列任意两条,基本可以判定项目虚高:
- 说不出为什么不用 workflow
- 没有基线,直接就是 Agent 方案
- 循环只有最大轮次一条兜底
- 护栏全写在提示词里
- 有写操作但说不出幂等怎么做
- 评测只有任务成功率,没有轨迹层和不变量层
- 说不出单次任务的平均轮次和平均成本
- 用了多 Agent 但说不出它贵在哪
- 排障靠「重跑几次看看」,没有轨迹回放
判分档位
| 档位 | 画像 |
|---|---|
| 60 分 | 讲得清工具调用机制和循环结构,但没有基线、护栏只在提示词里、评测只看成功率。跑通过 demo。 |
| 75 分 | 有基线、有分级自治、有轨迹可观测,讲得出一次完整的失败定位。上过线。 |
| 90 分 | 上面全有,且:有不变量层作为发布闸门;说得出多 Agent 的代价并解释为什么用或不用;成本能按输入输出结构归因;被问「今天还会不会这么做」时能区分变薄的部分与不变的部分。做过,且知道边界在哪。 |