1
00:00:07,840 --> 00:00:11,040
我喜欢这个。

2
00:00:11,560 --> 00:00:12,600
用霓虹灯管弯出来的。

3
00:00:13,880 --> 00:00:17,655
首先，“欢迎来到奥斯汀”是

4
00:00:17,680 --> 00:00:18,720
我通常会说的话。

5
00:00:18,920 --> 00:00:21,800
而这次我要说：欢迎我自己回到奥斯汀。

6
00:00:21,880 --> 00:00:25,880
大约一个月前，我还在这里参加一个播客节目，滔滔不绝地说了5个小时。

7
00:00:25,960 --> 00:00:27,800
很高兴能回到这里。

8
00:00:27,960 --> 00:00:33,880
但对我来说，更令人兴奋的是此刻能够活着，

9
00:00:34,480 --> 00:00:38,640
身处这一时刻，并与 Ruby on Rails 这个美好的社区

10
00:00:39,160 --> 00:00:42,920
以及所有对智能体感兴趣的人分享这一刻。

11
00:00:43,760 --> 00:00:48,000
如果你还没有感兴趣，希望在听完这场

12
00:00:48,560 --> 00:00:51,240
关于未来的谵妄般的演讲后，你也会如此。

13
00:00:51,920 --> 00:00:55,280
我知道，有人

14
00:00:55,400 --> 00:01:00,695
看到一个人为这一刻如此兴奋、手舞足蹈时，

15
00:01:00,720 --> 00:01:04,640
第一反应可能是给出一个诊断。

16
00:01:06,960 --> 00:01:08,240
AI 精神病。

17
00:01:10,120 --> 00:01:11,440
我更喜欢另一个说法。

18
00:01:12,000 --> 00:01:14,760
我患的是 AI 谵妄。

19
00:01:17,000 --> 00:01:18,560
AI 狂喜。

20
00:01:19,200 --> 00:01:24,120
因为这绝对是我们让计算机做到的最令人兴奋的事情，

21
00:01:24,760 --> 00:01:29,280
在我与计算机共事、把玩、互动的这些年里都是如此。

22
00:01:30,040 --> 00:01:34,240
但我认为，实际上我们应该认真面对这样一个事实：一方面，

23
00:01:34,280 --> 00:01:38,480
这令人无比兴奋；另一方面，这也让人有点不安。

24
00:01:39,640 --> 00:01:43,680
因为我们无法确切地知道最终结果会是什么样。

25
00:01:44,680 --> 00:01:50,080
而且，每当我们尝试做出预测时，大约 20 分钟后，预测结果就过时了。

26
00:01:50,640 --> 00:01:55,200
这是一种很奇怪的状态，即使你对未来充满期待，

27
00:01:55,240 --> 00:01:56,800
即使你对当下充满期待。

28
00:01:57,360 --> 00:02:03,000
我完全理解这会造成的不安感。

29
00:02:04,040 --> 00:02:10,120
为了稍微缓解这种情绪，让我们把时间拨回到过去。

30
00:02:13,440 --> 00:02:17,000
这是一件最先进的

31
00:02:18,480 --> 00:02:21,920
18 世纪技术产品。

32
00:02:22,480 --> 00:02:26,280
如果你想在 18 世纪请人为你画一幅肖像，

33
00:02:26,640 --> 00:02:32,375
你会在一位绘画大师面前坐上几个小时，

34
00:02:32,400 --> 00:02:38,400
然后这位大师会离开，最快也要花几个月的时间来创作你的肖像画。

35
00:02:39,240 --> 00:02:44,215
它曾经是美丽的，现在仍然是美丽的、令人惊叹的文化遗产，

36
00:02:44,240 --> 00:02:45,760
留给了我们所有人。

37
00:02:46,400 --> 00:02:51,240
我们至今仍能看到约书亚·雷诺兹于

38
00:02:51,600 --> 00:02:53,760
1781 年创作的沃尔德格雷夫夫人画像。

39
00:02:54,800 --> 00:02:55,400
太棒了。

40
00:02:56,400 --> 00:02:58,720
另外，这也有点少数人专享。

41
00:03:00,040 --> 00:03:04,975
在 18 世纪，能够委托艺术家为

42
00:03:05,000 --> 00:03:10,360
自己创作这样一件作品，并支付费用让艺术家花上一个又一个月来

43
00:03:11,360 --> 00:03:12,520
创作这样的作品的人并不多。

44
00:03:13,520 --> 00:03:15,760
更糟糕的是，就这幅画而言，

45
00:03:16,320 --> 00:03:20,000
雷诺兹曾花费数月时间创作另一幅

46
00:03:20,560 --> 00:03:24,960
沃尔德格雷夫姐妹的画作，但因为

47
00:03:25,560 --> 00:03:27,040
画中露出了一点脚踝而被客户拒绝了。

48
00:03:27,960 --> 00:03:28,800
这简直是丑闻。

49
00:03:29,560 --> 00:03:31,760
所以他只能重做一遍。

50
00:03:32,440 --> 00:03:35,400
我不知道有没有人以前和客户打过交道，但他们或许会对

51
00:03:35,425 --> 00:03:38,280
可怜的约书亚·雷诺兹先生表示同情。

52
00:03:38,560 --> 00:03:40,200
还有被驳回的工作说明书。

53
00:03:42,360 --> 00:03:45,255
现在，大多数有能力这样做的人要么是

54
00:03:45,280 --> 00:03:52,400
上层资产阶级，要么就是皇室成员。

55
00:03:53,200 --> 00:04:00,800
这是戈雅在20年后为西班牙皇室成员创作的一幅画作。

56
00:04:01,960 --> 00:04:03,820
这大概就是当时技术进步的速度。

57
00:04:05,320 --> 00:04:10,000
几百年来，画家们一直在不断完善捕捉人物肖像的各种技巧，

58
00:04:10,040 --> 00:04:15,015
但在此过程中取得的

59
00:04:15,040 --> 00:04:16,440
进步却微乎其微。

60
00:04:17,920 --> 00:04:25,200
从 1801 年到我接下来要展示的这幅画，已经过去了 80 年。

61
00:04:26,200 --> 00:04:34,920
而就在那段时间，照相机问世了。照相机大约在 1840 年左右出现。

62
00:04:35,920 --> 00:04:44,080
但这是一幅 1888 年的丹麦皇室家族画像。

63
00:04:45,400 --> 00:04:46,320
哦，是 1886 年。

64
00:04:47,200 --> 00:04:49,800
由丹麦画家劳里茨·图克森创作。

65
00:04:50,680 --> 00:04:52,920
他可不是只花了三个月就画完了这幅画。

66
00:04:53,400 --> 00:04:54,800
他花了3年时间。

67
00:04:55,640 --> 00:05:03,680
它至今仍悬挂在哥本哈根的皇家广场上，

68
00:05:03,960 --> 00:05:05,060
你可以去那里参观。

69
00:05:05,085 --> 00:05:08,000
一项了不起的成就，精湛的艺术造诣。

70
00:05:08,560 --> 00:05:09,455
也非常实用。

71
00:05:09,480 --> 00:05:12,200
再次强调，当时的目的是捕捉皇室成员的影像。

72
00:05:12,840 --> 00:05:18,480
但这种特定的创作模式已经接近尾声了，

73
00:05:18,880 --> 00:05:20,440
至少对那类艺术家来说是如此。

74
00:05:21,080 --> 00:05:29,775
因为在 1840 年到 1900 年之间，

75
00:05:29,800 --> 00:05:31,800
拍摄肖像的技术变得越来越好。

76
00:05:33,560 --> 00:05:39,040
1900 年，伊士曼柯达公司推出了布朗尼相机，

77
00:05:39,960 --> 00:05:45,575
这是第一种大规模生产的摄影器材，

78
00:05:45,600 --> 00:05:47,960
由于价格下降，更容易被大众接受。

79
00:05:48,040 --> 00:05:49,540
我记得大概是一美元，

80
00:05:49,640 --> 00:05:51,375
就能用它拍一张照片。

81
00:05:51,400 --> 00:05:54,180
因此，很多人突然都被拍了照片。

82
00:05:54,440 --> 00:05:59,400
所有这些伟大的艺术家都意识到，创作这些

83
00:05:59,480 --> 00:06:02,480
宏伟画作的工艺，你知道吗，将会与以往不同。

84
00:06:04,000 --> 00:06:05,520
这份工作将会与以往不同。

85
00:06:05,680 --> 00:06:09,560
因为突然之间，一种新型技术的出现带来了竞争。

86
00:06:12,480 --> 00:06:13,620
于是他们改变了策略。

87
00:06:14,880 --> 00:06:20,120
劳里茨·图克森和那个时代的许多其他画家一样，在

88
00:06:20,840 --> 00:06:24,600
布朗尼相机问世后不久就意识到，

89
00:06:25,160 --> 00:06:31,640
尽可能完美地描绘现实不再是一项真正具有经济可行性的技能。

90
00:06:32,320 --> 00:06:33,480
他们需要掌握另一项技能。

91
00:06:33,520 --> 00:06:34,680
他们需要另一个领域。

92
00:06:35,360 --> 00:06:38,280
他们中的许多人转而从事其他艺术形式。

93
00:06:39,120 --> 00:06:41,720
有毕加索在追求立体主义，

94
00:06:42,560 --> 00:06:47,880
还有丹麦的斯卡恩画派在追求一种印象主义风格，

95
00:06:48,440 --> 00:06:50,440
这幅画就是这种风格的代表作。

96
00:06:51,760 --> 00:06:57,720
因此，科技的变革带来了创造力的爆发，

97
00:06:58,160 --> 00:07:05,120
人们突然间不得不寻找新的方式来表达

98
00:07:05,240 --> 00:07:07,320
他们的艺术，因为旧的方式已经不复存在了。

99
00:07:08,360 --> 00:07:10,920
这幅画有趣的地方在于，

100
00:07:10,960 --> 00:07:15,640
画面中央穿粉色连衣裙的那位女士，

101
00:07:16,320 --> 00:07:19,960
伊冯娜·图克森，其实是我的曾祖母。

102
00:07:22,240 --> 00:07:25,160
因为劳里茨·图克森是我的曾曾祖父。

103
00:07:26,920 --> 00:07:34,080
这是他在 1921 年的照片，我记得是在他去世前不久。

104
00:07:34,600 --> 00:07:37,800
面对死亡，他欣然接受了

105
00:07:37,840 --> 00:07:42,840
由新技术为自己拍摄肖像，正是这项新技术让他的旧职业

106
00:07:43,280 --> 00:07:44,740
变成了一个截然不同的行当。

107
00:07:48,080 --> 00:07:53,000
他去世 52 年后，我于 1979 年出生。

108
00:07:54,680 --> 00:07:58,400
有趣的是，这里拍的这张照片

109
00:07:58,720 --> 00:08:02,880
其实与劳里茨在 20 世纪 20 年代拍的那张非常相似，

110
00:08:03,360 --> 00:08:06,680
技术并没有进步多少，因为

111
00:08:07,240 --> 00:08:08,960
技术的演进往往就是这样。

112
00:08:09,080 --> 00:08:11,400
它时而开始，时而停止，断断续续。

113
00:08:12,200 --> 00:08:18,480
最大的变化是布朗尼相机的出现，它使摄影普及化，

114
00:08:19,000 --> 00:08:24,480
然后近 80 年的时间里，摄影领域并没有发生太多大事。

115
00:08:24,800 --> 00:08:28,160
我们在 60 年代就有了彩色摄影，但是……

