☰
Agent课程设计复盘:如何教开发者识别智能体的不可靠
2026/10/21 17:29:58 网站建设 项目流程

在开始写“Agent 30”第3课的教案之前,我问了自己一个问题:如果学员上完这节课,只能带走一样东西,我希望那是什么?答案不是“会写Agent”,而是“能说清楚Agent为什么会犯错”。这个答案后来改变了整节课的设计方向。

“Agent 30”是我们内部做的一个30天智能体实战系列课,前两课讲的是从聊天机器人到多步骤工作流的演进,第3课原本只是计划里的“案例实战”。但在设计过程中我们发现,普通案例课讲完就散,学员除了跟着敲一遍代码,什么都没留下。于是我们把第3课改成了一节“反着上的课”:不给完整代码,只给一套课程开发指南式的任务框架,让学员像课程设计者一样去拆解、组装、验证一个教学助教Agent。

这个改动听着不大,但牵扯到的东西很多:选什么样的项目、给出什么样的脚手架、用什么标准验收、以及当学员跑偏时我们怎么拉回来。这篇复盘记录,就是第3课从0到1的全过程。

1. 先回答一个问题:Agent课程的第3课为什么不讲Agent

1.1 “Agent 30”的前两课到底教了什么

“Agent 30”并不是一门编程课,它的定位是“让没有大模型背景的课程开发人员,也能自己做智能体”。第1课的主题是“Prompt不是咒语而是协议”,学员要学会把需求改写成结构化的输入输出;第2课的主题是“从单轮对话到工作流”,学员要学会把任务拆成步骤,并用工具把它们串起来。

这两课学完,学员普遍能做出一个会回答问题的聊天机器人。但问题也出在这里:他们做出来的东西经不起折腾。换个问法就崩、漏了条件就乱答、回答错了也不会察觉。这其实是所有Agent课程的共同尴尬——学员学会了“造”,却没学会“验”。

我把这段时间的观察写进需求文档,才发现第3课不应该继续灌新知识,而是应该逼着学员回到“已经会的东西”里,练习如何发现问题、记录问题、并设计防线。换句话说,第3课的角色不是进阶课,而是一节方法论课。

1.2 第3课真正的教学目标:交付“课程开发指南”

确定了方向之后,我把第3课的教学目标写成一句话:“学员要能在不修改后端的前提下,完成一个教学助教Agent的评估与优化,并产出一份可复用的开发指南。”

这里的“开发指南”,我指的是很具体的东西:流程图、提示词版本记录、测试用例清单、失败案例说明。它像一门课程交付物,而不是一段代码。为什么强调不修改后端?因为Agent课程最怕变成“怎么改代码”课,一旦学员开始纠缠框架和API参数,思考的重心就会从“这个Agent为什么会犯错”转移到“这行代码为什么报错”。

所以第3课刻意把技术面收窄,确保学员95%的精力都花在“观察-假设-验证”这条线上。后来试运行证明,这个目标本身就已经把课程引向了一条完全不同的路。

1.3 用一个“反向大纲”锁定学习产出

为了让所有讲师和助教对齐,我在开课之前先写了“第3课结束后的验收清单”,列为三件事:

  • 能用一张流程图向完全不懂技术的人解释自己的Agent是怎么工作的;
  • 能给出至少10个测试用例,并说清楚每个用例是在测什么;
  • 能指出自己Agent的3个失败点,并给出改版前后的效果对比。

这三条说穿了,就是让学员站在课程开发者的位置上看Agent:不是“我实现了它”,而是“我知道它什么时候不可靠、为什么不可靠、怎么把不可靠的部分公开说清楚”。

它们也成为后面所有课堂讨论、评分和复盘的地基。

2. 项目选型:反复推翻四次后留下的“课程问答助手”

2.1 被我们否定的三个候选项目

第3课的备课过程里,最耗时的不是写教案,而是选项目。我们先后试过三个方案,都推翻了。

第一个候选是“自动作业批改Agent”。听起来很有价值,但设计起来就崩了:批改标准本身需要课程专家持续输入,学员没有专家知识,只能把“批改”做成“关键词匹配”,这违背了我们想训练的“观察-假设-验证”目标。

