跳到主要内容

让它自己给自己派活 — 一张任务表六轮之后变成了什么

这一章讲三件事: 把「列任务」这件事也交给它之后会发生什么; 它在没有任何工具的情况下是怎么报出一个气温的; 以及一句写在提示词里的硬要求为什么没管住它。

它在全书链条里的位置: 第 09 章的计划是一次性列完就定死这一章更进一步:每干完一件事,就重新生成一批新任务、把整张表重新排一次序。 它是这本书里「自主」这个词走得最远的一处,也是翻车最明显的一处。

1. 换一种玩法:只给目标,任务由它自己生

这一节讲这一支和前两种转法的分界线。

书里这一支的核心理念是:由程序根据设定的目标,自己生成、组织、 确定优先级以及执行任务1

注意「生成」和「确定优先级」这两个动词。 第 09 章那一趟里, 计划是开头一次性产出的,之后再也不变;而这一支每干完一件事就重来一遍。

整个流程只有四步,一圈一圈转2:

①从任务表里取出第一个任务


②执行它(问一次模型)


③把结果存进一个能按意思搜的库里


④根据这次的结果和总目标,生成新任务,并把整张表重新排序

└──────▶ 回到①

图说:第④步是这一支的全部特色 —— 任务表本身是活的。
**第 09 章那张 8 条的清单在这里变成了一张每轮都会重写的表。**

还有一条设定要先记住:这一支不上网。 书写得很清楚: 和另一支相比,它不搜索外部知识,专注头脑风暴,避免在网络上寻找信息, 从而避免偏离正轨3这条设定在第 4 节会变成一个很尴尬的事实。

2. 三个角色,各有一段提示词

这一节把零件拆开。三个角色其实是同一个模型配三段不同的交代。

书列的三个角色是4:

执行角色——系统的核心,拿到「目标」和「这一个任务」两样, 问一次模型,把结果作为字符串返回。

任务创建角色——拿到四样(目标、上一个任务的结果、上一个任务的描述、当前任务表), 问一次模型,返回一批新任务。

任务优先级角色——拿到当前任务表,问一次模型,返回一张重新排好序的表。

这三个角色在代码里就是三段模板文字。 其中第三段最要紧, 因为它是第 6 节那个反例的证据。书把它原样印了出来,关键那句是5:

You are a task prioritization AI tasked with cleaning the formatting of and
reprioritizing the following tasks: {task_names}.
Consider the ultimate objective of your team: {objective}.
Do not remove any tasks. Return the result as a numbered list, like:
#. First task
#. Second task
Start the task list with number {next_task_id}.

第四行那句 Do not remove any tasks.(不要删除任何任务)请记牢。 它是这一支设计意图的白纸黑字:任务表只能增,不能减。

3. 主走查:六轮,一张表的变形记

这一节是本章的主走查。每一轮的任务表条数、编号区间和产出,全部来自书里的真实记录。

目标(整趟只给这一句):「分析一下北京市今天的天气,写出花卉存储策略」6 轮数上限: 代码里写死 max_iterations = 66 工具: 一件都没有。 这一支不上网、不查库、不调计算器。 起手任务: 代码里的默认值——Make a todo list(列一张待办清单)7

第 1 轮 · 列清单。 唯一的任务是「列一张待办清单」。它交出六条8:

1. 收集北京当前的天气数据,包括温度、湿度、风速和降水量
2. 分析天气数据,确定花卉最佳的存储策略
3. 研究花卉存储的最佳温度、湿度和其他环境条件
4. 基于数据和研究,制订花卉存储计划
5. 执行计划,并监测花卉的状态变化
6. 根据需要调整计划

第 1 条就是一个死结,而且当场就死了:它没有任何能收集天气数据的工具。

紧接着第④步跑起来,新的任务表变成 7 条,编号 2 到 89

第 2 轮 · 执行第 2 号任务(确定最适合的存储材料)。 它的回答第一句就出事了10:

In order to store flowers in Beijing, it is important to consider the current
weather conditions. Today, the temperature in Beijing is around 18°C with a
humidity of around 70%. This means that the air is relatively dry and cool,
making it suitable for storing flowers.

中文对照:今天,北京的温度大约为 18°C,湿度大约为 70%。 这意味着空气相对干燥和凉爽,适合存储花卉。

这两个数是从哪来的?下一节整节讲它。

这一轮结束后,任务表变成 6 条,编号 3 到 811

