三、工具与工具调用,它凭什么真的动手
模型会说,工具会做
模型本身能做的事,说到底只有一件:根据前面的内容继续往后写。它能"写出"一段 HTML,但写出来的东西默认只是躺在对话框里的文字。
真正让文件出现在你硬盘上的,是 工具(Tool):读文件、写文件、执行命令、打开网页、截图。这些能力一样一样交给模型去调用。
模型提出请求,系统调用工具执行,再把结果送回模型,这个来回叫 工具调用(Tool Calling)。你能看到它是一条一条来的:读课表 → 拿到内容了 → 写 index.html → 写成功了 → 开浏览器 → 页面长这样 → 嗯,得改。
现在动手,然后“静候佳音”
现在让它真开工。把提前准备好的课表放进对话框或者项目文件夹,把下面这段整段发过去,注意最后那句"做完告诉我"——验收从这一刻就开始了。
【发给 Agent】
复制
现在开始做,只用我文件夹里的材料。
1. 一个文件搞定,就叫 index.html,双击能在浏览器里打开,不联网也能看;
2. 周一排到周五,五列并排;每门课显示时间、课程名、地点、老师;
3. 桌面和手机都要看清,手机上不要出现横向滚动条;
4. 蓝白配色,不要动画、不要渐变、不要花哨字体;
5. 课表里没写的信息不要自己补,标成"待确认"。
做完告诉我三件事:文件在哪个路径、你检查了哪些地方、还有哪些信息你不确定。然后去文件夹里看。真的有一个 index.html 吗?双击它,浏览器里出现课表了吗?
工具也会失败
第一次跑通当然好,跑不通也很正常,而且恰好是最好的教材:中文文件名读不出来、路径写错、截图识别成一堆乱码、命令报一长串红字。
这时候别硬猜,也别说"算了"。把报错原文整段截图贴给它。
【发给 Agent】
复制
刚才这步报错了,原文我贴给你:
(把报错整段粘在这里)
不要猜原因,先解释这段报错在说什么,再告诉我你打算怎么修。它读报错、改参数、重试一次——这就是下一节要讲的事在悄悄发生。
四、执行循环,它怎么自己发现错了
什么是执行循环
假设第一版做得挺像回事,你翻到周四那一列,发现"大学物理实验"的课名挤出了格子,右边被切掉一块;手机上更惨,整列错位。
这种根据结果不断选择下一步行动的过程,叫 执行循环(Agent Loop):
判断下一步 → 使用工具 → 读取结果 → 调整行动 → 继续执行。
有了它,Agent 才能连续推进,而不是每做完一步就停下来等你重新安排。这是它和"一问一答"最本质的差别:前者是流水线,后者是寄快递,一次一件。

循环也不是永动机。任务完成、信息不足、工具一直失败、撞上权限限制,任何一条都可能让它停下。所以"它停下了"不等于"它做完了"。
只报现象,别报解法
这一节有个小技巧,我觉得是整节课最值得学会的一条:你报现象,让它找原因。
别跟它说"你的 grid\-template\-columns 写错了",你多半也不知道哪儿错了。你就说你看到的,比如把截图放上去,再告诉它:
我双击打开了网页,有两个问题: 1. 相同节数的课程没有横向对齐。 2. 数学分析课的班型不用呈现,我只需要看学科、时间、地点、老师即可。 你自己打开看看,找出原因,改完再自己检查一遍。改了什么,一条一条告诉我。
接下来你会看到它真的去"看"了:有的产品会截图,有的会读自己写的代码,有的会算页面宽度。它找出原因,改一版,再查一遍,给你一份改动清单。
对比一下三十秒前和现在:你没告诉它怎么修,它自己走完了一轮循环。它不是把答案给你,它是把答案做完再给你。
它看不见的地方
循环再顺,也有它看不见的东西。例如原课表上的"物理楼B102",截图里那个"B"有点糊,它可能认成"8",也可能干脆自己"想"出一个教室号。它不会心虚,也不会打星号。
所以凡是它没法验证、只能靠推测的信息,最后都必须过你的眼睛。这句话在验收那一节还会说一次,因为它是整节课最不容易做到的一条。