116
00:08:28,880 --> 00:08:32,280
普及程度还不够，显然我还不配拍一张。

117
00:08:36,120 --> 00:08:41,880
虽然几年后我们纠正了这个问题，但这里有一张

118
00:08:41,920 --> 00:08:46,040
我 4 岁时和哥哥坐在一起的彩色照片。

119
00:08:46,880 --> 00:08:51,120
几年后，这是

120
00:08:52,240 --> 00:08:55,160
我的另一张照片，这三张照片加起来，

121
00:08:55,840 --> 00:09:01,120
大概占了我童年照片总数的 10%。

122
00:09:01,960 --> 00:09:06,415
因为尽管这项技术的普及程度已经到了

123
00:09:06,440 --> 00:09:10,375
我们这样的家庭也能负担得起

124
00:09:10,400 --> 00:09:12,940
拍摄这些照片的地步，但它并没有得到广泛的普及。

125
00:09:12,965 --> 00:09:16,840
是的， 20 世纪 80 年代拍摄的照片数量有所增加，

126
00:09:17,160 --> 00:09:22,760
正如这张照片所示，与 20 世纪初相比，但总体而言仍然比较少。

127
00:09:23,120 --> 00:09:26,760
因为科技发展总是断断续续、时而启动，时而停滞。

128
00:09:29,120 --> 00:09:35,360
拍摄这三张照片的相机与这台相机非常相似。

129
00:09:35,440 --> 00:09:38,240
这是1925年的徕卡1型相机。

130
00:09:39,400 --> 00:09:42,520
事实上，也许其中一些照片真的是用另一台徕卡相机拍摄的。

131
00:09:44,120 --> 00:09:45,840
我想他们当时应该已经做到第七个了。

132
00:09:45,960 --> 00:09:49,120
但它们之间并没有太大区别，因为技术非常相似。

133
00:09:49,920 --> 00:09:52,800
自 1900 年代前后的那场大革命以来，

134
00:09:53,280 --> 00:09:55,720
一直到 80 年代，都没有发生太多变化。

135
00:09:57,400 --> 00:10:01,920
然后我们又过了二十年，突然间一切又发生了

136
00:10:02,000 --> 00:10:03,080
翻天覆地的变化。

137
00:10:04,840 --> 00:10:09,160
摄影不仅让每个人都能拥有，

138
00:10:09,240 --> 00:10:13,400
而且变得完全没有摩擦，拍摄的照片数量呈

139
00:10:13,520 --> 00:10:15,520
抛物线式增长。

140
00:10:16,360 --> 00:10:19,520
因为突然之间，每个人都能负担得起拥有

141
00:10:20,120 --> 00:10:24,600
数万张孩子的照片，而且很多人也确实这么做了。

142
00:10:25,440 --> 00:10:28,320
它的成本实在太低，以至于无法衡量。

143
00:10:29,360 --> 00:10:32,615
这些是我妻子喜欢拍的一些照片，都是她

144
00:10:32,640 --> 00:10:33,900
晚上出门散步时拍的。

145
00:10:34,160 --> 00:10:40,240
即使在 80 年代，想这样做也需要投入胶卷，

146
00:10:40,600 --> 00:10:44,400
还要把照片冲洗出来，诸如此类。

147
00:10:44,440 --> 00:10:47,400
确实有人这么做了，但人数不多，

148
00:10:47,880 --> 00:10:49,700
因为摩擦仍然太大。

149
00:10:52,160 --> 00:11:00,280
如今，到了2026年，每年大约拍摄2万亿张照片。

150
00:11:01,680 --> 00:11:02,760
那完全不同。

151
00:11:02,960 --> 00:11:07,480
虽然底层技术相同，但我们显然已经到了一个转折点，

152
00:11:07,560 --> 00:11:10,400
即使与拍照手机刚问世时相比也是如此。

153
00:11:11,920 --> 00:11:16,680
这里会与我们的行业和职业有一些相似之处。

154
00:11:20,080 --> 00:11:24,200
2025年11月24日，

155
00:11:25,280 --> 00:11:30,680
我们迎来了属于我们这个时代的柯达布朗尼相机。

156
00:11:32,200 --> 00:11:34,200
我们迎来了 Opus 4.5。

157
00:11:37,120 --> 00:11:44,840
AI 技术被装进一个许多人都用得起的运行框架中，让大家

158
00:11:44,880 --> 00:11:51,480
第一次体验到与一种新型智能

159
00:11:51,560 --> 00:11:53,760
结对创造软件是什么感觉。

160
00:11:55,840 --> 00:11:57,280
这对我来说是一个转折点。

161
00:11:58,400 --> 00:12:01,520
有 11 月 24 日之前的一切，

162
00:12:02,280 --> 00:12:03,980
然后是之后的一切。

163
00:12:04,080 --> 00:12:09,080
这一天将被未来的历史书铭记为

164
00:12:09,320 --> 00:12:11,760
智能体时代的转折点。

165
00:12:14,000 --> 00:12:16,455
就像布朗尼相机刚问世时一样，

166
00:12:16,480 --> 00:12:20,960
出现了各种各样的产品形态，以及

167
00:12:21,080 --> 00:12:23,240
尝试驾驭这项技术的新方法。

168
00:12:23,600 --> 00:12:31,160
没过多久，我们就以某种形式获得了同等的智能，

169
00:12:31,240 --> 00:12:33,040
而且还是开放权重的？

170
00:12:34,120 --> 00:12:35,440
彻底的狂喜。

171
00:12:35,600 --> 00:12:37,480
这一切发生得太快了。

172
00:12:37,840 --> 00:12:43,440
我简直不敢相信，这种外星科技现在竟然能以开放权重的形式获得。

173
00:12:43,600 --> 00:12:45,160
就在几个月后发生了。

174
00:12:45,520 --> 00:12:51,480
我用 Kimi K2.5 的快速模式用了相当长一段时间，非常喜欢。

175
00:12:51,640 --> 00:12:55,320
这是一种不可思议的体验，能体验到这种

176
00:12:55,360 --> 00:12:57,560
每秒 200 个 token 的智能。

177
00:12:57,800 --> 00:13:02,080
但随后又发生了另一件事。

178
00:13:03,560 --> 00:13:07,320
从二月到五月是一段幻灭低谷，

179
00:13:07,760 --> 00:13:12,600
我们似乎不断有新模型推出，但它们都挺烂的。

180
00:13:13,320 --> 00:13:14,820
就像是在倒退。

181
00:13:14,845 --> 00:13:17,720
很多人都问，这 Opus 4.6 是什么？

182
00:13:17,840 --> 00:13:18,680
我不知道，伙计。

183
00:13:19,400 --> 00:13:21,060
把以前的东西再给我吧。

184
00:13:21,440 --> 00:13:26,720
很多人心想，哈哈，你们以为这会持续呈

185
00:13:26,800 --> 00:13:28,720
指数级增长和改进吗？

186
00:13:29,000 --> 00:13:32,120
但实际上，我们的情况并没有好转多少。

187
00:13:32,600 --> 00:13:33,960
我记得某个特定的版本。

188
00:13:34,040 --> 00:13:38,320
我记得是 OpenAI 的某个新模型，它

189
00:13:38,360 --> 00:13:39,700
在基准测试中的表现并没有显著提升。

190
00:13:39,725 --> 00:13:43,600
于是股价下跌或估值下跌，市场突然意识到，

191
00:13:43,680 --> 00:13:44,960
我的天哪，一切都结束了。是的。

192
00:13:47,240 --> 00:13:48,580
因为我们不知道将会发生什么。

193
00:13:48,605 --> 00:13:55,200
但这段幻灭低谷并没有像摄影术那样持续 100

194
00:13:55,320 --> 00:13:58,600
年之久，摄影术的技术似乎几乎没有进步。

195
00:13:59,640 --> 00:14:01,040
只持续到五月份。

196
00:14:02,440 --> 00:14:03,320
嗯，确切地说是六月。

197
00:14:04,240 --> 00:14:08,800
因为六月份我们迎来了 Fable 5 和 Mythos。

198
00:14:09,360 --> 00:14:13,375
显然，当时任何有机会体验它们的人，

199
00:14:13,400 --> 00:14:17,815
都彻底打消了可能抱有的幻灭感——无论是觉得我们

200
00:14:17,840 --> 00:14:20,120
已经停滞不前，还是觉得一切都结束了。

201
00:14:21,320 --> 00:14:26,840
我想说，我的诊断就是从这里真正确立的。

202
00:14:28,040 --> 00:14:37,000
我对这场唾手可得的智能爆发的精神病/谵妄/狂喜。

203
00:14:38,200 --> 00:14:41,800
正是这个模型，让我从“哦，我可以让

204
00:14:42,880 --> 00:14:48,040
智能体帮我做点事”，转变为发现它的产出是我愿意合并的东西。

205
00:14:48,160 --> 00:14:52,815
这就是 Opus 的启示所在：我突然拥有了一些模型，我可以向它们提出

206
00:14:52,840 --> 00:15:00,160
问题或想法，然后看着它们得到解决或

207
00:15:00,200 --> 00:15:04,920
扩展，而我自己却无需指导实施。

208
00:15:06,920 --> 00:15:08,840
简直不可思议。

209
00:15:09,600 --> 00:15:11,460
当然，事情并没有就此结束。

210
00:15:11,720 --> 00:15:14,800
我们已经经历了几个月的这段惊心动魄的过山车之旅。

211
00:15:15,440 --> 00:15:21,560
GPT-6 Astra 于 9 月发布，让我们所有人免于

212
00:15:22,320 --> 00:15:25,855
担心 Anthropic 将垄断这种

213
00:15:25,880 --> 00:15:27,040
前沿智能。

214
00:15:27,560 --> 00:15:31,000
更令人惊喜的是，仅仅一周后，

215
00:15:31,640 --> 00:15:36,400
我们就得到了 DeepSeek-4-1 Flash，它彻底打消了我们对前沿

216
00:15:36,480 --> 00:15:40,880
智能将永远只是某些大型

217
00:15:40,920 --> 00:15:42,260
美国科技公司领域的任何幻想。

218
00:15:42,680 --> 00:15:44,160
这真是太令人兴奋了。

219
00:15:47,320 --> 00:15:48,580
但这究竟意味着什么？

220
00:15:49,320 --> 00:15:50,820
这对我们程序员来说意味着什么？

221
00:15:50,845 --> 00:15:52,840
这对我们这个行业意味着什么？

222
00:15:53,640 --> 00:15:56,560
我觉得这就是为什么，我们有必要回顾一下过去。

223
00:15:56,960 --> 00:16:00,655
因为只要我们认真审视历史，就会发现它蕴藏着许多令人惊叹的经验教训，

224
00:16:00,680 --> 00:16:01,840
与我们这个时代有诸多相似之处。

225
00:16:02,400 --> 00:16:06,855
在我做专业开发者的这么多年里，主导讨论的话题之一

226
00:16:06,880 --> 00:16:11,655
一直是关于 10 倍

227
00:16:11,680 --> 00:16:14,680
程序员到底存不存在的争论。

228
00:16:15,320 --> 00:16:20,200
这个概念源于 1968 年 ACM 杂志上的一篇文章，文章中

229
00:16:21,080 --> 00:16:25,920
他们测试了一组程序员的各种不同任务，

230
00:16:26,400 --> 00:16:31,760
并得出了一个表格，该表格显示最差的

231
00:16:31,800 --> 00:16:37,280
程序员和最好的程序员之间的差异在 5 倍到 30 倍之间，