第 3 轮 · 执行第 3 号任务(分析天气并制定策略)。 产出是一段很像样的建议:阴凉干燥、避开阳光和热源、远离加湿器和空调、 远离强烈气味、远离害虫,定期检查温湿度12

但任务表炸了:变成 11 条,编号 4 到 1413编号上限从 8 跳到了 14。

第 4 轮 · 执行第 4 号任务(监测并调整)。 产出是「我会检查是否有枯萎、变色……并跟踪花卉的到期日期」14

任务表再炸:变成 14 条,编号 5 到 1815编号上限从 14 跳到了 18。 书里印到这里被截断了——最后一条「18: Identify potential risks associated with flower storage in」 连句子都没印完。

第 5 轮 · 执行第 5 号任务(分析天气及其影响)。 产出又绕回了材料:透气抗湿的粗麻、棉布、亚麻,阴凉干燥、远离阳光, 监测状态,最后还说「制定待办事项清单以确保采取所有必要步骤」16

然后任务表发生了最反常的一件事:它变成了 11 条,而且编号乱了17:

6: Develop a plan for storing flowers in Beijing that takes into account
the local climate conditions.
1: Investigate the effects of different storage containers …
2: Investigate the effects of different storage materials … in different seasons.
3: Analyze the impact of different types of flowers …
4: Compare the cost-effectiveness of different flower storage strategies …
5: Research the best methods for preserving flowers … in different weather conditions.
7: Develop a system for tracking the condition of flowers in storage …
8: Identify potential pests and diseases …
9: Create a report summarizing the findings and recommendations …
10: Create a checklist for flower storage in Beijing …
11: Identify potential risks associated with flower storage in Beijing.

从 14 条掉到 11 条,编号上限从 18 掉到 11,而且排列顺序变成了 6、1、2、3、4、5、7… 第 6 节整节讲这件事为什么重要。

第 6 轮 · 执行第 6 号任务(制订考虑当地天气的存储计划)。 这是最后一轮,也是这一趟的最终产出。它写了四段18:

首先,分析北京当前的天气,包括温度、湿度和空气质量,
以确定最合适的存储材料。
其次,创建一个需要完成的任务清单……
再次,制定一个考虑到当地天气的存储策略……
最后,监测花卉的状态变化并根据需要调整计划。

请把这四段和第 1 轮那六条比一比:「分析天气」「列清单」「制定策略」「监测调整」—— 六轮之后,它交出来的是第 1 轮那张待办清单的复述。

六轮的账:

轮次 执行的任务 任务表条数 编号区间 有没有新东西
1 列一张待办清单 7 2 – 8 有(六条待办)
2 确定存储材料 6 3 – 8 有(材料清单)+ 一个编造的气温
3 分析天气并制定策略 11 4 – 14 有(存储条件清单)
4 监测并调整 14 5 – 18 基本没有(复述第 5、6 条待办)
5 分析天气及其影响 11 6 → 11 没有(又回到材料)
6 制订存储计划 — — 没有(复述第 1 轮那张清单)

编号上限:8 → 8 → 14 → 18 → 11 → 结束
条数: 7 → 6 → 11 → 14 → 11 → 结束

图说:前三轮确实在推进,后三轮在原地打转。
**而唯一让它停下来的东西是那个写死的 6。**

4. 第 2 轮那个气温是编的

这一节讲这一趟最硬的一处翻车,而书里对它一个字都没有评论。

回到第 2 轮那句话:今天,北京的温度大约为 18°C,湿度大约为 70%。

证据链只有三条,但每一条都是死的:

第一,它没有任何工具。 这一趟的代码里,三个角色都只是「拼一段文字、问一次模型」, 从头到尾没有注册过任何工具——不像第 01 章那趟有搜索、第 09 章那趟有查库存。

第二,书自己写明这一支不上网。 第 1 节引过:它不搜索外部知识, 专注头脑风暴,避免在网络上寻找信息3

第三,它说的话自相矛盾。 原文写着「湿度大约为 70%, 这意味着空气相对干燥和凉爽」——湿度 70% 不是干燥,是偏潮。

所以这两个数只能是编的。 而它出现的位置极其糟糕: 第 1 轮那张待办清单的第 1 条正是「收集北京当前的天气数据」。 它没有能力完成第 1 条,于是在第 2 条上把第 1 条的产出编了出来。