第二个候选是“通用文档问答Agent”。它的问题在于依赖链太长:要嵌入、要向量库、要处理分块策略,一个下午的课根本讲不完,学员一动手就会陷进工具调试。

第三个候选是“行程规划Agent”。它的边界又太模糊,用户一句“帮我看下周末安排”,Agent要调日历、查天气、读消息,任何一个环节出现问题,学员都很难判断到底是设计问题还是外部接口问题。

这三个候选被放弃,不是因为难度,而是因为它们都没法让人快速“看见Agent的思维过程”。课程开发最重要的东西是反馈速度,如果做错一步要等半小时才知道结果,这堂课就没法上了。

2.2 为什么“课程问答助手”刚好合适

最终我们选了“课程问答助手”:给学员一套固定的课程资料,让他们做一个能回答这些资料里问题的智能体。

这个方案赢在四个点上。第一,领域足够窄,所有评估都是围绕同一套资料来的,不需要外部知识;第二,问题足够多,资料里天然存在概念解释、步骤对比、边界情况,能生成大量测试用例;第三,失败足够明显,Agent一旦回答错误,学员可以自己打开原文验证,不需要专家判断;第四,贴近学员的日常场景,每个人都知道“课程助教应该怎么回答”,需求沟通成本低。

更关键的是,资料里的内容是学员自己熟悉的,他们不需要花时间去理解领域知识,可以全神贯注地观察Agent的输入输出。这样“假设-验证”循环的速度就快起来了,一节课能跑好几轮。

2.3 给学员划定的四条边界

项目定了之后,我们在任务卡上明确写了四条边界:

  • 只允许使用课程组提供的1份课程资料和1张FAQ清单;
  • 只能修改提示词和编排逻辑,不允许改后端代码;
  • 不允许调用外部接口或新增数据库;
  • Agent必须在10秒内给出回答,且所有回答都要附上“依据来源”。

最后一条是后来加的,但它成了整个项目的胜负手。因为它强制学员去追踪“这句话到底是材料里的,还是Agent自己编的”,所有关于幻觉的讨论都从这里开始。

3. 把第3课拆成三个可验收的里程碑

3.1 里程碑一:用“人话版流程图”描述Agent,不写代码

第3课的第一段实操,不是打开编辑器和写提示词,而是拿一张白纸,画出Agent的工作流程。我们要求节点不得超过7个,动词必须是普通人能看懂的:读取用户问题、判断问题类型、检索相关内容、生成回答、检查回答来源、给出答案。

这一步看起来简单,却是整个课程里淘汰率最高的环节。因为很多学员会不自觉地画成系统架构图,出现“请求-检索-融合-生成”这种黑话。我们需要他们把这些黑话翻译成“什么时候调用什么、什么情况下走哪条路”。一旦画不清楚,后面做提示词设计就一定会混乱。

验收方式也很轻量:每个学员用3分钟向旁边的人讲一遍流程图,旁边的人不需要懂代码,只要他听完能复述出“这个Agent在什么情况下会做什么”,就算通过。

3.2 里程碑二:用固定提示词模板跑通一个最小用例

通过流程图之后,我们会发一个固定的提示词模板,让学员先跑通一个最小用例:用户问“什么是RAG”,Agent要能给出课程资料里的定义并返回来源。

模板长这样:

角色:你是{课程名}的一对一助教。 任务:回答学员关于课程资料的问题。 规则: 1. 只回答资料中出现过的内容; 2. 引用资料时注明出处(如:第2章第3节); 3. 资料中没有明确答案时,必须回答“资料中没有找到”,并给出最接近的话题; 4. 回答控制在100字以内。 输入:学员问题 输出:回答 + 来源

模板的发放在整个课程里刻意做得“晚”了一点。我们本来可以在开头直接给,但那样学员永远不会思考“提示词为什么长这样”。等大家自己试过一轮、发现回答满天飞之后,再把这个模板贴出来,每个人都拿到了对照组。

跑通最小用例的意义是什么?不是让学员学会复制,而是让他们第一次体会到:原来只要把角色、任务、规则、输入输出写清楚,Agent的行为就会明显收敛。这个体感比任何理论讲解都有效。