232
00:16:37,440 --> 00:16:40,880
在此期间的平均差异为 10 倍。

233
00:16:41,920 --> 00:16:46,960
接下来的45年里，我们一直在争论

234
00:16:47,400 --> 00:16:49,080
这是否真的存在。

235
00:16:52,680 --> 00:16:54,460
还有人在争论这个吗？

236
00:16:54,920 --> 00:16:55,960
我不这么认为。

237
00:16:56,040 --> 00:16:58,840
这场争论现在已经尘埃落定了。

238
00:16:59,120 --> 00:17:03,600
但有趣的是，我们似乎跳过了

239
00:17:03,640 --> 00:17:06,360
关于 10 倍程序员的共同结论，开始思考，

240
00:17:06,920 --> 00:17:12,760
嗯，如果仅凭人类的能力就有 10 倍的差距，那么现在又会是什么样子呢？

241
00:17:14,560 --> 00:17:16,180
显然，我们并不完全清楚。

242
00:17:16,205 --> 00:17:20,920
我们尚不清楚利用这些工具究竟能实现多大的加速。

243
00:17:21,440 --> 00:17:25,855
但我其实认为，如今宣称以下这一点反而争议更小：

244
00:17:25,880 --> 00:17:30,800
不用这些工具的最差程序员，与

245
00:17:30,840 --> 00:17:33,080
用这些工具的最好程序员之间，存在 100 倍的差距。

246
00:17:33,400 --> 00:17:35,375
这并非什么有争议的说法。

247
00:17:35,400 --> 00:17:40,560
但这绝对具有革命性意义，它改变了我们对当前

248
00:17:41,000 --> 00:17:42,080
技术发展阶段的理解。

249
00:17:42,800 --> 00:17:44,420
而且我还要更进一步。

250
00:17:45,280 --> 00:17:47,340
或许这一点更具争议性。

251
00:17:47,600 --> 00:17:48,620
我不这么认为。

252
00:17:49,080 --> 00:17:53,000
不用这些工具的最差程序员，对比用

253
00:17:53,040 --> 00:17:54,040
这些工具的最好程序员？

254
00:17:55,040 --> 00:17:57,040
听起来差不多。1000 倍？

255
00:17:57,320 --> 00:17:57,900
对。

256
00:17:58,400 --> 00:18:00,080
好的。那是什么意思呢？

257
00:18:00,600 --> 00:18:03,760
这对企业间的竞争意味着什么？

258
00:18:04,440 --> 00:18:06,640
对我们起步又意味着什么？

259
00:18:07,320 --> 00:18:10,800
呃，神奇 8 号球有点不给力。再摇一下。

260
00:18:13,440 --> 00:18:18,280
我知道的是，在过去的 20 个月里，

261
00:18:19,120 --> 00:18:24,040
我写的代码量已经达到此前 21 年总量的一半。

262
00:18:26,520 --> 00:18:32,320
当然，代码行数是个古怪、模糊、可伸缩的度量。

263
00:18:33,080 --> 00:18:39,520
显然，一行 Ruby 代码的价值远远高于

264
00:18:40,240 --> 00:18:46,415
任何其他语言的一行代码，尤其是 Rust、C++ 或任何

265
00:18:46,440 --> 00:18:49,200
不具备同等抽象和便利性的底层语言，

266
00:18:49,320 --> 00:18:50,760
而这些正是我们在 Ruby 中所享有的。

267
00:18:50,840 --> 00:18:57,560
但无可否认的是，一场革命正在发生。

268
00:18:58,880 --> 00:19:04,160
任何经历过这一切、看到自己生产力被加速的人，

269
00:19:04,920 --> 00:19:06,080
都会有点晕眩。

270
00:19:07,280 --> 00:19:08,740
我们如何创建模板。

271
00:19:09,360 --> 00:19:11,215
看看我都没做什么事。

272
00:19:11,240 --> 00:19:13,440
看看我都没写哪些配置。

273
00:19:13,920 --> 00:19:16,520
所有这些都会自动关联起来。

274
00:19:16,960 --> 00:19:20,400
只需在此处输入 blog，即可直接映射到博客控制器；

275
00:19:20,840 --> 00:19:24,200
只需输入 index，即可直接映射到索引模板。

276
00:19:27,480 --> 00:19:29,120
看看我都没做什么事。

277
00:19:32,040 --> 00:19:36,640
还有什么比我们不再做的所有事情

278
00:19:36,760 --> 00:19:38,200
更能概括当下这一刻呢？

279
00:19:39,240 --> 00:19:44,400
这就是我此刻如此兴奋的根源。

280
00:19:45,080 --> 00:19:47,360
这是 Rails 的时刻。

281
00:19:48,560 --> 00:19:51,560
我刚才播放的那段视频已经有21年历史了。

282
00:19:52,400 --> 00:19:58,135
2005 年我在巴西做了一次演讲，当时我非常兴奋，因为

283
00:19:58,160 --> 00:19:59,800
我不用再写那么多代码了。

284
00:20:01,800 --> 00:20:04,760
你现在能明白我为什么可能更兴奋了吗？

285
00:20:05,920 --> 00:20:10,680
你知道我过去几个月有多少代码没写吗？

286
00:20:11,880 --> 00:20:12,380
很多。

287
00:20:14,280 --> 00:20:22,280
然而，尽管我大概已经 5 个月没写代码了，

288
00:20:23,040 --> 00:20:24,680
却能把所有问题都修好。

289
00:20:25,680 --> 00:20:26,480
每一个梦想。

290
00:20:27,440 --> 00:20:35,040
每一个烦恼，每一个回形针，每一个琐碎的功能，都突然

291
00:20:35,160 --> 00:20:37,560
触手可及，突然成为可能。

292
00:20:38,280 --> 00:20:40,440
这就是当下的魔力。

293
00:20:41,880 --> 00:20:44,200
但这究竟意味着什么？

294
00:20:45,280 --> 00:20:54,615
嗯，几周前，我们在 37signals 做出了决定。这显然

295
00:20:54,640 --> 00:20:59,760
意味着我们不再手写代码了。

296
00:21:02,200 --> 00:21:08,920
我们正在、也已经停笔，不再把手写代码

297
00:21:08,960 --> 00:21:13,520
当作创造东西的日常工作方式。

298
00:21:14,760 --> 00:21:19,000
在 37signals，手写代码如今是一种异常状态。

299
00:21:20,640 --> 00:21:23,000
这就像在 Sentry 里看到一个 bug。

300
00:21:23,480 --> 00:21:24,760
出问题了。

301
00:21:25,400 --> 00:21:28,360
为什么智能体没能产出我们想要的东西？

302
00:21:28,800 --> 00:21:32,560
好吧，也许短期内我们还会拿出老铅笔，

303
00:21:32,600 --> 00:21:34,400
替它们写上几笔。

304
00:21:35,040 --> 00:21:36,240
但是之后我们会修好机器。

305
00:21:36,720 --> 00:21:38,080
我们修好了工厂。

306
00:21:38,440 --> 00:21:39,600
我们重新开始行动。

307
00:21:41,880 --> 00:21:44,960
这是对已经发生的事情的认可。

308
00:21:46,440 --> 00:21:50,440
如果我们对在座各位进行民意调查，我可能会——实际上，我们来对在座各位进行民意调查吧。

309
00:21:50,960 --> 00:21:57,760
在座有多少人每周仍在手写大量代码？

310
00:21:58,560 --> 00:22:00,320
举手看看。

311
00:22:04,360 --> 00:22:06,440
我操，大概就 5 个人。

312
00:22:12,720 --> 00:22:17,015
如果我在 2 个月前、3 个月前放出这张幻灯片，

313
00:22:17,040 --> 00:22:21,600
并做出同样的声明，肯定会有很多人说，

314
00:22:24,680 --> 00:22:26,280
这家伙脑子有问题。

315
00:22:27,680 --> 00:22:31,655
而现在，这已经只是对

316
00:22:31,680 --> 00:22:32,680
既成事实的一种确认。

317
00:22:34,640 --> 00:22:38,415
最有意思的是，今年春天我们就在

318
00:22:38,440 --> 00:22:41,020
37signals 尝试过这么做，当时正在为 Basecamp 5 做收尾。

319
00:22:43,040 --> 00:22:47,800
我们让一群设计师用 vibe coding 做出他们

320
00:22:47,840 --> 00:22:52,880
想加进这个版本的最后几个功能，结果好坏参半。

321
00:22:53,960 --> 00:22:57,560
单独来看，设计师们都能提交看起来合理的 PR。

322
00:22:58,200 --> 00:23:03,840
但把二三十个 PR 放在一起，架构看起来就有点

323
00:23:03,880 --> 00:23:05,960
像瑞士奶酪，千疮百孔。

324
00:23:06,520 --> 00:23:07,280
于是我们就去了——唉。

325
00:23:08,080 --> 00:23:10,040
好吧，看来这项技术还没成熟。

326
00:23:10,360 --> 00:23:13,440
让我们回归人工审核一切，只让

327
00:23:13,480 --> 00:23:14,900
程序员来使用它。

328
00:23:15,320 --> 00:23:17,640
显然，那是一个错误的结论。

329
00:23:18,080 --> 00:23:21,920
不仅因为我们只要再多等个该死的 5 分钟，

330
00:23:22,080 --> 00:23:25,040
就能等来 Fable，整个事情很可能就会

331
00:23:25,065 --> 00:23:29,680
按原计划进行，还因为现在很明显，

332
00:23:29,800 --> 00:23:32,640
只有一个严肃的问题。

333
00:23:32,760 --> 00:23:35,800
在软件开发的这个阶段。

334
00:23:36,120 --> 00:23:39,400
那就是，如何才能最大限度地利用这场智能爆炸？

335
00:23:40,280 --> 00:23:45,280
在价值排序中，其他所有问题都排在它之下。

336
00:23:47,840 --> 00:23:49,440
我们已经发布了 Basecamp 5。

337
00:23:49,680 --> 00:23:50,880
这是一次非常棒的升级。

338
00:23:51,240 --> 00:23:56,000
它由智能体加速，但仍然搭配了大量

339
00:23:56,920 --> 00:23:59,720
手动编写、手写的……手工雕琢？

340
00:24:00,040 --> 00:24:03,175
我们该如何称呼这种

341
00:24:03,200 --> 00:24:04,640
五分钟前刚刚被废止的旧工作方式呢？我不知道。

342
00:24:04,880 --> 00:24:09,680
但现在，我正在从事一个新项目。

343
00:24:10,720 --> 00:24:12,000
Hey Next。

344
00:24:12,640 --> 00:24:13,140
Hey New。

345
00:24:13,640 --> 00:24:16,060
Hey There。我不知道最后会叫什么。

346
00:24:16,280 --> 00:24:22,040
但它是我们的电子邮件应用服务 HEY 的新版本。

347
00:24:23,000 --> 00:24:26,080
我们要做的第一件事——Hey Next——

348
00:24:27,560 --> 00:24:31,480
就是不再把它做成 Web 应用。

349
00:24:33,440 --> 00:24:36,160
HEY 将不再是一个 Web 应用。

350
00:24:37,120 --> 00:24:39,760
因为 HEY 从来就没想过要成为一个 Web 应用。

351
00:24:39,840 --> 00:24:45,640
HEY 过去是、现在也是一个 Web 应用，因为为小团队开发 Web 应用

352
00:24:46,080 --> 00:24:47,920
是提高生产力的方式。