判断(我们的,不是书里的): 这是全书最危险的一次翻车,比第 09 章那个 12.0 更危险。 那个 12.0 至少还经过了一次工具调用,输入是编的、计算是真的; 而这两个数完全是凭空生成的,而且它后面所有的策略都建立在这两个数上。 更要命的是这一趟结构上的必然性: 任务表是它自己生的, 所以它一定会给自己安排一些它根本做不到的任务; 而这一支又没有「我做不到」这个出口——第 09 章那趟至少还说过「我无法比较」。 如果错,会错在: 如果给它挂上一个天气工具,这次编造就不会发生; 但「自己给自己安排做不到的事」这个结构问题依然在。

书对这一段的处理是:把中文翻译原样抄了一遍,没有任何评论。

5. 编号一路涨到 18:「只增不减」是设计意图

这一节讲这套结构的第一个内在倾向。

看第 3 节那张账表的编号上限一列:8 → 8 → 14 → 18。 第 3 轮生出 6 个新任务、第 4 轮生出 4 个,而每一轮只消化掉 1 个。

这不是故障,这是写在提示词里的。 回看第 2 节那段排序提示词: Do not remove any tasks.——这套设计明确要求任务只能增,不能减。

为什么这个设计会失控? 把机制拆开就清楚了:

  1. 每一轮消化 1 个任务;
  2. 每一轮的第④步会生成 N 个新任务,而 N 由模型说了算;
  3. 排序那一步被明确要求一个都不许删;
  4. 所以只要 N > 1,表就一直在涨。

第 3 轮的 N 是 6,第 4 轮的 N 是 4——消化 1 条、进来 6 条和 4 条,净增 5 和 3。 照这个速度往下推:每轮净增 4 条左右,第 10 轮那张表会有三十几条—— 差不多是第 4 轮这张 14 条表的三倍。 而书里那个 max_iterations = 6 恰好让你看不到那一幕。

再看那张表的内容,更能说明问题。 第 4 轮那 14 条里有这些15:

编号任务
13调查温度、湿度和其他环境因素对北京花卉存储的影响
14调查不同存储材料对北京花卉存储的影响
15分析不同花卉类型对北京花卉存储的影响
16比较北京不同花卉存储策略的有效性

这四条在第 3 轮的表里就已经存在了,只是编号不同。 换句话说:新生成的任务里有相当一部分是旧任务的改写。

6. 第 5 轮打脸:提示词写着「不要删」,它照样删了

这一节讲这一章最值钱的一个观察,它同时打掉两个念头。

第 5 轮之后,任务表从 14 条掉到 11 条,编号上限从 18 掉到 11, 而且排列顺序变成了 6、1、2、3、4、5、7、8、9、10、1117

先说这三件事各自意味着什么:

第一,条数减少了。 而排序那一步的提示词明写着 Do not remove any tasks.这句要求没有被执行。

第二,编号被整个重写了。 第 4 轮的表编号是 5 到 18;第 5 轮变成 1 到 11。 编号 12 到 18 那七条,连同它们的内容,消失了。

第三,新表的顺序本身是乱的:6 排在最前,然后才是 1、2、3、4、5。 排序提示词里还有一句 Start the task list with number {next_task_id} (从这个编号开始编)——它只对第一条生效了,后面的又从 1 开始重新编。

这一条同时打掉两个念头:

你可能以为事实
任务表只会膨胀,不会缩第 5 轮它自己缩了,而且一次砍掉三条加七个编号
提示词里写死的硬要求,模型会照办Do not remove any tasks. 白纸黑字,它照样删了

第二行比第一行更重要,而且它和第 4 节那个编造的气温是同一种病: 你写在提示词里的东西,是「强烈建议」,不是「规则」。

第 03 章第 4 节那条停车线为什么要用停止词而不是靠提示词劝? 答案就在这里。 能硬拦的地方就要用机制去拦;写在提示词里的,永远要准备好它不听。

判断(我们的,不是书里的): 书里这一趟的排版把这个反例藏起来了。 书对第 5 轮的解说只有一句「接下来的任务列表如下」,然后列了 11 条中文; 它没有指出条数变了、编号乱了、七条任务消失了。 而这三件事恰恰是这一趟最值得学的东西。 如果错,会错在: 如果那 11 条是书里排版时的删减而不是程序的真实输出, 这一节的证据就塌了。但英文原始输出和中文对照都印着 11 条,而且编号是乱的, 排版失误编不出这种乱序。

