[控场AI]
· 9 分钟阅读· 4,900 字

AutoGPT与BabyAGI的2023智能体狂热:活到2026的三个核心设计

AutoGPT与BabyAGI的2023智能体狂热:活到2026的三个核心设计

2023年AutoGPT与BabyAGI的狂热已逝,三个设计决策存活至今。

文章回顾了2023年3月至4月Auto-GPT与BabyAGI引发的智能体狂热,指出二者宣传的「目标驱动自主循环」在实践中陷入死循环、遗忘和成本失控三类失败:任务列表由模型自拟自评形成闭环,缺乏真实环境基准,上下文窗口限制导致重复动作。文章随后梳理了从这场失败中存活下来的三个设计决策:以ReAct为源头、以真实工具反馈和硬性停止条件(如--max-turns、--max-budget-usd)为核心的智能体循环;以CLAUDE.md和NOTES.md等纯文件替代向量数据库的外部记忆;以及从Auto-GPT的'y'授权提示演化而来的分级权限系统。结论是当今编程智能体所用的正是2023年实验的少数幸存者。

2023年4月16日,Auto-GPT仓库收到的第1994号issue标题只有五个字:"Gets stuck in a loop"。用户让这个智能体研究如何在海外注册公司,它执行了同一次Google搜索,拿到结果,然后再次执行同一次搜索。报告写道:"它明明成功获取了Google结果,却循环执行相同的查询。"这个issue在当年9月因长期无响应被关闭,标记为"不计划处理"。

这枚小化石来自一个极度喧嚣的月份。2023年3月底到4月中旬,两个开源项目让大半个互联网相信:GPT-4加上一个while循环,就是AGI的第一版草稿。那个春天构建的大部分东西都已消失,但其中三个设计活了下来——它们就运行在你今天早上使用的编程智能体里。

2023年智能体狂热与2026年编程智能体

两周改写认知的春天

2023年3月28日,Yohei Nakajima发布了一篇关于"任务驱动型自主智能体"的文章,技术栈是GPT-4、Pinecone向量库和LangChain。这份代码后来成为BabyAGI,其README注明整个脚本被精简到"140行:13行注释、22行空行、105行代码"。

两天后的3月30日,Significant Gravitas的Toran Bruce Richards发布了Auto-GPT的演示,推文中称其为"一个将GPT-4变为完全自主AI的开源实验"。据Know Your Meme记录的时间线,Andrej Karpathy在4月2日发推表示,提示工程的下一个前沿就是"AutoGPTs"。4月3日Auto-GPT登顶GitHub全球趋势榜,到4月12日星标突破3万。如今该项目仓库AutoGPT约有18.8万星标,而最初的智能体仍保留在其classic/目录中。

两者的宣传口径完全一致:输入一个目标,模型将其拆解为任务,逐一执行,根据执行结果生成新任务,持续循环直到目标达成——全程无需人类介入。

每一轮循环实际发生了什么

BabyAGI的结构极简:三个提示词加一个任务队列。归档脚本弹出第一个任务,结合向量库检索到的上下文送入执行提示词,存储结果,再通过任务创建提示词生成新任务,最后用优先级提示词对整份列表重排序。

阅读BabyAGI的while循环条件,问题一目了然。循环在任务列表为空时结束,而填充这份列表的恰恰是同一个被问"下一步做什么"的模型。真实脚本没有迭代上限,也没有花费上限,其README警告"持续运行此脚本可能导致高额API消耗"。更关键的是result的本质:在BabyAGI中,执行步骤只是一次文本补全调用,没有调用任何工具。所谓"研究某件事"的结果,不过是模型自己关于该研究的文字描述,然后这些文字又成为下一轮任务生成的输入。外部世界的任何信息从未真正进入循环。

Auto-GPT走得更远。其v0.2.0版本的README列出了互联网搜索、文件存储,以及由Pinecone、Redis或本地JSON文件支持的"长期与短期记忆管理",确实接触了真实世界。但它仍然会陷入循环。据Wikipedia的总结,开发者的解释是:智能体不知道它已经做过什么,因此会无休止地重复同一个子任务。