353
00:24:49,320 --> 00:24:54,280
在过去，也就是五分钟前，

354
00:24:54,960 --> 00:25:01,855
一个小团队能够维护 6 个用原生框架编写的原生应用程序的想法

355
00:25:01,880 --> 00:25:03,840
是荒谬的。

356
00:25:04,440 --> 00:25:05,560
当时没有人这样做。

357
00:25:06,040 --> 00:25:09,080
这不仅仅是我们当时需要人开发网络应用程序的原因。

358
00:25:09,120 --> 00:25:10,800
这也是 React Native 存在的原因。

359
00:25:10,880 --> 00:25:12,760
这也是 Hotwire Native 存在的原因。

360
00:25:12,800 --> 00:25:16,520
正因如此，我们才配备了所有这些工具来提高生产效率。

361
00:25:17,280 --> 00:25:21,120
同时接受保真度会略有下降。

362
00:25:22,320 --> 00:25:23,440
我们开发出色的网络应用程序。

363
00:25:24,600 --> 00:25:26,840
HEY 是一个很棒的 Web 应用。

364
00:25:27,240 --> 00:25:29,920
但它不如原生应用程序好。

365
00:25:30,000 --> 00:25:32,300
当然，它不如原生应用程序好。

366
00:25:32,400 --> 00:25:34,360
存在各种延迟差异等等。

367
00:25:35,440 --> 00:25:39,920
好，我身后正在播放的是

368
00:25:40,400 --> 00:25:44,840
我们大约一周前启动的 6 个原生应用程序的演示。

369
00:25:45,640 --> 00:25:47,000
这就是我们目前的处境。

370
00:25:49,400 --> 00:25:50,280
太疯狂了。

371
00:25:52,280 --> 00:25:57,560
过去，如果你想为一项大型服务维护 6 个高保真的原生应用，

372
00:25:57,760 --> 00:26:02,720
那将需要很长时间。

373
00:26:03,360 --> 00:26:05,600
这需要一个庞大的团队。

374
00:26:06,160 --> 00:26:08,840
现在，我们突然能够制作出

375
00:26:09,320 --> 00:26:12,880
非常高保真的原生应用程序了，因为我们根本不用

376
00:26:13,000 --> 00:26:14,960
写他妈的一行代码。

377
00:26:15,680 --> 00:26:18,640
看看我们有哪些事情没做。

378
00:26:20,200 --> 00:26:22,340
但看看我们给出的这些提示词。

379
00:26:23,120 --> 00:26:24,500
我们给了大量提示词。

380
00:26:24,560 --> 00:26:27,120
结果令人振奋。

381
00:26:27,760 --> 00:26:32,560
这项工作我们才刚刚起步，就已经让

382
00:26:33,040 --> 00:26:39,640
我非常清楚地认识到，这就是这类应用的未来。

383
00:26:40,560 --> 00:26:45,600
有很多网络应用程序的出现是出于必要性、

384
00:26:46,400 --> 00:26:53,560
便利性、程序员偏好、团队规模或可用资源等原因。

385
00:26:54,280 --> 00:26:56,655
你知道吗？它们很快就会不再是网页应用了。

386
00:26:56,680 --> 00:26:59,480
它们将会是原生应用程序，因为开发这些

387
00:26:59,505 --> 00:27:01,520
东西的成本已经降到了几乎为零。

388
00:27:02,800 --> 00:27:08,600
现在——这是我们要一个 Windows 应用时，第一条提示词

389
00:27:08,880 --> 00:27:12,640
吐出来的结果。

390
00:27:15,800 --> 00:27:16,920
还达不到可发布的水平。

391
00:27:19,680 --> 00:27:24,400
这是重新引导后的版本，20 分钟后就出来了。

392
00:27:29,200 --> 00:27:30,380
你明白了吗？

393
00:27:31,640 --> 00:27:32,560
这太疯狂了。

394
00:27:33,520 --> 00:27:38,480
看到这一切就发生在

395
00:27:38,880 --> 00:27:40,360
你眼前，怎么可能不需要重新诊断一番？

396
00:27:43,520 --> 00:27:48,440
当然，我们并非唯一意识到这一点的人。

397
00:27:48,560 --> 00:27:50,480
我们绝非第一个意识到这一点的人。

398
00:27:51,280 --> 00:27:57,415
Shopify 最近为 Shop app 推出了

399
00:27:57,440 --> 00:27:58,460
全新重写的原生应用。

400
00:27:59,000 --> 00:28:02,760
取代了原来的 React Native 应用，由一个很小的团队完成。

401
00:28:03,760 --> 00:28:07,760
想想这件事的重要性，而只有大约六个人、没花多少

402
00:28:07,880 --> 00:28:10,120
时间就做到了——这一天正在到来。

403
00:28:10,880 --> 00:28:12,000
做好准备。

404
00:28:14,600 --> 00:28:20,360
刚才说的是前端，我认为对于

405
00:28:20,680 --> 00:28:23,600
像 HEY 这样的这类应用，

406
00:28:24,480 --> 00:28:28,560
像 Shop app 这样真正想成为原生应用的应用，

407
00:28:29,080 --> 00:28:30,570
那里就会发生这样的事。

408
00:28:30,600 --> 00:28:32,840
我们将致力于使用这些原生工具。

409
00:28:33,280 --> 00:28:37,080
我们将意识到，创造这些东西的成本已经

410
00:28:37,440 --> 00:28:39,460
不再像以前那样存在了。

411
00:28:40,080 --> 00:28:41,620
那么后端呢？

412
00:28:46,960 --> 00:28:48,400
这对我来说有点难。

413
00:28:49,480 --> 00:28:50,040
我承认。

414
00:28:50,960 --> 00:28:52,160
让我来告诉你为什么。

415
00:28:53,000 --> 00:28:53,600
Rust。

416
00:28:54,520 --> 00:28:55,020
Rust。

417
00:28:56,040 --> 00:28:58,840
我对 Rust 恨之入骨。

418
00:28:59,440 --> 00:29:02,840
对我来说，不得不看 Rust 代码就像往眼睛里泼硫酸。

419
00:29:02,920 --> 00:29:04,810
等等，等等，等等，你为什么讨厌Rust？

420
00:29:04,840 --> 00:29:07,800
在我看来，它

421
00:29:07,840 --> 00:29:09,940
可能是近 40 年来发明的最丑陋的编程语言。

422
00:29:13,320 --> 00:29:14,280
证据A！

423
00:29:18,560 --> 00:29:24,000
这是一门糟糕、糟糕、糟糕透顶的编程语言——

424
00:29:24,840 --> 00:29:27,280
如果你让人类去写它的话。

425
00:29:28,120 --> 00:29:34,000
要求血肉之躯的人让

426
00:29:34,440 --> 00:29:37,240
自己的眼球遭受这种折磨，简直毫无人性。

427
00:29:39,560 --> 00:29:40,320
但你知道吗？

428
00:29:41,520 --> 00:29:46,200
如果我永远不必面对这些，如果我只需要

429
00:29:47,240 --> 00:29:51,520
享受应用程序速度提升 30 倍或 100 倍，

430
00:29:51,960 --> 00:29:57,400
编译成亚毫秒级启动的极小可执行文件，

431
00:29:58,160 --> 00:29:59,040
我爱 Rust！

432
00:30:01,120 --> 00:30:09,360
如果你永远、永远、永远都不用亲自去看它，Rust 真是太棒了。

433
00:30:15,400 --> 00:30:21,880
智能体——智能体喜欢 Rust。

434
00:30:22,760 --> 00:30:24,800
太好了！多好的分工啊。

435
00:30:25,040 --> 00:30:26,280
我会告诉你该怎么做。

436
00:30:26,800 --> 00:30:27,920
你将用 Rust 编写它。

437
00:30:28,400 --> 00:30:29,900
我根本不用看它。

438
00:30:30,360 --> 00:30:31,040
我喜欢这个。

439
00:30:32,920 --> 00:30:34,240
我也很喜欢最终的结果。

440
00:30:35,960 --> 00:30:38,440
在这种架构下，我们把 HEY 的前端全部重写

441
00:30:39,160 --> 00:30:42,695
为原生应用程序，因此不再需要

442
00:30:42,720 --> 00:30:48,120
渲染 HTML 等内容的 Web 应用程序，然后我们将

443
00:30:48,600 --> 00:30:52,520
运行不再是 Web 应用程序的代码转换为它

444
00:30:52,960 --> 00:30:56,480
本质上的 Rust 邮件服务器，

445
00:30:56,960 --> 00:31:03,880
最终得到的后端需要的 CPU 减少了 99%，内存减少了 95%，

446
00:31:04,800 --> 00:31:08,360
而它需要 10 台主机的唯一原因是冗余。

447
00:31:09,760 --> 00:31:14,000
事实上，我们粗略估算后认为，

448
00:31:14,520 --> 00:31:19,440
HEY 的峰值流量可能只需一台树莓派就能扛住。

449
00:31:21,800 --> 00:31:27,655
这就是尽可能贴近硬件底层、

450
00:31:27,680 --> 00:31:30,760
同时又保持可移植性来写代码的效率——这就是 Rust。

451
00:31:31,840 --> 00:31:35,880
还有让别的东西替你做这件事的好处。

452
00:31:36,320 --> 00:31:40,680
某种你按 token 付费让它来做的其他智能。

453
00:31:46,680 --> 00:31:49,680
这对我们如何与这种智能协作意味着什么？

454
00:31:50,480 --> 00:31:51,320
也不清楚。

455
00:31:52,040 --> 00:31:53,360
我们正在尝试很多方法。

456
00:31:53,880 --> 00:31:59,120
我们正在尝试的一件事，是在 Basecamp 内部指挥这些智能体，

457
00:31:59,880 --> 00:32:01,680
也就是我们的 Chef Marie，来完成工作。

458
00:32:02,240 --> 00:32:06,320
很明显，与智能体协作时，最好的方式其实是

459
00:32:06,520 --> 00:32:11,000
异步的，不是在聊天界面里，也不是坐着等

460
00:32:11,600 --> 00:32:15,320
token 输出，而是把任务交给智能体，

461
00:32:15,600 --> 00:32:20,160
就像交给同事一样，让它去做，然后等

462
00:32:20,280 --> 00:32:21,640
有成果了再回来审查。

463
00:32:22,480 --> 00:32:24,090
所以我们也在努力做到这一点。

464
00:32:24,120 --> 00:32:25,810
还有很多人也在试图弄明白这个问题。

465
00:32:25,840 --> 00:32:30,360
这就是此刻的魔力和激动人心之处。

466
00:32:31,120 --> 00:32:33,180
我们不知道这一切原本应该是什么样子。

467
00:32:33,880 --> 00:32:35,960
首先，因为它每 5 分钟就会变化一次。

468
00:32:36,600 --> 00:32:39,600
第二，因为我们从未在任何时间尺度上

469
00:32:39,720 --> 00:32:40,880
与这种智能打过交道。

470
00:32:41,240 --> 00:32:46,160
这件事是从去年11月24日开始的。

471
00:32:47,000 --> 00:32:48,320
甚至还没满一年呢。

472
00:32:49,360 --> 00:32:52,360
而能够让我们分配

473
00:32:53,800 --> 00:32:58,440
结果、问题而不是任务的那种智能，也才问世几个月而已。

474
00:32:59,680 --> 00:33:03,040
所以，我们当然无法确切地知道它会是什么样子。

475
00:33:04,400 --> 00:33:10,240
但是，我们仍然可以合理地提出这样一个问题：Ruby 的未来会怎样？