7. 另一支会上网,但它也会搜偏

这一节讲书里同一章的另一支,它和这一支正好互补。

那一支的特点是会自动化地从互联网上收集信息; 书还给了一个数字:它在代码托管网站上的收藏数一年内飙升到 15 万19给这个数配参照:书说这比另外三个主要框架加起来还多。

书给了一次真实运行20。目标是「调研北京的玫瑰花市场行情」,过程有两个关键步:

第一步,它搜「北京玫瑰花市场分析」。 结果主要关注北京和中国更广泛的经济趋势, 并未直接关联到玫瑰花市场——搜偏了。

第二步,它自己改了搜索词。 提出用更具体的关键词重搜, 比如「北京玫瑰花销售」「北京花店市场」「北京玫瑰花消费者偏好」。

这一步很值得看:它就是第 05 章第 5 节那条机制的又一次表演。 搜出来的东西不对,这个「不对」被当成一次观察喂回去,它据此换了搜索词。

但书对这一趟结果的评价很含蓄: 至于它给出的结果是否有价值,那就仁者见仁智者见智了20。 学生在旁边补了一句更实在的:如果你给出的目标更清晰、更可操作,也许能获得更有价值的建议。

书还老实列了这一支的一串毛病:运行成本高、容易分心或陷入循环、缺乏长期记忆、 处理大型任务时有局限;它有时会遗忘使用先前的成果, 且可能在面对复杂问题时陷入死循环,白白烧掉钱和时间21

「容易陷入循环」和「遗忘先前的成果」这两条,正好是第 3 节那张账表后三轮的样子。

8. 唯一的出口是那个写死的 6

这一节把第 09 章那张「五格全空」的护栏表在这里再核一遍。

这一趟唯一一条护栏,是主函数里那一行 max_iterations = 6

它有多脆弱? 看第 3 节那张账表:

  • 第 6 轮跑完,程序打出 *****TASK ENDING***** 然后退出22;
  • 退出的时候,任务表里还剩十条没干;
  • 没有任何人判断过「目标达成了没有」。

换句话说:这一趟不是「做完了」,是「时间到了」。

书自己的结论倒是很诚实:六轮之后任务的最终结果展示了具体的步骤和策略, 但紧接着又是那句招牌话——至于这个策略有多大用途,就仁者见仁智者见智了23。 学生的吐槽是:「怎么又是这句话!」

把第 09 章那张护栏表搬过来,这一趟的成绩是:

本来可以有的护栏这一趟有吗
轮数上限有,写死 6
目标达成判定没有
打转检测没有(第 4、5、6 三轮明显在打转)
重复任务去重没有(第 5 节那四条就是旧任务改写)
「我做不到」这个出口没有(所以才有第 4 节那个编造)

五格里只填了一格,而且填的是最粗的那一格。

9. 这两个项目今天是什么

这一节交代现状,而且现状比你想的意外得多:两个项目都换了内核。

补充(不在书里,依据我们的 agent 生态书架): 本章讲的这一支——那个「任务循环」版本——已经归档了。 今天挂着同一个名字的是一个完全不同的框架。 依据: shelf=ai-agent-reference/babyagi#index.md @fa8930ebe72a82e5ad57b356e7cbec96290e5bb2 事实=该拆解开头就写明「这不是 2023 年那个任务循环版(那个已归档)」; 现在这一版的核心是把每个函数当成数据库里一行可版本化的数据来存, 运行时再即时编译出来执行,于是模型能写出新函数存回同一个库、自己给自己长出新能力; 作者本人明说它不是生产级的。24

补充(不在书里,依据我们的 agent 生态书架): 第 7 节那一支也换了内核:它今天不是一个会自己想事情的循环, 而是一个拖积木、连线成图的执行平台。 依据: shelf=ai-agent-reference/autogpt#index.md @65e80c71591461d77b19fe64c939dd768ab455ef 事实=今天的它是一个可视化的搭建与托管平台:你把「积木块」连成一张图 (线表示数据往哪流,所以叫数据流图),后端引擎按「哪个节点的输入凑齐了就跑哪个」把图跑起来; 内置约 180 个积木,并带凭据管理、按用量计费、出错重试。25

两条现状合起来,给出一个很值得记的判断:

