1
00:00:00,100 --> 00:00:02,105
你好，欢迎收听。

2
00:00:02,055 --> 00:00:10,084
前面几集我们一直在打基础，怎么让智能体会推理，怎么让它接工具，怎么让多个智能体对话。

3
00:00:10,084 --> 00:00:18,846
这一集把这些能力攒成一个完整的东西，一个能自己查资料、自己做研究、自己写报告的深度研究助手。

4
00:00:18,846 --> 00:00:26,382
本内容改编自 Datawhale《Hello-Agents》，采用 CC BY-NC-SA 4.0 授权，为二次演绎配音版。

5
00:00:26,382 --> 00:00:28,858
这一集对应教材第十四章。

6
00:00:28,858 --> 00:00:41,021
核心是一种叫 TODO 驱动的研究范式，把一个模糊的研究主题拆成几个具体子任务，逐个查、逐个总结，最后整合成一份带来源引用的报告。

7
00:00:41,021 --> 00:00:45,661
听上去不复杂，但里面的分工设计很值得拆开看。

8
00:00:45,661 --> 00:00:47,319
顺序是这样。

9
00:00:47,319 --> 00:01:01,842
先说为什么需要这么个东西，再讲系统整体长什么样，然后拆 TODO 驱动的三个核心要素和三阶段流程，接着看三个专职智能体怎么分工，最后落到工具层和一个很实用的判断清单。

10
00:01:01,842 --> 00:01:03,453
我们开始。

11
00:01:03,604 --> 00:01:04,972
先说动机。

12
00:01:04,922 --> 00:01:11,616
在信息爆炸的当下，我们几乎每天都要快速了解一个新的技术、概念或者事件。

13
00:01:11,616 --> 00:01:14,597
传统的研究方式有三个痛点。

14
00:01:14,597 --> 00:01:16,388
第一是信息过载。

15
00:01:16,388 --> 00:01:24,633
搜索引擎一回就是成千上万条结果，你得一条条点开，读一大堆内容，才能捞到有用的那几句。

16
00:01:24,633 --> 00:01:26,556
第二是缺少结构。

17
00:01:26,556 --> 00:01:36,004
就算找到了相关信息，它们也是碎片化的，散落在各个页面里，缺少系统性的组织，读完脑子里还是一团浆糊。

18
00:01:36,004 --> 00:01:37,999
第三是重复劳动。

19
00:01:37,999 --> 00:01:44,741
每研究一个新主题，都要把搜索、阅读、总结、整理这套流程重走一遍。

20
00:01:44,741 --> 00:01:48,191
那深度研究助手到底带来什么价值。

21
00:01:48,191 --> 00:01:49,345
四条。

22
00:01:49,345 --> 00:01:54,645
节省时间，把一到两个小时的研究工作压缩到五到十分钟。

23
00:01:54,645 --> 00:01:59,285
提高质量，用系统化的流程避免漏掉重要信息。

24
00:01:59,285 --> 00:02:05,955
可追溯，所有搜索结果和来源都会被记录下来，方便你回头验证和引用。

25
00:02:05,955 --> 00:02:12,602
可扩展，新的搜索引擎、新的数据源、新的分析工具都能比较容易地加进来。

26
00:02:12,602 --> 00:02:14,225
注意它的定位。

27
00:02:14,225 --> 00:02:21,436
它不是一个搜索工具，而是一个能够自主规划、自主执行、自主总结的研究助手。

28
00:02:21,436 --> 00:02:26,340
规划和搜索，这两个词的差别，就是这一集的主线。

29
00:02:26,476 --> 00:02:28,337
再看系统架构。

30
00:02:28,287 --> 00:02:32,950
这套系统用的是经典的前后端分离，一共分四层。

31
00:02:32,950 --> 00:02:42,157
最上面是前端层，用 Vue 三加 TypeScript 写，提供一个全屏的对话框界面，把结果按标记语言的格式渲染出来。

32
00:02:42,157 --> 00:02:47,037
往下是后端层，用 FastAPI 搭，提供一个研究流式接口。

33
00:02:47,037 --> 00:03:01,568
再往下是智能体层，也就是这一集的重点，包含三个专门的智能体和两个核心工具，三个智能体分别负责任务规划、任务总结和报告撰写，两个工具是搜索工具和笔记工具。

34
00:03:01,568 --> 00:03:06,688
最底下是外部服务层，也就是搜索引擎和大模型提供商。

