这是一份课程作业报告,内容限于本课同学与任课教师之间传阅。
口令不正确,请重新输入
这份报告记录我这一学期使用 AI Agent 的经历。重点不在于我用了哪些功能、 做出了什么东西,而在于我实际是怎么用的、踩过哪些坑、从中形成了什么习惯。 如果一句话概括我的体会:Agent 好不好用,取决于我给它的要求有多清楚、 我验收得有多严。
我试过不止一种 AI 工具,但真正留到今天、真正进入日常学习流程的只有一个。 我的判断标准很朴素:它能不能接住一件我交代得清楚、并且我有能力验收的事。
我这学期唯一长期在用的 Agent。我选它不是因为它最强, 而是因为它能把东西真的落地——写文件、跑命令、做逐项校验, 这些机械动作交给它,我来做判断。这样我才是那个做决定的人。
我给它的活大致分三类:写(把一个题目的多种解法并排写出来)、 改(往我自己的笔记里补充内容)、排(把散落的学习安排整理成结构化文档)。 三类活用同一套流程验收,所以用得越久越顺。
它也会出错,而且出的错不是「语法报错」这种一眼能看见的, 而是逻辑通顺、但结论是错的。这一类我到现在也不敢说能一眼看穿, 所以第 05 章那六条规矩,是我必须写下来的原因。
浏览器和编辑器里我都点开过几个通用对话工具,讲概念、解释定理的表现都很好, 有时候比我翻书快。
但它们最后都没留下来,原因是分工重叠:既然主力工具也能讲这些, 我就没有动力再开一个窗口。而我心里很清楚,「听懂了」和「验收得了」是两回事—— 概念性内容我需要自己再过一遍才敢信,所以真正留在手里的那个, 反而必须接得住我的验收。
结论:这一学期我需要的不是一个「什么都能问」的窗口, 而是一个「什么都肯干、并且干了能让我查」的助手。工具贵在精,不在多。
这一章是整份报告里我最想讲清楚的部分。使用 Agent 的能力不在于提示词写得多花哨, 而在于有没有一套自己认账的流程。下面五步是我从第一周用到现在的固定动作, 顺序不能乱——尤其是第 4 步。
打开对话框之前,我先在纸上或脑子里过一遍:题目问的是什么、 我目前的思路是什么、哪里我不确定。这一步跳过,后面全是浪费—— 因为我根本无从判断它给的答案是对是错。
做题时我卡满 20 分钟才去求助,就是为了保证自己「知道自己卡在哪」。 这 20 分钟是投资,不是拖延。
我不写「帮我写个程序」,我写「给我三种解法,从最笨到最优, 每种标出适合什么场合,我不指定用哪一种」。差别在于: 前者我只能被动接受,后者的每一个方案我都有判断依据。
涉及动我文件的时候,边界要写死:只在末尾追加、不动我原来那几格、 改前先备份、只碰指定的那几个文件。「请注意」这种抽象嘱咐没有约束力, 可执行的规矩才有。
到这一步我才放手让它做,因为它做的是重复且容易出错的部分: 把多个版本并排写出来并各加注释、按我定的格式补全笔记、 把几份材料重组成一张有层次的对照表。
它留下的每一条「⚠️ 这依赖某个前提,编程题不要这么写」这类提醒, 本身就是我检查过的产物,不是它替我想的。
这是整套流程里最不能省的一步。我现在的验收标准有三条:
① 跑一遍——「语法 OK」不等于「能跑」,我带 bug 交付过一次;
② 断言结果——不只看它跑通没,要钉死答案的个数和内容;
③ 逐项校验——改完笔记用 ast.parse 把每个代码格过一遍。
这三条都曾经救过场:第 05 章第 2、3、6 条,都是因为这一步做扎实了才没出事。
验收通过不代表全盘接受。我的习惯是:能用的留下并按我的方式重排, 更好的换掉,我自己写的错误版本也留着。
一道题我让它写了五个版本,最后只把最快那版当模板, 另外四版我都留在文件里当对照——因为让我想通「为什么这里能这么化简」的, 正是最笨那版和最巧那版摆在一起看。我留着的不是它的答案,是我的对照系。
我用 Agent 最值的一刻,不是它给出多漂亮的答案, 而是它把一个我模糊的想法变成了一个我反驳得了的具体东西—— 我反驳得了,说明我真的懂了。
同一套流程,换到不同类型的任务上,Agent 在我这里扮演的角色就完全不同。 下面四类场景我都拆成「我负责什么 / 它负责什么」, 这样比笼统地说「我用了 AI 做完某件事」要诚实得多。
做课后题的时候我经常「跑通了但不确定自己是不是真的懂了」。 所以我给它的要求不是「这题怎么写」,而是「给我五个版本,从最笨一路优化到最巧, 每个标出适用场合和风险」。
拿到的结果我自己重排了一遍:分成「考试要背的」和「我自己练手的」两个区, 考试那版我要能默出来,另外四版留着对照。真正让我想通的,往往不是最巧那版, 而是最笨那版和最巧那版摆在一起看的那一下。
| 版本 | 思路 | 我的定位 | 适用场合 |
|---|---|---|---|
| V0 | 直接穷举 | 对照组 | 确认题目没读错 |
| V1 | 消掉一层循环 | 保底写法 | 考试写不出优化时的退路 |
| V2 | 加剪枝 | 练手 | 了解剪枝思想 |
| V3 | 数学推导 + 程序验证 | 理解核心 | 真正搞懂原理 |
| V4 | 卫语句收口 | 考场模板 | 限时作答 |
注:以上是版本组织方式的示意,具体某道题的五种解法内容属于作业本身,不在此展开。
我习惯把课堂笔记写成 notebook,把练习单独写成脚本,两边分开维护。 往笔记里补内容这件事,我一开始很不放心——万一它顺手把我的代码改了怎么办。
所以我先给它划了规矩,并且每次都写进指令里:只在末尾追加、绝不动我原来那几格、 改之前先复制一份带日期的备份、改完逐格做语法校验、 我自己写错的版本也要留着。
最后一条是我最在意的。错版移到文件末尾的「原版草稿存档」区、整体注释停用,不删。 因为那些错的地方,恰恰记着我当时是怎么想的——那也是我的笔记的一部分。
我一学期要同时顾好几门课,还有几个绕不开的时间节点。这些信息散在课表、教材、 通知和我自己的脑子里,我排不出来。
我做的是把信息喂进去、把判断给它:哪门课该占多少比重、 每天分给各科多少时间、哪几件事最容易翻车、哪段时间必须提前摊开说。 它做的是把这些判断变成一份能点开看、能对照、能当 checklist 用的单页—— 里面有周级别的总表、逐门课的打法、几个交叉收益的提示,还有一节专门讲风险点。
这些页面里,结构和排版是它做的,但每一个取舍都是我定的。 我现在打开它们还是当 checklist 用。
这是四类场景里唯一一个我刻意限制了它出场时间的。 我做题的顺序是固定的:自己读题、自己写、自己提交。
遇到卡壳的时候,我只问三句话:「我这段逻辑错在哪」「这个题意的边界是什么」 「过了的话还有更简洁的写法吗」。我不问「正确代码」。
区别在哪?如果我先问正确代码,我得到的是一个抄得过去的答案; 如果我先问错在哪,我得到的是我自己那行代码的判断依据—— 后者会留在脑子里,前者只会留在文件里。
它也提醒过我一句「你说的这个 n 是从 0 开始还是从 1 开始」—— 就这一句,我的题直接做错了。它不是在给我答案,是在把我的问题问清楚。
这五条是我在真实使用里一条条撞出来的,每一条的「为什么」都对应着下一章的某个具体事故。
复杂任务开始前,我先让它用自己的话把题目重述一遍,并指出哪里有歧义。 这步花不到两分钟,但能挡掉后面一整轮返工。
为什么 我有一道题的题意理解偏了半个字符,它一开始就会指出来—— 但前提是我让它先说,而不是让它直接写。
我不会问「这题怎么写」,我会问「给我三种解法,从最笨到最优,标出每种适合什么场合」。 拿到之后我自己挑一个记住,其余的当对照。
为什么 五个版本并排放在一个文件里,我最后只背最快那版, 但真正让我想通「为什么这里能这么化简」的是最笨那版和最巧那版摆在一起看。
「请注意不要改我原来的格子」效果很一般。换成
「只在末尾追加、每行末尾带 \n、改前复制一份带日期的备份、
改完用 ast.parse 逐格校验」之后,执行准确率明显上来了。
为什么 抽象的嘱咐需要它自己翻译,翻译会走样;可执行的约束没有解释空间。
脚本没报错、最后一行打印了东西——这不等于答案是对的。 我现在的习惯是在交付前加一段断言,把答案的个数和内容钉死。
为什么 见下一章第 2 个坑:我差点交付一个少几个解的版本,它「跑通」了, 但结论是错的。
我会让它把我的错误版本移到文件末尾的「原版草稿存档」区、整体注释停用,而不是删掉。 考场上我会错在哪,那些错版子里全写着。
为什么 错误代码记录的是我当时的心智模型。把它删了, 等于把「我当初为什么会这么想」这段思考也删了。
这一章是整份报告里我最愿意写的部分。一个工具「能出错、能被我发现、能被修正」, 才是它真的进了我工作流的证据。下面六件事都真实发生过, 而且每一次都提醒我:是我的验收没做扎实,不是运气好。
/ 下成立;一旦用整除
//,有一组合法解会被漏掉。
除法类型的选择会改变判断本身的语义——不是代码风格问题,是逻辑问题。
assert len(solutions) == 4 把答案个数钉死。
\n。
少一个换行符,一拼接就变成一整行。
input()。命令行没有输入源,它就一直等。
我有一份练习文件就是这个问题。
ast 只抽函数定义来执行,
避开 __main__ 块。顺带逼出一个好习惯:把交互逻辑关进
if __name__ == '__main__':,模块就能被别人安全地导入。
我叫张峻豪,2026 级。这份报告里写的所有东西, 都发生在上学期的日常里:课后练习、算法刷题、几门主课的学习安排。
我开始用 Agent 的动机很功利——写代码太慢,想省时间。但用下来发现, 它省下的其实是「反复查语法、反复格式化、反复 debug 自己打错的地方」这类机械劳动, 而真正需要动脑的部分它替不了我。反而因为它太能写了, 我必须真的读懂每一行才能验证它——这才逼我把以前糊弄过去的地方补上。
我最感谢它的一点是:它从不掩饰自己不确定。虽然它也会一本正经地说错话 (见第 05 章),但当我要求它给出理由、要求它自己验证时,它会承认。 一个会认错的工具,比一个永远自信的工具有用得多。