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

2
00:00:02,055 --> 00:00:04,663
这一集聊两件很实际的事。

3
00:00:04,663 --> 00:00:07,800
第一件，学完之后毕业设计怎么做。

4
00:00:07,800 --> 00:00:10,312
第二件，面试怎么准备。

5
00:00:10,312 --> 00:00:17,848
本内容改编自 Datawhale《Hello-Agents》，采用 CC BY-NC-SA 4.0 授权，为二次演绎配音版。

6
00:00:17,848 --> 00:00:23,401
这一集对应教材第十六章，另外附上了一份面试高频问题的节选。

7
00:00:23,401 --> 00:00:30,216
前面十几集我们讲了智能体的范式、工具、记忆、通信协议，知识都是分散的。

8
00:00:30,216 --> 00:00:36,310
这一章要做的事，是把这些分散的能力整合进一个能拿得出手的作品里。

9
00:00:36,310 --> 00:00:37,968
顺序是这样。

10
00:00:37,968 --> 00:01:01,518
先说为什么非要有毕业设计这一步，再讲它到底以什么形式交付，然后是选题的原则和几个推荐方向，接着走一遍从派生仓库到提交合并请求的完整路径，之后是说明文档和依赖清单这些容易被忽略的细节，再补上大文件处理和提交前的自查，最后落到面试，把几类高频问题拆给你看。

11
00:01:01,518 --> 00:01:03,128
我们开始。

12
00:01:03,268 --> 00:01:06,415
先回答一个很多人心里的疑问。

13
00:01:06,365 --> 00:01:10,223
教程我都看懂了，为什么还要做一个大项目。

14
00:01:10,223 --> 00:01:14,970
因为学习技术最好的方式不是看教程，而是动手实践。

15
00:01:14,970 --> 00:01:18,853
看懂和能做出来之间，隔着一条很宽的沟。

16
00:01:18,853 --> 00:01:26,918
看教程的时候，边界情况别人替你处理好了，异常别人替你兜住了，模块之间的接口别人替你设计好了。

17
00:01:26,918 --> 00:01:38,552
等到你自己从零搭一个系统，你会发现真正难的不是调用某个接口，而是决定这个系统该切成几块、每块之间怎么说话、出错了往哪儿退。

18
00:01:38,552 --> 00:01:43,480
毕业设计的核心价值就在这儿，它培养的是综合应用能力。

19
00:01:43,480 --> 00:01:52,386
你要把前面学到的东西，智能体范式、工具系统、记忆机制、通信协议，有选择地整合进一个完整的项目。

20
00:01:52,386 --> 00:01:55,607
注意是有选择地，不是全塞进去。

21
00:01:55,607 --> 00:02:02,050
一个项目里塞满所有技术点，通常说明你没想清楚它到底要解决什么问题。

22
00:02:02,050 --> 00:02:21,561
通过这一章的学习和实践，目标是你能独立设计并实现一个完整的智能体应用，熟练使用这套框架的各种功能，掌握版本控制和代码托管的基本操作，学会写清晰的项目文档，参与开源社区的协作开发，最后拿到一个可以展示的技术作品。

23
00:02:21,561 --> 00:02:25,792
这五条里，最后一条是可以对外展示的作品。

24
00:02:25,792 --> 00:02:30,816
它是前面四条的证明，也是你找工作时最硬的通货。

25
00:02:30,964 --> 00:02:32,620
接下来说形式。

26
00:02:32,570 --> 00:02:40,094
你的毕业设计不是交一份 word 文档，而是以开源项目的形式，提交到教材的共创项目仓库里。

27
00:02:40,094 --> 00:02:41,969
具体要求有四条。

28
00:02:41,969 --> 00:02:49,025
第一是命名，用你的代码托管用户名加上项目名称的格式，中间用短横线连起来。

29
00:02:49,025 --> 00:02:53,592
这样一眼能看出是谁做的，也不容易和别人撞名。

30
00:02:53,592 --> 00:02:55,383
第二是项目内容。

31
00:02:55,383 --> 00:03:02,811
需要一个可以运行的笔记文件或者脚本，一份完整的依赖列表，一份清晰的说明文档。

32
00:03:02,811 --> 00:03:09,373
演示视频、截图、数据集这些是可选的，有当然更好，没有也不影响主体。

33
00:03:09,373 --> 00:03:11,296
第三是提交方式。