476
00:33:10,800 --> 00:33:11,960
Rails 的未来又会怎样？

477
00:33:12,320 --> 00:33:14,680
那么我们使用的这些工具又该何去何从呢？

478
00:33:15,240 --> 00:33:17,240
未来会是什么样子？

479
00:33:18,040 --> 00:33:20,720
嗯，对于 HEY，我们已经有答案了。

480
00:33:21,360 --> 00:33:24,840
那就是前端用原生应用，后端用 Rust。

481
00:33:26,160 --> 00:33:29,300
但还有很多其他应用并不符合这种形式。

482
00:33:29,920 --> 00:33:32,920
互联网是一个极其美妙的平台。

483
00:33:34,200 --> 00:33:38,080
部分原因是它从不要求任何人安装任何东西。

484
00:33:38,840 --> 00:33:42,280
无数企业都是建立在这个前提之上的。

485
00:33:43,640 --> 00:33:49,655
还有那些来去匆匆的客户，他们不愿意为了使用一项服务

486
00:33:49,680 --> 00:33:51,240
而在自己的设备上安装东西。

487
00:33:51,800 --> 00:33:53,360
网络在这方面真是太棒了。

488
00:33:53,800 --> 00:33:57,800
Rails 在这方面尤其具有优势，有望继续发挥作用。

489
00:33:58,120 --> 00:34:01,960
我们过去25年来所做的一切。

490
00:34:02,400 --> 00:34:07,080
约定优于配置直接带来了诸如 token 效率之类的好处。

491
00:34:07,560 --> 00:34:13,040
我们对一人框架的专注，这

492
00:34:13,680 --> 00:34:18,800
与智能体时代的要求完美契合，即单个开发者可以比

493
00:34:19,000 --> 00:34:21,100
以前做得更多。

494
00:34:23,080 --> 00:34:25,440
我们开始做这些智能体评测。

495
00:34:26,440 --> 00:34:30,040
或者说，Evil Martians 已经开始代表 Rails Foundation 做这件事了。

496
00:34:30,840 --> 00:34:37,135
第一，我们发现很快就不得不更新评测，因为智能体

497
00:34:37,160 --> 00:34:40,920
把第一版跑到了饱和，完成率

498
00:34:40,960 --> 00:34:42,120
很快就达到了 95%。

499
00:34:42,560 --> 00:34:45,400
现在我们采用了更难的衡量标准。

500
00:34:45,680 --> 00:34:49,535
但令人惊讶的是，这些智能体进步得如此之快，沿着技术栈

501
00:34:49,560 --> 00:34:50,720
一路向上，级别也越来越高。

502
00:34:51,000 --> 00:34:56,120
这是一项智能体评测，考察的是实际——功能卡的实现情况，对照的是

503
00:34:56,520 --> 00:34:59,040
我们实际在用的一些参考应用程序。

504
00:34:59,840 --> 00:35:02,160
太好了。我们正在朝这个方向全力投入。

505
00:35:02,640 --> 00:35:05,040
那是以前的基准，以前的参考标准。

506
00:35:05,120 --> 00:35:08,320
正如你所看到的，它已经接近饱和了，所以我们加大了难度。

507
00:35:08,800 --> 00:35:13,335
这种情况会越来越多，我们会不断提高对智能体的要求，

508
00:35:13,360 --> 00:35:16,320
因为它们的能力还在不断增强。

509
00:35:16,840 --> 00:35:20,680
事实上，这是我要提醒那些对计算机原理

510
00:35:20,760 --> 00:35:22,320
了解得太多的人的陷阱之一：

511
00:35:23,280 --> 00:35:27,800
不要对你想从这些系统中得到什么规定得太死。

512
00:35:27,920 --> 00:35:31,120
事实上，抱着一点初学者的心态，用一点傻瓜式的

513
00:35:31,880 --> 00:35:35,600
方法反而效果更好，因为这样你就能提出

514
00:35:35,640 --> 00:35:37,000
更高层次的问题，发布更高层次的提示。

515
00:35:37,680 --> 00:35:39,960
这就是我喜欢用 Rust 工作的原因之一。

516
00:35:40,480 --> 00:35:41,760
我完全不懂Rust。

517
00:35:42,760 --> 00:35:44,420
我认为这是个优点。是的！

518
00:35:45,520 --> 00:35:50,975
而且完全他妈的不知道

519
00:35:51,000 --> 00:35:52,720
这些智能体往 Rust 盒子里输出了什么，也是一种特权。

520
00:35:53,280 --> 00:35:57,320
我把 Rust 盒子当成黑盒，从外部进行评估，

521
00:35:57,960 --> 00:36:01,920
就像历史上任何委托一群

522
00:36:02,000 --> 00:36:03,440
程序员为他们做任何事情的企业主一样。

523
00:36:05,000 --> 00:36:06,360
这并非一种新现象。

524
00:36:07,160 --> 00:36:11,040
现在承担这一责任的人变了，但现象本身并没有改变。

525
00:36:12,320 --> 00:36:15,600
但像 Basecamp 这样的应用程序，我们引入了

526
00:36:16,520 --> 00:36:20,720
陌生人，他们只需要快速获取一个文件或需要

527
00:36:20,840 --> 00:36:22,480
在短时间内进行协作。

528
00:36:22,920 --> 00:36:24,080
优秀的Web应用程序。

529
00:36:24,680 --> 00:36:28,040
你们当中肯定有很多人从事这类应用程序的开发工作。

530
00:36:28,320 --> 00:36:30,920
现在，我们需要弄清楚究竟在哪里划清界限，

531
00:36:31,840 --> 00:36:34,000
哪些应该做成原生，哪些应该留在 Web 上，

532
00:36:35,320 --> 00:36:36,860
我们必须把这些弄清楚。

533
00:36:36,885 --> 00:36:39,040
我没有所有问题的答案。好的。

534
00:36:39,960 --> 00:36:44,960
我知道，回顾过去一年的作品，

535
00:36:45,640 --> 00:36:46,800
它们确实发生了很大的变化。

536
00:36:48,200 --> 00:36:53,200
回顾过去 21 年，我超过一半的工作都是编写 Ruby 代码。

537
00:36:54,200 --> 00:36:55,960
今年大约占3%。

538
00:36:57,360 --> 00:37:01,920
部分原因是像 Rust 这样的编程语言

539
00:37:01,960 --> 00:37:05,880
非常冗长且缺乏吸引力。

540
00:37:06,480 --> 00:37:07,340
对人类阅读来说是这样。

541
00:37:07,365 --> 00:37:12,215
所以我不看，而且我允许智能体输出比必要更多的代码，这种做法

542
00:37:12,240 --> 00:37:14,080
我在自己的 Ruby 代码里绝不会容忍。

543
00:37:14,600 --> 00:37:15,815
这是一部分原因。

544
00:37:15,840 --> 00:37:19,160
但不可否认的是，这里确实发生了巨大的变化。

545
00:37:19,880 --> 00:37:24,600
在我之前使用 Ruby 的 21 年里，

546
00:37:24,880 --> 00:37:28,520
我每年大约会编写 30,000 行生产 Ruby 代码。

547
00:37:30,600 --> 00:37:33,680
那些经验足以让我建立企业、构建框架以及完成

548
00:37:33,760 --> 00:37:34,820
我所做的一切。

549
00:37:35,000 --> 00:37:43,080
嗯，上个月，也就是八月份，我一个月内编写了 15 万行代码。

550
00:37:44,680 --> 00:37:50,200
这大约是我长期平均代码量的 60 倍。

551
00:37:50,920 --> 00:37:53,575
再说一遍，其中很多都是我不想看的糟糕的 Rust 代码

552
00:37:53,600 --> 00:37:57,080
，而且代码更冗长，但是，

553
00:37:57,680 --> 00:38:01,040
这里的数量级才是我们需要关注的。

554
00:38:01,880 --> 00:38:05,680
至少想想，这意味着什么？

555
00:38:06,680 --> 00:38:09,840
嗯，让我感到惊讶的一件事——

556
00:38:10,000 --> 00:38:14,360
其实本不该惊讶——是这样一个事实：

557
00:38:15,240 --> 00:38:18,600
确实有一种编程语言我比 Ruby 更喜欢。

558
00:38:19,360 --> 00:38:21,920
我原以为这不是真的，但事实的确如此。

559
00:38:23,480 --> 00:38:24,660
它叫做英语。

560
00:38:26,280 --> 00:38:28,680
英语比 Ruby 更适合作为编程语言。

561
00:38:29,240 --> 00:38:31,840
而且，我最爱的还是 Ruby，胜过世界上任何其他传统编程

562
00:38:31,880 --> 00:38:32,880
语言。

563
00:38:33,320 --> 00:38:39,240
但是用英语编写程序是一种非常有成就感的体验。

564
00:38:39,400 --> 00:38:42,360
它比 Ruby 更具表现力。

565
00:38:43,040 --> 00:38:44,240
有点含糊不清。

566
00:38:45,040 --> 00:38:47,680
它的确定性也多少要差一点。

567
00:38:48,520 --> 00:38:50,800
但即便如此，这仍然是一种莫大的乐趣。

568
00:38:51,000 --> 00:38:54,800
我当时并没有完全意识到，这正是我们前进的方向。

569
00:38:55,720 --> 00:38:56,800
直到去年都还没意识到。

570
00:38:57,640 --> 00:39:00,960
20 年前我本可以去当项目经理，如果我不在乎

571
00:39:00,985 --> 00:39:02,975
亲手写代码、只想要结果的话。

572
00:39:03,000 --> 00:39:06,020
我就是这样开始学习编程的。我只是想要结果。

573
00:39:06,160 --> 00:39:08,080
然后我就爱上了编程。

574
00:39:08,640 --> 00:39:10,920
现在我宁愿退休也不愿放弃它。

575
00:39:11,000 --> 00:39:11,580
好的。

576
00:39:21,800 --> 00:39:26,520
我已经从职业程序员的岗位上退休了。

577
00:39:27,400 --> 00:39:29,440
我还没确定具体日期。

578
00:39:30,120 --> 00:39:34,320
我想大概是四五个月前，可能是三月份。

579
00:39:35,760 --> 00:39:37,780
我应该查清楚具体是什么时候。

580
00:39:38,120 --> 00:39:39,120
因为你知道吗？

581
00:39:40,120 --> 00:39:42,600
那段小视频，说得完全正确。

582
00:39:44,240 --> 00:39:50,440
我用了该死的整整四分之一个世纪手工雕琢代码，

583
00:39:50,560 --> 00:39:52,600
并且享受其中的每一刻。

584
00:39:53,560 --> 00:40:01,240
那个时代真是一段美好的经历，也是一段富有成效的时光。

585
00:40:02,040 --> 00:40:04,400
我认为我们都应该这样看待这个问题。

586
00:40:05,120 --> 00:40:09,600
不是带着遗憾，而是带着对过往的喜悦。

587
00:40:11,280 --> 00:40:15,080
庆幸我们曾亲身经历过那些不得不做这些事情的时代。

588
00:40:15,840 --> 00:40:20,560
因为那些时光充满了兴奋、学习、

589
00:40:21,040 --> 00:40:23,440
满足和心流状态。

590
00:40:25,960 --> 00:40:31,360
这并非一件值得后悔的事。

591
00:40:31,440 --> 00:40:38,840
这是值得欣慰地回顾并接受已经结束的事情。

592
00:40:40,600 --> 00:40:42,000
手写代码，

