你写了一句话,按下 Enter,终端里就开始一行接一行地往外刷。打开了文件。运行了命令。又打开了同一个文件。看上去就像在瞎忙:明明只提了一个简单的要求,眼前却是一段又长又看不懂的过程。
其实它并没有瞎忙。智能体在反复运行一个由三部分组成的循环,你在屏幕上看到的几乎所有内容,都是同一个循环跑到了不同的轮次。
为什么智能体比聊天工具做得多
聊天工具只负责把答案写出来,剩下的都得你自己动手:复制、粘贴、保存、运行。智能体则会自己在你的项目里干活,打开文件、修改文件、运行命令、查看结果,而且这些改动是真真切切留在你磁盘上的。
由此就引出了这篇文章真正想讲的东西。既然智能体是在动手做事,而不是出主意,那就不可能一步到位。从你的一句话到最终结果,中间隔着好几个步骤,每一步都会显示在屏幕上。
一个步骤由什么组成
收到你的请求后,智能体就进入这个循环,需要跑几轮就跑几轮。每一轮都由三部分组成。
收集上下文。智能体去补上自己还不知道的信息:打开需要的文件,查看项目结构,读取上一条命令的输出。最常让人意外的一点是,它并不是把你的项目背下来了,而是在读它。每次需要某个细节,它都会去翻一遍。
执行操作。只做一个具体操作:修改一个文件,或者运行一条命令。不是一次把整个构想全做完,而是只走下一步。
检查结果。看看实际得到了什么,再和你的要求对比。
接下来是一个分岔口。目标达成了,智能体就停下来,等你的下一个请求。没达成,就回到收集上下文这一步,再绕一圈。
而且这个循环会随请求调整,并不是按固定流程走完。一个关于代码的简单问题,可能在收集上下文时就结束了:智能体读完、回答,什么都没改。修复一个 bug 则相反,三个部分都要反复跑好几遍。各部分之间的边界也不总是那么分明,智能体在整个循环中都会用到工具。
之前看着奇怪的那些现象,都能从这里找到答案。智能体把同一个文件打开了两次,是因为改完之后需要重新看一眼。从请求到回复过了好几分钟,是因为循环跑了四轮,而不是一轮。回到起点不是出故障,这本来就是它正常的工作方式。
推理与工具调用
智能体做的事情,并不都会改动项目里的文件。它的工作正好从中间一分为二,看清这条分界线很有用。
推理 - 智能体在琢磨接下来做什么、该去看哪个文件、错误可能出在哪里。这时磁盘上没有任何改动。不管它推理得多有说服力,眼下也只是一个打算。
工具调用 - 到这里才真正有事发生。读取或写入文件,在项目里搜索,运行命令,上网查文档。每个这样的操作都会在终端里单独显示一行,项目里发生的一切变化,正是由这些操作累积而成的。
调用的结果会返回给智能体,成为它下一轮已知信息的一部分。读了文件,现在就知道文件内容了。跑了测试,现在就知道测试过没过。
命令报错退出了,文件没找到,测试没通过,智能体都看得到,并会在下一步把这些考虑进去。输出里出现错误信息,并不代表全都坏了、只能放弃。很多时候,这恰恰是它缺少的那条信息,下一轮会比上一轮更准。
实际结论很简单。关于工具调用的那几行不是可以看都不看就滚过去的杂音。你的文件此刻正在发生什么,就是在这里看到的。
为什么智能体会提问
干到一半,智能体可能会停下来问你。这是循环里的正常环节,并不说明它搞不定。
问题分为两类,把它们分清楚很有帮助:
- 缺少关于任务的信息 - 到底要改什么,两个相似的文件里你指的是哪一个,做到什么程度算完成。智能体遇到了歧义,不想靠猜;
- 需要操作许可 - 智能体准备做一件影响比较大的事,于是停下来问一句能不能做。它能自主到什么程度,取决于你的设置。
第一类问题是个好信号。与其朝错误方向跑了三轮循环再返工,不如现在就问清楚。
问题不一定要等它来问,你也可以主动引出来。在最开始、动手修改之前,请智能体用自己的话把任务复述一遍,并把所有不清楚的地方都问出来:
写一下你是怎么理解这个任务的,以及打算怎么完成它。
如果提问有助于你更好地理解任务和目标,请直接提问。这样一来,歧义会在第一次修改之前就暴露出来,而不是等到活干了一半才发现。过程中你也可以随时介入:补充上下文,调整方向,或者叫停智能体,重新描述任务。
谁来决定是否完成
智能体说"完成",只意味着一件事:它的循环结束了。它执行了操作,按自己的标准检查了结果,认为目标已经达成。但工作本身还没有结束。
一项改动算不算被接受,不看智能体什么时候做完,而看人什么时候查看了实际改动,并为这个结果负起责任。接下来有两种可能:接受,工作就此结束;返工,你说清楚哪里不对,循环从你的新请求重新开始。
这时要看的不是报告,而是改动本身:智能体会显示它删掉了哪些行、加了哪些行。这才是"改了什么"的准确答案,它不在智能体写的那段文字里。
智能体描述自己做了什么时,往往写得让人挑不出毛病:"给三个方法加上了错误处理,检查过了,一切正常"。听起来像是事实。但回复里的文字和文件里的内容是两回事,两者并不总是一致。想知道真实情况,唯一的办法就是去看改动列表。
在 Claude Code 中怎么用上这些
理解了这个循环,实际工作中能带来这些好处:
- 请求写得越准确,循环的轮数就越少。智能体会一直绕圈,直到结果和你的要求对上,表述含糊就得多绕几圈;
- 你自己在文件里做的修改,智能体下次打开这些文件时就会读到:毕竟它不是记住了项目,而是在读项目。如果你手动改过什么,告诉它一声;
- 智能体的循环以"完成"二字结束。工作则以你的检查结束,这是两个不同的时间点。
完整的图景是这样的:智能体的循环在里面,你的检查在外面。
GO TO FULL VERSION