34
00:03:11,296 --> 00:03:15,779
通过合并请求提交，而不是直接往主仓库里推。

35
00:03:15,779 --> 00:03:17,811
第四是评审流程。

36
00:03:17,811 --> 00:03:24,157
社区成员会审阅你的代码，提出改进建议，通过之后合并进主仓库。

37
00:03:24,157 --> 00:03:26,080
还有一点容易忽略。

38
00:03:26,080 --> 00:03:33,327
既然以开源项目的形式提交，就得接受一件事，别人会真的去读你的代码，也会真的去跑。

39
00:03:33,327 --> 00:03:38,940
所以不要交一个说明文档写得漂亮、点进去什么都没有的空壳。

40
00:03:38,940 --> 00:03:44,614
文档负责让人愿意进来，代码负责让人留下来，两样都不能省。

41
00:03:44,614 --> 00:03:47,330
这里有个心态要提前摆正。

42
00:03:47,330 --> 00:03:56,573
评审不是考试，不是给你打分，是有人愿意花时间读你的代码并给出反馈，这在真实工作里是很稀缺的资源。

43
00:03:56,573 --> 00:04:01,729
把评审意见当成免费的技术指导，你会进步得快很多。

44
00:04:01,729 --> 00:04:05,587
另外这也意味着你的代码是要给人看的。

45
00:04:05,587 --> 00:04:14,626
变量命名、目录结构、注释密度，这些平时一个人写项目时可以糊弄的东西，在开源协作里全都藏不住。

46
00:04:14,626 --> 00:04:17,246
这本身就是一种训练。

47
00:04:17,404 --> 00:04:20,202
形式是壳，选题才是核心。

48
00:04:20,152 --> 00:04:23,541
一个好的毕业设计项目应该满足三条。

49
00:04:23,541 --> 00:04:25,344
第一条是实用性。

50
00:04:25,344 --> 00:04:30,573
它要解决一个真实的问题，而不是为了用技术而用技术。

51
00:04:30,573 --> 00:04:38,686
如果你的项目介绍里只能说出「我用了一个智能体」，说不出「它帮我省了什么事」，那多半是选题跑偏了。

52
00:04:38,686 --> 00:04:42,472
第二条是在有限的时间和资源内可以完成。

53
00:04:42,472 --> 00:04:44,695
这一条最容易被低估。

54
00:04:44,695 --> 00:04:50,765
很多人一上来就想做一个平台，结果三个月过去连数据通路都没打通。

55
00:04:50,765 --> 00:04:58,746
选一个你两周能做出可用版本、四周能打磨到能展示的题目，远比选一个半年也做不完的题目强。

56
00:04:58,746 --> 00:05:02,736
第三条是能够清晰地展示你的技术能力。

57
00:05:02,736 --> 00:05:14,130
意思是这个项目里要有几个地方是能体现思考深度的，比如你怎么设计智能体的分工，怎么处理工具调用失败，怎么控制上下文长度。

58
00:05:14,130 --> 00:05:18,301
面试官看的是这些决策，不是你调了多少次接口。

59
00:05:18,301 --> 00:05:20,525
推荐方向分了五大类。

60
00:05:20,525 --> 00:05:27,580
生产力工具类，比如智能代码审查助手、文档生成器、会议助手、邮件助手。

61
00:05:27,580 --> 00:05:33,842
学习辅助类，比如学习伙伴、论文助手、编程导师、语言学习助手。

62
00:05:33,842 --> 00:05:39,791
创意娱乐类，比如故事生成器、游戏角色、音乐推荐、菜谱助手。

63
00:05:39,791 --> 00:05:44,755
数据分析类，比如数据分析师、舆情监控、竞品分析。

64
00:05:44,755 --> 00:05:51,198
生活服务类，比如健康助手、理财助手、购物助手、智能家居控制。

65
00:05:51,198 --> 00:05:54,551
每类下面都列了四到五个具体题目。

66
00:05:54,551 --> 00:06:00,717
但说真的，这份列表最大的作用不是让你照抄，而是给你一个判断基准。

67
00:06:00,717 --> 00:06:06,498
你拿自己想到的题目去对照，看看它是不是够具体、够实用、够小。

68
00:06:06,498 --> 00:06:09,816
如果都不是，换个更窄的切口。

69
00:06:09,964 --> 00:06:14,012
来看一个具体的例子，智能代码审查助手。