35
00:03:06,688 --> 00:03:12,373
一个完整的研究请求在这套系统里是怎么流转的，一共八步。

36
00:03:12,373 --> 00:03:15,210
用户在前端输入研究主题。

37
00:03:15,210 --> 00:03:19,765
前端通过服务端推送技术连上后端的流式接口。

38
00:03:19,765 --> 00:03:23,287
后端接住请求，创建一份研究状态。

39
00:03:23,287 --> 00:03:29,525
然后进入规划阶段，调用研究规划智能体，把主题拆成几个子任务。

40
00:03:29,525 --> 00:03:41,027
接着是执行阶段，逐个执行子任务，每个子任务都要用搜索工具搜一遍，再调用任务总结智能体总结一遍，最后用笔记工具把结果记下来。

41
00:03:41,027 --> 00:03:47,662
再然后是报告阶段，调用报告生成智能体，把所有总结整合成最终报告。

42
00:03:47,662 --> 00:03:53,142
整个过程通过服务端推送把进度和结果实时推给前端。

43
00:03:53,142 --> 00:03:58,034
前端则同步更新任务状态、进度条、日志和报告。

44
00:03:58,034 --> 00:04:01,532
如果你把项目跑起来，实际体验是这样的。

45
00:04:01,532 --> 00:04:12,962
在页面上输入一个研究主题，选好搜索引擎，点开始研究，界面会自动展开成全屏，左边显示研究信息，右边实时滚动研究进度。

46
00:04:12,962 --> 00:04:19,777
整个研究过程大概一到三分钟，取决于主题的复杂度和搜索引擎的响应速度。

47
00:04:19,777 --> 00:04:22,493
跑完之后你会拿到三样东西。

48
00:04:22,493 --> 00:04:26,808
任务列表，显示所有子任务以及各自的状态。

49
00:04:26,808 --> 00:04:30,726
进度日志，记录研究过程中的每一步操作。

50
00:04:30,726 --> 00:04:37,145
最终报告，一份结构化的文档，包含所有子任务的总结和来源引用。

51
00:04:37,300 --> 00:04:41,889
现在进入这一集的核心，TODO 驱动到底是什么意思。

52
00:04:41,839 --> 00:04:49,026
传统的搜索引擎只能回答单个问题，而真正的研究需要回答一系列相关的问题。

53
00:04:49,026 --> 00:04:57,079
TODO 驱动的做法，就是把一个复杂的研究主题拆成多个子任务，逐个执行，再把结果整合起来。

54
00:04:57,079 --> 00:05:04,279
核心思想一句话，把研究这个复杂任务，转化成规划、执行、整合三步流程。

55
00:05:04,279 --> 00:05:05,613
举个例子。

56
00:05:05,613 --> 00:05:09,687
假设你想研究某个开源组织到底是干什么的。

57
00:05:09,687 --> 00:05:14,471
传统做法是你去搜一下，然后挨个点开前几条链接。

58
00:05:14,471 --> 00:05:22,548
问题在于，每个链接只覆盖主题的一个方面，缺少系统性结构，还得靠你自己手动整理和总结。

59
00:05:22,548 --> 00:05:25,096
TODO 驱动的做法完全不同。

60
00:05:25,096 --> 00:05:34,651
它先把这个主题拆成几个清晰的子问题，然后一个一个查，每个子任务的搜索结果和总结都被记录下来，方便追溯。

61
00:05:34,651 --> 00:05:42,260
系统化的流程避免遗漏重要信息，而且你可以随时加新子任务，或者调整执行顺序。

62
00:05:42,260 --> 00:05:47,091
一个完整的 TODO 驱动研究系统，包含三个核心要素。

63
00:05:47,091 --> 00:05:51,911
第一个是智能规划器，负责把研究主题拆成子任务。

64
00:05:51,911 --> 00:06:06,070
一个好的规划器要理解主题的关键方面和研究目标，把主题拆成三到五个子任务，太少覆盖不全，太多又冗余，同时还要为每个子任务设计合适的搜索查询。

65
00:06:06,070 --> 00:06:09,880
第二个是任务执行器，负责执行每个子任务。

66
00:06:09,880 --> 00:06:19,820
执行器要用搜索引擎拿到相关资料，提取关键信息、去掉冗余内容，同时把所有来源引用保存好，方便后面验证。

67
00:06:19,820 --> 00:06:24,471
第三个是报告生成器，负责整合所有子任务的结果。