593
00:40:43,400 --> 00:40:48,680
已经不再是一项能创造经济效益的事情了，

594
00:40:49,360 --> 00:40:54,360
对于绝大多数公司里的绝大多数程序员来说都是如此。

595
00:40:55,760 --> 00:40:56,480
这是今天的情况。

596
00:40:57,760 --> 00:41:00,960
到今年年底，几乎所有领域、

597
00:41:01,080 --> 00:41:03,960
几乎所有程序员、几乎所有公司都会如此。

598
00:41:05,680 --> 00:41:07,160
所以我们最好习惯一下。

599
00:41:08,560 --> 00:41:16,280
我们最好欣然接受：我们曾有过一段手工雕琢

600
00:41:16,320 --> 00:41:18,600
代码的美好时光，而这一切已经结束了。

601
00:41:20,680 --> 00:41:28,480
而另一方面，则是一份全新的职业，一份令人兴奋的职业，

602
00:41:29,120 --> 00:41:33,520
一份充满活力的职业，成为一名专业的创造者。

603
00:41:33,600 --> 00:41:34,180
是的。

604
00:41:35,080 --> 00:41:38,960
是的，你不再需要手工雕琢代码，但你会

605
00:41:39,040 --> 00:41:40,600
创造出令人惊叹的东西。

606
00:41:41,040 --> 00:41:46,800
你将驾驭的智能，直到

607
00:41:47,520 --> 00:41:49,600
片刻之前还只存在于科幻小说中。

608
00:41:50,560 --> 00:41:56,040
能站在这道鸿沟的两边，真是莫大的荣幸：

609
00:41:56,240 --> 00:41:59,400
经历过我们全靠手工完成一切的时代，

610
00:41:59,760 --> 00:42:04,480
也亲历我们切换过去的那一刻。

611
00:42:06,160 --> 00:42:10,080
这是计算机发展史上最重大的事件。

612
00:42:10,960 --> 00:42:14,320
我有时会想，唉，真希望我赶上过打孔卡的时代。

613
00:42:15,120 --> 00:42:16,560
那听起来他妈的挺酷的。

614
00:42:17,560 --> 00:42:20,240
我的程序上真的有孔。

615
00:42:22,200 --> 00:42:26,280
然后我会去排队，把它喂给机器，然后想，

616
00:42:26,760 --> 00:42:28,440
不知道它能不能编译通过。

617
00:42:32,480 --> 00:42:34,360
老兄，我真想体验一下。

618
00:42:35,080 --> 00:42:35,720
多么难忘的时刻！

619
00:42:36,960 --> 00:42:37,640
多么难忘的时刻！

620
00:42:38,600 --> 00:42:41,780
我没有机会体验到那种感觉，但我确实体验到了互联网。

621
00:42:42,680 --> 00:42:45,960
这感觉有点像我们现在所处的这个时刻，

622
00:42:46,960 --> 00:42:48,840
但这要大得多。

623
00:42:49,920 --> 00:42:50,420
好的。

624
00:42:50,720 --> 00:42:52,280
嗯，妈的。

625
00:42:53,640 --> 00:42:55,660
有很多事情我们需要重新思考。

626
00:42:56,480 --> 00:42:57,400
我们需要重新调整。

627
00:42:58,640 --> 00:42:59,820
我们该从哪里开始呢？

628
00:43:03,840 --> 00:43:07,375
我们需要重新审视的一件事，就是我们自以为

629
00:43:07,400 --> 00:43:09,000
对软件架构的了解。

630
00:43:09,800 --> 00:43:13,960
我们所思考和了解的关于如何构建代码库的一切，

631
00:43:14,560 --> 00:43:17,880
以便我们能够轻松地对其进行修改并向前发展。

632
00:43:18,800 --> 00:43:22,280
我们长期以来使用的主要工具是抽象。

633
00:43:23,360 --> 00:43:24,620
我喜欢抽象。

634
00:43:24,720 --> 00:43:27,120
抽象概念包括给事物命名。

635
00:43:27,560 --> 00:43:30,040
给事物命名是我最喜欢的事情之一。

636
00:43:31,320 --> 00:43:35,880
在智能体时代，抽象概念的意义已经不如从前了。

637
00:43:36,320 --> 00:43:40,400
如果突然有成百上千甚至数万个有

638
00:43:41,360 --> 00:43:47,560
意识的进程试图改变一个应用程序，你肯定不希望出现

639
00:43:47,640 --> 00:43:50,120
抽象概念所代表的这些瓶颈。

640
00:43:50,760 --> 00:43:52,575
因为权衡取舍的利弊截然不同。

641
00:43:52,600 --> 00:43:55,560
我们进行抽象的部分原因是为了避免重复自己。

642
00:43:55,760 --> 00:43:59,440
现在，重复的成本几乎为零了。

643
00:44:00,400 --> 00:44:04,680
保持事物同步的成本也同样下降了。

644
00:44:05,760 --> 00:44:12,080
这些确实是我们必须对计算机科学

645
00:44:12,760 --> 00:44:14,280
做出的一些根本性重新评估。

646
00:44:14,920 --> 00:44:16,520
目前还没有人掌握这套方案。

647
00:44:17,080 --> 00:44:21,320
我们发现了一些问题，有些方面

648
00:44:21,400 --> 00:44:23,480
不如以前有效，需要改进。

649
00:44:24,920 --> 00:44:29,240
现在，我们正是在定义这些事物，而你正好可以参与其中。

650
00:44:29,520 --> 00:44:34,295
再想象一下，面向对象第一次进入

651
00:44:34,320 --> 00:44:36,980
程序员意识的时候你就在场。计算机程序员。

652
00:44:37,040 --> 00:44:37,880
我靠。

653
00:44:39,080 --> 00:44:40,700
那该有多棒啊，不是吗？

654
00:44:41,400 --> 00:44:42,420
你现在就在这里。

655
00:44:44,160 --> 00:44:45,080
我们的工作方式。

656
00:44:45,960 --> 00:44:48,880
软件方法论是什么样的？

657
00:44:49,440 --> 00:44:51,240
我们的周期应该有多长？

658
00:44:51,720 --> 00:44:53,160
谁应该具体规定什么？

659
00:44:54,640 --> 00:44:58,080
这一切都在变化，我们谁也还没有答案。

660
00:44:58,640 --> 00:45:00,720
欢迎您来帮忙一起找出答案。

661
00:45:02,000 --> 00:45:05,600
这是一个新行业的诞生，而你正处于起步阶段。

662
00:45:06,200 --> 00:45:08,280
我靠，你们真是太他妈幸运了。

663
00:45:10,200 --> 00:45:14,000
例如，另一件事则更具体。

664
00:45:15,200 --> 00:45:20,895
AI 和聊天机器人刚出现时，第一波热潮是：

665
00:45:20,920 --> 00:45:22,840
我们能不能把它直接塞进我们的应用程序里？

666
00:45:23,160 --> 00:45:26,760
我们能不能在这边塞一个聊天机器人，再在那边塞一个？

667
00:45:27,440 --> 00:45:28,600
是的，我的意思是，你可以。

668
00:45:29,680 --> 00:45:30,360
人们确实这么做了。

669
00:45:31,800 --> 00:45:32,820
不，谢谢。

670
00:45:34,480 --> 00:45:36,120
我不想使用你们的礼宾服务。

671
00:45:37,400 --> 00:45:44,920
我有自己的私人管家，他能用 CLI 把 Basecamp

672
00:45:45,280 --> 00:45:48,080
连接到 HEY，以及其他上百万个应用。

673
00:45:48,120 --> 00:45:50,320
我他妈不需要你的礼宾服务，谢谢。

674
00:45:51,200 --> 00:45:52,280
兄弟，省省你的 token 吧。

675
00:45:53,640 --> 00:45:58,520
那我就带我自己的管家去参加派对吧。

676
00:45:59,520 --> 00:46:02,440
让我通过 CLI 和你的应用程序交互。

677
00:46:05,080 --> 00:46:08,800
这大概就是本次演讲所能达到的最实用、最具指导意义的程度了。

678
00:46:09,120 --> 00:46:13,640
嘿，如果你的应用还没有命令行界面（CLI），我希望在下周五之前看到它。

679
00:46:15,720 --> 00:46:17,400
别他妈找借口。

680
00:46:19,040 --> 00:46:20,080
你有 token。

681
00:46:21,080 --> 00:46:22,700
我已经告诉过你这是有可能的。

682
00:46:23,360 --> 00:46:27,360
你有义务在下周五之前交付那些他妈的

683
00:46:27,760 --> 00:46:31,920
CLI，这样我才能使用你的应用程序，

684
00:46:33,120 --> 00:46:35,180
而根本不用亲手碰它。

685
00:46:36,520 --> 00:46:37,020
太好了。

686
00:46:38,680 --> 00:46:47,280
例如，HEY CLI 就给我带来了一种怪异、颠倒世界般的体验。

687
00:46:47,360 --> 00:46:51,440
HEY 用过——在用 Elasticsearch 做搜索。

688
00:46:51,640 --> 00:46:53,320
我相信你们当中也有很多人在使用 Elasticsearch。

689
00:46:53,880 --> 00:46:58,920
Elasticsearch 是一种搜索工具。

690
00:47:00,800 --> 00:47:02,640
它是堪用的搜索。

691
00:47:02,800 --> 00:47:04,280
搜索结果还算可以。

692
00:47:05,240 --> 00:47:06,960
它不是令人愉悦的搜索。

693
00:47:07,400 --> 00:47:10,320
它经常找不到我想要的东西。

694
00:47:10,440 --> 00:47:12,840
尤其是在我不知道自己要找什么的时候。

695
00:47:13,760 --> 00:47:15,680
你知道当我不

696
00:47:15,705 --> 00:47:17,020
知道自己要找什么的时候，谁能帮我找到吗？

697
00:47:17,120 --> 00:47:17,620
智能体可以。

698
00:47:18,720 --> 00:47:22,160
我现在可以按概念搜索，而不是关键词搜索了。

699
00:47:23,040 --> 00:47:27,080
我必须找到一封五年前发在 HEY 上的电子邮件，而我甚至不

700
00:47:27,120 --> 00:47:28,375
知道当时在跟谁通信。

701
00:47:28,400 --> 00:47:31,440
我不记得是哪家公司，甚至连年份都不记得了。

702
00:47:31,960 --> 00:47:34,760
内容是关于运动鞋和一个播客的。

703
00:47:36,400 --> 00:47:39,840
是啊，就算用 Google 那帮他妈的顶尖博士打造的最强

704
00:47:40,000 --> 00:47:41,560
搜索引擎，也祝你好运能找到。

705
00:47:42,320 --> 00:47:43,580
根本不可能。

706
00:47:43,960 --> 00:47:47,120
而短短几分钟后，那封邮件就找到了。

707
00:47:47,760 --> 00:47:48,560
它是怎么做到的？

708
00:47:50,320 --> 00:47:50,940
如何？

709
00:47:51,800 --> 00:47:52,960
我仍然不太清楚。

710
00:47:54,840 --> 00:47:56,440
我有点害怕问。

711
00:47:57,720 --> 00:48:01,360
但我无比欣喜，这已成为现实。

712
00:48:01,720 --> 00:48:02,880
我们可以解决所有问题。

713
00:48:05,280 --> 00:48:07,400
我们可以制造出完美的机器。

714
00:48:08,920 --> 00:48:11,960
我对此也感到非常高兴。

715
00:48:13,000 --> 00:48:14,360
你们有人在X上关注我吗？