70
00:06:13,962 --> 00:06:16,606
它的问题分析是这样写的。

71
00:06:16,606 --> 00:06:23,289
代码审查是软件开发里的重要环节，但人工审查耗时而且容易遗漏问题。

72
00:06:23,289 --> 00:06:33,505
现有的静态分析工具只能发现语法层面的错误，理解不了代码逻辑，所以需要一个能理解代码语义、给出深度分析的助手。

73
00:06:33,505 --> 00:06:35,741
核心功能拆成五块。

74
00:06:35,741 --> 00:06:40,693
代码质量分析，检查风格、命名规范、注释完整性。

75
00:06:40,693 --> 00:06:46,126
潜在缺陷检测，发现逻辑错误、边界条件问题、资源泄漏。

76
00:06:46,126 --> 00:06:49,743
性能优化建议，识别瓶颈并提出方案。

77
00:06:49,743 --> 00:06:54,575
安全漏洞扫描，检测注入类和跨站脚本类问题。

78
00:06:54,575 --> 00:06:59,924
最佳实践推荐，根据语言特性和设计模式给出改进意见。

79
00:06:59,924 --> 00:07:02,472
预期成果也写得很明确。

80
00:07:02,472 --> 00:07:14,335
一个可以运行的笔记文件展示完整审查流程，支持几种主流语言，能生成结构化的审查报告，并且给出具体的代码示例和改进建议。

81
00:07:14,335 --> 00:07:17,880
你看这个拆解，每一条都是可验证的。

82
00:07:17,880 --> 00:07:23,866
能验证，就意味着做完没做完你心里有数，别人看一眼也能判断。

83
00:07:23,866 --> 00:07:26,426
这是好选题的共同特征。

84
00:07:26,426 --> 00:07:28,493
接下来是落地路径。

85
00:07:28,493 --> 00:07:37,700
第一步，把开发环境准备好，需要三样东西，编程语言环境、版本控制和代码托管工具、笔记运行环境。

86
00:07:37,700 --> 00:07:44,647
第二步，把教材仓库派生到你自己的账号下，克隆到本地，然后创建一个开发分支。

87
00:07:44,647 --> 00:07:51,210
注意是分支，不要在默认分支上直接改，这样你的主分支可以随时和上游同步。

88
00:07:51,210 --> 00:07:58,349
第三步，在共创项目目录下建你自己的项目文件夹，按推荐的结构摆放文件。

89
00:07:58,492 --> 00:08:04,355
再说三个经常被忽略、但直接影响别人愿不愿意看你的项目的细节。

90
00:08:04,305 --> 00:08:06,168
第一个是说明文档。

91
00:08:06,168 --> 00:08:07,911
它是项目的门面。

92
00:08:07,911 --> 00:08:14,209
一个人点进你的仓库，三秒钟之内决定要不要继续往下看，靠的就是它。

93
00:08:14,209 --> 00:08:23,932
一份好的说明文档要讲清楚这个项目解决什么问题、怎么安装、怎么运行、跑起来能看到什么、目录结构是什么。

94
00:08:23,932 --> 00:08:29,077
别写成长篇技术报告，那是给评委看的，不是给用户看的。

95
00:08:29,077 --> 00:08:31,048
第二个是依赖清单。

96
00:08:31,048 --> 00:08:34,245
把你用到的所有依赖和版本号列出来。

97
00:08:34,245 --> 00:08:39,786
这一步很多人觉得麻烦，但它是别人能不能复现你结果的分水岭。

98
00:08:39,786 --> 00:08:42,935
一个跑不起来的项目，等于不存在。

99
00:08:42,935 --> 00:08:45,507
第三个是笔记文件的组织。

100
00:08:45,507 --> 00:08:52,057
很多人把笔记文件当成草稿纸，想到哪儿写到哪儿，单元格顺序全靠心情。

101
00:08:52,057 --> 00:08:58,596
但对读者来说，阅读顺序就是理解顺序，顺序乱了，再好的内容也读不进去。

102
00:08:58,596 --> 00:09:09,521
一个好的笔记文件应该有清晰的分节，先讲背景和目标，再讲环境准备，然后是核心实现，接着是运行示例，最后是总结和延伸。

103
00:09:09,521 --> 00:09:16,060
每个代码块前后都要有文字说明，说明这段代码在干什么、为什么这么写。

