[00:00:00] 我干了什么呢?这是我的Neovim,对吧? [00:00:05] 我按了F5,然后打开了一个浏览器,我们就可以正式地开始上课了。 [00:00:11] 我们今天站在一个非常重要的交叉路口,你们是Computer Science的同学。 [00:00:17] 我们在历史上,从你们刚开始进入学校开始,讲计算机发展的历史。 [00:00:22] 在计算机发展的历史上,其实经历了很多次非常重要的变革。 [00:00:28] 我觉得最主要的是把昂贵的能力变成了日用品。 [00:00:32] 我们在1975年的时候,有第一台PC Altair 8800,在图片的左边。 [00:00:37] 这图片也是AI生成的,你们可以看出有非常明显的AI味儿。 [00:00:41] 而且它应该不是一个特别强的模型,但没关系。 [00:00:45] 我说过我上课是跟大家一个比较松散的讨论和交流的过程。 [00:00:50] 然后我会在之后再把这个课程要重新再切片再整理一次。 [00:00:56] 从PC到互联网,互联网连接了我们的所有人。 [00:00:59] 我至今都还记得,你们没有经历过这个时代。 [00:01:02] 我那个时候可能是上小学快毕业的时候。 [00:01:06] 然后我装了一个软件叫做ICQ。 [00:01:09] 你们没有听说过这个名字,ICQ叫ICU。 [00:01:14] 然后那个时候腾讯的山寨版还叫OICQ。 [00:01:18] 后来腾讯把它改成了QQ。 [00:01:21] 然后你在那个时候可以随机地加一个世界上面另一端的人。 [00:01:25] 然后那时候你加到Native Speaker,它是跟你说英语的。 [00:01:29] 然后它一下子发很多的英语,打得非常快。 [00:01:32] 然后你完全无法理解它在跟你说什么。 [00:01:36] 因为那个时候可能我们刚学一点点英语只会Hello,Good morning。 [00:01:41] 从互联网然后再到移动互联网,一夜之间我印象很深。 [00:01:45] 一夜之间所有的菜场卖菜的人都有支付宝和微信的二维码。 [00:01:51] 就在很短的时间里改变,就一直在改变我们生活的方式。 [00:01:57] 然后到2022年的时候是ChatGPT,AI是人类历史上增长最快的产品。 [00:02:04] 我们在这样人类命运的交叉路口,我觉得我们上课的方式,我们该学什么? [00:02:09] 其实我们都需要思考,思考,思考一下。 [00:02:13] 然后就在这样的一个背景下,我决定还是应该开这样的一门Vibe Coding的课程。 [00:02:20] 为什么呢?前两天的时候,有一段时间之前,大家有一个说法叫AI替我上大学。 [00:02:28] 我觉得这个说法很对,你想吗? [00:02:31] 老师用豆包出题,大家用豆包做作业。 [00:02:35] 然后在这个整个的闭环过程当中,只有学生没有受到训练。 [00:02:40] 现在Vibe Coding很厉害,所有的作业直接,对吧? [00:02:45] 曾经这个操作系统的作业折磨大家,然后大家在痛苦的折磨中获得提升。 [00:02:52] 现在不一样了,现在你直接把那个作业的链接丢到Codex里。 [00:02:56] 你都不需要有复制粘贴的过程,你只要把那个链接丢出来。 [00:03:00] 甚至你都不需要给他链接,你直接说那个蒋老师的操作系统课第八个实验,能不能去帮我实现啊? [00:03:07] 好,就结束了。 [00:03:10] 对,所以在这样的时代,我们还怎么办,对吧? [00:03:14] 还到底应不应该学这些编程啊,这样的东西。 [00:03:18] 那答案肯定是既应该也不应该,有些能力你还是需要的。 [00:03:22] 但应该怎么做,我们不知道。 [00:03:25] 所以我看到的其实大家都在一种非常焦虑的状态上。 [00:03:31] 第一个,AI帮我上大学了。 [00:03:34] 那上完以后,我最后什么都没学会,对吧? [00:03:36] 我每门课都很好,假设每门课都开卷考试,都是AI答题,我全都答对了。 [00:03:44] 但我出来以后我发现,我第一个就被AI取代了。 [00:03:48] 这是第一种焦虑。 [00:03:50] 第二种焦虑是,我相信这边还有另外的同学,可能延续了你中学的时候很听老师话的状态。 [00:03:59] 老师说什么你就做什么,老师上课,每一堂课你都认真地去听,然后每一次作业你都认真地做。 [00:04:04] 然后做完了以后,你发现四年毕业的时候你被大学骗了。 [00:04:08] 你确实学会了一点什么,但是你学会的东西,AI都会做。 [00:04:13] 然后你也很迷茫。 [00:04:15] 然后这个时候,我觉得同学们最切实的,你们现在最痛苦的事情就是抱怨。 [00:04:23] 你们投了很多的简历,海投很多的地方的简历。 [00:04:29] 然后我其实也收到了很多这样的简历。 [00:04:33] 我觉得很糟糕啊,这是一个简历。 [00:04:41] 首先,所有这一切都是AI做的。 [00:04:45] 我没有干任何事,我就告诉他,有一份简历,然后我现在需要在上课的时候展示一下。 [00:04:52] 我需要把他个人信息给取掉。 [00:04:55] 这是他把他字符替换成unicode的方块。 [00:04:59] 如果复制粘贴的话,你会看到这是一个黑色的方块的字符。 [00:05:04] OK,希望他把这个隐私都隐掉了。 [00:05:09] 然后就这样的一份简历。 [00:05:13] 就非常完美的简历啊,一个CCF期刊列表上面的论文。 [00:05:20] 这个简历对我来说是一个零分的简历。 [00:05:23] 因为没有额外的信息,它甚至没有一个github的链接,没有一个个人的主页,没有一篇这个东西preprint。 [00:05:33] 这是一个,我不知道这位同学发生了什么。 [00:05:39] 但是对我来说,这样的一份简历非常的糟糕。 [00:05:44] 然后更糟糕的是,我收到过无数份这样的简历。 [00:05:49] 然后可能你们的简历多多少少也是长这个样子的。 [00:05:52] 然后这个时候就你发现,你和你的竞争者已经无法区分了。 [00:05:57] 所有人都是,我有一大堆实习,我有一大堆奖项,我有一大堆论文,我有一大堆竞赛。 [00:06:01] 也是長這個樣子的 [00:06:03] 然後這個時候就你發現 [00:06:05] 你和你的競爭者已經無法區分了 [00:06:07] 所有人都是 [00:06:08] 我有一大堆實習 [00:06:09] 一大堆獎項 [00:06:10] 一大堆論文 [00:06:11] 一大堆競賽 [00:06:13] 那是什麼能 [00:06:15] 讓你從這些簡歷裡面脫穎而出 [00:06:17] 如果剛才那份簡歷 [00:06:19] 都被我認為是零分的簡歷 [00:06:21] 你們應該怎麼樣 [00:06:23] 向你的未來的導師 [00:06:25] 去展示你自己 [00:06:27] 所以我相信在座同學都非常的 [00:06:29] 焦慮 [00:06:30] 當然好消息是我覺得我希望用 [00:06:32] 這一門課來緩解一下 [00:06:35] 大家這樣的焦慮的情緒 [00:06:37] 更多的是帶大家覺得 [00:06:39] 還原一種快樂 [00:06:41] Vibe Coding的快樂 [00:06:42] 因為我覺得在Vibe Coding中我得到了 [00:06:44] 很多的快樂 [00:06:45] 然後在這個快樂當中你又能 [00:06:47] 一定程度上 [00:06:49] 去理解 [00:06:50] 比如說軟件工程是怎麼工作的 [00:06:51] 然後能做出 [00:06:53] 做出一些有趣的東西 [00:06:54] 然後能讓你的簡歷顯得 [00:06:56] 顯得更好 [00:06:57] 對我來說 [00:06:58] 我覺得你有一篇發表論文 [00:07:00] 可能是一個減分項 [00:07:02] 對很多其他人來說 [00:07:04] 可能還不是的 [00:07:06] 所以我講了為什麼 [00:07:07] 我要來上這門課 [00:07:09] 然後 [00:07:10] 我們來講講這門課 [00:07:12] 到底打算講什麼 [00:07:14] 這門課的題目叫 [00:07:16] 生成式軟件工程 [00:07:17] 所以我其實是一門軟件工程課 [00:07:19] 軟件工程做什麼 [00:07:20] 軟件工程做的事情很簡單 [00:07:22] 怎麼樣讓軟件工程不失敗 [00:07:24] 怎麼樣造出一個 [00:07:26] 一個軟件來 [00:07:28] 我們經常聽說的 [00:07:30] 你們作為人 [00:07:32] 和AI比你的優勢在哪裡 [00:07:34] 你可以坐牢 [00:07:35] AI不能 [00:07:37] 實際上我覺得大學裡面 [00:07:39] 能教你的 [00:07:41] 或者說能 [00:07:43] OK你作為人吧 [00:07:45] 或者說你在大學畢業的時候 [00:07:46] 你能擁有的能力 [00:07:47] 比較重要的 [00:07:48] 第一個是信息差 [00:07:49] 這是人類社會比較 [00:07:51] 也不能說可悲吧 [00:07:53] 人類社會要 [00:07:54] 要進步必須的 [00:07:56] 必須有的事情 [00:07:58] 你有信息差 [00:07:59] 你有別人不知道的信息 [00:08:00] 你才能做別人做不到的事 [00:08:02] 所以在學校裡面 [00:08:03] 多多少少 [00:08:04] 你們也會有這種惡性競爭 [00:08:06] 你假想一個情況 [00:08:07] 你擁有一個往年試卷 [00:08:09] 然後這個往年試卷 [00:08:10] 別人都沒有 [00:08:11] 然後你就可以在競爭當中 [00:08:13] 生出這種 [00:08:14] 你們身邊的信息差 [00:08:16] 當然還有很多 [00:08:18] 其他的不能說的信息差 [00:08:20] 在社會上面 [00:08:21] 廣泛的存在 [00:08:23] 除了信息差以外 [00:08:24] 你作為一個人的優勢 [00:08:26] 是你可以坐牢 [00:08:27] 但是大學裡面 [00:08:28] 真正教你的 [00:08:29] 是怎麼樣成為一個更好的人 [00:08:31] 就是你能夠駕馭 [00:08:32] 別人駕馭不了的東西 [00:08:33] 你在大學畢業的時候 [00:08:34] 你可以說 [00:08:35] OK 我是一個更好的人 [00:08:36] 然後我有一個別人沒有的能力 [00:08:39] 所以可能這門課試著 [00:08:42] 去幫大家 [00:08:44] 建立駕馭人工智能的威力 [00:08:48] 所以這門課怎麼上 [00:08:50] 怎麼上 [00:08:51] 用一個案例為主的 [00:08:53] 比較鬆散的組織 [00:08:54] 所以如果你們有興趣來 [00:08:56] 比如說想跟我討論一下的同學 [00:08:58] 想要挑戰 [00:08:59] 我說這個老師 [00:09:00] 你這樣做不對 [00:09:01] 那就歡迎大家來線下 [00:09:04] 然後如果你是一個 [00:09:05] 聽課型的同學 [00:09:06] 就是你希望從這門課裡面 [00:09:08] 獲取知識 [00:09:09] 那我是完全建議大家 [00:09:11] 就既不用到課 [00:09:13] 也不用看直播 [00:09:14] 因為我今年也想 [00:09:17] 做一個非常有趣的嘗試 [00:09:20] 你已經看到了 [00:09:21] 這是我的slides [00:09:23] 對吧 [00:09:24] 這是我的slides [00:09:25] 然後我按F5的時候可以播放 [00:09:27] 然後你可以看到 [00:09:28] 這個F5播放的slides [00:09:30] 和剛才那個Markdown [00:09:32] 是有點不一樣的 [00:09:33] 我把它關掉 [00:09:38] 左邊是我上課之前寫的講義 [00:09:41] 相當於我會先想好 [00:09:43] 我今天上課的時候 [00:09:44] 大概在這個時間應該講什麼 [00:09:47] 舉什麼樣的例子 [00:09:48] 相當於我要約束好AI做什麼 [00:09:51] 然後當你看到F5播放這個slides的時候 [00:09:53] 有這個紫色的部分 [00:09:55] 紫色的部分就是 [00:09:56] GPT-5.6Soul [00:09:57] 給我添油加醋加上去的部分 [00:09:59] 我有一個提示詞一會兒 [00:10:02] 我現在應該就可以給大家看一下 [00:10:09] 有一個提示詞大概是這樣 [00:10:12] 就一個skill叫make slides [00:10:16] 然後我就可以從一個 [00:10:18] 我的一個Markdown [00:10:19] 就我寫好的那個演講稿裡面 [00:10:21] 讓他添油加醋的去做點有趣的事情 [00:10:25] 比如說 [00:10:27] 比如說我有一個 [00:10:31] 類似於我的AI梗同學的skill [00:10:35] 我會讓他生成三個subagent [00:10:38] 然後給他們賦予不同的personality [00:10:41] 這個非常有效果 [00:10:44] 有的agent會幹這個 [00:10:45] 有的agent會幹那個 [00:10:46] 它在隔離的上下文裡 [00:10:47] 然後最後我的主agent會回來彙總 [00:10:50] 這樣我就可以通過算力來換智力 [00:10:53] 我付出更多的算力 [00:10:54] 我就有更多的智力 [00:10:55] 所以我其實經過對比了 [00:10:57] 我換了幾個版本的提示詞 [00:11:00] 然後每一個版本提示詞 [00:11:01] 我都會重新生成一次 [00:11:02] 然後我最後會有一個review [00:11:04] 另外一個別的模型 [00:11:06] 在盲評 [00:11:08] 到底哪一個生成的slides的質量比較高 [00:11:12] 然後我基本上就調到了一個 [00:11:13] 可能相對來說 [00:11:15] 質量比較高的slides [00:11:17] 所以你看到比如說圖片 [00:11:18] 全部都是生成的 [00:11:20] 所有的圖片都是生成的 [00:11:24] 所以我希望的是探索一條 [00:11:27] 能夠真正殺死大學所有人的路徑 [00:11:31] 我認為如果你是來學習的 [00:11:33] 那更高效的方法 [00:11:35] 比如說我做一個老師 [00:11:36] 我應該思考的是怎麼樣 [00:11:38] 把知識以更好的方式呈現給大家 [00:11:41] 而我的答案是 [00:11:43] 我應該在上課的時候 [00:11:45] 上課是一種表演 [00:11:47] 比如說我是一個演員 [00:11:49] 要調動大家的情緒 [00:11:51] 然後我上課的時候跟大家交流 [00:11:53] 然後根據我的預先設定好的劇本 [00:11:57] 去做一場演出 [00:11:59] 然後在演出完了以後 [00:12:00] 我需要做一件很重要的事是 [00:12:02] 我要review我今天的表演 [00:12:05] 因為我有的時候 [00:12:06] 我今天舉這個例子可能不是特別的恰當 [00:12:08] 或者在我回過頭來的時候 [00:12:11] 我想到也許我講另外一個案例 [00:12:13] 大家能夠更加的感同身受 [00:12:15] 因為你看到我在上課的時候 [00:12:17] 有一些部分是即興的 [00:12:18] 但即興的一個其實是不完美的 [00:12:20] 而我在課後 [00:12:22] 我會把我的課程 [00:12:23] 因為我錄像了 [00:12:24] 大家看到 [00:12:25] 我可以把課程的錄像 [00:12:28] 切片 [00:12:29] 重新整理成片段 [00:12:32] 因為我是從 [00:12:34] 這樣的content as code來的 [00:12:36] everything is code [00:12:40] 我就可以把我上課的那個 [00:12:42] 錄像 [00:12:43] 就這次的表演 [00:12:44] 重新回到這個code上 [00:12:46] 把它變得更豐富 [00:12:47] 然後我不就實現了數字永生了嗎 [00:12:50] 我就實現了一個課程的 [00:12:52] 數字永生 [00:12:54] 對 [00:12:57] 然後你看到就是我 [00:12:58] 我的這一套slides是怎麼工作的 [00:13:01] 我的這個流程是怎麼工作的 [00:13:02] everything is code [00:13:04] 你能看到這個世界裡面的一切 [00:13:06] 都可以用代碼來審查 [00:13:09] 包括這個桌子 [00:13:10] Computer Aided Design, CAD [00:13:12] 這個桌子一支電腦 [00:13:15] 那這個slides是怎麼工作 [00:13:17] 剛才你看那個markdown是Source of Truth [00:13:20] 然後你看到的所有的其他東西 [00:13:22] 圖片 [00:13:23] 幻燈片全部都是 [00:13:25] AIGC [00:13:26] 然後我會 [00:13:28] 我會把這個選中的snippet [00:13:30] 由agent去擴寫 [00:13:31] 變成markdown slides [00:13:32] 再到瀏覽器裡面 [00:13:34] 渲染出來 [00:13:36] 然後 [00:13:38] 我希望的是能夠切片的方式 [00:13:40] 得到一個完美的 [00:13:42] 比如說我今天要講生成式軟件工程 [00:13:44] 它的要點是什麼 [00:13:46] 邏輯是什麼 [00:13:47] 第一節課應該怎麼上 [00:13:49] 沉澱成一個程序 [00:13:51] 然後這個程序 [00:13:52] 也許現在是由我維護的 [00:13:54] 也許比如說有一天我不維護了 [00:13:55] 我操作系統課我現在不上了 [00:13:57] 我會把操作系統課 [00:13:58] 我的B站的錄像 [00:13:59] 整理成這樣的切片 [00:14:00] 然後可以由全世界的人來維護它 [00:14:03] 你想要定制一個什麼樣的 [00:14:05] 我的操作系統課 [00:14:06] 你就可以把它定制成什麼樣子 [00:14:08] 然後這不就把所有的 [00:14:10] 這個 [00:14:11] 大學 [00:14:12] 教課的方式給列入了嗎 [00:14:14] 我覺得這是一個 [00:14:15] 可能實現的路線 [00:14:16] 所以我會在這門課上 [00:14:17] 做一個比較輕的嘗試 [00:14:19] 也歡迎大家隨時可以給到我 [00:14:21] 反饋 [00:14:24] OK好 [00:14:26] 所以我這門課 [00:14:29] 的policy是 [00:14:30] 我希望 [00:14:32] 重新找回同學們心中在 [00:14:35] 大學的時候那種 [00:14:36] 上課耽誤學習的感覺 [00:14:38] 就雖然可能你們還是要上課 [00:14:40] 但我推薦大家第一個 [00:14:41] 你們可能可以不要上課 [00:14:43] 然後你們可以去在這門課上 [00:14:46] 實踐 [00:14:47] 我會帶著大家實踐 [00:14:48] 我後面有很多真正實踐的案例 [00:14:51] 然後讓你們知道在AI的時代 [00:14:53] 你們學習的方式變了 [00:14:54] 你們工作的方式也變了 [00:14:56] 你們可以盡快地適應這樣的一個 [00:14:58] 非常有趣的時代 [00:15:00] 然後我的要求是 [00:15:01] 禁止古法編程 [00:15:02] 我相信你們 [00:15:04] 個個都是古法編程的好手 [00:15:06] 因為你們要考試 [00:15:07] 馬上你們要保研要機試了 [00:15:09] 要機試的時候就把你們一關 [00:15:10] 小黑屋裡閉關 [00:15:11] 你們看過我以前出的題 [00:15:12] 然後就嚇尿了 [00:15:13] 然後趕快再去LeetCode上 [00:15:15] 再刷一下 [00:15:16] 但我覺得總有一天這個事情 [00:15:20] 會改變的 [00:15:21] 可能從上而下傳導 [00:15:24] 不會那麼快 [00:15:25] 你要改變一個體系很難 [00:15:27] 但是我非常想要 [00:15:30] 撕開一個小的口子 [00:15:33] 然後有幾個policy [00:15:34] 第一個token自費 [00:15:36] 因為本來我是想去 [00:15:38] 拉一些token的贊助的 [00:15:40] 想拉一些贊助token [00:15:41] 但是當我看到選課的學生 [00:15:44] 數量的時候 [00:15:46] 我就想還是算了 [00:15:47] 我也沒有必要再去 [00:15:49] 跟他們拉著臉去 [00:15:52] 要好多好多的token [00:15:53] 也比較麻煩 [00:15:54] 首先我有個個人觀點 [00:15:56] 如果你們手上沒有token [00:15:57] 沒有付費的token同學 [00:15:58] 就應該立即退學 [00:16:00] 你可能確實不需要token maxing [00:16:03] 就在矽谷它有一種 [00:16:05] 你要死命地燒token [00:16:06] 你沒有必要 [00:16:08] 我的課上 [00:16:09] 我在課上做的演示 [00:16:12] 除了我這個slides的生成 [00:16:14] 是用一個更聰明的模型 [00:16:15] 我覺得它能給我更好的質量以外 [00:16:18] 你看到的這個幻燈片 [00:16:20] 你看到的整個 [00:16:24] 這裡的lecture裡面的東西 [00:16:27] 包括這些生成的這些assets [00:16:30] 全部都是DeepSeek V4 Flash [00:16:32] 也就是說我在這門課上 [00:16:33] 會用一個足夠便宜 [00:16:35] 但是智能相對有一些的模型 [00:16:38] 來帶大家完成這些事情 [00:16:41] 然後我也知道大家都是夜貓子 [00:16:44] 大家是Computer Science的學生 [00:16:45] 你們喜歡在夜裡工作 [00:16:47] 然後在夜裡工作 [00:16:48] DeepSeek是比較便宜的 [00:16:49] 我建議大家在梁文谷的時間 [00:16:52] 因為你看白天 [00:16:54] 看得我這個更好 [00:16:56] 在白天你們要上課 [00:17:00] 正好是梁文峰時間 [00:17:03] 然後等你們回去 [00:17:04] 回去做作業的時候 [00:17:05] 回去做作業的時候 [00:17:06] 就是梁文谷的時間 [00:17:08] 所以token非常重要 [00:17:09] 你們每一個同學 [00:17:10] 你們去DeepSeek充100塊 [00:17:12] 這個好像還OK [00:17:14] 然後對還OK [00:17:16] 如果實在token有困難的同學 [00:17:19] 可能可以聯繫我 [00:17:20] 來幫助大家想一點辦法 [00:17:24] 然後還有 [00:17:25] 還有一個很重要的policy [00:17:27] 我希望用一個通過 [00:17:28] 或者不通過來evaluate的課程 [00:17:30] 所以我在申請這門課程的時候 [00:17:32] 我的考核方式就填的是 [00:17:34] 通過和不通過 [00:17:35] 但根據教務的反饋是 [00:17:37] 專業選修課大家是不會做成這樣 [00:17:40] 一般來說都是什麼形勢與政策 [00:17:42] 通過和不通過 [00:17:44] 但因為我們現在 [00:17:46] 我覺得還不知道這個 [00:17:48] 評判標準是什麼 [00:17:49] 你可能用更好的模型 [00:17:52] 你就可以有更好的質量 [00:17:54] 同一個任務 [00:17:55] 你讓Claude來做 [00:17:57] 就是比DeepSeek V4 Flash要做得好 [00:17:59] 這個做得快又好 [00:18:00] 沒辦法 [00:18:02] 我們沒有辦法限制大家用什麼樣的模型 [00:18:06] 怎麼評判 [00:18:07] 尤其是這樣的一個Vibe Coding [00:18:08] 我們是做project的 [00:18:10] 課程 [00:18:11] 我大概我會有一些建議的 [00:18:14] 想就是說 [00:18:16] 我回頭會更新課程網站 [00:18:19] 上面會告訴大家 [00:18:20] OK我建議你們 [00:18:21] 實現一個自己的eval的管理系統 [00:18:24] 然後可以回我的eval [00:18:26] 然後可能我會用一個指定的郵箱 [00:18:28] 給你發郵件 [00:18:29] 然後你可以把郵件回回來 [00:18:30] 你可以做一個常駐 [00:18:31] Vibe Coding的一個這樣的服務 [00:18:32] 跑在你宿舍的一個 [00:18:33] 一直敞開的小電腦上 [00:18:35] OK這就是一個比較不錯的實驗 [00:18:37] 你們有的同學可能會 [00:18:38] 做得複雜一點 [00:18:39] 有的同學做得簡單一點 [00:18:40] 我可能會用我的郵箱 [00:18:42] 去跟大家發郵件通信 [00:18:44] OK [00:18:45] 但到底什麼叫做得好 [00:18:47] 什麼叫做得不好 [00:18:48] 到底該給多少分 [00:18:50] 我覺得在這個時代 [00:18:51] 分數已經變得不那麼重要了 [00:18:53] 而真正重要的 [00:18:54] 就是在你最後找工作 [00:18:56] 或者在你保研的那一刻 [00:18:58] 投入那個簡歷上面 [00:18:59] 有什麼東西 [00:19:00] 然後其實對你們來說 [00:19:02] 就只有那一個考試 [00:19:04] 當然我覺得比較糟糕的是 [00:19:06] 你為了能夠走到那一刻 [00:19:08] 你還需要一個比較好的GPA [00:19:10] 你還得去reward hacking [00:19:12] 還得去overfit [00:19:14] 那個考試的題目 [00:19:15] 但最終 [00:19:16] 檢驗你大學階段 [00:19:18] 是你那一個交出去的簡歷 [00:19:20] 它能不能帶你到 [00:19:21] 下一個更高的平台 [00:19:23] 你敢不敢 [00:19:24] 給DP投簡歷 [00:19:26] 他們那個bar還是比較高的 [00:19:28] 所以我最終希望的是這門課 [00:19:30] 大家能夠最後在簡歷裡面寫一個 [00:19:32] 我在生成式軟件工程裡面 [00:19:33] 實現了這個ABCDE [00:19:35] 然後有很多鏈接 [00:19:37] 然後它是一個 [00:19:38] 然後每一個東西都是 [00:19:39] 都做得非常漂亮 [00:19:41] 然後你每一個都說 [00:19:42] 你完成了設計實現 [00:19:44] 然後它這裡面了不起的地方 [00:19:46] 地方是什麼 [00:19:48] 我覺得最終 [00:19:49] 有可能的是 [00:19:50] 如果每一個人的電腦 [00:19:52] 上面都是安裝一個監控 [00:19:55] 那我就知道你大學四年 [00:19:56] 幹的所有的事情 [00:19:57] 然後我的AI就可以評判 [00:19:59] 你大學四年 [00:20:00] 到底度過了一個怎麼樣 [00:20:01] 大學四年 [00:20:02] 當然這是個非常恐怖的 [00:20:03] 這是個非常非常恐怖的事情 [00:20:05] 因為你摸的每一個魚 [00:20:07] 你看的每一個 [00:20:08] 不想讓別人知道的小電影 [00:20:10] 它都在你的電腦上發生 [00:20:12] 所以都知道 [00:20:14] 我們不知道什麼時候 [00:20:16] 人類社會會演繹到那個程度 [00:20:18] 但是保持open [00:20:20] 這是我們的課程的policy [00:20:24] 大概是我課程開了一個 [00:20:27] 開了一個頭 [00:20:30] 接下來我就可以 [00:20:31] 進入技術性的內容了 [00:20:32] 首先講一講 [00:20:34] 什麼是大語言模型 [00:20:35] 我今天不講什麼是大語言模型 [00:20:38] 大語言模型就是一個概率分布 [00:20:40] 跟你們在概率統計課上 [00:20:42] 學的那個拋硬幣 [00:20:44] 我知道我拋了六次硬幣 [00:20:46] 加起來是40 [00:20:48] 然後你問 [00:20:49] 第一次拋出1的概率是多少 [00:20:52] 你們在概率課上 [00:20:53] 都做過類似的題目 [00:20:55] 沒有任何的區別 [00:20:56] 它是一個學到的概率分布 [00:20:58] 它給一個很長的文本 [00:21:00] 就給你一本書 [00:21:02] 我帶了一本書 [00:21:04] 好多文本 [00:21:06] 給你一本書 [00:21:08] 當然可以是文本 [00:21:09] 也可能是圖像 [00:21:11] 一本書 [00:21:12] 然後這本書到最後就結束了 [00:21:14] 但你可以在這個書的後面 [00:21:16] 再寫幾個字 [00:21:17] 比如說能不能幫我總結一下 [00:21:18] 這本書 [00:21:20] 接下來大圓模型 [00:21:21] 大圓模型就會不斷地 [00:21:22] 預測它的下一個token的概率 [00:21:24] 每次輸出 [00:21:25] 你可以理解成 [00:21:26] 輸出一個字圖 [00:21:27] 一個字圖 [00:21:28] 然後這個模型很大 [00:21:29] 它見過世界上所有東西 [00:21:31] 然後訓練它很難 [00:21:33] 所以這是為什麼現在 [00:21:34] Bronchier Lab這麼牛逼 [00:21:36] 但這門課 [00:21:38] 是站在使用者的視角上 [00:21:40] 也就是說你們只要知道 [00:21:41] 存在一個東西叫大圓模型 [00:21:43] 你可以打開Deepseq的網頁API [00:21:45] 現在我要登錄 [00:21:47] 那我就不登錄 [00:21:48] 打開網頁API [00:21:49] 什麼是大圓模型 [00:21:50] 我怎麼樣體驗它 [00:21:52] 然後它會告訴你 [00:21:53] 現在就在體驗大圓模型 [00:21:55] 所以你不需要 [00:21:56] 任何大圓模型的知識 [00:21:59] 然後 [00:22:01] 大圓模型是怎麼樣 [00:22:02] 進入我們的世界的 [00:22:03] 我第一次被大圓模型 [00:22:05] 按在地上打 [00:22:07] 是給我5歲的孩子 [00:22:09] 2023年的時候 [00:22:10] GPD-4的時代 [00:22:11] GPD-4是一個 [00:22:12] 幻覺非常嚴重的模型 [00:22:13] 給我5歲的孩子 [00:22:14] 解釋什麼是 [00:22:15] 掃描電子顯微鏡 [00:22:17] 然後我大概有個 [00:22:18] 這樣的prompt [00:22:19] 那個時候我們就玩 [00:22:20] prompt engineering [00:22:22] 說我希望用 [00:22:23] 樸素的語言 [00:22:24] 打一個合適的比方 [00:22:25] 幫助他理解這個事 [00:22:27] 有一天我給我的 [00:22:28] 5歲的孩子 [00:22:29] 講一個什麼故事的時候 [00:22:30] 不知道為什麼 [00:22:31] 講到了這個 [00:22:32] 掃描電子顯微鏡 [00:22:33] 我講不下去了 [00:22:34] 然後我講不下去以後 [00:22:35] GPD-4給了我一個比方 [00:22:37] 他說 [00:22:38] 他比這個比方打得還好 [00:22:40] 這個比方就是 [00:22:41] GPD-4給的 [00:22:42] 我讓他寫了 [00:22:44] 他說 [00:22:46] 你現在有一個山 [00:22:47] 這個山的形狀你看不到 [00:22:50] 你閉著眼睛看不到 [00:22:52] 但你又想知道 [00:22:53] 那個山是什麼形狀 [00:22:55] 那怎麼辦 [00:22:56] 你就對那個山扔球 [00:22:58] 扔石頭 [00:22:59] 閉著眼睛扔石頭 [00:23:01] 然後你扔石頭的時候 [00:23:02] 有的時候你石頭就扔 [00:23:03] 你對著這個方向扔 [00:23:05] 這個石頭就穿過去了 [00:23:07] 對著這個方向扔 [00:23:09] 石頭就彈回來了 [00:23:10] 彈回來了你能聽到聲音 [00:23:11] 然後你就能通過這個 [00:23:13] 哪些地方穿過去了 [00:23:15] 哪些地方沒有穿過去 [00:23:16] 像Retracing一樣 [00:23:18] 你就可以推測出 [00:23:20] 這個山的形狀 [00:23:21] 小朋友大概聽懂了 [00:23:22] 我當小朋友也不可能百分百聽懂 [00:23:24] 但是他打了一個 [00:23:25] 就讓我覺得非常 [00:23:26] 震驚的比方 [00:23:28] 就首先他有這個知識 [00:23:30] 第二他 [00:23:31] 我後來還特意去查了資料 [00:23:33] 他這個比方打的是對的 [00:23:35] 然後你看GPD-5.6 [00:23:36] 他給了更嚴謹的一個 [00:23:38] 一個 [00:23:39] 而且他因為有reasoning [00:23:41] 所以 [00:23:42] 他還給了更好的 [00:23:44] 這個 [00:23:45] 對 [00:23:46] 更好的解釋 [00:23:47] GPD-4的時代 [00:23:48] 然後我們用GPD-4 [00:23:50] 這個模型就去 [00:23:51] 生成奇怪的東西 [00:23:52] 就一個prime的 [00:23:53] 可以給GCDLVM找到 [00:23:55] 150個 [00:23:56] 然後 [00:23:57] 在今天你這個工作就完全 [00:23:59] 就在GPD-5.6的時代 [00:24:01] 就是一句話的事情 [00:24:03] 真的是 [00:24:04] 不需要再做任何的 [00:24:05] 為GPD的特別的調整 [00:24:09] 然後從GPD [00:24:10] 就從一個 [00:24:11] 能 [00:24:12] 預測下一個token的概率分布 [00:24:14] 隨著 [00:24:16] 大家發現模型可以 [00:24:18] 輸出越來越長的文本 [00:24:21] 也接受越來越 [00:24:22] 長的上下文的時候 [00:24:24] agent就出現 [00:24:26] 對吧 [00:24:27] 他有了推理的模型 [00:24:28] 有了推理的模型 [00:24:29] 然後 [00:24:30] 有了coding react式的agent [00:24:32] agent有了 [00:24:33] agent就是剛才那個語言的模型 [00:24:35] 語言的模型 [00:24:36] 他可以輸出下一個token [00:24:37] 那我就可以讓他 [00:24:38] 輸出一個特殊的token [00:24:40] 說能不能 [00:24:41] 叫用一個bash程序 [00:24:43] 對吧 [00:24:44] 然後這個bash程序會運行 [00:24:45] 運行和bash程序的結果 [00:24:47] 會重新送回到 [00:24:49] 這個agent的loop裡 [00:24:50] 這樣agent就可以自主運行 [00:24:52] 對吧 [00:24:53] 你就可以給他一個 [00:24:54] 比較複雜的任務 [00:24:55] 他可以不斷地嘗試 [00:24:56] 嘗試嘗試嘗試 [00:24:58] 你們看到的 [00:25:00] 比如說 [00:25:01] 我 [00:25:03] 我還是做了一些配置的 [00:25:04] 你們看到 [00:25:05] 我配置了一個 [00:25:06] sva的雙口管理器 [00:25:08] 然後這個sva雙口管理器 [00:25:09] 然後這個sva雙口管理器 [00:25:10] 為課堂展示做了優化 [00:25:12] 對吧 [00:25:13] 他的對比度比較高 [00:25:14] 然後他把什麼頂纜 [00:25:15] 全部都去掉了 [00:25:16] 這樣你們在上課的時候 [00:25:17] 可以看得更清楚 [00:25:20] 然後我還做了一些 [00:25:21] 比如說 [00:25:22] 你們都喜歡用top這個命令 [00:25:25] 來查看系統的進程 [00:25:27] 如果你不做定制 [00:25:29] 你看到的就是一個 [00:25:30] 比較土的top [00:25:32] 對吧 [00:25:33] 但是我顯然 [00:25:34] 我這裡有一個 [00:25:35] 更fancy的top [00:25:36] 你們看到我的obs在 [00:25:37] obs還在嗎 [00:25:38] obs還在浪費我的算力 [00:25:41] 然後我的內存還有多少 [00:25:44] 然後我把它配置成了一個 [00:25:46] 相對來說比較現代的中段 [00:25:48] 比如說 [00:25:49] 你們看到 [00:25:50] 你們看到我在ls的時候 [00:25:54] 我這樣用的不是ls [00:25:55] 對吧 [00:25:56] 這個細節大家剛才有沒有注意到 [00:26:00] 我在ls的時候 [00:26:01] 自動把ls換成了 [00:26:03] eza這個命令 [00:26:06] 當我要find的時候 [00:26:08] 它也自動幫我換成了fd [00:26:10] fd的行為和find稍微有點不一樣 [00:26:13] 然後你看到我ls的 [00:26:14] 這個輸出裡面又有 [00:26:16] 這還是很fancy的 [00:26:18] 這是一個目錄 [00:26:19] 這是一個markdown [00:26:20] 這是一個makefile [00:26:22] 還有特殊顯示的效果 [00:26:25] 然後我所有的這些配置 [00:26:26] 都是用agent的 [00:26:28] 都是用agent的配置的 [00:26:30] 我只有一個prompt [00:26:31] 說你能不能幫我 [00:26:32] 把我現在的命令行中段 [00:26:34] 幫我把我的系統 [00:26:35] 所以都配置成 [00:26:37] 這個 [00:26:38] 現代的樣子 [00:26:39] 比較好用的樣子 [00:26:40] 結束了 [00:26:41] deepseqv4flash [00:26:43] 沒有更好的模型 [00:26:45] 所以在今天就是 [00:26:47] 有了react這種類型的agent [00:26:49] 它就不停地去 [00:26:50] conversion裡面去改改改 [00:26:52] 它錯了以後它會去試 [00:26:54] 試別的方法 [00:26:55] 然後最後它把任務能完成 [00:26:58] 所以就在大概去年的時候 [00:27:00] 我 [00:27:02] 我去年的時候上 [00:27:04] 操系統的時候 [00:27:05] 那個agent還不怎麼能用 [00:27:07] 就各種出錯 [00:27:08] 然後任務完成不了 [00:27:09] 它就停下來了 [00:27:10] 但是到今年我上操系統課的時候 [00:27:12] 這個agent就非常非常能用了 [00:27:14] 到現在你看到agent產品爆發 [00:27:16] 到處鋪天蓋地 [00:27:17] 都是walkbody的廣告 [00:27:19] 對吧 [00:27:20] 像walkbody豆包的agent就是 [00:27:23] 這樣的react類型的agent [00:27:28] 但這其實也 [00:27:29] 就你們這個好像差開了 [00:27:32] 差開了這個話題了 [00:27:35] 這個故事其實遠遠沒有結束 [00:27:38] 今天你們已經感受到agent非常巧 [00:27:40] 但是 [00:27:42] 我認為agent的能力還遠遠沒有 [00:27:45] 被釋放出來 [00:27:47] 我們next token prediction [00:27:50] 其實是一個 [00:27:52] 我覺得是一個效率很低的模型 [00:27:54] 比如說 [00:27:55] 這裡有一個 [00:27:57] diffusion model [00:27:59] 一個diffusion model [00:28:00] 比如說我可以說 [00:28:02] AIS log normal [00:28:08] 我可以讓它給我寫一個什麼樣的AIS log [00:28:11] 你看它的過程 [00:28:15] 你看它是一個 [00:28:16] 從一個隨機的噪聲開始 [00:28:18] 就像Diffuse那個圖片一樣 [00:28:20] 一點一點一點一點 [00:28:23] 就生成了一個很長的東西 [00:28:25] 它可以生成一個很長的東西 [00:28:26] 就像人做夢一樣 [00:28:27] 你在你的夢境當中 [00:28:28] 一點一點把一個東西想得 [00:28:30] 看得越來越清楚越來越清楚 [00:28:33] 我們有很多 [00:28:37] 我們有很多未來的可能性 [00:28:40] 這種diffusion類型的語言模型 [00:28:43] 甚至是 [00:28:44] 我不是predict next token [00:28:47] 我可以把上下文回過去改 [00:28:49] 隨時可以把很長的上下文裁短 [00:28:52] 這些都是今天 [00:28:54] 很多人在研究的東西 [00:28:58] 現在的模型已經非常巧了 [00:29:00] 如果我們三個月以後 [00:29:02] 又有一個新的突破 [00:29:04] 模型變得更強了 [00:29:05] 一年以後模型又突破了 [00:29:07] 又變得更強了 [00:29:08] 整個AI的research [00:29:11] 大家都在賭這件事情要發生 [00:29:13] 摩爾定律還在 [00:29:15] 我現在很難想 [00:29:17] 未來會變成什麼 [00:29:19] 我不能預測未來 [00:29:20] 到底哪一條路線會勝出 [00:29:23] 是哪一種模型會勝出 [00:29:25] 但是你可以預見的是 [00:29:27] 這個世界肯定會變得 [00:29:29] 非常的不一樣 [00:29:31] 那在這個世界上 [00:29:33] 我們應該怎麼辦 [00:29:36] 是每一個同學我覺得都值得 [00:29:38] 好好考慮一下的問題 [00:29:44] 嚇唬人的事情說完了 [00:29:46] 我們可以吸一口氣 [00:29:48] 我可以真的告訴大家 [00:29:52] 應該怎麼樣 [00:29:55] 怎麼樣來 [00:29:57] 實際操作我們的agent [00:30:00] 對吧 [00:30:01] 這還是這門課主要講的 [00:30:03] 所以我首先站在普通人的視角 [00:30:06] 來給大家科普一下 [00:30:08] 我現在假設大家其實不會用agent [00:30:11] 不太會用agent [00:30:12] 除了什麼 [00:30:13] 幫我把這個作業做了以外 [00:30:14] 從我上個學期看 [00:30:16] 改大家那個期末考試題的感覺 [00:30:18] 好像就是 [00:30:19] 因為我期末考試題最後考了一個 [00:30:21] 如果你要用agent [00:30:23] 給我的課期末考試出一個卷子 [00:30:26] 應該怎麼辦 [00:30:28] 我發現大家用agent的方式 [00:30:31] 可能需要我來稍微解鎖一下 [00:30:34] 也可以跟大家一起探討 [00:30:35] 如果大家有特別好的想法 [00:30:37] 就可以隨時打斷我來說 [00:30:41] 首先 [00:30:42] agent [00:30:43] 作為AI native的一代人 [00:30:46] 你們要知道 [00:30:47] 就是給他一個合適的指令 [00:30:50] 他就可以把這個指令完成 [00:30:55] 我在課上選的是 [00:30:57] 派 [00:31:00] 你只要跟他說就可以了 [00:31:03] 並且你可以寫一些配置文件 [00:31:05] 比如說agents.md [00:31:10] 你可以問他你是誰 [00:31:12] 然後他還說 [00:31:13] 他是生成式軟件工程的教學輔助 [00:31:16] 你可以問他 [00:31:17] 你不就是個模型嗎 [00:31:19] 為什麼還知道生成式軟件工程 [00:31:25] 對吧 [00:31:26] 你可以自由任意的 [00:31:34] 他回答了 [00:31:35] 你看 [00:31:36] 他現在看到的是 [00:31:37] 之所以知道這門課這個倉庫 [00:31:40] agents.md的配置 [00:31:42] 這部分是零式的 [00:31:43] 所以 [00:31:44] 使用agent的第一個原則 [00:31:49] 現在就開始用了 [00:31:50] 第二個原則 [00:31:51] 隨時問他 [00:31:53] 這是最小的第一個原則 [00:31:57] 然後在這個以上 [00:31:59] 其實是你的想像力 [00:32:02] 限制了你的agent的上限 [00:32:06] 所以 [00:32:07] 正好一會客間的時候 [00:32:09] 大家可以想一想 [00:32:10] 你沒有agent做的 [00:32:11] 最酷的一件事情 [00:32:13] 是什麼 [00:32:15] 想像力是你們的上限 [00:32:17] 我的第一個例子是 [00:32:19] 我今天上課的這個系統 [00:32:22] 剛才我給大家展示了 [00:32:24] 我也說了 [00:32:25] 所有的配置安裝都是由AI完成的 [00:32:28] 我要在U盤上 [00:32:30] 這一直以來是我上操系統課的一個特色 [00:32:32] 我會帶一個U盤 [00:32:33] 然後這個U盤裡面裝一個Linux操系統 [00:32:35] 然後這個Linux操系統 [00:32:36] 可以直接插在教室的電腦然後就啟動 [00:32:38] 所以你看到我 [00:32:42] 你可以看到我 [00:32:43] 這是我的U盤 [00:32:45] 然後這是電腦的硬盤 [00:32:47] 我在有一年的操系統課上 [00:32:49] 把這個硬盤給抹掉了 [00:32:51] 然後抹掉以後 [00:32:52] 下一個上課老師就教學師傅了 [00:32:54] 這個 [00:32:56] 對 [00:32:57] 就教學師傅 [00:32:58] 然後為此我來展示操系統的原理 [00:33:03] 裝機是一個很痛苦的事情 [00:33:05] 我曾經是裝機仙人 [00:33:08] 這裡有個知乎鏈接 [00:33:10] 這個是Prier M的時代 [00:33:12] 你看2021年7月 [00:33:14] Prier M的時代 [00:33:15] 我各種定制 [00:33:17] 各種定制系統 [00:33:18] 裝機、裝機仙人 [00:33:21] 裝機仙人現在已經 [00:33:26] 徹底被 [00:33:28] 裝機仙人已經徹底被AI取代了 [00:33:31] 因為我只用了一句話 [00:33:34] 我說你去Mirror.NGU.EDU.CN上 [00:33:37] 找一個得辦13的鏡像 [00:33:39] 把它裝到我的U盤上 [00:33:41] 這時候U盤插在裡面 [00:33:42] 然後確保這個U盤可以啟動 [00:33:45] 然後用模擬期驗證 [00:33:47] 點睛之筆是用模擬期驗證 [00:33:51] 當然我是有腦袋 [00:33:54] 所以我知道它是怎麼完成這個安裝的 [00:33:56] 它裝完了 [00:33:58] 裝完了以後 [00:33:59] 它真的在QEmail裡面啟動 [00:34:01] 然後去看到的那個登錄介面 [00:34:04] 告訴我確實可以登錄了 [00:34:06] 它登錄成功了 [00:34:07] 我剛才我要創建一個用戶 [00:34:09] 用戶名是什麼 [00:34:10] 密碼是什麼 [00:34:12] 它全部都做好 [00:34:14] 驗證完成 [00:34:15] 給我 [00:34:17] 然後完了以後 [00:34:19] 我就啟動了這個USB的鏡像 [00:34:22] 啟動了以後 [00:34:23] 我說我要裝一個Tile-based的WindowManager [00:34:27] 你看我現在操作是很順滑的 [00:34:30] 比如說我按Windows加回車 [00:34:32] 它就產生了一個新的窗口在右邊 [00:34:35] 和你們用窗口的方式不太一樣 [00:34:37] 當然我可以比如說Windows加空格 [00:34:39] 把它給你摸出來 [00:34:41] 不會用怎麼辦 [00:34:43] 你可能聽說過在某一個B站的直播間裡面 [00:34:48] 看到有一個同學他用的很酷的東西 [00:34:51] 不會用怎麼辦 [00:34:52] 我直接讓Deepseq V4 Flash [00:34:54] 給我生成了一個文檔 [00:34:57] 說你能不能看一下我系統現在的設置裡面 [00:35:03] 我要做各種事情 [00:35:05] 怎麼辦 [00:35:06] 它告訴我Super加Enter是打開Terminal [00:35:09] Super加D是打開一個App Launcher [00:35:12] 所以比如說 [00:35:14] 比如說我Windows加D [00:35:21] 我就可以打開一個OBS或者Chrome Browser [00:35:25] 所有的文檔 [00:35:26] 包括你看到的中端NewWim的現代配置 [00:35:29] 我沒有看過任何一眼配置文件 [00:35:32] 所有的一切都是用自然元完成的 [00:35:34] 我只是讓它保交付 [00:35:37] 我要什麼你幫我再檢查一下 [00:35:39] 就全部都完成了 [00:35:41] 所以我覺得我畢生的修練 [00:35:43] 我作為一個教Commerce Science的老師 [00:35:48] 我記得我大四的時候 [00:35:50] 可能跟你們一樣大的時候 [00:35:51] 就在看Intel幾千頁的CPU的Specification [00:35:55] 去看每一個CPU的Feature是幹什麼用的 [00:35:58] 然後我就突然覺得在這個時間點 [00:36:01] 有一個人他可以跟我溝通 [00:36:03] 他把這些東西全看了 [00:36:05] 都懂能做對 [00:36:07] 而我現在需要的是解鎖他的能力 [00:36:10] 所以你看到我們在今天 [00:36:12] 你學習知識的方式變了 [00:36:15] 你更多的時候你需要知道他能做什麼 [00:36:19] 你敢知道他能做什麼 [00:36:20] 能做到什麼程度 [00:36:21] 然後你帶著他去做一件更大的 [00:36:24] 他做不到的事情 [00:36:25] 所以人現在唯一的功能 [00:36:29] 就是帶著AI做AI現在做不到的事情 [00:36:32] 一旦如果你沒有這個能力 [00:36:35] 你就立即已經被淘汰了 [00:36:38] 所以你沒有Token [00:36:39] 你沒有Token你就可以立即退運了 [00:36:41] 這是我自己的觀點 [00:36:44] 首先Agent徹底顛覆了計算機 [00:36:46] Commit Science裡面 [00:36:47] 學習曲線態度不想用的瓶頂 [00:36:49] 你想你們都配置過那個漂亮的終端吧 [00:36:51] 你們看那個終端花里胡哨的 [00:36:53] B站上面那些人用的花里胡哨的終端 [00:36:55] 你就想搞一個 [00:36:56] 搞一個以後你改一點點 [00:36:58] 他就給你出錯 [00:37:00] 改一個配置文件 [00:37:01] ZSHRC一改就出錯 [00:37:03] 一改就出錯 [00:37:04] 非常的痛苦 [00:37:07] 有Agent了一點也不痛苦 [00:37:09] 他不僅可以給你改 [00:37:10] 還能事無巨細地解釋為什麼要這樣改 [00:37:13] 你有什麼新的想法 [00:37:14] 一起他就說好好好 [00:37:15] 還給你情緒價值 [00:37:18] 我前幾天在小紅書上發一個解釋 [00:37:21] 為什麼Token比學生好用 [00:37:23] 是因為可以罵他 [00:37:24] 他不會還嘴 [00:37:26] 就是因為我 [00:37:27] 我肯定不能罵學生 [00:37:28] 但是我可以罵這個Agent [00:37:32] 所以誰掌握了AI Agent [00:37:35] 誰就掌握了暴增的學習效率 [00:37:37] 你現在的學習方式你先用好 [00:37:40] 先把東西搞出來 [00:37:42] 再回頭去復盤理解 [00:37:44] 這個效率會比你從零開始 [00:37:46] 一點一點大進步要高很多 [00:37:48] 但這裡面有危險 [00:37:49] 你的理解可能和那個比較好的理解 [00:37:51] 會有差距 [00:37:53] 微懂的我們不知道 [00:37:54] 但是這是一個非常不一樣的事情 [00:38:01] 第二個 [00:38:03] 收發郵件寫草稿 [00:38:05] 我有一個自己的skill [00:38:07] 但是我就不展示了 [00:38:09] 它 [00:38:11] 我的數據庫裡面 [00:38:12] 有我歷史上回過的所有的郵件 [00:38:15] 所以每當我收到一封郵件的時候 [00:38:17] 它會自動把它變成一個已讀的狀態 [00:38:19] 然後自動幫我寫好回覆的草稿 [00:38:22] 用我的口吻 [00:38:23] 雖然我現在覺得它做得還不夠好 [00:38:26] 除了一些簡單的 [00:38:27] 可以直接用它的回覆 [00:38:29] 大部分時候我還得去改 [00:38:33] 但是我得到了AI的bot [00:38:36] 然後 [00:38:37] 它會把重要的 [00:38:38] 比如說郵件裡面的附件 [00:38:41] 比如說 [00:38:42] 如果我收到一張發票 [00:38:45] 它就會把我的發票自動 [00:38:48] 保存到一個指定的歸檔的位置 [00:38:50] 當然這都是我寫好的instructions [00:38:52] 我可以概念什麼事 [00:38:54] 我可以像跟你們的Open Cloud [00:38:56] 或者Hermes一樣 [00:38:58] 但我用的是我自己Apple的reminders [00:39:00] 我可以找到我的手機 [00:39:02] 在我的備忘錄裡加一個說 [00:39:04] 幫我把今天的發票打印出來 [00:39:08] 我覺得我現在就可以做幾件事 [00:39:11] 也就是浪費一張打印機的紙 [00:39:16] 我在一個叫bot的 [00:39:18] 你看現在是空的 [00:39:19] 我在這個bot的地方加一個 [00:39:22] 把我收到的上一個發票打印出來 [00:39:28] 我只要點勾它就commit [00:39:33] 我就多了一個to do的事項 [00:39:35] 就跟你們在Telegram [00:39:36] 跟你的bot聊天是一樣的 [00:39:38] 然後只要等就行了 [00:39:39] 它在後台會處理 [00:39:41] 等到弄好了以後 [00:39:42] 它會重新給我一個推送的通知 [00:39:46] 這個通知會通過我的手錶 [00:39:48] 送到我的 [00:39:49] 通過reminder [00:39:50] 然後送到我的手錶上 [00:39:51] 我的手錶會知道 [00:39:52] 它會告訴我可以打一碼 [00:39:53] 然後我所有的日常的事物 [00:39:55] 都可以交給它來處理 [00:39:57] 前期是我放心的事情 [00:40:03] 我覺得是比Telegram聊天方樣好 [00:40:05] 而且這個流程會不斷的進步 [00:40:07] 在open cloud之前我就這樣 [00:40:10] 然後在open cloud [00:40:12] 我覺得open cloud或者ermis [00:40:14] 不是個人agent產品的 [00:40:18] 個人agent產品的中級型態 [00:40:21] 這個產品還可以做得更好 [00:40:22] 所以未來還有很多的空間 [00:40:26] 還有 [00:40:30] 你們還在讀書嗎 [00:40:33] 你們還看書嗎 [00:40:35] 看 [00:40:36] 你們還看論文嗎 [00:40:37] 看 [00:40:38] 看論文痛苦嗎 [00:40:40] 痛苦 [00:40:41] 痛苦嗎 [00:40:42] 不痛苦 [00:40:44] 大家在笑 [00:40:46] 我是一個很喜歡看書的人 [00:40:48] 我在你們這麼大的時候 [00:40:50] 每年都教科書就要看幾十本 [00:40:52] 還會看很多閒說 [00:40:53] 那我今天已經不看書了 [00:40:57] 我現在已經不看書了 [00:41:01] 但是我還是買了一本 [00:41:02] 因為我要上生存式軟件工程的課 [00:41:05] 所以我又買了一些 [00:41:06] 我帶了幾本來 [00:41:08] 這都是我讀書的時候 [00:41:09] 就仔細看過 [00:41:10] 甚至看過不止一遍的一遍的書 [00:41:12] 這個是 [00:41:16] Frat Brooks的Mythical Mad Monks [00:41:19] 人樂神話 [00:41:20] 這個標題起得非常misleading [00:41:22] 首先什麼是人樂 [00:41:24] 你們想到的是 [00:41:25] 就你想到是那個人和月亮嗎 [00:41:27] 就是每到月亮出來的時候 [00:41:29] 就會變成狼的人嗎 [00:41:30] 這 joke [00:41:34] Mad Monks [00:41:35] 這是一個 [00:41:36] Mad Monks就很好理解的 [00:41:37] 就是當人力 [00:41:39] 人力神話 [00:41:40] 然後這神話也不對 [00:41:41] 神話 [00:41:42] 你們想到神話是什麼 [00:41:43] 什麼盤古開天地 [00:41:44] 是有這種美好的這種 [00:41:46] 這種神話 [00:41:48] 這個書應該叫人樂鬼話 [00:41:50] 人樂是一個 [00:41:52] 這是一個鬼話 [00:41:54] Mythical Mad Monks [00:41:56] 還有一些像這個 [00:42:01] 對 [00:42:02] John Ostrop的 [00:42:03] The Philosopher of Software Design [00:42:05] 這個書非常的緊湊 [00:42:07] 感覺比我當年看的英文版要緊湊一些 [00:42:10] 裡面有很多軟件工程的 [00:42:12] 真正的軟件工程的智慧 [00:42:14] 非常好 [00:42:16] 然後我就讀了 [00:42:18] 我又重溫了一下 [00:42:20] 當年讀書的感覺 [00:42:22] 讀了第一章 [00:42:23] 然後我讀完了第一章以後 [00:42:25] Agent啟動 [00:42:28] 我會怎麼樣讀書 [00:42:30] 對吧 [00:42:31] 我會怎麼樣讀書 [00:42:33] 我比GPT-5.6所有的 [00:42:35] 做得要更好一點 [00:42:38] 大概 [00:42:40] 在這個skill裡的這個部分 [00:42:42] 當然我的 [00:42:43] 我的那個AI梗同學會比 [00:42:45] 會比他更強一點 [00:42:47] 會比他更harsh一些 [00:42:51] 我在這裡為了 [00:42:52] 為了做每一頁slides [00:42:53] 我都會讓GPT-5.6 [00:42:55] 首先 [00:42:56] 去回看人類的歷史 [00:42:59] 人類歷史和我這些相關的這些案例裡面 [00:43:01] 有沒有一些lessons [00:43:03] 一些重要的案例 [00:43:05] 能夠得到啟發和印證的 [00:43:07] 第二個 [00:43:09] 根據我的這個 [00:43:11] 講的這個東西 [00:43:14] 能不能找一些相關工作 [00:43:18] 不僅是在computer science裡 [00:43:20] 然後我會讓他prefer這些 [00:43:21] by recognize high impact [00:43:22] 的results [00:43:23] 當然這是因為是我要上課 [00:43:24] 所以我會希望跟大家講 [00:43:26] 這個經典的東西 [00:43:27] 還有一個比如說 [00:43:28] thinking first principle [00:43:29] 在我的AI梗同學裡面 [00:43:31] 我有更多的這樣的personality [00:43:33] 然後還有隨機性會抽卡 [00:43:34] 然後抽完了以後他們會討論 [00:43:36] 他們會有分歧的觀點 [00:43:37] 討論以後我的主Agent會 [00:43:39] 再把這個分歧的觀點 [00:43:40] 再送給他們回來討論 [00:43:42] 直到收斂為止 [00:43:43] 所以我有一個 [00:43:44] 算力換智力的路 [00:43:46] 然後這樣我就可以去審稿 [00:43:48] 那些論文 [00:43:49] 我會明確的要知道 [00:43:51] 我大概是這樣讀的 [00:43:52] 如果我要review一篇論文 [00:43:54] 或讀一篇論文 [00:43:55] 我會說 [00:43:57] 你從人類已有的知識開始 [00:43:59] 假設人類已有的所有的東西 [00:44:01] 都已經是固定下來的 [00:44:02] 都是trivial的 [00:44:03] 都不能說trivial [00:44:04] 就是說都是已知的 [00:44:06] 然後我要把這篇論文裡面 [00:44:08] 新的東西 [00:44:09] 最少的東西 [00:44:11] 給剝離出來 [00:44:13] 然後這個時候一篇 [00:44:14] 12頁的論文 [00:44:15] 基本上就沒有剩下多少了 [00:44:16] 就會變得非常非常短 [00:44:18] 所以我現在讀論文的效率 [00:44:19] 非常高 [00:44:21] 而且我會跟他chat [00:44:23] 我會拿著論文的原文 [00:44:24] 拿著這個總結 [00:44:25] 拿著分層次的總結 [00:44:26] 我跟他chat [00:44:27] 所以我現在讀一篇論文的效率 [00:44:28] 會比我以前高得多 [00:44:30] 我仍然是讀論文的 [00:44:31] 所以我不是那種 [00:44:33] 只看微信公眾號的老鄧 [00:44:35] 我現在claim我不是 [00:44:36] 我不是看微信公眾號學習的那種 [00:44:38] 我的發票已經打印好了 [00:44:42] 看到我收到一條通知 [00:44:45] 叫發票一打印 [00:44:47] 然後我只要回去到那個打印機上 [00:44:49] 就拿著就可以了 [00:44:51] 所以他可以幹任何事 [00:44:52] 我那台電腦能幹的事情 [00:44:54] 所有的都能幹 [00:44:55] 我很想 [00:44:56] 如果我有時間的話 [00:44:58] 如果我大學倒閉了 [00:45:00] 我就弄一個機械手 [00:45:01] 讓他能夠做更多的事情 [00:45:03] 我現在還做不到 [00:45:05] 但他可以操作我的打印機 [00:45:08] OK [00:45:10] AI梗同學在這裡 [00:45:13] 然後 [00:45:15] 我不僅用AI讀書讀論文 [00:45:19] 我還用AI上B站 [00:45:22] 那當然這個剝奪了你們娛樂的 [00:45:24] 如果你是要娛樂 [00:45:25] 看一個什麼滑翔板瓜的 [00:45:27] 這個衍生視頻 [00:45:28] 那就不要用AI讀了 [00:45:31] 我是怎麼讀的 [00:45:35] 我可以 [00:45:37] 就一個BVID [00:45:38] 給我一個BVID [00:45:39] 比如說這是我上學期的課程 [00:45:42] 給一個BVID [00:45:43] 一個小時27分鐘 [00:45:45] 一般來說我會讀什麼 [00:45:46] 就讀這個Podcast [00:45:47] 比如說這個MATPOC [00:45:49] 又發了一個什麼 [00:45:50] 他的什麼軟電工程實踐 [00:45:52] 其實我覺得他也挺神棍的 [00:45:54] 有些經驗可能不完全適合我們的課程 [00:45:59] 然後我會把它總結成一個 [00:46:01] 自動的圖文的實踐軸 [00:46:05] 然後你看這是整理過的 [00:46:07] 這個文本的質量還是可以的 [00:46:09] 比字幕的質量要高一些 [00:46:13] 這就是全文 [00:46:15] 這個圖文版的圖片會稍微少一些 [00:46:18] 實際上我的截圖的密度會更大一些 [00:46:20] 當我兩幀圖片之間的間隔 [00:46:23] 大到一定程度的時候 [00:46:24] 我就會截圖 [00:46:25] 我就得到了這個視頻所的Ground Truths [00:46:28] 這個時候 [00:46:29] AI梗同學就可以上線了 [00:46:32] AI梗同學會去 [00:46:34] AI梗同學會去消化 [00:46:37] 會為我消化這一個 [00:46:39] 一個多小時的視頻 [00:46:42] 因為它有我的記憶 [00:46:44] 把我認為不需要看 [00:46:46] 就Trivial的東西 [00:46:47] 比如說這裡面所有東西 [00:46:48] 都是我非常清楚的東西 [00:46:50] 那麼我就不需要看它 [00:46:52] 那麼去掉 [00:46:55] 我就可以在幾分鐘的時間裡面 [00:46:57] 看完一個兩個小時的視頻 [00:46:59] 而且我基本上確信 [00:47:01] 我還是很好的知道了那裡面不一樣的東西 [00:47:05] 所以這是一個非常可怕的事情 [00:47:07] 在AI agent的時代 [00:47:09] 會用agent學習的人 [00:47:11] 和不會用agent學習的人 [00:47:13] 他學習的效率差距是10倍100倍 [00:47:16] 那麼你們坐在這 [00:47:18] 你們怎麼和一個10倍100倍的 [00:47:22] 怎麼和一個10倍100倍的人競爭 [00:47:25] 對吧 [00:47:26] 你就回到我一開始的那個問題 [00:47:28] 那個簡歷 [00:47:29] 那個簡歷 [00:47:30] 如果所有人的簡歷都是一樣的 [00:47:32] 那你接下來會想 [00:47:34] 那個沒有給你看到的那個 [00:47:36] 學習效率是你100倍的人 [00:47:38] 他的簡歷是長什麼樣的 [00:47:40] 對吧 [00:47:41] 這是一個非常可怕的事情 [00:47:45] 而更可怕的還在下一節課 [00:47:47] 所以我們課前休息一會 [00:47:49] 你們可以想一想 [00:47:51] 因為我還沒有公開這個課 [00:47:53] 我下面的內容 [00:47:54] 還要給大家留一點驚喜 [00:47:56] 下一節課 [00:47:58] 我再來講更可怕的 [00:48:00] 比剛才更可怕的 [00:48:02] 所以為什麼我要說大學完了 [00:48:04] 人類完了 [00:48:05] 你們總覺得我神鬼 [00:48:08] 但我就是這樣想的 [00:48:11] 而且我非常確信的是 [00:48:12] 世界上肯定有人做得比我更好 [00:48:15] 對吧 [00:48:16] 因為我是一個上上下下的人 [00:48:18] 我沒辦法 [00:48:19] 我就是沒辦法 [00:48:20] 我上上下下 [00:48:21] 比如說我上學期 [00:48:22] 我為了上操系統課 [00:48:23] 我就花了很多的時間 [00:48:25] 那些時間本來 [00:48:26] 如果我 [00:48:27] 我上這個課 [00:48:28] 我就可以用來探索那個 [00:48:29] 我應該就不能這麼搞了 [00:48:34] 我們回來 [00:48:35] 剛才有一個非常好的案例 [00:48:38] 在直播的時候 [00:48:39] 我的USB的攝像頭卡 [00:48:41] 教室裡面大概是這樣的 [00:48:42] 它有一個採集卡 [00:48:44] 然後那個視頻的採集卡 [00:48:45] 可能是從網絡或者什麼 [00:48:47] 因為這邊還有好幾台機器 [00:48:49] 我不知道為什麼 [00:48:51] 學校裡面用了一個成本 [00:48:52] 那麼大的方案 [00:48:53] 我覺得我可能用500到1000塊 [00:48:55] 應該就能解決整個問題了 [00:48:59] 然後它有一個採集卡進來 [00:49:01] 但是那個採集卡的USB斷開了 [00:49:03] 所以大家看到現在我用左邊 [00:49:05] 我揮揮手 [00:49:06] 它是在動的 [00:49:07] 但是USB就斷掉了 [00:49:11] 不知道為什麼斷掉了 [00:49:13] 然後斷掉了以後 [00:49:14] 我剛才就立即讓agent [00:49:17] 修了一下 [00:49:19] 對吧 [00:49:21] 剛才我是讓agent幫我修的 [00:49:26] 我直接 [00:49:29] 就是一個prompt [00:49:31] 在這裡 [00:49:36] 他說我先看系統的USB設備的情況 [00:49:39] 找出設備 [00:49:41] 對 這裡 [00:49:43] 說我的USB有問題 [00:49:45] 能不能reconnect [00:49:47] 這是deepseq v4 flash [00:49:50] 它用你們前所未見的Linux命令 [00:49:55] 有些其實我有概念 [00:49:57] 但是我也不知道 [00:49:58] 它具體是怎麼工作的 [00:50:00] 就是它用軟件的方式 [00:50:04] 把那個USB的採集卡拔出來 [00:50:06] 又插進去了 [00:50:07] 因為我是碰不到那個接口 [00:50:09] 那個接口在機器的後面 [00:50:10] 我碰不到 [00:50:12] 然後它幫我拔了一下 [00:50:13] 插了一下 [00:50:14] 然後就好了 [00:50:17] 現在這個視頻還是沒有問題的 [00:50:21] 如果視頻再有問題的話 [00:50:22] 就請大家打斷我 [00:50:24] 我再來重置一下 [00:50:28] 我剛才說了 [00:50:29] 還不是AI的真正的型態 [00:50:32] 作為普通人 [00:50:33] 剛才我給大家展示的 [00:50:35] 是一個白板的派 [00:50:37] 什麼也沒有 [00:50:38] 你在那個派的那個官方網站上 [00:50:40] 把它安裝下來 [00:50:41] 你配置一個deepseq v4 flash API key [00:50:44] 你立即就可以得到剛才所有的那些東西 [00:50:48] 多麼可怕的一件事 [00:50:50] 但是agent遠不止於此 [00:50:53] agent用一個完整的生態系統 [00:50:55] 所以當你有一個領域特定的任務的時候 [00:51:01] 根據計算機科學的定律 [00:51:03] 我上課的時候一直會說 [00:51:04] 這個Computer Science的定律 [00:51:06] 如果有一件事情它是合理的 [00:51:08] 並且你想做 [00:51:09] 那麼100%一定也有別人會想做 [00:51:12] 那在這個pre-AI的時代 [00:51:15] 開源社區多多少少就會來公開一些腳本 [00:51:21] 我今天又發布了一個新的腳本 [00:51:22] 可以幹這件事 [00:51:23] 到GitHub上 [00:51:24] 你把它拉下來可以做自己的事 [00:51:26] 在AI時代 [00:51:27] 做這件事情 [00:51:28] 附用別人的能力 [00:51:30] 變得前所未有的輕鬆 [00:51:33] 我可以往skillhub上面發一個skill [00:51:36] 然後你可以在派的插件生態上面找到一個插件生態 [00:51:41] 所以你們想到應該下一步 [00:51:44] 做一個普通人 [00:51:46] 你應該做什麼 [00:51:48] 應該用插件把瀏覽器管封起來 [00:51:54] 應該用插件把電腦管封起來 [00:51:57] 瀏覽器是一個非常好的工程產品 [00:52:01] 我們用的是Chrome [00:52:04] 瀏覽器是一個非常好的工程產品 [00:52:06] 它可以說是人類軟件工程史上的奇跡之一 [00:52:12] 非常的複雜 [00:52:13] 看起來就是一個瀏覽器 [00:52:14] 顯示網頁的 [00:52:15] 它的代碼量甚至遠超操作系統內核 [00:52:18] 因為它要和用戶打交道 [00:52:20] 它有大量的比如說圖形站 [00:52:22] 還有顯示相關的東西 [00:52:25] 性能優化等 [00:52:28] 而瀏覽器是為開發 [00:52:30] 就是一個軟件工程奇跡 [00:52:32] 所以它是 [00:52:33] 有一個接口是專為開發者設計的 [00:52:36] 叫Chrome DevTools [00:52:38] 你們應該是用過的 [00:52:40] 比如說你們打開Chromium [00:52:43] 然後你們按F12 [00:52:48] 我把它 [00:52:53] 你們都改過 [00:52:55] 比如說你很討厭這個東西 [00:52:58] 你很討厭 [00:53:00] 其實是有點討厭 [00:53:02] 討厭就刪了 [00:53:04] 沒有了 [00:53:07] 當然你這裡是可以調適它的 [00:53:10] 所以一般來說 [00:53:12] 網站都會在 [00:53:14] Console上面嵌入招聘廣告 [00:53:20] 同學們應該也是發現過的吧 [00:53:24] 比如說你們上B站然後F12 [00:53:29] 它沒有招聘廣告的嗎 [00:53:30] 我記得B站也是有的 [00:53:33] 在這裡你可以看到很多的信息 [00:53:36] 比如說你可以找到這裡面的HTP的頭 [00:53:41] 然後你可以把這個鏈接的 [00:53:43] 比如說這個鏈接Copy [00:53:45] 可以把它的命令給Copy出來 [00:53:47] 這樣你就可以在瀏覽器裡 [00:53:49] 帶著它的瀏覽器的 [00:53:51] 帶著這個Cookie [00:53:52] 帶著所有的狀態 [00:53:53] 用Q2這個命令去請求 [00:53:56] 這樣你就可以得到列表 [00:53:58] 這都是以前在 [00:54:00] 在Pre-ARM時代開發者 [00:54:02] 做的事情 [00:54:03] 但是在ARM時代變了 [00:54:07] 普通人 [00:54:09] 也可以享受到Chrome DevTools的 [00:54:11] 所有的厲害的地方 [00:54:13] 我記得我們在2020年的時候 [00:54:15] 我們做過一個非常瘋狂的Projects [00:54:17] 大家都知道Android的應用 [00:54:20] 是可以用Java寫的 [00:54:21] 我們假設是一個Java的應用 [00:54:23] 然後Java或者Coding [00:54:25] 都變異到Java虛擬機 [00:54:27] 然後我們就可以在OpenJDK上運行 [00:54:29] 一個Android App [00:54:30] 然後這個運行Android App的時候 [00:54:32] 會把所有的介面上面的按鈕 [00:54:33] 比如說這個按鈕的Bundle Box [00:54:35] 就是它的座標都算出來 [00:54:37] 然後上面的文本也知道 [00:54:39] 我不走Android都得操渲染 [00:54:41] 我直接在瀏覽器裡面 [00:54:43] 你可以在Chrome裡面 [00:54:45] 你在Chrome裡面可以看到一個計算器 [00:54:47] 然後那個計算器裡面每一個按鈕都在 [00:54:49] 上面的字也是對的 [00:54:50] 然後你可以點 [00:54:51] 點了以後那個計算器的狀態就變了 [00:54:52] 我可以在本機執行一個Android App [00:54:55] 所以這是一個非常非常Powerful的工具 [00:54:58] 但我今天不講這個 [00:55:00] 讓我們來幹一件什麼事 [00:55:02] 你們都討厭Java系統吧 [00:55:07] 我也很討厭 [00:55:08] 這個我一會兒會講的 [00:55:10] 當我講到軟件工程的時候 [00:55:13] 我還會特別講 [00:55:14] 講到這個Java系統是一個軟件工程的 [00:55:17] 非常反面的例子 [00:55:24] 我的手機 [00:55:25] 讓我掃個碼 [00:55:30] 你們不要掃 [00:55:41] 應該不會暴動一次 [00:55:43] 希望不要暴動一次 [00:55:44] 我可以稍微放大一點 [00:55:47] 比如說我現在的教學周力是空的 [00:55:53] 現在你看 [00:55:54] 其實我剛才在派裡面說 [00:55:56] 幫我打開了瀏覽器 [00:55:58] 這個瀏覽器是屬於派的 [00:56:00] 所以你們可以幹什麼 [00:56:02] 比如說我很討厭動不動 [00:56:04] 叫我們填東西 [00:56:05] 所以我說 [00:56:11] 這時候你看豆包輸入法的殘留量又提升了 [00:56:14] 我在做這些日常任務的時候 [00:56:18] 我就會 [00:56:19] 按一個鍵然後打開豆包輸入法 [00:56:21] 和他對話 [00:56:22] 當然在這裡 [00:56:23] 我的Links沒有豆包輸入法 [00:56:25] 而且我好像沒有配置這個 [00:56:27] 比如說 [00:56:28] 它的聲音輸入可能會有點麻煩 [00:56:32] 填寫 [00:56:33] 現在教學周力是空的 [00:56:37] 幫我用隨便什麼AI Slop填寫 [00:56:44] 不要看任何東西 [00:56:46] 因為他如果知道這門課 [00:56:52] 就現在的目錄是這門課的 [00:56:54] Repo的話 [00:56:55] 他居然會讀我的什麼Lecture Notes [00:56:56] 我不要 [00:56:58] 你看他還在幹這個事 [00:57:00] 對吧 [00:57:13] 我就是想讓他去填AI Slop [00:57:16] 你看 [00:57:25] 他就是不聽指令 [00:57:26] 這是dcv4flash的麻煩 [00:57:28] 如果是Flex [00:57:29] 他會知道 [00:57:31] 這就是dcv4flash的問題 [00:57:43] 他不看 [00:57:49] 翻車也是經常有的 [00:57:52] 所以 [00:57:53] 就是模型其實還在不斷的能力增長中 [00:57:56] 如果我用最一線的模型 [00:57:58] 他就會追求的更好 [00:58:01] 我用Flash還有一個原因 [00:58:03] 就是他在課上會更快 [00:58:07] 在課上會更快 [00:58:08] 所以 [00:58:28] 沒關係 [00:58:29] 他會 [00:58:30] 這就是Agent [00:58:31] 你看到他的過程 [00:58:36] 你看 [00:58:37] 他會不斷的反思 [00:58:40] 他做的這件事情合不合理 [00:58:42] 然後他能夠找到 [00:58:44] 應該怎麼辦 [00:58:46] 對吧 [00:58:47] 看起來翻車 [00:58:48] 他剛開始在嘗試 [00:58:50] 然後剛開始在嘗試以後 [00:58:52] 他找到正確的方式 [00:58:54] 所以說Chrome DevTools是一個非常強大的工具 [00:58:58] 他最終發現 [00:58:59] 他用那些 [00:59:00] 比如說直接注入一個事件的方式不行的 [00:59:02] 但是點數標是可以的 [00:59:04] 然後這意味著什麼 [00:59:06] 你看他已經開始可以填寫AI Slot [00:59:09] 我完全可以 [00:59:10] 不需要直手 [00:59:12] 對吧 [00:59:13] 讓他隨便給我填寫什麼 [00:59:17] AI Slot [00:59:18] anyway doesn't matter [00:59:21] 能力真正的邊界在哪裡 [00:59:25] 當他走通過一次以後 [00:59:28] 這個session裡面的東西會留下來 [00:59:31] 我可以把它沉澱成確定性的腳本 [00:59:35] 對吧 [00:59:36] 他可以形成記憶 [00:59:37] 就是說這條路徑應該怎麼走 [00:59:39] 什麼能成功什麼能失敗 [00:59:41] 他也可以把走過的這些網頁成功變成腳本 [00:59:44] 你就得到了一個自動選課搶課的系統 [00:59:47] 所以 [00:59:48] 所以這是多麼恐怖的一件事 [00:59:50] 你不需要有任何的 [00:59:52] 不需要有任何的知識 [00:59:54] 對吧 [00:59:55] 他就在這裡幫我填寫AI Slot [00:59:57] 如果我要對付對吧 [00:59:58] 對付這個本科生願 [01:00:00] 一定要我填的話 [01:00:01] 我就用這個方式來處理 [01:00:05] OK [01:00:07] 對吧 [01:00:08] 而 [01:00:10] 這其實是一整個生態 [01:00:12] 他不是就是說 [01:00:13] 你們會覺得OK好 [01:00:14] 這是又是一個很Fancy的案例 [01:00:16] 對吧 [01:00:17] 我今天講了好多 [01:00:18] 我可以這樣用這樣用這樣 [01:00:20] 每一個都很厲害 [01:00:21] 而 [01:00:23] 因為我是教操系統的 [01:00:25] 操系統上面的 [01:00:26] 應用程序 [01:00:27] Unix的Philosophy [01:00:28] 他能成立的原因 [01:00:29] 就是那個管道 [01:00:31] 能實現所有程序的自由組合和無限複用 [01:00:36] 1加1是可以大於2的 [01:00:39] 而剛才我說的所有的東西 [01:00:40] 比如說 [01:00:41] 從一個 [01:00:42] 瀏覽 [01:00:43] 就一個上下文裡面 [01:00:45] 提取 [01:00:47] 這個記憶和腳本的能 Skill [01:00:51] 和我剛才那個 [01:00:53] 瀏覽器的 Skill [01:00:55] 和 [01:00:56] 我 [01:00:57] 比如說我又有一個 [01:00:59] 什麼 [01:01:00] 在網頁上面怎麼瀏覽的一個 Skill [01:01:03] 他們是可以加在一起 [01:01:04] 互相調用的 [01:01:06] 所以 [01:01:07] 現在這個AI Agent的 [01:01:09] 這個 [01:01:10] 生態其實已經 [01:01:12] 達到了一個臨界點 [01:01:14] 馬上 [01:01:15] 你就會看到 [01:01:16] 這些東西的互相組合 [01:01:19] 可以成 [01:01:20] 百倍成千倍的放大個人的能力 [01:01:23] 真正對於一個一般人來說 [01:01:26] 他可以做的 [01:01:28] 他可以去找到世界上各種各樣的信息源 [01:01:31] 我不知道你們有沒有訂閱那個什麼 [01:01:34] 局壓的AI早報 [01:01:36] 每天早上起來 [01:01:37] 這個刷牙的時候就聽一下 [01:01:39] 反正他也是AI生存的 [01:01:41] 但他是有RSS的 [01:01:43] 他是有這個推送源的 [01:01:45] 然後你有這個B站的推送 [01:01:47] 你有Archive的推送 [01:01:49] 你有Hacker News的推送 [01:01:51] 然後這些東西我都可以 [01:01:53] 做一次 [01:01:54] 沉澱成Skill [01:01:56] 或者沉澱成腳本 [01:01:58] 然後他就會進入 [01:01:59] 我就可以做一個這樣的 [01:02:01] 信息處理的系統 [01:02:02] 我有大量的這個信息源 [01:02:05] 然後這個信息源 [01:02:07] 會進入一個處理系統 [01:02:09] 然後這個處理系統最終會產生有用的知識 [01:02:12] 然後這裡面就是有各種各樣的Skill構成的 [01:02:17] 都是自然語言 [01:02:18] 所有的東西一行代碼都不用寫 [01:02:20] 但是他可以復用 [01:02:21] 但是他可以復用 [01:02:22] 你會不斷地調整這個工作流 [01:02:24] 然後他就會不斷地產生對你有用的知識 [01:02:28] 你的飛輪就站起來了 [01:02:30] 你想像一個擁有這樣 [01:02:33] 飛輪的人 [01:02:35] 你在這個飛輪上 [01:02:37] 而沒有飛輪上 [01:02:38] 這是一個多麼可怕的事情 [01:02:41] 所以這時候你可以理解 [01:02:43] 為什麼Open Cloud Hermes [01:02:45] 是一個現象級的產品 [01:02:46] 為什麼他們能給人 [01:02:48] 這麼驚喜 [01:02:50] 對吧 [01:02:51] 比如說一個自我淨化的能力 [01:02:53] 雖然說我做一個CS Professional [01:02:55] 我其實不驚訝 [01:02:56] 而且尤其是我 [01:02:57] 我其實挺討厭 [01:02:58] 比如說他去總結一個Memory [01:03:00] 因為他有他的提示詞 [01:03:02] 然後他會把一些 [01:03:03] 我不想讓他記住的東西記住 [01:03:05] 我想讓他記住的東西不記住 [01:03:07] 所以我更多的時候 [01:03:08] 是我調由我自己的流程 [01:03:10] 把這個東西寫到我的實際庫裡 [01:03:14] 然後AI會做這些事 [01:03:17] 但也許有一天 [01:03:18] 這是因為現在產品還不夠成熟 [01:03:20] 模型可能還不夠強 [01:03:22] 當有一天模型過了那個臨界點的時候 [01:03:24] 我現在就比AI多一點點 [01:03:27] 我比AI多的那一點點 [01:03:29] 也被AI取代以後 [01:03:30] 我也被消滅了 [01:03:33] 我也被消滅了 [01:03:34] 然後在這個意義上 [01:03:35] 你能想到很多很多更有趣的事 [01:03:38] 比如說我剛才說的路平 [01:03:40] 你只有路平一天 [01:03:42] 讓AI自動改進你的流程 [01:03:44] 你就問AI [01:03:47] 我這一天幹的這些事 [01:03:49] 你覺得我還有沒有提升空間 [01:03:51] 很有可能 [01:03:52] 尤其是大家在初學者的階段 [01:03:54] 就還有很大的提升空間 [01:03:56] 所以你們是 [01:03:58] 你們是這一代人在AI Native下長大 [01:04:02] 你們這一代人才是未來才有出路 [01:04:04] 像我現在已經被迫的 [01:04:06] 被迫要處理很多事務性的事情 [01:04:08] 我已經沒有這個機會了 [01:04:11] 對 [01:04:13] 所以 [01:04:14] 雖然現在還沒有完全的準備好 [01:04:18] 但我真的是很難理解 [01:04:19] 為什麼有些舊人類 [01:04:20] 尤其是老登 [01:04:22] 為什麼還要心安理得的 [01:04:23] 每天去做這個重複的事情 [01:04:25] 對吧 [01:04:26] 他為什麼要我 [01:04:29] 感覺 [01:04:31] 出了一些小問題 [01:04:33] 但是 [01:04:36] doesn't matter [01:04:38] 我只要讓他修就行了 [01:04:43] 這個不重要 [01:04:45] 顯然 [01:04:46] 我需要一個更好的模型 [01:04:49] 但是 [01:04:51] 我不理解 [01:04:52] 為什麼這些人不意識到 [01:04:55] 可能公眾號的消息 [01:04:58] 和真正你第一手用過的人 [01:05:00] 他的感受 [01:05:01] 是很不一樣的 [01:05:03] 但這個時代來了 [01:05:04] 所以我們需要 [01:05:05] 認真的思考這個問題 [01:05:08] 這是普通人的視角 [01:05:11] 接下來是我的CS [01:05:13] 作為一個 [01:05:14] Computer Science的從業人員的 [01:05:17] 視角 [01:05:18] 就是 [01:05:19] 如果你們只是用Agent Codex [01:05:21] 說要幫我把操作系統作業做了 [01:05:22] 那你們真的是太小看他了 [01:05:25] 我們是Computer Science的人 [01:05:27] 我們非常知道編程的能力界線在哪裡 [01:05:30] 其實這就是我們和 [01:05:32] 和其他的一般人 [01:05:34] 一般人他很容易提出一個需求 [01:05:36] 然後這個需求 [01:05:37] Agent可能做不好 [01:05:38] 做不了 [01:05:39] 然後或者說他不知道應該怎麼樣 [01:05:41] 這個Agent能夠確定性快速的完成 [01:05:44] 但我們有 [01:05:46] 我們知道的是 [01:05:48] 我們是怎麼可以把需求編譯成 [01:05:50] 就像剛才裡面的東西編譯成 [01:05:52] 什麼東西可以復用 [01:05:53] 什麼東西應該以代碼的形式復用 [01:05:55] 什麼東西應該以Skill的形式復用 [01:05:57] 我們會 [01:05:58] 我們會非常的清楚 [01:06:00] 我舉一個例子 [01:06:01] 這件事情如果是一般人 [01:06:03] 和AI協作就會 [01:06:05] 就會稍微 [01:06:07] 可能現在AI還做不到 [01:06:09] 我改卷子 [01:06:10] 改完以後我要統分 [01:06:12] 那一般來說這個 [01:06:15] 任務就是給助教的對吧 [01:06:17] 助教你去把這個分加了吧 [01:06:19] 然後助教就掏出一個計算器 [01:06:21] 12加13加14加15加16 [01:06:23] 然後再仔細回應 [01:06:25] 所以我覺得我對我的學生太好了 [01:06:27] 這個 [01:06:28] 也不行 [01:06:29] 我今年嘗試了這樣的流水線 [01:06:31] 我基本上就是我第一遍我先是 [01:06:33] 就是歪不扣的讓它出腳本 [01:06:35] 測試 [01:06:36] 然後測試完了以後 [01:06:37] 我就一遍頭把它跑完 [01:06:39] 我的流程大概是這樣的 [01:06:40] 我在辦公桌上有一個 [01:06:42] 從頂向下的攝像頭 [01:06:44] 然後那個攝像頭會拍到那個試卷的 [01:06:46] 一個固定的位置我把它先調好 [01:06:48] 然後調好了以後 [01:06:49] 我按一個回車 [01:06:51] 它就會拍一張照 [01:06:53] 拍一張照以後 [01:06:55] 它就會回頭去Offline去深層 [01:06:57] 去用簽文去識別這個姓名 [01:06:59] 學號小分 [01:07:00] 就每一個小分 [01:07:01] 然後它會寫一行到一個文本文件裡 [01:07:03] 所以我就是 [01:07:05] 一張卷子按一個回車 [01:07:06] 一張卷子按一個回車 [01:07:07] 我是兩隻手的 [01:07:09] 我兩隻手都沒寫下 [01:07:10] 然後如果我這張卷子 [01:07:11] 比如說沒有擺好 [01:07:12] 我就可以調整一下 [01:07:13] 然後再來 [01:07:15] 然後第一個階段完了以後 [01:07:17] 第二個階段 [01:07:18] 按照反序 [01:07:19] 我還是以回車鍵 [01:07:21] 這時候我左右手就換了 [01:07:22] 我左手按回車 [01:07:23] 右手拿筆 [01:07:25] 我按回車以後 [01:07:30] 我的自然 [01:07:31] 就是我會用語音來播報 [01:07:33] 誰誰誰 [01:07:34] 學號是什麼 [01:07:36] 241220 [01:07:38] 然後它把每一個小分都報出來 [01:07:41] 11加12加13加14加15 [01:07:43] 它一邊報我一邊要檢查 [01:07:45] 因為OCR會有錯 [01:07:46] 我不信任它 [01:07:47] 我要對我的班上的每一個同學負責 [01:07:50] 然後我檢查過沒問題以後 [01:07:52] 我就會把它報的那個最終的分數 [01:07:54] 給抄寫到圈面上 [01:07:56] 這個分數是用腳本算 [01:07:58] 就一般要算出來 [01:08:00] 所以它是不會錯 [01:08:01] 它不會因為大圓模型的話 [01:08:02] 你就算錯 [01:08:03] 我沒有讓大模型做加法 [01:08:05] 所以我對所有同學是負責的 [01:08:07] 就是每一個分數我都看過了 [01:08:10] 然後最後分數會自動匯總到 [01:08:13] 教務處的那個XR的模板上 [01:08:16] 然後最後我可以用這個東西 [01:08:19] 對吧 [01:08:20] 我可以用這個方式 [01:08:23] 把那個XR文件上傳 [01:08:25] 然後我再抽樣檢查 [01:08:27] 確保沒有問題以後 [01:08:29] 再來提交 [01:08:31] 所以你看到 [01:08:32] 確實是配合一個多方數法 [01:08:34] 但因為我是一個CS Professional [01:08:36] 所以我知道邊界在哪裡 [01:08:38] 我知道我的本地有一個 [01:08:40] 27B的千萬3.8 [01:08:42] 然後歐拉馬可以用 [01:08:44] 然後我知道應該用這樣的流程 [01:08:47] 一個最舒服的流程 [01:08:49] 減輕我和Agent之間同步的代價 [01:08:52] 而這些東西都是 [01:08:54] 如果一般人 [01:08:56] 你可以試一下 [01:08:57] 比如說你 [01:08:58] 哪怕是跟最好的模型說 [01:09:00] 我現在改了140張卷子 [01:09:02] 改好了 [01:09:03] 小分都已經寫上去了 [01:09:04] 我要統分 [01:09:05] 幫我實現它 [01:09:07] 到不了一個這麼快的 [01:09:09] 收斂的方案 [01:09:11] 所以有些時候現在我還需要 [01:09:15] 人和AI要共建 [01:09:18] 但我也讀有一天 [01:09:19] AI的能力能夠搶到 [01:09:20] 它能夠感知我的一切 [01:09:22] 然後能幫我做一個完美的東西 [01:09:26] 那我們就可以回到 [01:09:27] 軟件工程的話題了 [01:09:28] 畢竟這是深層式軟件工程 [01:09:30] 我們來做一個 [01:09:32] 小的軟件工程的產品吧 [01:09:34] 因為我選它 [01:09:36] 正好就是有一天 [01:09:37] 前幾天它一個星期左右的時間裡 [01:09:39] 有一個我們在群裡面 [01:09:41] 突然閒聊 [01:09:42] 說機器被管控了 [01:09:43] 很討厭 [01:09:44] 然後我們就想 [01:09:45] 有沒有可能 [01:09:46] 你假設 [01:09:48] 你現在在一個金融公司裡 [01:09:50] 然後這個金融公司 [01:09:52] 數據是可以帶進去的 [01:09:54] 但是數據是出不來的 [01:09:56] 就是你 [01:09:57] 比如說你插一個U盤 [01:09:58] 然後你可以把一個Word [01:09:59] 或者一個XR拷進去 [01:10:01] 然後Word、XR拷進去以後 [01:10:02] 它就進去了 [01:10:03] 但是沒有任何文件 [01:10:04] 可以拷到外面拷出來 [01:10:07] 有機器做了管控 [01:10:09] 然後它不能執行 [01:10:10] 任何不信任的程序 [01:10:11] 不能顯示任何不信任的網頁 [01:10:13] 你唯一能做的就是 [01:10:14] 在遠處可以悄悄射屏 [01:10:16] 但是你想把一個 [01:10:17] 很大的文件給偷出來 [01:10:20] 你怎麼辦 [01:10:22] 對吧 [01:10:23] 這就是Computer Science的人 [01:10:24] 才能想到的 [01:10:27] 想到的事情 [01:10:28] 我幹了這樣一件事 [01:10:35] 我做了這樣的一個程序 [01:10:38] 我可以叫它程序嗎 [01:10:39] 對 可以叫它程序 [01:10:42] 這是一個典型的 [01:10:43] 軟件工程任務 [01:10:46] 這是一個二維碼 [01:10:49] 然後我可以把 [01:10:51] 任何一個文件的內容 [01:10:53] 比如說我現在文件的內容 [01:10:55] 就是Hello [01:10:59] Hello World完了以後 [01:11:01] 你看這個二維碼就變了 [01:11:02] 你們可以掃 [01:11:04] 掃一下 我也掃一下 [01:11:05] 這個二維碼沒有危害 [01:11:09] 應該不會封號吧 [01:11:12] 掃出來是一個 [01:11:13] Base64編碼的字符串 [01:11:15] 然後它是0001 [01:11:18] Base64編碼的字符串 [01:11:20] 然後我這可以是一個 [01:11:21] 非常非常長的字符串 [01:11:22] 比如說我有一個 [01:11:23] 很長的Hello World [01:11:25] 這個很長的Hello World [01:11:27] 我就可以編碼 [01:11:28] 成一個二維碼的動畫 [01:11:30] 你看這裡有一個 [01:11:33] 這裡有一個真號 [01:11:41] 這時候我按住F9 [01:11:43] 刷新 [01:11:44] 6 [01:11:49] 7 [01:11:50] 這就是一個二維碼動畫 [01:11:52] 也就是說你只要 [01:11:53] 偷偷的設屏 [01:11:56] 然後你把所有的 [01:11:57] 每一幀它是循環播放的 [01:11:58] 你把每一幀都拍到 [01:12:00] 你就把這裡的數據給偷走了 [01:12:03] 所以我用完全合法的方式 [01:12:05] 注意這是XR [01:12:06] XR是合法的 [01:12:07] 然後我用了 [01:12:08] 所有的東西都是公式 [01:12:10] 大家可以看一下 [01:12:11] 公式在這裡 [01:12:16] 全部都是XR的公式 [01:12:20] 都是合法的XR公式 [01:12:23] 而且是2019之前的XR [01:12:25] 都建容的公式 [01:12:27] 然後把這個二維碼偷出來 [01:12:28] 這個就是一個例子 [01:12:32] 然後你作為CS Professional [01:12:35] 你可以用這個方式 [01:12:36] 偷數據出來 [01:12:38] 你也可以 [01:12:39] 如果能在那個機器裡面 [01:12:40] 裝EXE的話 [01:12:41] 當然一般是不行的 [01:12:43] 你可以用抖鼠標的方式 [01:12:46] 你可以在上下緯度 [01:12:47] 抖鼠標就是0 [01:12:48] 左右緯度抖鼠標就是1 [01:12:51] 然後你用遠程桌面連進去 [01:12:52] 然後你就可以 [01:12:53] 可以往裡面傳輸數據 [01:12:55] 然後你用二維碼的動畫 [01:12:56] 就可以往外面 [01:12:58] 送數據 [01:12:59] 這樣你只要有一個遠程桌面 [01:13:00] 你就可以在那裡 [01:13:01] 做一個虛擬網卡 [01:13:03] 你可以把遠程桌面 [01:13:04] 變成虛擬網卡 [01:13:05] 然後你就可以 [01:13:06] 和它連起來 [01:13:07] 然後你是Computer Science的學生 [01:13:08] 你知道 [01:13:09] 你上過操作系統 [01:13:10] 上過鏡像機網絡 [01:13:11] 你知道這裡面需要的 [01:13:12] 組件是什麼 [01:13:13] 你就可以把它Wipe Coding出來 [01:13:15] 對吧 [01:13:16] 這是一個 [01:13:17] AI Agent [01:13:19] 可以 [01:13:21] 可以 [01:13:22] 可以做到 [01:13:25] 所以 [01:13:27] 對吧 [01:13:28] 當然就這個有意思的例子 [01:13:29] 我剛才 [01:13:30] 我這個Excel是用 [01:13:31] 是用AI生成的 [01:13:34] 你的想像力 [01:13:36] 限制了你能做什麼 [01:13:38] 就這個 [01:13:39] 對吧 [01:13:40] 我們總結一下 [01:13:41] 我們做一般人 [01:13:42] 一般人可以 [01:13:44] 學習 [01:13:45] 對吧 [01:13:46] 看書 [01:13:47] 可以做總結 [01:13:48] 然後可以 [01:13:49] 實現一個這樣的 [01:13:50] 信息處理的閉環 [01:13:53] 還可以操作 [01:13:54] 對吧 [01:13:55] 可以用Computer Use [01:13:56] Browser Use [01:13:57] 去做任何 [01:13:58] 你平時日常裡 [01:13:59] 做的 [01:14:00] 做的事情 [01:14:01] 同時 [01:14:02] 因為Everything is Code [01:14:03] 我可以用AI生成 [01:14:05] 你能看到的 [01:14:06] 所有的東西 [01:14:07] 視頻 [01:14:08] 論文 [01:14:10] 東西 [01:14:12] 我們在做 [01:14:13] 我在和一個同學 [01:14:14] 做一個叫Wi-Fi的項目 [01:14:16] 用一個自然語言 [01:14:17] 我再你打印機 [01:14:18] 可以打印一個東西出來 [01:14:19] 真的東西 [01:14:20] 也是Code [01:14:21] 也是Python代碼 [01:14:22] 真的是Python代碼 [01:14:23] 所以能夠實現這個 [01:14:24] 從Bit到Atoms [01:14:26] 這個未來 [01:14:28] 已經來了 [01:14:29] 我們看到它只會 [01:14:31] AI的能力只會變強 [01:14:32] 不會變弱 [01:14:33] 那麼 [01:14:34] 下一個問題就是 [01:14:35] 它什麼時候來 [01:14:36] 以及我們應該 [01:14:37] 怎麼面對它 [01:14:40] 那關於面對 [01:14:41] 我們就可以進入這個 [01:14:43] 生成式軟件工程 [01:14:44] 最重要的內容 [01:14:45] 對吧 [01:14:47] 剛才 [01:14:48] 我們就建立了一個 [01:14:51] 思路相關鏡頭 [01:14:54] 時代的車輪來了 [01:14:55] 我已經被壓在車底下了 [01:14:59] 不著急 [01:15:00] AI也不是完全完美的 [01:15:03] 在LM之前的時代 [01:15:04] 就有一個老梗說 [01:15:06] Idea都有了 [01:15:07] 我們是商學院的 [01:15:08] 不知道你們商學院同學 [01:15:09] 有沒有跟你們說過這個 [01:15:10] Idea都有了 [01:15:11] 就差一個程序員了 [01:15:12] 我們去掙一個億吧 [01:15:13] 對吧 [01:15:14] 然後ABCD輪也都有了 [01:15:15] 就差一個天使投資人了 [01:15:17] 沒有人投資我們 [01:15:19] 沒有那麼簡單 [01:15:20] 沒有那麼簡單 [01:15:21] 就是AI首先AI很強 [01:15:22] 我展示了AI可以做什麼 [01:15:24] 但是 [01:15:26] 產品是一個系統性的工程 [01:15:28] 你 [01:15:29] 你如果要做一個 [01:15:31] 什麼 [01:15:32] 外賣 [01:15:33] 你想做一個什麼外賣網站 [01:15:35] 你要做前端後端交互運營 [01:15:37] 整個流程上面 [01:15:39] 任何一個環節做不好 [01:15:40] 產品都是直接暴斃的 [01:15:42] 雖然AI都可以做 [01:15:44] 每一個對吧 [01:15:45] AI也能設計前端 [01:15:46] 也能做後端 [01:15:47] 也能交互 [01:15:48] 也能運營 [01:15:49] 他看過世界上所有的書 [01:15:51] 他什麼都知道 [01:15:53] 但是如果你組織得不好 [01:15:56] 直接也是立即 [01:15:58] 立即就暴斃 [01:15:59] 實際上 [01:16:00] 實際上 [01:16:01] 這個 [01:16:04] 我的QR證點一下 [01:16:07] 我做了一個實驗 [01:16:08] 讓AI去做 [01:16:09] AI生成了完全不可維護的代碼 [01:16:12] 我馬上就會講到這個軟體工程點 [01:16:14] 然後1號點 [01:16:15] NZU1.1.CN [01:16:17] 難用嗎 [01:16:18] 始終始 [01:16:19] 然後每年學校都會花巨額的錢 [01:16:22] 讓這個公司維護這份代碼 [01:16:25] 就是因為它要添一個功能 [01:16:27] 打個比方 [01:16:28] 因為我在用這個Brotheruse的時候 [01:16:30] 我還稍微hack了一下這個系統 [01:16:34] 我發現 [01:16:35] 有些隱藏的字段 [01:16:37] 比如說 [01:16:38] 你能夠看到一個學生的校區 [01:16:41] 在蘇州校區建成之前 [01:16:44] 這個系統裡面是不需要這個字段的 [01:16:46] 然後為了兼容這個蘇州校區 [01:16:48] 你們寫過軟體的人都知道 [01:16:50] 你們在設計 [01:16:52] 需求設計的時候 [01:16:53] 你沒有想到學校竟然還有校區這個東西 [01:16:56] 數據庫裡就沒有這個東西 [01:16:57] 然後突然有一天你的產品經理說 [01:17:00] 我們兩個校區選擇要分開的時候 [01:17:06] 當然你現在是沒問題 [01:17:08] 因為你產品經理 [01:17:09] 就是跟AI說 [01:17:11] 現在你原來系統是可以用了 [01:17:13] 我現在多了一個校區 [01:17:14] 蘇州校區 [01:17:15] 我要把校區分開 [01:17:16] 然後AI就開始寫案了 [01:17:17] 但是 [01:17:21] 還是很容易失敗的 [01:17:24] 這就是非常典型的 [01:17:25] 軟件工程的失敗 [01:17:26] 所以我可以講一下 [01:17:27] 剛才那個QRGen的暴斃 [01:17:29] AI是怎麼暴斃的 [01:17:30] 它是一個非常明確的需求 [01:17:32] 我要一個QR Code的XR [01:17:34] 然後我只使用這個XR2019兼容的公式 [01:17:37] 把輸入的任意一個字復串 [01:17:38] 先用Base64編碼 [01:17:40] 然後轉成QR Code動畫 [01:17:41] 沒真實什麼的 [01:17:43] 然後當然我為了 [01:17:45] 我開始讓AI做的時候 [01:17:47] 我還發現這個任務 [01:17:48] 經常他坐著就停下來問我 [01:17:50] 然後我說不要 [01:17:51] 你會很容易失敗 [01:17:52] 然後你不要問我了 [01:17:53] 必須把它做成為止 [01:17:56] 但是很遺憾 [01:17:58] AI對這個需求的理解 [01:18:00] 是不到位的 [01:18:02] 就我說清楚了 [01:18:05] 確實我就是要做這個東西 [01:18:07] 但是 [01:18:10] 這是GPT-5.6 [01:18:11] GPT-5.6依然誤解了 [01:18:14] 我到底要一個什麼東西 [01:18:16] GPT-5.6說的對 [01:18:18] 因為它看到了我的完整的slice [01:18:21] 但我沒有告訴它我是怎麼做的 [01:18:23] 所以它認為 [01:18:24] AI哪裡容易犯錯 [01:18:26] AI容易在小corner case上犯錯 [01:18:29] GPT-5.6第一秒鐘就被帶歪了 [01:18:32] 它希望做一個對於任意的 [01:18:34] S都滿足正確性的東西 [01:18:37] 這就已經錯了 [01:18:38] 不是的 [01:18:39] 軟件工程的第一步 [01:18:41] 不要擴大 [01:18:43] 做最簡單的東西 [01:18:45] 不會失敗 [01:18:46] 它沒有理解這一件事 [01:18:49] 事實上是這樣的 [01:18:51] 我後來做了一個受控的實驗 [01:18:53] 因為第一個版本 [01:18:54] 是我帶著AI做的 [01:18:55] 所以做得還比較順利 [01:18:57] 然後後來我就直接把這個specification [01:18:59] 就這個告訴AI [01:19:00] 然後AI竟然5.3 [01:19:03] 第一次思考了25分鐘 [01:19:06] 然後開始瘋狂的輸出 [01:19:08] 寫了超過32K的output token [01:19:11] 然後直接我的callcode就幹爆了 [01:19:13] 它說你直接 [01:19:14] 就說你已經超過了 [01:19:15] 默認的output的限制了 [01:19:17] 然後被截斷了 [01:19:18] 然後它再跑 [01:19:19] 總共跑了 [01:19:20] 我沒有監管 [01:19:21] 跑了六個小時才跑完 [01:19:23] 但是對的 [01:19:24] 所以智普他一直說 [01:19:25] 他自己厲害的地方是 [01:19:26] 他可以做long horizon的任務 [01:19:28] 是對的 [01:19:29] 他就是後勤鏈線人 [01:19:30] 這個5.3 [01:19:31] 在這個long horizon任務上 [01:19:32] 真的做得很好 [01:19:34] 然後DeepSec V4 Pro [01:19:36] 也是晚上跑著跑著 [01:19:37] 他已經沒有辦法遵循指令了 [01:19:39] 我第二天早上 [01:19:41] 因為我晚上在碰碰 [01:19:42] 我第二天早上看的時候 [01:19:44] 他給了一個 [01:19:45] base64是硬編碼的 [01:19:47] 就是他用python算了一個base64 [01:19:50] 這明顯就不符合這個指令碼 [01:19:52] 對吧 [01:19:53] 把一個輸入的任意字符算 [01:19:54] 先用64編碼 [01:19:55] 這肯定是 [01:19:58] 對吧 [01:19:59] 正常人的理解應該是 [01:20:00] base64是用Excel公式來編碼 [01:20:02] 他已經不聽指令了 [01:20:03] 他是用python算了一個base64 [01:20:05] 貼到那個公式框裡 [01:20:06] 如果我的那個字符算改了 [01:20:07] 他的base64是不會改的 [01:20:09] 然後我 [01:20:10] 然後我就罵他了 [01:20:11] 我罵完以後 [01:20:12] 他那個ChannelSogin說 [01:20:14] This is a fundamental design [01:20:15] I want you to rethink it [01:20:18] 不管怎麼樣 [01:20:19] 就是他們兩個最終都完成了任務 [01:20:21] 所以agent完成任務能力很強 [01:20:24] 但他們生成的 [01:20:25] 都是沒有辦法繼續維護 [01:20:27] 下面下來的 [01:20:28] AI Slot [01:20:30] 他和1號.NGU.16CN的思法 [01:20:32] 是完全一樣的 [01:20:33] 就是軟件工程裡面 [01:20:34] 最經典的思法 [01:20:35] 上來我知道需求了 [01:20:37] 我把這個需求實現了就好了 [01:20:39] 直接就陷入了維護的泥濤 [01:20:41] 他們沒有想一個好的軟件的架構 [01:20:44] 使得這個軟件能夠 [01:20:45] 對吧 [01:20:46] 有一個比較 [01:20:49] 誇張的說法說 [01:20:50] 我們能不能做一個軟件 [01:20:51] 生存100年 [01:20:52] 對吧 [01:20:53] 100年在100年時間裡面 [01:20:54] 軟件會發生很大的變化 [01:20:56] 你想過去的沒有100年50年 [01:20:59] 操系統發生什麼樣的變化 [01:21:00] 組型界面發生了什麼樣的變化 [01:21:02] 叫用戶界面 [01:21:03] 應用程序發生了什麼樣的變化 [01:21:04] 有沒有一個軟件能生存100年 [01:21:06] 還不知道 [01:21:08] 但是你看這GPT-5.6還都不知道 [01:21:12] 還不知道 [01:21:14] 其實 [01:21:15] 我們需要一個好的架構 [01:21:18] 才能完成這個任務 [01:21:21] 我是怎麼辦到的 [01:21:23] 你們可以想一下 [01:21:24] 如果你們要 [01:21:25] 對吧一個Quick Quiz [01:21:26] 如果你們要實現這個QR Gen [01:21:28] 你們會怎麼寫 [01:21:30] 怎麼Prompt AI [01:21:32] 對吧 [01:21:33] 我實際上是只用了少量的Prompt [01:21:36] GPT5.3在200K上下盤裡面 [01:21:38] 就完成了第一個正確的版本 [01:21:39] 當時是我升級的GPT5.3 [01:21:41] 我就想測試一下它的能力 [01:21:43] 我幹了這樣的一件事 [01:21:45] 我讓它設計一個 [01:21:47] 各種各樣的Python類 [01:21:48] 就有點像編譯器一樣 [01:21:50] 比如說 [01:21:51] 我要設計一個Python的函數 [01:21:54] 叫XOR一個符號系統 [01:21:58] 比如說因為這裡面是叫未允算 [01:22:00] 然後這個東西既可以翻譯成 [01:22:02] 既可以在Python裡面直接執行 [01:22:05] 又可以翻譯成XR [01:22:08] 也就是說我做了一個 [01:22:09] 像編譯器一樣的基礎設施 [01:22:11] 然後 [01:22:13] 我有什麼XOR什麼Concate [01:22:17] 也就是說我做了一個中間語言 [01:22:19] 有點像如果你們今天做這個 [01:22:21] AI Infra的話 [01:22:22] 你們會需要一個 [01:22:23] Python這樣的中間的語言 [01:22:24] 我讓它先設計一個中間語言 [01:22:26] 這個中間語言既對Python有好 [01:22:28] 也對XR有好 [01:22:29] 然後我只需要驗證的是 [01:22:31] 我的每一個翻譯都是正確的 [01:22:33] 到XR正確的翻譯是正確的 [01:22:35] 到Python的結果是正確的 [01:22:37] 然後我可以在Python的世界裡面 [01:22:39] 驗證我的Base64編碼算得對不對 [01:22:41] 我的二維碼的每個像素算得對不對 [01:22:43] 然後我再單獨驗證每一個東西 [01:22:45] 和XR的公式翻譯的正確性 [01:22:47] 竟然融進 [01:22:49] 最後一把頭生成就直接正確 [01:22:52] 代碼非常的乾淨 [01:22:53] 也不長 [01:22:55] 可能長 [01:22:56] 但是 [01:22:57] 維護性遠比 [01:22:58] 大家可以看一下這個 [01:23:00] 看一下AISlove [01:23:05] GM5.3的BuildXR [01:23:09] 這我真的覺得AI [01:23:14] 還是很厲害的 [01:23:16] 無窮多的硬碼 [01:23:19] 就這樣就這麼說 [01:23:22] 我們可以看一下 [01:23:24] 我沒有把它的XR [01:23:28] check進來 [01:23:29] check進來 [01:23:30] 然後再看一下這個DeepSec [01:23:37] 不同的roadmap [01:23:40] 但是 [01:23:45] 反正不同的roadmap但是 [01:23:48] 一樣的思路 [01:23:50] 就這麼說 [01:23:51] 這兩份代碼 [01:23:53] 我讓他們把那個工作區 [01:23:55] 從一個位置移動到另外一個位置 [01:23:58] 它都得修兩個小時 [01:24:01] 就是它不停地錯 [01:24:03] 因為它所有東西都是硬碼 [01:24:05] 它只要改錯一點點地方 [01:24:07] 它的vibration就通不過 [01:24:09] 它得再向agent一樣 [01:24:11] 修 [01:24:12] 它確實可能能修完 [01:24:14] 但是這個是軟件工程 [01:24:16] 所以在今天你還需要生存式軟件工程 [01:24:20] 需要這門課 [01:24:21] 所以我基本上就是把我 [01:24:23] 我作為一個軟工人 [01:24:24] 我其實是做軟件工程的 [01:24:27] 把我的畢生所學 [01:24:30] 雖然我覺得AI應該也懂的 [01:24:32] 當然我不知道為什麼 [01:24:33] 可能是因為後訓練的原因 [01:24:36] AI上手解決問題的 [01:24:39] 欲望太強了導致了 [01:24:42] 好像 [01:24:43] 我覺得可能做得還不是特別的好 [01:24:46] 這裡面核心的問題是什麼 [01:24:48] 是這個世界上有三個 [01:24:50] 就當我們要用AI解決問題的時候 [01:24:52] 我們有三個空間 [01:24:53] 第一個空間叫intention [01:24:55] 至於的意圖 [01:24:57] 就是你腦子裡面想的是什麼 [01:24:58] 比如說 [01:24:59] 老闆說 [01:25:00] 我要做一個國民級的應用 [01:25:03] 這是intention [01:25:04] 或者說我要做一個小程序 [01:25:06] 給我掙一個億 [01:25:07] 這是intention [01:25:09] 小程序可能有一些強項 [01:25:13] 同學們點外賣不方便 [01:25:15] 我要做一個點外賣的小程序 [01:25:17] 掙一個億就可以掙一個億了 [01:25:18] 然後這個在intention space裡面 [01:25:23] 這已經很大了 [01:25:25] 有的人想做外賣 [01:25:27] 有的人就想做AI讀論文 [01:25:29] AI耿同學 [01:25:30] 然後在intention space裡面 [01:25:32] 每一個intention [01:25:35] 都有很多種可能的實現 [01:25:39] 這是specification [01:25:43] specification就是說 [01:25:44] 這個程序的功能是什麼 [01:25:46] 選用什麼樣的架構 [01:25:50] 甚至架構都不是 [01:25:51] 它要滿足什麼樣的要求 [01:25:53] 它有幾個介面 [01:25:54] 然後每個介面有什麼功能 [01:25:56] 就比如說這個就是specification [01:25:59] 以這個例子 [01:26:00] 那個intention [01:26:02] 那個intention是 [01:26:05] 我要造一個能夠偷出 [01:26:07] 二維碼偷出數據的excel [01:26:09] 這是一個intention [01:26:10] 在intention space裡面 [01:26:12] 我要造一個excel [01:26:13] 然後這個spec就是剛才說的一句話 [01:26:19] 然後你看到 [01:26:20] 我的這個spec [01:26:24] 選用不同的架構 [01:26:25] 選用不同的實現方式 [01:26:26] 像剛才那種實現方式 [01:26:28] 就會帶來巨大的差別 [01:26:31] 而同樣都是滿足spec的 [01:26:35] 還有不同的implementation [01:26:40] 哪怕是滿足同一個spec的 [01:26:44] 都有大量的implementation [01:26:46] 所以 [01:26:48] 軟件工程 [01:26:49] 它真正的gap就在於 [01:26:53] 就是說這些東西之間是有gap [01:26:55] 都是有gap [01:26:56] 因為你的intention space裡面 [01:27:01] 其需求的可能是你的老闆 [01:27:02] 可能是你的甲方 [01:27:03] 它沒有任何計算機的經驗 [01:27:05] 它就說 [01:27:06] 校長說我們要一個教務系統 [01:27:09] 然後公司說我可以搞定 [01:27:12] intention就在這 [01:27:13] 我要教務系統 [01:27:14] 要做學校裡面所有同學相關 [01:27:16] 實行的信息化 [01:27:17] 沒有了就這一句話 [01:27:19] 然後在specification space裡面 [01:27:21] 又有好多好多的選擇 [01:27:23] 不同的方式 [01:27:24] 這個介面到底怎麼呈現 [01:27:26] 我覺得這個介面設計很糟糕 [01:27:28] 然後到這個介面完了以後 [01:27:30] 這個數據庫的schema應該怎麼定 [01:27:33] 對吧 [01:27:34] 到底應該是分哪幾張表 [01:27:35] 每個表裡面有哪些列 [01:27:37] 我到底要選擇key value型的數據庫 [01:27:39] 還是關係型的數據庫 [01:27:40] 每一個選擇都會帶來截然不同的結果 [01:27:46] 所以這是一個 [01:27:50] 這是一個 [01:27:54] 我看這個圖片怎麼打開 [01:28:00] 我看一下這個圖片 [01:28:04] 再開一個 [01:28:05] 這是一個軟件工程 [01:28:11] 在很早的時候的一個梗圖 [01:28:14] 大概是 [01:28:15] 就是你 [01:28:16] 它講就是這個gap [01:28:18] 就在各個維度上 [01:28:20] 比如說程序員所想的 [01:28:22] 和這個產品經理所想的 [01:28:24] 和客戶所想的 [01:28:25] 它是完全不一樣的 [01:28:26] 對吧 [01:28:27] 這個客戶是這樣解釋他的需求的 [01:28:30] 然後這個project leader是這樣理解他的 [01:28:33] 然後分析的人又是這樣想的 [01:28:35] 然後這個宣傳的人 [01:28:37] 又是這樣宣傳的 [01:28:38] 然後最後實際上這個customer要的是這個 [01:28:41] 但是最後造出來的是 [01:28:44] 對吧 [01:28:45] 造出來是這個 [01:28:46] 就是這個梗圖 [01:28:48] 而造成這個的根本原因 [01:28:51] 實際上就是這些space之間的這個gap [01:28:56] 而當我們談軟件工程 [01:28:57] 不管是軟件工程 [01:28:58] 還是生成式軟件工程的時候 [01:29:00] 我們要做的事情就是補上這些gap [01:29:03] 而今天這些gap是怎麼補的 [01:29:06] 模型用的是猜 [01:29:08] 對吧 [01:29:09] 模型是猜 [01:29:10] 模型就說好 [01:29:11] 你既然說了這句話 [01:29:12] 那我猜應該是這個吧 [01:29:13] 我就去實現 [01:29:14] 為什麼 [01:29:15] 因為後訓練的時候 [01:29:17] 模型是有reward的 [01:29:18] 我們每個人都是reward hacker [01:29:20] 對吧 [01:29:21] 模型受到獎勵 [01:29:22] 它如果任務做對了 [01:29:23] 做完了測試通過了 [01:29:24] 就會得到獎勵 [01:29:25] 所以它就會形成一種傾向 [01:29:27] 它會瘋狂地立即上手 [01:29:28] 去把這個任務盡可能快地完成 [01:29:30] 因為做得慢了 [01:29:31] 對吧 [01:29:33] 然後它能夠越來越多的 [01:29:35] 做一些簡單任務 [01:29:37] 這當然是好事 [01:29:38] 但是和人 [01:29:41] 我們人解決問題的方式還是不一樣 [01:29:44] 你看 [01:29:45] 我們作為計算機或者軟件工程的學生 [01:29:47] 你們是怎麼學習的 [01:29:50] 怎麼比補這個gap的 [01:29:52] 你到大一第一門課是什麼 [01:29:53] C語言程序設計 [01:29:55] 所以你先學的是這個東西裡面有什麼 [01:29:58] 對吧 [01:29:59] 你跳出你學習的框架 [01:30:01] 你先學的是這個implementation space [01:30:03] 裡面有什麼東西 [01:30:04] 把這裡的東西都弄得非常熟練 [01:30:06] 這個需求可以這樣實現 [01:30:09] 這個需求可以這樣實現 [01:30:10] 然後你再去上什麼軟件工程課 [01:30:12] 這樣一點一點的 [01:30:13] 把你對這件事情的任務給補全 [01:30:17] 但是在AI時代這件事情 [01:30:19] 當然是發生了變化 [01:30:21] 你既要阻止AI去亂猜 [01:30:27] 你又要盡可能地發揮 [01:30:29] AI能夠從A到B的能力 [01:30:33] 這個時候 [01:30:35] 我想這就是我這個學期要討論的問題 [01:30:40] 討論的問題 [01:30:41] 就是我們的生成式軟件工程 [01:30:44] 想要告訴大家的 [01:30:46] 我開個頭 [01:30:48] 人約神話 [01:30:49] The mystical man-months [01:30:50] 大型動物一旦陷入焦油坑就很難逃脫 [01:30:54] 它像泥潭一樣進去以後 [01:30:56] 而且冰死動物又會引來各種掠食者 [01:30:59] 然後他們也進了焦油坑 [01:31:00] 他們也出不去 [01:31:03] 這裡面有一個很經典的論斷 [01:31:07] 是如果一個團隊已經開始 [01:31:10] 或者一個軟件產品已經開始失敗了 [01:31:13] 你加進去更多的人 [01:31:14] 只會讓它變得更失敗 [01:31:15] 不會變得更成功 [01:31:17] 也就是說 [01:31:18] 就跟剛才那個QR鍵一樣 [01:31:20] 當一個產品已經開始 [01:31:23] AI已經開始產生slop的時候 [01:31:26] 你投入更多的token [01:31:28] 你也只會讓它變得更失敗 [01:31:30] AI會不斷的在它失敗的東西上再往上 [01:31:33] 再浮起來一點 [01:31:35] 直到你再也付不起那個token為止 [01:31:37] 然後你看教務系統不就是這樣 [01:31:40] 我覺得每一年你打開那個教務系統 [01:31:45] 你都發現它增加了功能 [01:31:48] 你們也發現了 [01:31:49] 然後我的感受就是學校又花了很多納稅人的錢 [01:31:55] Anyway這也許不是壞事 [01:31:57] 因為它促進了經濟的發展 [01:32:01] 然後軟件工程 [01:32:03] 軟件工程研究的就是 [01:32:05] 怎麼樣在這個gap實際存在的情況下 [01:32:09] 把一件足夠大的事就是一個真的 [01:32:12] 剛才我們展示一個很小的事 [01:32:15] 教務系統是一個相對來說比較大的 [01:32:17] 就你真的去能夠掙幾百萬幾千萬的上市公司 [01:32:21] 那是上市公司 [01:32:22] 你是真的可以掙到很多錢的產業級的產品 [01:32:26] 然後再到你真的要做一個國民級的新的東西 [01:32:29] 它有一套方法論 [01:32:31] 然後這個方法論就是這些人在 [01:32:33] 投入了billions of dollars裡面得到的教訓 [01:32:37] 它管理了很多的人 [01:32:38] 每一個人都很聰明結果陷入了教用課 [01:32:42] 軟件工程是有技術的 [01:32:44] 因為打個比方 [01:32:48] 我們南大有很多做軟件工程的老師 [01:32:51] 比如說他做什麼程序分析測試的 [01:32:53] 那他就是說如果你生成了一個 [01:32:55] 你看已經在implementation space裡面 [01:32:57] 已經有一個代碼了 [01:32:59] 我能不能自動地為它生成更多的測試用力 [01:33:01] 或者生成一個代碼的審查的東西 [01:33:03] 在這個代碼不滿足specification的時候 [01:33:06] 或者潛在不滿足intention的時候 [01:33:09] 我能夠給你一個warning [01:33:11] 他就做了一件在這個big picture裡面 [01:33:14] 非常非常微小的事情 [01:33:15] 然後我們有的時候 [01:33:16] 比如說你們在科技組裡面 [01:33:17] 開始加入科技組合研究的時候 [01:33:19] 你們就看到那個非常微小的事情 [01:33:21] 忘記了這個big picture其實是這樣 [01:33:24] 軟件工程是一個有技術 [01:33:26] 也有人類學 [01:33:27] 也有社會學 [01:33:28] 也有管理學的部分 [01:33:29] 然後恰好我覺得 [01:33:31] 在生成式軟件工程裡面 [01:33:33] 把它們變成了AI [01:33:35] 你管一堆不會和你抬槓 [01:33:40] 只會you're absolutely right [01:33:43] you're absolutely right [01:33:45] 它會聽你的話的人 [01:33:48] 在軟件工程裡面它要研究 [01:33:50] 這個人不聽你話怎麼辦 [01:33:53] 你怎麼樣管控團隊的風險 [01:33:56] 這個人離職了怎麼辦 [01:33:58] 跳槽了怎麼辦 [01:33:59] 到競爭對手去怎麼辦 [01:34:00] 這都是軟件工程要研究的 [01:34:02] 然後如果你去看 [01:34:03] 比如說一個軟件工程研究領域的話 [01:34:05] 它也是一個非常廣的 [01:34:07] AI for SESC for AI [01:34:09] 架構設計可靠性演化 [01:34:12] 這個軟件能不能省其生存下去 [01:34:14] human social aspects [01:34:16] 需求這個特別特別重要 [01:34:18] 因為越早的時候 [01:34:20] 這個gap是放大的 [01:34:21] 相對這個槓桿 [01:34:23] 你在這裡微微小小的變一點 [01:34:25] 你會在這裡產生巨大的變化 [01:34:28] 所以一般來說 [01:34:29] 這些大型的軟件系統 [01:34:30] 都是在這個點上面出錯了 [01:34:32] 沒有做好 [01:34:33] 導致了整體全部的崩盤 [01:34:36] 而這裡面有一個 [01:34:37] 我覺得是我們現今教育體系的 [01:34:39] 一個很大的問題 [01:34:41] 你們從高考過來到現在 [01:34:43] 你們所有的考試題 [01:34:45] 都是分中級能點的 [01:34:47] 假設你大多元 [01:34:48] 就可以用豆包摸魚 [01:34:50] 那你所有上了考場的題目 [01:34:52] 都是如果人5分鐘解決不了 [01:34:55] 那這個題它一般來說就不會出了 [01:34:57] 所以你們長久以往 [01:34:59] 你們訓練的就是解決 [01:35:01] 就和你們訓練的那個reward [01:35:03] 和agent訓練的那個reward是一樣的 [01:35:05] 你能不能5分鐘解決 [01:35:06] agent能不能5秒鐘解決 [01:35:08] 最後是agent它有更多的數據 [01:35:10] 它有更明確的反饋信號 [01:35:12] 所以它做得比你好 [01:35:14] 如果你沒有一種 [01:35:16] 很強的去好奇心 [01:35:18] 想要知道這個世界是怎麼運行的 [01:35:20] 一個產品到底是怎麼開發的 [01:35:22] 你很有可能 [01:35:24] 你沒有這種self motivation [01:35:26] 你就沒有去訓練自己 [01:35:28] 去解決這種long horizon的問題 [01:35:30] 最後就是你解決long horizon的問題 [01:35:32] 還不如agent [01:35:34] 這是一個 [01:35:35] 當然我覺得所以軟件工程挺好的 [01:35:37] 它有些課 [01:35:38] 我知道有些軟件工程 [01:35:39] 同學在抱怨他們的課程 [01:35:41] 說我上了文科 [01:35:43] 然後怎麼怎麼 [01:35:44] 你回我頭來 [01:35:46] 如果你能把技術 [01:35:48] 映射回這些文科的東西的時候 [01:35:50] 你會發現其實軟件工程 [01:35:52] 這就是一個文科 [01:35:54] 就是一個管理學 [01:35:56] 這是一本管理學的書 [01:35:58] 但它裡面確實有很多真實的 [01:36:00] 有趣的 [01:36:02] 實際上 [01:36:04] 在大語言模型的時代 [01:36:06] 軟件工程失敗的定義沒有變 [01:36:08] 就是從intent到 [01:36:10] statification到 [01:36:12] implementation的 [01:36:14] 翻譯錯了 [01:36:16] 要麼就是intent到statification不滿足 [01:36:18] 我做了一個東西 [01:36:20] 其實不是我要的 [01:36:22] 然後我做了一個實現 [01:36:24] 但是不滿足我的statification [01:36:26] 比如說正確性或者信仰 [01:36:30] 但是今天 [01:36:32] 模型 [01:36:34] 因為它有這種reforcement learning [01:36:36] 它對於這種 [01:36:38] 真正的長程信號的reward [01:36:40] 還是做得不夠好的 [01:36:42] 它更多還是在怎麼樣機械的完成任務 [01:36:44] 所以你會發現不管是GPT [01:36:46] CloudFable [01:36:48] 還是我們現在用的 [01:36:50] BioGM或者DeepSig [01:36:52] 它在面對下一個問題的時候 [01:36:54] 它都不會去想像我一樣 [01:36:56] 先去設計一個DSL [01:36:58] 雖然這個模型有足夠的 [01:37:00] 智能可以設計一個非常好的中間語言 [01:37:02] 來把這個問題非常 [01:37:04] 乾淨漂亮可維護的解決 [01:37:06] 但是AI的第一反應 [01:37:08] 就像大家一樣 [01:37:10] 它已經被訓練成做題家了 [01:37:12] 我們現在還沒有 [01:37:14] 現在我覺得還沒有把 [01:37:16] AI怎麼樣變成一個好的設計者 [01:37:18] 大家都說AI現在 [01:37:20] 最缺的是品位 [01:37:22] 好的工程品位給訓練出來 [01:37:24] 但同時我也覺得 [01:37:26] 既然它能做題家 [01:37:28] 它為什麼不能有好的品位 [01:37:30] 我覺得可能是有的 [01:37:32] 所以我還是有危機感的 [01:37:34] 我覺得這門課我現在這麼教 [01:37:36] 可能三個月以後 [01:37:38] 可能還沒有結束的時候 [01:37:40] 我講的所有東西都已經沒用了 [01:37:42] 這都是有可能發生的 [01:37:44] 我在上著上著上著上著 [01:37:46] 這門課所有東西就不存在了 [01:37:48] 因為我其實非常確信 [01:37:50] 它既然能解決數學問題 [01:37:52] 它既然能解決這種編程裡面 [01:37:54] 很細碎的邏輯 [01:37:56] 因為它都知道這些好的設計 [01:37:58] 它都見過 [01:38:00] 它為什麼不能從它的記憶庫裡面 [01:38:02] 找到那個好的設計 [01:38:04] 然後來解決這個問題 [01:38:06] 所以我覺得這是一個 [01:38:08] 都值得我們深思的 [01:38:10] 問題 [01:38:12] 你們可以回去想一想 [01:38:14] 怎麼主導QRJ開發 [01:38:16] 怎麼設計1號的NZO [01:38:18] 但是可以告訴大家的是 [01:38:20] GPT-5.6 Soul [01:38:22] 給我的答案非常糟糕 [01:38:24] 這兩個設計都是 [01:38:26] 一定會失敗 [01:38:28] 它給了一定會失敗的軟件工程 [01:38:30] 設計 [01:38:32] 然後我們可能會 [01:38:34] 我們的做一切的方式 [01:38:36] 可能都會 [01:38:38] 都會發生變化 [01:38:40] 我不知道如果AI [01:38:42] 連品位也選會以後 [01:38:44] 會發生什麼 [01:38:46] 所以最後一頁 [01:38:48] 首先古法編程已經死了 [01:38:50] 對吧 [01:38:52] 在完成一個單個任務上已經無人能敵了 [01:38:54] 這個軟件工程 [01:38:56] 暫時還沒有死 [01:38:58] 但我希望每一個同學 [01:39:00] 經過這一門課的 [01:39:02] 可以說是探討的 [01:39:04] 我也不能說我做的對 [01:39:06] 或者怎麼樣 [01:39:08] 試圖回答一個問題 [01:39:10] 在保研的時候你的導師問你 [01:39:12] 為什麼我要招你而不是買一個200刀的 [01:39:14] Colmax [01:39:18] 怎麼接住這個問題 [01:39:20] 我覺得這個問題上GPT-5.6 [01:39:22] 回答得還挺好的 [01:39:24] 雖然它做不到 [01:39:26] 它說它能找到 [01:39:28] 值得解決的問題 [01:39:30] 用證據讓壞方向及時停下 [01:39:32] 並對長期結果負責 [01:39:34] 這是一個好的回答 [01:39:36] 但是我發現GPT-5.6 [01:39:38] 做不到 [01:39:40] 我今天課就到這 [01:39:42] 我會把今天課程的內容 [01:39:44] 重新切片重新整理 [01:39:46] 但可能不會馬上 [01:39:48] 我應該會有一個生肉版 [01:39:50] 我今天上課的流程 [01:39:52] 剪一下會發布一個版本 [01:39:54] 大家可以對比我可能是 [01:39:56] 精修過的版本 [01:39:58] 謝謝大家