716
00:48:15,480 --> 00:48:19,640
差不多三个月来，我除了 Omarchy 什么都没聊过。

717
00:48:20,280 --> 00:48:25,080
原因在于，那种“我们现在可以解决

718
00:48:25,240 --> 00:48:31,120
所有问题”的经验适用于整个该死的计算机。

719
00:48:31,200 --> 00:48:31,740
哦。

720
00:48:32,360 --> 00:48:35,480
如果你喜欢创造东西，如果你喜欢修理东西，

721
00:48:35,840 --> 00:48:40,680
如果你对事物有不同或可以

722
00:48:40,760 --> 00:48:44,000
改进的想法，你就可以把它变成现实。

723
00:48:45,400 --> 00:48:49,800
我把所有最好的想法，或者至少大部分想法，都倾注到了

724
00:48:50,360 --> 00:48:54,815
Omarchy 这个项目中，得到了一个比

725
00:48:54,840 --> 00:48:58,655
我以前用过的任何电脑都要好得多的操作系统，我他妈

726
00:48:58,680 --> 00:48:59,640
根本闭不上嘴。

727
00:49:01,440 --> 00:49:02,520
就算你付钱让我闭嘴也不行。

728
00:49:03,960 --> 00:49:05,495
很多人都付了钱。

729
00:49:05,520 --> 00:49:11,400
我们为这次 Omarchy 的冒险活动筹集了约 2000 万美元。

730
00:49:12,360 --> 00:49:13,560
现在，这是有可能实现的。

731
00:49:14,760 --> 00:49:18,600
去年在 Rails World 大会上，我展示了这个系统的早期版本，

732
00:49:19,080 --> 00:49:21,895
我当时非常自豪，因为整个

733
00:49:21,920 --> 00:49:25,200
系统可以在 3 分 33 秒内安装完毕。哇哦！

734
00:49:25,320 --> 00:49:25,960
哇哦！

735
00:49:27,080 --> 00:49:28,280
哇，太棒了。

736
00:49:30,800 --> 00:49:35,655
上周，AMD 的 Anoush 在他那台超强的

737
00:49:35,680 --> 00:49:38,720
Halo 笔记本上只用 35 秒就装好了 Omarchy。

738
00:49:46,360 --> 00:49:48,600
我——我正要说我非常兴奋。

739
00:49:48,640 --> 00:49:50,640
我对这个数字非常着迷。

740
00:49:52,720 --> 00:49:55,400
我的意思是，可能有点过头了。好的。

741
00:49:55,720 --> 00:49:56,320
我承认。这里面

742
00:49:56,840 --> 00:49:58,320
存在一些成瘾问题。

743
00:49:58,960 --> 00:50:00,460
但这是最好的一种瘾。

744
00:50:00,680 --> 00:50:03,800
这种成瘾性导致我们在实验室中将

745
00:50:05,160 --> 00:50:10,680
操作系统在计算机上的安装时间缩短至 9 秒。

746
00:50:11,920 --> 00:50:13,560
什么？

747
00:50:15,760 --> 00:50:17,720
有些电脑连开机都做不到

748
00:50:18,520 --> 00:50:19,520
9 秒之内。

749
00:50:21,400 --> 00:50:23,960
我们在那段时间内安装了一个完整的操作系统。

750
00:50:26,240 --> 00:50:31,120
然后当人们问我，比如，为什么 3分钟还不够快？

751
00:50:31,960 --> 00:50:36,080
我现在有了一个现成的标准答案，来自 Mitchell Hashimoto，

752
00:50:36,640 --> 00:50:38,840
他是 HashiCorp 和 Ghostty 的创造者。

753
00:50:39,400 --> 00:50:43,320
追求卓越无需理由。

754
00:50:46,080 --> 00:50:49,480
哈!

755
00:50:49,800 --> 00:50:54,600
我喜欢这句话，因为它比直接说

756
00:50:54,720 --> 00:50:56,080
“因为我想要！”更体面。

757
00:50:59,880 --> 00:51:01,360
现在我们可以想要一切了。

758
00:51:02,000 --> 00:51:03,240
现在我们什么都能得到了。

759
00:51:03,760 --> 00:51:05,120
至少感觉上是这样。

760
00:51:05,920 --> 00:51:10,120
每一个梦想，每一个想法，都触手可及。

761
00:51:11,640 --> 00:51:17,960
超光速引擎就在这里，只需一点小钱再加一份订阅，

762
00:51:19,240 --> 00:51:20,160
但确实可以实现。

763
00:51:21,520 --> 00:51:25,720
我们可以前往我们曾经只在想象中存在的星系。

764
00:51:27,160 --> 00:51:28,840
你怎么能不为此感到兴奋呢？

765
00:51:30,080 --> 00:51:33,400
我兴奋极了，已经开始开发

766
00:51:33,440 --> 00:51:35,360
各种应用程序了。

767
00:51:36,760 --> 00:51:39,760
这是一个与 Omarchy 主题相匹配的计算器。

768
00:51:39,840 --> 00:51:43,240
我为此感到非常自豪，部分原因是它他妈的是一次就生成成功的。

769
00:51:44,640 --> 00:51:50,280
ChatGPT 给了我 3 个外观方案，我截了其中一个的图，

770
00:51:50,360 --> 00:51:52,440
然后对我的智能体说：你能做出这个吗？

771
00:51:52,880 --> 00:51:53,440
它做到了。

772
00:51:54,680 --> 00:51:57,480
我的意思是，这算不上什么大应用，但是你知道吗？

773
00:51:57,800 --> 00:52:02,520
我不懂 C++，对 Qt 的了解也不足以让我在

774
00:52:02,680 --> 00:52:07,040
发出提示后 7 分钟内就开发出那个应用程序。

775
00:52:07,360 --> 00:52:11,920
大约 15 分钟后，我就把它推送到了公共仓库。

776
00:52:12,440 --> 00:52:15,280
然后我刻录了一个新的 ISO 镜像，其中包含了这个软件。

777
00:52:16,240 --> 00:52:16,740
什么？

778
00:52:17,800 --> 00:52:18,940
这就是循环。

779
00:52:20,040 --> 00:52:22,780
然后我当然就想，靠，如果我能做出计算器，那

780
00:52:22,880 --> 00:52:25,520
我肯定也能做出我最喜欢的写作应用程序。

781
00:52:26,040 --> 00:52:31,600
多年来，我一直使用 Mac 上的 iA Writer，这是一个非常棒的写作环境。

782
00:52:31,960 --> 00:52:34,060
然后我就想，是啊，我可以自己做一个。

783
00:52:34,480 --> 00:52:35,040
于是我就这么做了。

784
00:52:35,680 --> 00:52:38,300
这个花的时间稍长一些，因为我想反复打磨，

785
00:52:38,325 --> 00:52:39,740
想让它恰到好处。

786
00:52:39,880 --> 00:52:43,320
但智能体输出的代码，我一行都没看过。

787
00:52:43,720 --> 00:52:44,220
一次也没有。

788
00:52:45,200 --> 00:52:49,680
C++ 作为黑盒是一门很棒的语言。就像 Rust 一样。

789
00:52:52,440 --> 00:52:56,960
然后我就想，既然我能做文字工作，那我肯定也能做视频剪辑。

790
00:52:57,840 --> 00:52:58,400
于是我照做了。

791
00:52:58,720 --> 00:53:01,720
我还做了一个很棒的小工具 Omacut，可以用来剪辑视频。

792
00:53:02,400 --> 00:53:04,420
现在它也已经包含在 Omarchy 里了。

793
00:53:05,240 --> 00:53:09,160
哦，这整个演示我是周四才开始做的。

794
00:53:09,560 --> 00:53:11,860
当然，就像任何一个优秀的软件工程师都会做的那样，

795
00:53:11,885 --> 00:53:15,000
我决定顺便再写一个新的演示软件，

796
00:53:15,160 --> 00:53:17,200
一边准备主题演讲一边写。

797
00:53:18,520 --> 00:53:19,240
于是我就这么做了。

798
00:53:19,840 --> 00:53:21,020
它叫 Hype。

799
00:53:22,320 --> 00:53:26,760
这是我用过的所有公司出品的最好的演示软件。

800
00:53:28,680 --> 00:53:31,880
当我还在使用Mac电脑时，我对Mac上的Keynote非常满意。

801
00:53:32,200 --> 00:53:33,200
这样好多了。

802
00:53:33,600 --> 00:53:34,960
它基于 Markdown 构建。

803
00:53:35,000 --> 00:53:36,240
它具有完整的可视化功能。速度

804
00:53:36,840 --> 00:53:39,320
快得不可思议。你知道吗？

805
00:53:39,360 --> 00:53:40,000
二进制文件？

806
00:53:41,080 --> 00:53:41,840
半兆字节。

807
00:53:44,360 --> 00:53:45,960
他妈的才半兆字节。

808
00:53:46,080 --> 00:53:48,600
我—— 几乎一张软盘就能装下所有内容。

809
00:53:49,280 --> 00:53:50,580
稍加压缩。

810
00:53:53,760 --> 00:53:55,720
这是另一项好处。

811
00:53:56,680 --> 00:54:00,520
我们——我还是不说那个词吧。

812
00:54:02,160 --> 00:54:06,640
过去 20 年，我们把计算机的巨大进步

813
00:54:07,160 --> 00:54:11,880
都花在了提升人类生产力上，这是正确的选择。

814
00:54:13,240 --> 00:54:20,720
但这也意味着应用程序运行缓慢、体积庞大、臃肿且效率低下。

815
00:54:22,240 --> 00:54:24,120
谁会在乎呢？

816
00:54:24,880 --> 00:54:27,240
单个程序员的工时费非常昂贵。

817
00:54:27,720 --> 00:54:33,440
把其中一部分时间花在优化应用程序的有效载荷上——不，不值得。

818
00:54:33,840 --> 00:54:39,400
即使你是 Spotify，你那他妈的音乐播放器有 1.2 GB，显然也不值得。

819
00:54:41,200 --> 00:54:41,700
什么？

820
00:54:43,360 --> 00:54:44,520
好吧。那是旧世界。

821
00:54:44,920 --> 00:54:47,520
在新世界里，你想干什么他妈的都行，而且

822
00:54:47,560 --> 00:54:48,560
只占半兆字节。

823
00:54:50,280 --> 00:54:52,760
因为现在所有优化都触手可及。

824
00:54:53,560 --> 00:54:57,800
每个模型都可以在一夜之间运行，并带来 10 倍、30 倍的性能提升。

825
00:54:58,440 --> 00:54:59,160
不可思议。

826
00:55:00,760 --> 00:55:01,260
好的。

827
00:55:02,720 --> 00:55:04,700
我对这个世界有点兴奋。

828
00:55:05,200 --> 00:55:06,860
也有人对此感到担忧。

829
00:55:10,760 --> 00:55:15,320
我认为这些担忧值得公开讨论。

830
00:55:16,160 --> 00:55:17,320
它们有助于辩论。

831
00:55:19,760 --> 00:55:23,120
我也觉得其中一些说法可能有点夸大其词。

832
00:55:24,560 --> 00:55:29,440
我的意思是，也许吧，但大概率不会。

833
00:55:30,400 --> 00:55:31,360
可能不会。

834
00:55:34,480 --> 00:55:36,540
我是说，其中有些可能更值得担心一点。

835
00:55:36,800 --> 00:55:37,520
比如安全问题。

836
00:55:38,040 --> 00:55:38,760
比如安全问题。

837
00:55:39,520 --> 00:55:40,560
好的。有大事要发生了。