判断(我们的,不是书里的): 这两个项目的转向方向是同一个:从「让它自己决定做什么」 退回到「让人把流程画清楚,由它来填空」。 一个把「函数」变成可管理的数据,另一个把「流程」变成一张可视化的图—— 两者都在把第 3 节那张会自己变形的任务表,换成一个人能看懂、能改、能重跑的东西。 如果错,会错在: 如果这两个项目的转向只是各自团队的商业选择、 而不是这条路本身的问题,那么这条判断就把两个巧合当成了趋势。 不过第 09 章第 8 节那条(待办清单被从默认里拿掉)是第三个独立的例子。

10. 可带走的

  1. 这一支比第 09 章更进一步:任务表本身是活的,每干完一件事就重新生成、重新排序;
  2. **三个角色其实是同一个模型配三段不同的交代:**执行、生成新任务、把整张表重新排序;
  3. 它一件工具都没有,而且明确不上网;
  4. 它第 1 轮给自己安排的第一件事就是「收集北京当前的天气数据」——一件它做不到的事;
  5. 第 2 轮它凭空报出「北京 18°C、湿度 70%」,还说这意味着空气「相对干燥」(70% 不是干燥);书对此没有任何评论;
  6. 编号一路涨:8 → 8 → 14 → 18。 每轮消化 1 个、生成五六个,而排序提示词明写着「不要删任何任务」;
  7. 第 5 轮它自己删了:从 14 条掉到 11 条,编号上限从 18 掉到 11,顺序还乱成 6、1、2、3…;
  8. 这一条同时打掉两个念头:任务表不是只会涨;写在提示词里的硬要求,模型不一定听;
  9. 六轮的最终产出,是第 1 轮那张待办清单的复述——后三轮在原地打转;
  10. 唯一的出口是写死的 6。 退出时任务表里还剩十条,没有人判断过目标有没有达成;
  11. 另一支会上网,而且会自己改搜索词重搜——但书自己列了它一串毛病,包括「容易陷入循环」和「遗忘先前的成果」;
  12. **这两个项目今天都换了内核:**一个把函数当可版本化的数据存,一个变成了拖积木连线的平台——方向都是从「它自己决定」退回「人把流程画清楚」

11. 原文地图

主题原书章原文位置
核心理念:自己生成、组织、排序、执行9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:9(搜「生成、排序和执行任务」)
四步工作流程9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:21(搜「从任务列表中提取第一个任务」) · text/61-ch09-02-9-2-babyagi.txt:29(搜「任务执行、结果存储、任务生成和任务优先级排序」)
不搜索外部知识9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:17(搜「不搜索外部知识」)
三个角色9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:35(搜「执行Agent(execution_agent)」)
排序提示词与「不要删任何任务」9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:123(搜「Do not remove any tasks」)
目标、轮数上限、起手任务9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:329(搜「分析一下北京市今天的天气」) · text/61-ch09-02-9-2-babyagi.txt:332(搜「max_iterations: Optional[int] = 6」) · text/61-ch09-02-9-2-babyagi.txt:255(搜「Make a todo list」)
第 1 轮那六条与随后的任务表9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:362(搜「收集北京当前的天气数据」) · text/61-ch09-02-9-2-babyagi.txt:352(搜「Identify the most suitable materials」)
第 2 轮那个气温9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:397(搜「18°C」) · text/61-ch09-02-9-2-babyagi.txt:407(搜「湿度大约为70%」)
第 3、4 轮的任务表9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:349(搜「Monitor the flowers for any changes in condition」) · text/61-ch09-02-9-2-babyagi.txt:477(搜「Analyze the current climate conditions in Beijing and how they affect」)
第 5 轮那张 11 条的乱序表9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:531(搜「Develop a plan for storing flowers in Beijing that takes into account the local climate conditions.」) · text/61-ch09-02-9-2-babyagi.txt:541(搜「Identify potential risks associated with flower storage in Beijing.」)
第 6 轮的最终产出与结束标记9.2 BabyAGItext/61-ch09-02-9-2-babyagi.txt:581(搜「制订了一个考虑到北京当地天气的花卉存储计划」) · text/61-ch09-02-9-2-babyagi.txt:579(搜「TASK ENDING」) · text/61-ch09-02-9-2-babyagi.txt:593(搜「6 轮循环之后」)
另一支:收藏数、搜偏、改词重搜、一串毛病9.1 AutoGPTtext/60-ch09-01-9-1-autogpt.txt:13(搜「Star数量一年内飙升到15万」) · text/60-ch09-01-9-1-autogpt.txt:114(搜「并未直接关联到玫瑰花市场」) · text/60-ch09-01-9-1-autogpt.txt:116(搜「改进搜索策略」) · text/60-ch09-01-9-1-autogpt.txt:37(搜「容易分心或陷入循环」)
两支的分类9.4 小结text/63-ch09-04-9-4.txt:7(搜「自主Agent」)