68
00:06:24,471 --> 00:06:31,298
它要按逻辑顺序组织内容，合并重复的信息，并且为每个观点加上来源引用。

69
00:06:31,298 --> 00:06:37,091
三个阶段串起来是线性的，但每个阶段的输入和输出都非常明确。

70
00:06:37,091 --> 00:06:44,147
这种设计最大的好处是容易理解和调试，哪一步出了问题，一眼就能定位。

71
00:06:44,284 --> 00:06:46,830
再看每个阶段具体干什么。

72
00:06:46,780 --> 00:06:48,571
阶段一，规划。

73
00:06:48,571 --> 00:06:52,789
目标是把研究主题拆成三到五个子任务。

74
00:06:52,789 --> 00:06:59,051
系统接收研究主题和当前日期作为输入，输出一份格式化的子任务列表。

75
00:06:59,051 --> 00:07:05,013
每个子任务包含三个字段，任务标题、研究意图和搜索查询。

76
00:07:05,013 --> 00:07:17,813
规划智能体会根据主题特点采用不同的分解策略，通常从基础概念入手，然后去了解技术现状、实际应用和发展趋势，必要的时候还会做对比分析。

77
00:07:17,813 --> 00:07:20,446
什么样的规划算好规划。

78
00:07:20,446 --> 00:07:22,020
四条标准。

79
00:07:22,020 --> 00:07:26,684
覆盖全面，逻辑清晰，查询精准，数量适中。

80
00:07:26,684 --> 00:07:28,559
阶段二，执行。

81
00:07:28,559 --> 00:07:32,525
逐个执行子任务，搜索并总结相关资料。

82
00:07:32,525 --> 00:07:39,977
系统接收子任务列表和搜索引擎配置作为输入，输出每个子任务的总结和来源引用列表。

83
00:07:39,977 --> 00:07:43,486
对每个子任务，执行器要做四件事。

84
00:07:43,486 --> 00:07:55,830
用配置好的搜索引擎执行搜索，拿到搜索结果里的标题、链接和摘要，调用总结智能体对搜索结果做总结，最后把总结和来源一起存进笔记工具。

85
00:07:55,830 --> 00:08:08,282
总结智能体会从每个搜索结果里提取核心观点，合并相似信息，保留重要的数字、日期、名称这些关键数据，并且为每个观点加上来源引用。

86
00:08:08,282 --> 00:08:12,260
执行过程中，系统会实时把进度推给前端。

87
00:08:12,260 --> 00:08:14,196
阶段三，报告。

88
00:08:14,196 --> 00:08:19,159
目标是整合所有子任务的总结，生成最终报告。

89
00:08:19,159 --> 00:08:25,950
系统接收所有子任务的总结和研究主题作为输入，输出一份格式化的最终报告。

90
00:08:25,950 --> 00:08:34,171
报告包含五个部分，标题、概述、各个子任务的详细分析、总结，还有一份完整的来源清单。

91
00:08:34,171 --> 00:08:47,789
报告生成智能体会按子任务的逻辑顺序组织内容，在开头加一段简要概述，合并重复信息消除冗余，统一格式，最后把所有来源引用整理进这份来源清单。

92
00:08:47,932 --> 00:08:50,526
看完了流程，再看人。

93
00:08:50,476 --> 00:08:55,067
系统里设计了三个专门的智能体，每个只负责一件事。

94
00:08:55,067 --> 00:08:59,382
这样每个智能体都很简单，好理解也好维护。

95
00:08:59,382 --> 00:09:02,555
这里有个设计上的取舍值得说一句。

96
00:09:02,555 --> 00:09:12,170
我们在前面章节学过简单智能体，它的理念是简单直接，每次调用时分析问题、决定要不要调工具、然后返回结果。

97
00:09:12,170 --> 00:09:20,319
这种设计处理简单任务非常有效，但面对深度研究这种复杂任务，就必须换成多智能体协作。

98
00:09:20,319 --> 00:09:23,408
第一个智能体，研究规划专家。

99
00:09:23,408 --> 00:09:27,723
职责是把研究主题拆成三到五个子任务。

100
00:09:27,723 --> 00:09:39,959
设计上，它的核心任务是理解研究主题、分析关键方面、然后生成一系列子任务，这个过程很像人类研究者在正式开工前的头脑风暴阶段。