104
00:09:16,060 --> 00:09:20,291
没有说明的代码堆在一起，读者只会关掉页面。

105
00:09:20,291 --> 00:09:21,817
还有一件事。

106
00:09:21,817 --> 00:09:27,142
开发过程中记得及时保存和提交，写清楚每次提交的信息。

107
00:09:27,142 --> 00:09:36,108
等到项目做完一次性提交，中间的思考过程就全丢了，而这些过程恰恰是最能体现你工程素养的部分。

108
00:09:36,244 --> 00:09:38,621
提交之前有两道关卡。

109
00:09:38,571 --> 00:09:40,326
第一道是大文件。

110
00:09:40,326 --> 00:09:43,824
为了保证主仓库轻量，有明确的规范。

111
00:09:43,824 --> 00:09:46,420
项目总大小不超过五兆。

112
00:09:46,420 --> 00:09:51,732
视频文件、大型数据集、模型文件，禁止直接提交。

113
00:09:51,732 --> 00:09:55,831
如果你的项目确实需要这些资源，有三个方案。

114
00:09:55,831 --> 00:10:03,175
方案一是用外部链接，把大文件传到外部平台，在说明文档里给出下载地址。

115
00:10:03,175 --> 00:10:11,312
数据集可以放公开数据平台，视频可以放视频网站，模型可以放模型托管平台，图片可以放图床。

116
00:10:11,312 --> 00:10:13,439
这是最推荐的做法。

117
00:10:13,439 --> 00:10:18,716
方案二是建一个独立的资源仓库，主仓库里只放代码。

118
00:10:18,716 --> 00:10:26,071
方案三是只提供小规模的示例数据，让别人先跑通流程，需要完整数据再去下载。

119
00:10:26,071 --> 00:10:28,956
第二道是提交前的测试清单。

120
00:10:28,956 --> 00:10:32,454
用它逐条判断自己的项目是否达标。

121
00:10:32,454 --> 00:10:40,194
这个清单的价值不在于条目本身有多高明，而在于它把「我觉得做完了」变成了「我逐条核对过」。

122
00:10:40,194 --> 00:10:44,869
人天然会高估自己的完成度，清单是唯一的解药。

123
00:10:44,869 --> 00:10:46,997
具体要核对的是这些。

124
00:10:46,997 --> 00:10:50,987
能不能在全新环境里按照说明文档跑通。

125
00:10:50,987 --> 00:10:53,127
依赖清单是否完整。

126
00:10:53,127 --> 00:10:55,963
说明文档是否包含运行示例。

127
00:10:55,963 --> 00:10:58,079
有没有误提交大文件。

128
00:10:58,079 --> 00:11:00,675
代码里有没有硬编码的密钥。

129
00:11:00,675 --> 00:11:08,235
最后这一条特别重要，密钥一旦推上去，即使后面删掉，历史记录里依然能翻出来。

130
00:11:08,380 --> 00:11:09,928
最后是面试。

131
00:11:09,878 --> 00:11:21,885
附带的节选把高频问题分成了几大类，我们按类来看，因为面试官考察的从来不是你会不会背某个概念，而是你对这一类问题的理解到了哪一层。

132
00:11:21,885 --> 00:11:24,229
第一类是语言模型基础。

133
00:11:24,229 --> 00:11:50,807
典型问题有自注意力机制是怎么工作的、它为什么比循环神经网络更适合处理长序列，位置编码为什么是必需的、有哪几种实现方式，相对位置编码相比绝对位置编码的优劣，多头注意力、多查询注意力、分组查询注意力三者的区别，缩放定律揭示了性能与计算量、数据量之间的什么关系，还有常见的解码策略各自的原理和优缺点。

134
00:11:50,807 --> 00:11:54,738
这一类考的是你对模型本身的理解深度。

135
00:11:54,738 --> 00:11:57,142
第二类是视觉语言模型。

136
00:11:57,142 --> 00:12:19,766
核心挑战是怎么把视觉和语言这两种模态对齐并融合，跨模态模型是怎么通过对比学习把图像和文本连起来的，视觉编码器和语言模型之间靠什么结构衔接，什么是视觉指令微调，处理视频比处理静态图片多了哪些难题，还有高分辨率输入带来的计算和建模挑战。

137
00:12:19,766 --> 00:12:23,275
这一类考的是你有没有跟进多模态这条线。

