做产品 PMaker
空格的键盘空格的键盘
Agent 与 Skill

Agent 循环

Agent 循环 | Agent 与 Skill | 做产品

Agent 循环

说一个 Agent「会自己干活」,它的全部秘密就是一个词:循环。想一下、做一下、看结果、再想——多转几圈,看起来就像是在完成任务。

你会遇到的现象

  • 它做一半停了,你以为是「AI 不够聪明」,其实是没人给它停的规则

  • 同一件事它反复重试同一个动作,因为结果没回流到上下文

  • 跑完才发现它转了几十轮,账单吓人

循环的四个环节

**想。**模型看着当前上下文,决定下一步:是调用某个工具,还是直接给出最终回答。

**做。**你的代码执行工具调用,拿到结果。

**看。**结果作为一段文字,写进上下文——这一步不能省,模型必须「看到」结果才能继续。

**再想。**模型又读一遍上下文(这时它多了刚发生的那一轮),决定继续还是收尾。

这四步不断重复,就是全部。你观察到的「它很能坚持」「它会自己修正」,本质都是「上下文越来越长,模型每轮都基于更多信息重新决策」。

「它会自己干活」的全部机制,就是这一圈

想 模型决定下一步

做 你的代码执行工具

看 结果写回上下文

再想 读全部历史

每转一圈,上下文就长一截——这就是它的全部记忆

所以每一轮都比上一轮贵

第 1 轮

约 2 千 Token 输入

第 5 轮

前四轮的记录全都要重发一遍

第 15 轮

账单高一个数量级

省钱的办法不是砍轮数,是让每一轮更小:工具只回必要字段、及时压缩旧记录

四个环节里最容易被省掉的是「看」——结果没写回上下文,模型就会原样重试同一个动作。而横条说明了另一件事:输入每轮都含全部历史,轮数是线性的,账单是累加的

记忆都在这

循环里最容易被忽视的一点:Agent 没有别的记忆,它的一切都活在上下文里。

它记得自己查过什么、失败过几次、改过什么参数——不是因为有个「大脑」存了这些,而是因为每一轮的记录都老老实实堆在上下文里。窗口装得下,它就能记得;窗口中间被挤掉,它就会「失忆」。

这带来两个直接推论:

**一、上下文的组织方式,就是 Agent 的记忆质量。**每一步工具结果要不要保留、要不要压缩、先放什么后放什么,直接决定它会不会在中途乱掉。

**二、循环轮数越多,每轮越贵、越慢。**因为每一轮的输入都包含之前所有轮的内容。跑 20 轮的 Agent,第 20 轮是在几千 Token 的上下文上思考的——这笔钱会叠加。

怎么停下来

循环一定要有明确的停止规则,否则它就是一辆没有刹车的车。三样东西必备:

一、成功的终止条件。「任务完成,给出最终回答」。模型要能识别完成,并且你允许它「停下来回答」而不是永远只想着下一步。

**二、最大轮数。**硬上限。超过 N 轮直接掐断并报错或降级。没有这个,一次意外就能让它在不收敛的循环里烧掉几千块钱。

**三、超时与单步上限。**单次工具调用超时、整段循环超时,都要有。某一步挂了不能把整个循环拖死。

还有一条经常被漏掉:**重试要有「视角」。**失败后重试,要带着失败原因重新想,而不是原样重发。让模型看到「上一次这样做了、失败了、原因是 X」,它才可能换个做法。

成本与轮数

每一轮调用都在花钱:输入(包含全部历史)、输出(这次的决定)、工具执行。做一个估算:

假设平均每轮 2000 Token 输入、300 Token 输出,跑 15 轮——输入就累计了 3 万 Token,按输入单价算,再加上输出。一轮循环的账单,往往比一次普通问答高一个数量级。

省钱的思路不是砍轮数,而是让每一轮更小:工具返回只保留必要字段、及时压缩旧记录、别把大段无关内容堆进上下文。轮数该跑还是得跑,但每一轮的成本可以压。

最后记住这件事:**Agent 的能力上限是模型 + 工具 + 上下文组织的组合。**循环只是把这三种东西串起来。串得好,平凡的工具也能完成复杂的活;串得乱,再强的模型也会在第五轮开始原地打转。

工具调用 循环里「做」这一步的具体机制。

Agent 跑偏的三种形态 循环不收敛,是跑偏里最烧钱的一种。

上下文窗口 Agent 的全部记忆都在这里,装不下就得压缩。