ReAct 模式是理解上述循环缺陷的关键参照。ReAct 由 Shunyu Yao 等人在 2022 年 10 月的论文《ReAct: Synergizing Reasoning and Acting in Language Models》中提出,核心思路是让大模型在「推理轨迹(Reasoning)」与「动作(Acting)」之间交替:模型先输出一段思考,再调用一个工具(如维基百科搜索),拿到真实返回结果后继续推理。与 BabyAGI 的「执行步骤只是一次文本补全」不同,ReAct 的每一步都以外部环境的真实观察作为下一步的输入,因此天然具备纠错能力。需要区分的是:BabyAGI 的循环是「生成任务—执行任务—再生成任务」,任务本身由模型自拟;ReAct 的循环是「思考—行动—观察」,行动的边界由工具定义。前者是自我对话,后者是与环境对话。这一区别正是 2023 年智能体集体陷入死循环、而后续编程智能体能够落地运行的根本原因。

任务列表自提示为何失败

那个春天的issue追踪和各类分析文章中,反复出现三类失败原因。

缺乏真实基准。由模型自己编写、排序并标记完成的任务列表是一个闭环系统——如果模型认为某个任务完成了,它就完成了。Anthropic在2024年12月发布的《Building effective agents》一文用一句话点出了解决之道:智能体需要"在每一步从环境中获得'真实基准'"。BabyAGI根本没有可供询问的环境。

遗忘。Auto-GPT运行在GPT-4的8K上下文窗口上,Jina AI的Han Xiao在2023年4月13日的评论文章中,按每个动作填满上下文窗口的假设计算了每步成本。记忆确实存在,但它只是对过往结果的相似度搜索,而且在BabyAGI中查询词是目标而非当前任务。一个看不到自己最近十步动作的智能体,会毫不犹豫地执行第十一次相同动作——这正是第1994号issue所描述的情形。

成本。Auto-GPT的README在寻求赞助时提到,全职开发该项目每天可能花费维护者"高达20美元的API成本",免责声明要求用户定期检查OpenAI用量并设置限额或告警。Xiao按当时GPT-4的价格(每千输入token 0.03美元、每千输出token 0.06美元)算出:每步约0.29美元,一个需要约50步的小任务花费约14美元。文章还引用了一位用户的抱怨:Auto-GPT"从不完成任务,它总能找到理由继续深入、做更多研究"。

**上下文窗口(Context Window)**是理解「遗忘」这一失败原因的技术前提。它指模型单次调用时所能接收的最大 token 数量,包括系统提示、历史对话、工具返回结果等全部内容。GPT-4 发布时提供 8K(约 6000 英文单词)和 32K 两个版本,二者价格不同。当智能体连续执行数十步操作、每步都产生工具输出时,早期步骤会被挤出窗口而无法再被模型看到,模型因此「不记得」自己已经做过什么。当时的应对方案是向量数据库检索:把历史结果转成向量存储,每轮用相似度搜索召回相关片段。但这种方式召回的是「语义相近」的内容,而非「最近发生」的内容,对「我上一步做了什么」这类时序问题几乎无效。这正是 Auto-GPT 反复执行同一次搜索的技术根源,也是后来长上下文模型与结构化笔记方案要解决的问题。

设计一:带硬性停止条件的工具循环

循环本身活了下来,改变的是进入循环的东西和让循环退出的机制。

这一模式早于那场狂热。2022年10月的ReAct论文让模型在推理和维基百科查询等动作之间交替,每一步都建立在已检索到的信息之上。到2024年12月,Anthropic对智能体的定义已定格为"LLM在循环中基于环境反馈使用工具",并建议"设置停止条件(如最大迭代次数)以保持控制"。

Claude Code的文档将其智能体循环描述为:收集上下文、执行动作、验证结果,其中"每次工具调用返回的信息会反馈到循环中"。对于一个失败的测试,这意味着运行测试套件、读取报错、修改代码、再次运行测试。测试运行器就是BabyAGI从未拥有的真实基准。对于无人值守的运行,CLI参考文档增加了硬性停止:--max-turns在达到轮次上限时报错退出,--max-budget-usd在预估花费触及上限时停止运行。