101
00:09:39,959 --> 00:09:54,166
提示词设计有四个关键点，包含当前日期以便获取最新信息，明确要求输出格式化数据便于解析，通过示例帮助它理解期望输出，并且强调子任务数量和逻辑关系的约束。

102
00:09:54,166 --> 00:09:57,038
第二个智能体，任务总结专家。

103
00:09:57,038 --> 00:10:01,149
职责是总结搜索结果、提取关键信息。

104
00:10:01,149 --> 00:10:09,310
它读搜索结果、提取关键信息、结构化呈现，很像人类研究者读完文献之后做笔记的过程。

105
00:10:09,310 --> 00:10:20,680
提示词里会带上任务标题、意图、查询这些上下文，明确要求输出核心观点、关键数据和来源引用，并且强调每个观点都要带来源。

106
00:10:20,680 --> 00:10:23,877
第三个智能体，报告撰写专家。

107
00:10:23,877 --> 00:10:32,483
职责是整合所有子任务的总结，生成最终报告，对应人类研究者调研完之后撰写研究报告的阶段。

108
00:10:32,483 --> 00:10:45,788
提示词明确要求报告包含标题、概述、详细分析、总结、来源清单这些结构，强调按逻辑顺序组织，要求合并重复信息消除冗余，并且保留所有来源引用。

109
00:10:45,788 --> 00:10:50,271
三个智能体之间是顺序协作关系，特点有三条。

110
00:10:50,271 --> 00:10:53,709
线性流程，按固定顺序执行。

111
00:10:53,709 --> 00:10:58,565
输入输出明确，每个智能体的输入来自上一个的输出。

112
00:10:58,565 --> 00:11:02,435
无并发，同一时间只有一个智能体在干活。

113
00:11:02,435 --> 00:11:06,485
整个系统由一个核心协调器统一调度它们。

114
00:11:06,485 --> 00:11:08,997
还有一个细节设计很实用。

115
00:11:08,997 --> 00:11:21,642
基础版的简单智能体不支持工具调用监听，而深度研究助手需要把每个智能体的工具调用情况都记下来，用于调试、日志、行为分析和实时进度展示。

116
00:11:21,642 --> 00:11:33,589
于是框架扩展出了一个能感知工具调用的版本，在基础版之上加了一个工具调用监听器，这是一个回调函数，每次工具调用时都会被触发。

117
00:11:33,589 --> 00:11:39,634
这样所有工具调用都被记录下来，通过服务端推送实时显示给用户。

118
00:11:39,772 --> 00:11:43,399
最后看工具层，两个工具加一个注册表。

119
00:11:43,349 --> 00:11:46,138
搜索工具在这一章做了扩展。

120
00:11:46,138 --> 00:11:51,847
基础版本已经集成了两个搜索引擎，展示了多源搜索的设计思想。

121
00:11:51,847 --> 00:12:04,780
到了深度研究助手里，又新增了几个引擎，包括一个主打隐私的、一个自带答案生成的、还有一个可自建的，并且实现了组合模式，可以同时调用多个搜索引擎。

122
00:12:04,780 --> 00:12:11,547
搜索是深度研究最核心的功能，这些扩展让系统能适配不同的场景和需求。

123
00:12:11,547 --> 00:12:19,083
具体用哪个引擎，通过配置文件选，用户改一下环境配置文件就行，不用动代码。

124
00:12:19,083 --> 00:12:29,635
搜索工具返回的结果里包含搜索结果列表、实际使用的引擎、部分引擎会额外给出的现成答案，以及配额限制之类的通知信息。

125
00:12:29,635 --> 00:12:32,316
这里有两个工程细节要处理。

126
00:12:32,316 --> 00:12:36,330
搜索结果里可能有重复的链接，需要去重。

127
00:12:36,330 --> 00:12:43,121
搜索结果文本量可能很大，需要限制每个来源的词元数量，不然上下文会被撑爆。

128
00:12:43,121 --> 00:12:46,174
笔记工具负责持久化研究进度。

129
00:12:46,174 --> 00:12:58,794
研究过程中，每个子任务的搜索结果、总结以及最终报告都要落到磁盘上，这样研究中断了可以从上次的进度继续，也方便事后复盘研究质量和效率。

130
00:12:58,794 --> 00:13:09,034
笔记以标记语言文件的形式存在，用任务编号做文件名，内容包含任务标题、任务意图、搜索查询、搜索结果和总结。

131
00:13:09,034 --> 00:13:14,491
工具注册表负责统一管理搜索工具和笔记工具的注册与调用。