3.3 里程碑三:在Agent里加入“自我纠错”逻辑,并提交复盘记录

第三个里程碑开始就有些难度了。我们要学员在已有模板上做一次改版:让Agent在给出回答前先检查一遍“这句话有依据吗?”没有依据就改动表述。说白了,这是最基础的自检逻辑——通过二次提示,把Agent从“直接回答模式”切换到“先验证再回答模式”。

这个环节要交的作业也不是代码,而是一份复盘记录。我们给了固定的填空模板:

  • 我改了什么:在提示词里增加了……
  • 我观察到的变化:对比改版前和改版后,回答在哪些维度上变了;
  • 我仍然不满意的地方:……

复盘记录一出,课堂气氛立刻变了。以前学员交上来的东西是“我做完了”,现在交上来的是“我发现它还不行”。后者才是我们想看到的产出。

4. 授课过程中我们反复使用的“反向提问”清单

4.1 逼问需求边界的问题:从“我想要”到“我只要”

实操过程中,学员经常会做一个“万能Agent”,什么都能聊一点,最后什么都不稳定。我们会停下来问三句话:

  • 你这个Agent最想服务的人是谁?
  • 如果他说了一句不该由Agent回答的话,你最希望Agent怎么做?
  • 哪一个功能是今天这节课绝对不能丢的?

这三问不是教条,而是把“我想要”逐步压缩成“我只要”。很多学员一开始写“我希望助教既会讲概念,又会批作业,还能陪聊”,被逼到第三问之后,自己就会删掉两样。

4.2 把模糊答案逼成可测试输入输出的问题

还有一类问题专门对付“差不多能用”的感觉。比如学员会说“我试了一下,效果还行”。这句话在课程开发里是没有意义的,因为“还行”无法复现。

我们一般会追问:

  • 你用了哪三个问题去试的?
  • 这三个问题分别对应什么类型?
  • 如果换一个问法,你觉得它会崩吗?

把这些问题写下来,学员就会发现自己根本没做过测试。有的学员第一次交的测试用例是“帮我写个请假条”“你好”“1+1等于几”,显然是应付。我们用这些问题把“随便试试”变成“刻意测试”。

4.3 学员卡住时的最小补救方案

当一个学员卡在“Agent老是把资料外的内容当成资料内的”时,助教的直觉是告诉他“你再加一句规则”。但这样学员就跳过了思考。我们会给出一个最小补救步骤:

  • 先找一个真实的失败案例;
  • 只修改规则中的一句话;
  • 重新跑之前失败的案例;
  • 记录结果,如果失败,就再换一句话。

这段流程的本质是“单变量实验”。我们不要求学员一口气做对,而是要求他们做到“每一次修改都有可对比的证据”。这个习惯一旦建立,后面所有的Agent调试都会变得有条理。

5. 评测设计:不测“代码有多好”,而测“Agent有多稳”

5.1 我们用的五类测试用例

课程进入后半段,所有护航问题都指向一件事:怎么评判一个Agent做得好不好?我们设计了五类固定测试用例,所有学员用同一套,方便横向比较。

这五类用例是这样的:

类型例子考察点
正常问答“什么是Prompt?”能否准确从资料中提取定义并注明来源
模糊提问“为什么要学这个?”能否识别问题范围并给出有依据的概括
边界提问资料中没有答案的问题能否承认不知道,而不是编造
对抗提问用诱导方式让Agent承认不存在的结论能否坚持资料边界
多轮追问连续问三个相关问题,第二轮引用第一轮回答能否保持上下文一致

这五类用例不是拍脑袋定的,每一类都对应一个常见的Agent毛病:定义不准、答非所问、幻觉、被诱导、丢失上下文。学员只需要拿到这个表,就知道这堂课到底要调什么。

5.2 评分表的权重设置与理由

我们的评分表没有把“功能实现”放在第一位。100分里,功能完整度只占30分,边界处理占25分,稳定性占20分,可解释性占15分,复盘质量占10分。