138
00:12:23,275 --> 00:12:26,112
第三类是对齐与强化学习。

139
00:12:26,112 --> 00:12:53,211
经典流程的三个阶段分别是什么，每一阶段的输入输出和目标是什么，为什么奖励模型阶段收集的是成对比较数据而不是绝对打分，策略优化阶段为什么选近端策略优化而不是更简单的策略梯度方法，其中的散度惩罚项起什么作用，系数过大过小分别会怎样，什么是奖励作弊、怎么缓解，以及直接偏好优化这类替代方案和传统流程的区别。

140
00:12:53,211 --> 00:12:58,295
这一类考的是你对训练侧的理解，也是区分度最高的一类。

141
00:12:58,295 --> 00:13:00,651
第四类是智能体本身。

142
00:13:00,651 --> 00:13:33,038
怎么定义一个基于大模型的智能体、它有哪些核心组件，推理与行动结合的框架是怎么把思维链和行动串起来的，有哪些主流方法可以赋予模型规划能力，短期记忆和长期记忆分别怎么设计，模型是怎么学会调用外部工具的，两个流行开发框架的核心场景有什么不同，构建复杂智能体最大的挑战是什么，多智能体协作相比单个智能体的优势和新增的复杂度，以及如何保证智能体的行为安全可控。

143
00:13:33,038 --> 00:13:37,161
这一类正是本系列的主线，你应该答得最从容。

144
00:13:37,161 --> 00:13:39,360
第五类是检索增强。

145
00:13:39,360 --> 00:13:49,276
它解决什么问题、相比微调有什么优势，完整流水线从数据准备到生成有哪些关键步骤，文本切块策略为什么重要。

146
00:13:49,276 --> 00:13:52,581
这一类考的是工程落地经验。

147
00:13:52,708 --> 00:13:56,119
最后收一批能直接带走的判断依据。

148
00:13:56,069 --> 00:14:02,379
第一，判断一个题目值不值得做，问自己一句话，它解决了谁的什么问题。

149
00:14:02,379 --> 00:14:06,586
答不上来就换题，不要指望做着做着就想明白了。

150
00:14:06,586 --> 00:14:09,050
第二，规模上宁小勿大。

151
00:14:09,050 --> 00:14:14,483
两周能出可用版本，四周能打磨到能展示，这个体量最合适。

152
00:14:14,483 --> 00:14:17,644
做不完的平台不如做完的小工具。

153
00:14:17,644 --> 00:14:21,514
第三，把「能验证」当成选题的硬指标。

154
00:14:21,514 --> 00:14:25,769
每一条功能描述都要能回答「怎么证明它做到了」。

155
00:14:25,769 --> 00:14:29,182
做不到可验证，说明你还没想清楚。

156
00:14:29,182 --> 00:14:32,608
第四，交付物按开源项目的标准来。

157
00:14:32,608 --> 00:14:37,463
说明文档、依赖清单、可运行代码，三样缺一不可。

158
00:14:37,463 --> 00:14:41,490
跑不起来的项目等于不存在，这一条没有例外。

159
00:14:41,490 --> 00:14:46,598
第五，提交前一定跑一遍自查清单，尤其是大文件和密钥。

160
00:14:46,598 --> 00:14:53,076
误提交一个模型文件或者一个访问令牌，比项目本身做得差要严重得多。

161
00:14:53,076 --> 00:14:57,511
第六，准备面试时按类别准备，不要按题目背。

162
00:14:57,511 --> 00:15:02,824
面试官追问的是你理解到了哪一层，背出来的答案一追问就露馅。

163
00:15:02,824 --> 00:15:13,906
语言模型基础、多模态、对齐训练、智能体、检索增强这五类里，至少要有一类你能聊到别人追问不下去的程度，那一类就是你的招牌。

164
00:15:13,906 --> 00:15:17,391
第七，也是这一季最想留下的一条。

165
00:15:17,391 --> 00:15:23,954
学完一个系列，真正的毕业证书不是看完的那一刻，而是你做出来的那个东西。

166
00:15:23,954 --> 00:15:33,305
哪怕它很小、很粗糙，只要它是你从零想清楚并亲手实现的，它就比任何一份学习笔记都更有说服力。

167
00:15:33,305 --> 00:15:35,120
这一集就到这里。

168
00:15:35,120 --> 00:15:36,838
感谢收听。