132
00:13:14,491 --> 00:13:29,443
智能体需要调工具时，会先生成一条工具调用指令，注册表解析出工具名和参数，按名字找到对应工具，调用它的执行方法拿回结果，最后把结果格式化成字符串交还给智能体。

133
00:13:29,443 --> 00:13:33,614
说完实现，说代价和边界，这一节请认真听。

134
00:13:33,614 --> 00:13:39,167
第一，这套系统是线性的，同一时间只有一个智能体在干活。

135
00:13:39,167 --> 00:13:43,962
换来的是简单可调试，代价是慢，一到三分钟是常态。

136
00:13:43,962 --> 00:13:47,604
如果你要的是秒级响应，这套架构不合适。

137
00:13:47,604 --> 00:13:50,934
第二，报告质量高度依赖搜索质量。

138
00:13:50,934 --> 00:13:59,756
搜索引擎返回的东西本身就是碎片化、有噪声的，总结和生成环节只能做整合，不能凭空补事实。

139
00:13:59,756 --> 00:14:03,037
第三，来源引用必须贯穿全程。

140
00:14:03,037 --> 00:14:11,739
规划阶段设计查询，执行阶段保存来源，报告阶段整理成清单，任何一环松掉，可追溯这个价值就没了。

141
00:14:11,739 --> 00:14:15,272
第四，别把子任务数量当调参游戏。

142
00:14:15,272 --> 00:14:22,075
三到五个是经验区间，太少覆盖不全，太多只会带来冗余和额外开销。

143
00:14:22,204 --> 00:14:25,615
最后收一批能直接带走的判断依据。

144
00:14:25,565 --> 00:14:29,688
第一，先判断你的任务到底是不是研究型任务。

145
00:14:29,688 --> 00:14:36,022
如果只是回答一个单点问题，直接搜就够了，上这套系统是杀鸡用牛刀。

146
00:14:36,022 --> 00:14:43,089
只有当主题需要拆成一系列相关问题、并且要求结果可追溯时，TODO 驱动才值得。

147
00:14:43,089 --> 00:14:48,522
第二，判断一个规划器好不好，看子任务的覆盖度，不看数量。

148
00:14:48,522 --> 00:14:54,435
标准有四条，覆盖全面、逻辑清晰、查询精准、数量适中。

149
00:14:54,435 --> 00:15:01,563
其中查询精准最容易被忽略，同一个子任务用词不对，搜出来的东西会完全跑偏。

150
00:15:01,563 --> 00:15:05,421
第三，把来源引用当成一等公民来做。

151
00:15:05,421 --> 00:15:10,433
执行阶段就要把来源存下来，不要指望报告阶段再回头补。

152
00:15:10,433 --> 00:15:18,137
可追溯是这套系统区别于普通搜索的核心价值，一旦丢掉，它就退化成一个慢速搜索框。

153
00:15:18,137 --> 00:15:21,503
第四，接受线性换可控的取舍。

154
00:15:21,503 --> 00:15:25,289
三个智能体顺序协作，无并发，所以慢。

155
00:15:25,289 --> 00:15:29,988
换来的是每个阶段输入输出明确，出问题一眼能定位。

156
00:15:29,988 --> 00:15:35,036
要提速就得引入并发，同时也要接受调试复杂度的陡增。

157
00:15:35,036 --> 00:15:38,846
第五，工具层优先做扩展而不是重写。

158
00:15:38,846 --> 00:15:46,791
搜索工具已经支持多引擎和组合模式，换引擎改配置就行，不要把精力花在重复实现搜索上。

159
00:15:46,791 --> 00:15:54,495
需要持久化就接笔记工具，需要统一调度就交给工具注册表，把力气留给你自己的业务逻辑。

160
00:15:54,495 --> 00:15:57,296
第六，也是最重要的一条。

161
00:15:57,296 --> 00:16:08,354
这套范式真正的价值不在智能体有多聪明，而在于把研究从一次性的脑力劳动，变成一条可复现、可追溯、可中断续跑的流水线。

162
00:16:08,354 --> 00:16:12,332
想清楚这一点，你就知道该在哪儿投入了。

163
00:16:12,332 --> 00:16:14,147
这一集就到这里。

164
00:16:14,147 --> 00:16:16,575
下一集我们继续往下走。

165
00:16:16,575 --> 00:16:18,293
感谢收听。