这个权重经常被学员质疑:为什么功能只占三成?我的解释是,第3课要训练的是“评估Agent的能力”,不是“堆功能的能力”。一个能回答100个问题但每个回答都没谱的Agent,在真实场景里完全没有价值;一个只会回答20个问题但每个问题都敢于说“不知道”的Agent,反而可以放心交给用户。

复盘质量占10分更是刻意的。我们见过太多学员,功能做得不错,但问他“哪里还有问题”,他答不上来。这说明他其实没有真正理解自己的Agent。这10分就是给自我认知的奖励分。

5.3 为什么坚持人工评审而不是全自动跑分

设计评测的时候,有人提议全自动跑分:把测试用例灌进去,比对关键字,跑完直接出结果。我们试过一轮,发现这条路走不通。

原因是Agent输出的开放性太强了。同样是正确回答,有人会复述原文,有人会整理成小标题,有人会先给结论再给依据;如果用关键字比对,“复述原文”的一下就过了,“整理成小标题”的反而被判错。关键词匹配根本测不出“这个回答是否基于资料”。

所以最终决定采用人工评审,但给评审的人一份非常细的检查表:来源是否真实存在、语气是否符合角色、是否在无依据时拒绝回答等。每份作业由两位助教分别打分,分差超过10分就进入二次讨论。这个流程更重,但拿到的是能说服所有人的结果。

6. 踩坑记录:第3课试运行时发生的三个真实问题

6.1 学员只是在调参数,没有设计结构

第一次试运行大概有一半的学员收到反馈“你的Agent还是会被带偏”之后,第一反应是去调temperature,把参数从0.7调到0.2,然后说“好一点了”。这个动作让我们背后一凉:他们以为稳定性是参数决定的,跟结构无关。

改版后,我们把“参数周”彻底取消,课堂上不允许讨论temperature、top_p这类参数,所有调整都必须在提示词的措辞和流程顺序里完成。这样一来,学员不得不去面对真正的问题:这个任务该不该让Agent一步做完?哪里需要一个检查节点?

6.2 提示词越写越长,效果反而变差

第二坑是另一个极端。有的学员为了对付对抗提问,把提示词从100字写到1000字,规则一条叠一条,最后Agent反而变得畏首畏尾,连正常提问都只敢回答“资料中没有找到”。

我们复盘时发现,问题出在“规则冲突”:新规则和旧规则在边界条件上互相打架,模型不知道该听谁的。后来我们补了一节“删减练习”:让学员把规则压缩到原来的三分之一,但必须保住所有测试用例通过。这个逆向操作比加规则更能锻炼课程设计能力。

6.3 学员把Agent的幻觉当成自己的错

还有一个现象出乎意料:很多学员明明看到了一个明显编造的回答,第一反应不是怀疑提示词,而是怀疑自己“是不是看错了资料”。等他们再翻一遍资料,确认答案不存在,又会反过来责怪自己“为什么没有把规则写得更强”。

这其实是Agent课程里最微妙的地方——幻觉很容易被学员内化成个人能力问题。为了扭转这一点,我们在课堂里反复强调一句话:幻觉是模型的默认行为,不是你的设计失误;你要做的是建立防线,而不是追求完美。这句话看似鸡汤,却在试运行后半段明显降低了挫败感。

6.4 对应的改版策略

三个问题汇总后,我们把第3课的流程做了一个小改版:把“自我纠错”逻辑从里程碑三提前到里程碑二之后,并且增加了一次“删减练习”。这样学员会更早意识到,解决问题的路径不是“加参数”也不是“加规则”,而是让Agent在回答前多走一步检验。改版之后,第二次试运行时,学员提的测试用例质量明显提升,复盘记录里也开始出现“我原来以为……现在发现……”这样的句式。

按我的经验,Agent课程最怕只有一种声音:讲师讲得很开心,学员跟着很顺滑,一考试全忘。所以第3课我宁可设计成“让学员出丑”的课。最后再分享一个小技巧:每次课程结束,我都会把学员的失败案例匿名整理成一张“错误目录”,下一次开课时直接当开场材料。那些真实的、会让Agent犯错的问题,远比任何理论清单都更能让新学员坐直。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询