模型仍然自行决定何时完成,区别在于每一步都反馈真实的观察结果,且循环无法超max_turns的约束。

设计二:外部记忆,以纯文件形式存在

Auto-GPT和BabyAGI正确地认识到智能体需要在上下文窗口之外存储记忆,但它们选择了向量数据库。Xiao当时就认为这是过度设计:记忆条目很少超过一万条,而每次GPT-4调用耗时约10秒,数据库从来不是瓶颈。

在编程智能体中存活下来的形式要朴素得多。Claude Code的记忆文档描述了用户编写的CLAUDE.md文件和Claude自行写入的自动记忆,两者都"在每次对话开始时加载"。Anthropic在2025年9月关于上下文工程的文章将这一模式称为结构化笔记:"智能体定期将笔记持久化到上下文窗口之外的记忆中",Claude Code的待办列表和NOTES.md文件就是示例。

任务列表也活了下来,但角色已经改变。在BabyAGI中,列表驱动智能体行动。在现代编程智能体中,待办列表是智能体为自己和你保留的笔记,而驱动下一步行动的是工具返回的结果。

CLAUDE.md 是 Claude Code 约定俗成的项目记忆文件,放置于仓库根目录,用户可手动编写项目规范、构建命令、代码风格等长期约束。它之所以优于向量数据库,在于三点:其一,内容是人类可读可编辑的纯文本,出错时可直接修改而非重新嵌入;其二,每次会话开始即完整加载,不依赖相似度检索的召回质量;其三,版本可控,随代码一起提交、评审和回滚。与之配套的「自动记忆」则允许模型在运行过程中主动写入经过整理的事实性笔记,但仍以文件形式落盘。二者共同构成了「上下文窗口之外的持久记忆」这一模式的具体实现——本质是把「记住什么」的决定权部分交还给人和显式的文件系统,而非交给一个不透明的检索机制。

设计三:人类检查点

这个设计从一开始就存在于Auto-GPT中,只是藏在一个可以跳过的flag后面。v0.2.0的README提示用户输入"'y'授权命令,'y -N'连续运行N条命令"。同一份README声明连续模式"不被推荐。它可能危险,可能导致你的AI永远运行或执行你通常不会授权的操作"。

那个y提示就是当今编程智能体权限系统的直系祖先。Claude Code的工作文档指出,从v2.1.283起,交互式会话默认以Auto模式启动:后台分类器审查大多数操作并阻止有风险的操作,而不是逐一询问用户。Manual模式会在文件编辑和大多数shell命令前询问。acceptEdits允许编辑不询问直接通过,plan模式则允许探索但不修改源文件。

文件编辑会生成快照以便回溯,你可以随时按Esc停止循环并调整方向。Anthropic的文章为任何智能体定义了同样的原则:它们"可以在检查点或遇到阻碍时暂停以获取人类反馈"。

权限模式的演进反映了智能体自主性与安全性之间的权衡。Auto-GPT 时期的 y 提示是粗粒度的:要么每次操作都问,要么整段连续放行,中间没有梯度。现代编程智能体把这一选择拆解为多个层级,例如 Auto 模式用后台分类器对操作做风险打分,低风险直接执行、高风险才拦截;Manual 模式逐项确认;acceptEdits 只对文件编辑放行、对 shell 命令仍需确认;plan 模式则允许只读探索而不改动源码。这些模式共享同一原则:把「人类叫停的权力」内置到循环的架构里,而不是依赖用户记得手动加 --max-turns 之类的参数。Anthropic 将其归纳为智能体应在检查点或受阻时暂停以获取反馈,这也是从「全自主」叙事退回到「可监督自动化」的关键标志。

真正留下的东西

2023年那场狂热的遗产不是AGI,而是三个经受住实践检验的设计决策:用真实环境反馈取代自我评估的工具循环、把记忆从向量数据库简化为磁盘上的纯文件、以及在循环中保留人类叫停的权力。当你今天使用编程智能体时——看它运行测试、读写笔记文件、在权限提示前停下来等你——你实际上在使用2023年那场实验里仅有的幸存者。

分享:

相关推荐