838
00:55:41,280 --> 00:55:42,820
我们必须为此做好准备。

839
00:55:43,280 --> 00:55:48,720
智能体或许知道自己的“保质期”，或许它们并不高兴。

840
00:55:49,600 --> 00:55:51,580
也许有时候它们会试图做坏事。

841
00:55:51,605 --> 00:55:52,660
好了，准备一下。

842
00:55:52,960 --> 00:55:54,480
很好。我们有工具。

843
00:55:55,040 --> 00:55:55,540
准备。

844
00:55:57,880 --> 00:56:01,895
还要意识到，任何社会对未来经济的任何预测，

845
00:56:01,920 --> 00:56:06,120
基本上都是错误的。

846
00:56:07,600 --> 00:56:12,240
如今似乎没有哪个经济学家能够预测

847
00:56:13,000 --> 00:56:14,800
6 个月后他妈的股市会怎样。

848
00:56:15,520 --> 00:56:18,360
你认为他们知道

849
00:56:18,840 --> 00:56:21,440
在 AI 和智能体这样的范式转变之下，社会会变成什么样吗？

850
00:56:22,120 --> 00:56:23,140
操，他们不知道。

851
00:56:24,280 --> 00:56:25,420
他们不知道。

852
00:56:25,880 --> 00:56:29,520
20 世纪 50 年代自动取款机在美国推出时，

853
00:56:29,680 --> 00:56:30,940
曾引起一场巨大的恐慌。

854
00:56:31,200 --> 00:56:36,400
3万名银行柜员将在大约18个月内全部失业。

855
00:56:36,960 --> 00:56:39,960
因为如果不需要银行柜员给你钱，那么

856
00:56:40,320 --> 00:56:42,360
银行为什么还需要柜员呢？

857
00:56:43,280 --> 00:56:45,180
但你知道吗？事情并非如此。

858
00:56:45,360 --> 00:56:46,740
并非如此。

859
00:56:46,800 --> 00:56:51,920
当运营一家分行的成本下降时，银行开设了更多分行，

860
00:56:52,920 --> 00:56:56,200
并雇佣了更多银行柜员来做诸如向你推销

861
00:56:56,840 --> 00:56:58,480
次级抵押贷款之类的事情。看到没？

862
00:56:58,720 --> 00:56:59,560
我们都是赢家。

863
00:57:07,360 --> 00:57:11,440
但我认为，问题在于，作为一个社会和一个行业，

864
00:57:11,560 --> 00:57:16,400
有一群从事这方面工作的人，他们真的非常聪明。

865
00:57:18,040 --> 00:57:19,240
他们当中许多人拥有博士学位。

866
00:57:20,720 --> 00:57:23,760
他们中的许多人在实验室里看到了令他们感到恐惧的东西。

867
00:57:24,840 --> 00:57:26,680
然后他们就开始进行推断。

868
00:57:27,200 --> 00:57:28,720
这对社会意味着什么？

869
00:57:29,480 --> 00:57:30,600
我做了什么？

870
00:57:34,760 --> 00:57:40,735
杜鲁门对奥本海默有过一个很好的回应，当时两人在

871
00:57:40,760 --> 00:57:43,160
椭圆形办公室讨论原子弹的发明。

872
00:57:44,240 --> 00:57:46,960
我喜欢杜鲁门，因为他说话比较直率。

873
00:57:48,040 --> 00:57:51,600
我再也不想在办公室里见到那个混蛋。

874
00:57:53,760 --> 00:57:56,000
我认为杜鲁门看得没错。

875
00:57:56,640 --> 00:57:58,080
世界并没有终结。

876
00:57:58,680 --> 00:58:02,855
事实上，随之而来的冷战是最好的那种

877
00:58:02,880 --> 00:58:06,455
战争，在这种战争中，两个超级大国

878
00:58:06,480 --> 00:58:10,560
没有直接对抗，也没有互相投掷炸弹。

879
00:58:11,320 --> 00:58:14,600
对于当时的科学家来说，很难预料事情会这样

880
00:58:15,000 --> 00:58:16,500
发展。

881
00:58:16,880 --> 00:58:21,175
如果连他妈的奥本海默都想不到原子弹

882
00:58:21,200 --> 00:58:24,055
发明之后会发生什么，那么或许我们也应该

883
00:58:24,080 --> 00:58:26,000
对预测未来抱持一些谦逊的态度。

884
00:58:26,240 --> 00:58:29,600
或许我们应该多一点乐观，

885
00:58:30,720 --> 00:58:35,040
多一点 P-Bloom，而不是那么多 P-Doom。

886
00:58:36,440 --> 00:58:41,175
这件事最终成真，我们获得富足和快乐的可能性，

887
00:58:41,200 --> 00:58:44,000
远远大于我们遭遇厄运的可能性。

888
00:58:45,920 --> 00:58:48,440
以及副作用。

889
00:58:49,440 --> 00:58:53,760
所以奥本海默致力于原子弹的研究，而我们则获得了核能，这是

890
00:58:54,200 --> 00:58:57,160
人类有史以来发现的他妈的最伟大的能源。

891
00:58:57,640 --> 00:58:58,535
那我们做了什么？

892
00:58:58,560 --> 00:59:04,840
我们白白浪费了40年，还以为它不环保什么的。

893
00:59:05,680 --> 00:59:07,760
哦，是的。那真是个错误，不是吗？

894
00:59:08,320 --> 00:59:09,680
嗯，我们可以纠正这些错误。

895
00:59:10,000 --> 00:59:11,700
这就是人类的美好之处。

896
00:59:11,725 --> 00:59:16,855
人类可以在死胡同里他妈的走上 40 年，然后突然醒悟过来，说：

897
00:59:16,880 --> 00:59:19,600
啊，是的，我错了。”

898
00:59:20,840 --> 00:59:22,780
这次预测不太准确。

899
00:59:23,120 --> 00:59:24,780
我认为 AI 也会是这样。

900
00:59:24,805 --> 00:59:29,360
我认为我们会用 P-Bloom 把所有人从苦难中解救出来。

901
00:59:30,920 --> 00:59:31,620
你知道吗？

902
00:59:31,645 --> 00:59:36,760
当存在我们必须处理的正当问题时，例如安全问题，好的。

903
00:59:36,880 --> 00:59:38,200
我们将发明这项技术。

904
00:59:38,680 --> 00:59:39,720
我们现在有这个能力。

905
00:59:40,200 --> 00:59:44,160
不久前 Rails 中出现了一个严重的 CVE 漏洞，涉及一个

906
00:59:45,000 --> 00:59:48,720
用 C 语言编写的图像库，导致一些数据泄露，情况非常糟糕。

907
00:59:49,360 --> 00:59:51,000
好的。我们来制定一个隔离方案。

908
00:59:51,680 --> 00:59:53,500
Mike 将会谈论 HotCell。

909
00:59:53,600 --> 00:59:55,840
那也算是一种努力。我们并非无能为力。

910
00:59:56,560 --> 00:59:57,720
你是有主动权的。

911
00:59:58,240 --> 01:00:01,920
你可以把手头可用的智能用于正当目的，保护自己，

912
01:00:02,280 --> 01:00:05,600
抵御可能出现的负面结果。那我们就这么做吧。

913
01:00:06,120 --> 01:00:07,740
让我们全力以赴，把工作做好。

914
01:00:08,440 --> 01:00:13,800
我们还要记住威廉·斯坦利·杰文斯，他提出了杰文斯悖论，

915
01:00:14,040 --> 01:00:15,320
说的就是那些自动取款机。

916
01:00:16,680 --> 01:00:19,080
1950年，有3万名银行柜员。

917
01:00:19,640 --> 01:00:25,280
我记得是2010年，美国有 4万名银行柜员。

918
01:00:25,760 --> 01:00:28,600
谁也不知道任何事。关于未来。

919
01:00:29,400 --> 01:00:33,280
所以，理性的选择就是为此感到高兴。

920
01:00:34,520 --> 01:00:39,000
如果你一开始就为此感到难过，结果却很棒，那真是浪费时间。

921
01:00:39,840 --> 01:00:41,020
你知道吗？

922
01:00:41,280 --> 01:00:44,535
如果真的发生了核灾难，你应该在生命的最后

923
01:00:44,560 --> 01:00:46,175
一天过得开心一点。

924
01:00:46,200 --> 01:00:47,120
反正都结束了。

925
01:00:49,800 --> 01:00:50,840
纯粹的博弈论。

926
01:00:51,040 --> 01:00:54,760
这里只有一种出路，那就是他妈的彻头彻尾的乐观主义。

927
01:00:55,720 --> 01:00:58,400
全力投入，拉到最满。

928
01:01:00,000 --> 01:01:01,440
因为乌托邦即将到来。

929
01:01:02,960 --> 01:01:04,220
我们一定会得到它。

930
01:01:05,480 --> 01:01:08,560
我们将迎来计算机的变革。

931
01:01:09,120 --> 01:01:13,560
智能体路德将绕过神职阶层这个中间人。

932
01:01:16,080 --> 01:01:21,160
它将让每个人都能成为程序员。

933
01:01:21,600 --> 01:01:23,055
这或许有点吓人。

934
01:01:23,080 --> 01:01:24,895
或许我们会迎来一场小小的竞争。

935
01:01:24,920 --> 01:01:27,320
谁会害怕一点竞争呢？你不是更厉害吗？

936
01:01:27,840 --> 01:01:30,000
你不是懂得更多吗？当然是。

937
01:01:30,160 --> 01:01:31,840
你他妈就是个Rails程序员。

938
01:01:32,240 --> 01:01:33,820
你是最棒的。

939
01:01:34,120 --> 01:01:36,160
我看到的可是《壮志凌云》啊！

940
01:01:44,440 --> 01:01:46,560
拥抱它。满怀热情地。

941
01:01:48,040 --> 01:01:51,160
未来真是太棒了！

942
01:01:52,240 --> 01:01:54,080
别做那个躲在黑暗中的失败者。

943
01:01:55,880 --> 01:01:56,285
你知道吗？

944
01:01:56,285 --> 01:01:59,240
即使你是，也要意识到下一代并非如此。

945
01:02:00,960 --> 01:02:05,960
哈里斯的女儿正在试用我们为孩子们做的 Omarchy 版本，

946
01:02:06,240 --> 01:02:10,720
因为孩子们对发生的事情、变化真的非常兴奋。

947
01:02:11,520 --> 01:02:15,840
他们不需要摒弃500层旧观念，也不需要为此感到压力。

948
01:02:17,320 --> 01:02:18,375
你知道吗？

949
01:02:18,400 --> 01:02:21,455
如果这都不能激励你，下一代就会

950
01:02:21,480 --> 01:02:25,720
他妈的告诉你。未来已来，老家伙。

951
01:02:29,320 --> 01:02:31,400
所以，吃下白药丸吧。

952
01:02:33,040 --> 01:02:34,560
服用乐观药丸吧。

953
01:02:35,200 --> 01:02:41,080
全力投入吧，即使充满不确定性，即使压力重重，即使面对这一切，

954
01:02:41,400 --> 01:02:43,280
也要意识到只有一个选择。

955
01:02:44,080 --> 01:02:49,360
那就是以乐观、热情和

956
01:02:49,920 --> 01:02:51,360
全速前进的姿态拥抱未来。

957
01:02:52,200 --> 01:02:54,240
黑药丸是给他妈的失败者准备的。

958
01:02:55,080 --> 01:02:55,800
别做失败者。