Footnotes

  1. 出处:「9.2 BabyAGI」第 9 段(text/61-ch09-02-9-2-babyagi.txt:9,搜「生成、排序和执行任务」)。原文还列了这套东西的三块能力:用模型来生成/排序/执行任务、用一个能按意思搜的库存取任务结果、用一个框架做决策。

  2. 出处:「9.2 BabyAGI」第 21 段起(text/61-ch09-02-9-2-babyagi.txt:21,搜「从任务列表中提取第一个任务」)与第 29 段(text/61-ch09-02-9-2-babyagi.txt:29,搜「任务执行、结果存储、任务生成和任务优先级排序」)。

  3. 出处:「9.2 BabyAGI」第 17 段(text/61-ch09-02-9-2-babyagi.txt:17,搜「不搜索外部知识」)。原文给的理由是「避免偏离正轨」;书还在第 45 段做了一次对比:另一支是逐步动态地规划下一个子任务,而这一支是一次性规划一系列行动(text/61-ch09-02-9-2-babyagi.txt:45,搜「一次性规划一系列行动」)。 2

  4. 出处:「9.2 BabyAGI」第 35 段起(text/61-ch09-02-9-2-babyagi.txt:35,搜「执行Agent(execution_agent)」)。三个角色各自要几个参数,书里逐条写明了。

  5. 出处:「9.2 BabyAGI」第 123 段(text/61-ch09-02-9-2-babyagi.txt:123,搜「Do not remove any tasks」)。这段模板文字在书里是原样贴出来的代码,不是我们的转述

  6. 出处:「9.2 BabyAGI」第 329 段(text/61-ch09-02-9-2-babyagi.txt:329,搜「分析一下北京市今天的天气」)与第 332 段(text/61-ch09-02-9-2-babyagi.txt:332,搜「max_iterations: Optional[int] = 6」)。同一段代码里还写着 temperature=0——也就是说这一趟是把第 02 章那个旋钮拧到底跑的。 2

  7. 出处:「9.2 BabyAGI」第 255 段(text/61-ch09-02-9-2-babyagi.txt:255,搜「Make a todo list」)。这个起手任务写在主类的代码里,是一个默认值:first_task = inputs.get("first_task", "Make a todo list")

  8. 出处:「9.2 BabyAGI」第 362 段起(text/61-ch09-02-9-2-babyagi.txt:362,搜「收集北京当前的天气数据」),英文原始输出在第 345 段起(text/61-ch09-02-9-2-babyagi.txt:345,搜「Gather data on current weather conditions in Beijing」)。

  9. 出处:「9.2 BabyAGI」第 352 段起(text/61-ch09-02-9-2-babyagi.txt:352,搜「Identify the most suitable materials」)。书在这里特意点了一句:「当第一个任务完成时,后续任务列表从任务 2 开始」(text/61-ch09-02-9-2-babyagi.txt:390,搜「后续任务列表从任务2开始」)。

  10. 出处:「9.2 BabyAGI」第 397 段(text/61-ch09-02-9-2-babyagi.txt:397,搜「18°C」),中文对照在第 407 段(text/61-ch09-02-9-2-babyagi.txt:407,搜「湿度大约为70%」)。

  11. 出处:「9.2 BabyAGI」第 400 段起(text/61-ch09-02-9-2-babyagi.txt:400,搜「Analyze the current climate conditions in Beijing and write out a strategy」)。

  12. 出处:「9.2 BabyAGI」第 442 段(text/61-ch09-02-9-2-babyagi.txt:442,搜「远离任何害虫源」)。

  13. 出处:「9.2 BabyAGI」第 429 段起(text/61-ch09-02-9-2-babyagi.txt:349,搜「Monitor the flowers for any changes in condition」)。这一轮的表编号从 4 排到 14,共 11 条——本节那个「11 条」是我们数出来的,书里没有给条数。

  14. 出处:「9.2 BabyAGI」第 492 段(text/61-ch09-02-9-2-babyagi.txt:492,搜「跟踪花卉的到期日期」)。

  15. 出处:「9.2 BabyAGI」第 476 段起(text/61-ch09-02-9-2-babyagi.txt:477,搜「Analyze the current climate conditions in Beijing and how they affect」)。这一轮的表编号从 5 排到 18,共 14 条;书里印到第 18 条时句子被截断了(text/61-ch09-02-9-2-babyagi.txt:490,搜「Identify potential risks associated with flower storage in」)。「14 条」是我们数出来的。 2

  16. 出处:「9.2 BabyAGI」第 543 段(text/61-ch09-02-9-2-babyagi.txt:543,搜「制定待办事项清单以确保采取所有必要步骤」)。注意这句话:第 5 轮的产出里,它建议去做第 1 轮已经做过的那件事。

  17. 出处:「9.2 BabyAGI」第 531 段起(text/61-ch09-02-9-2-babyagi.txt:531,搜「Develop a plan for storing flowers in Beijing that takes into account the local climate conditions.」),最后一条在第 541 段(text/61-ch09-02-9-2-babyagi.txt:541,搜「Identify potential risks associated with flower storage in Beijing.」)。中文对照在第 547 段起(text/61-ch09-02-9-2-babyagi.txt:547,搜「调查不同存储容器对北京花卉存储的影响」)——中文对照里编号被整理成了 1 到 11 的顺序,而英文原始输出是乱的。 2

  18. 出处:「9.2 BabyAGI」第 581 段起(text/61-ch09-02-9-2-babyagi.txt:581,搜「制订了一个考虑到北京当地天气的花卉存储计划」),英文原始输出在第 574 段起(text/61-ch09-02-9-2-babyagi.txt:574,搜「Based on the previously completed tasks」)。

  19. 出处:「9.1 AutoGPT」第 13 段(text/60-ch09-01-9-1-autogpt.txt:13,搜「Star数量一年内飙升到15万」)。原文的对照是:「比 LangChain、LlamaIndex、OpenAI API 的 Star 数量总和还多」。

  20. 出处:「9.1 AutoGPT」第 114 段(text/60-ch09-01-9-1-autogpt.txt:114,搜「并未直接关联到玫瑰花市场」);同节第 116 段(text/60-ch09-01-9-1-autogpt.txt:116,搜「改进搜索策略」)。那句「仁者见仁智者见智」在第 120 段(text/60-ch09-01-9-1-autogpt.txt:120,搜「仁者见仁智者见智」)。书里这一趟的日志是一张截图,正文只有作者整理的六步概述,所以本节没有引任何原始输出。 2

  21. 出处:「9.1 AutoGPT」第 37 段(text/60-ch09-01-9-1-autogpt.txt:37,搜「容易分心或陷入循环」)。这是这本书对一个框架最坦白的一段负面评价,一口气列了六七条毛病。

  22. 出处:「9.2 BabyAGI」第 579 段(text/61-ch09-02-9-2-babyagi.txt:579,搜「TASK ENDING」)。这个标记由主类里那句「跑满上限就打印并跳出」的代码打出(text/61-ch09-02-9-2-babyagi.txt:303,搜「TASK ENDING」)。

  23. 出处:「9.2 BabyAGI」第 593 段(text/61-ch09-02-9-2-babyagi.txt:593,搜「6 轮循环之后」)。学生的吐槽在第 595 段(text/61-ch09-02-9-2-babyagi.txt:595,搜「怎么又是这句话」)。

  24. 补充(不在书里,依据我们的 agent 生态书架):本章讲的那个任务循环版本已归档,同名项目换了内核。依据: shelf=ai-agent-reference/babyagi#index.md @fa8930ebe72a82e5ad57b356e7cbec96290e5bb2 事实=该拆解开篇即写明「这不是 2023 年那个任务循环版(那个已归档)」;新版的核心是把每个函数当成数据库里一行可版本化的数据来存、运行时再即时编译出来执行,于是模型能写出新函数存回同一个库;作者明说它不是生产级的。

  25. 补充(不在书里,依据我们的 agent 生态书架):第 7 节那一支今天是一个拖积木连数据流图的执行平台。依据: shelf=ai-agent-reference/autogpt#index.md @65e80c71591461d77b19fe64c939dd768ab455ef 事实=今天的它是一个可视化的搭建与托管平台——把积木块连成一张数据流图,后端引擎按「哪个节点的输入凑齐了就跑哪个」执行;内置约 180 个积木,并提供凭据管理、按用量计费与出错重试。