這是一篇我在 2026 年 7 月的 AI 工程師年會上發表的演講的書面版本,也曾以推文串的形式分享。
一個大膽的看法:我認為理解我們的代理人所寫的程式碼仍然很重要!
在這次演講中,我將解釋為什麼會這樣,並分享一些有效理解程式碼的方法。好了,讓我們開始吧。
代理人為我們編寫的程式碼越來越多,我們都知道要跟上腳步變得越來越難。
但好消息是:有很多方法可以理解程式碼!逐行閱讀差異(diff)並不是唯一的方法。
這次演講的大部分內容將介紹我發現有助於理解代理人正在建構的系統的技巧:
但首先我們必須問一個更基本的問題……
我們難道不應該將自己排除在迴圈之外,讓代理人自行完成嗎?隨著代理人變得越來越聰明,我們是否還有必要深入細節?
我認為許多人——即使是那些支持理解的人——對這個問題的答案有點不正確!
一種可能的答案是:我們理解是為了驗證。我們檢查代理人的工作,看看它是否正確。
正確可以意味著很多事情:它是否符合規格,架構是否良好……但這本質上是一個「讚」或「不讚」的問題。
事情是這樣的:代理人越來越擅長驗證自己的工作。這很好!我喜歡我的代理人不犯錯。
但是,嗯。這讓我們人類處於什麼位置?
這就是另一個答案出現的地方:我們可以理解是為了參與。
你可以了解代理人正在做什麼,以確保你能積極參與創意過程。這就是為什麼這很重要……
這從來都不是只有一個迴圈!一個專案是與代理人進行許多、許多迴圈。
你對系統的理解是你產生下一個想法來發展它的能力的一部分。
你需要心中有一個豐富的概念集,才能創造性地、流暢地思考如何推進某件事。如果你缺乏這種流暢性,你參與專案的能力將會受到實質性的限制。
順帶一提,這與 Margaret Storey 和 Simon Willison 推廣的認知債務(cognitive debt)概念密切相關。
這就像技術債一樣:短期內你可以暫時不理解正在發生的事情,但最終它會讓你付出代價。
但這引出了下一個問題:如何做?在我們與 AI 合作並快速推進時,我們如何建立這種人類的理解?
嗯,原來這不是第一次有人思考如何傳達理解。我認為我們可以從教育中尋找靈感。我們能否竊取教育領域發明過的最佳想法並應用於這個問題?
今天我想分享三種展示我們如何嘗試這樣做的技巧。
第一:解釋。什麼是好的解釋?
每當代理人完成某項工作時,這就是一個解釋的機會——一個產物。
最簡單的方法是閱讀程式碼差異(code diff):變更的原始材料。
最好的解釋會是什麼樣子?如果你有一個團隊——人類或 AI——真正用心為你解釋某件事,那感覺會是怎樣的?
這是一個答案。我創建了一個名為 `/explain-diff` 的技能,我每天都使用它,許多同事發現它很有價值。
它以 HTML、Markdown 或 Notion 文件形式輸出經過深思熟慮的結構化程式碼解釋器。Notion 是與團隊協作和討論這些解釋器的良好場所。(免責聲明:我在 Notion 工作,所以我有點偏頗。)
讓我們看看其中一個解釋器包含什麼,以編輯電子遊戲視角的範例來說明。
第一原則:教我背景資訊!
在我們接觸到變更內容之前,先幫助我理解已經存在什麼。在這種情況下,教我遊戲引擎。
第二原則:直覺先於細節。
在任何程式碼之前,它會陳述目標——「透過 2D 繪圖技巧讓花園感覺具有三維感」——並解釋相關概念,例如什麼是等距投影。
這一切都建立了我對變更本質的直覺。它正在追趕身為人類的我,以便我能成為理解的平等參與者。
你也可以透過互動式圖表來建立直覺。
在這裡,我透過拖動花園裡的石頭並觀察它們的座標移動來理解等距視角。
(這使用了 Notion 剛推出的新功能:你現在可以在頁面中嵌入互動式 HTML。)
我們終於看到了程式碼。但典型的差異是一堆按字母順序編輯的檔案,沒有任何解釋。
我稱之為「文學式差異」(literate diff)是以散文形式呈現——按照合理的順序逐步講解變更,並附帶周圍的解釋和嵌入的程式碼片段。審查起來比原始差異更快。
所有這一切的最終結果是一個不錯的解釋包。我仍然會閱讀程式碼差異,但我總是先閱讀這個。
有時我會把這些列印出來帶到咖啡館——這樣分心的事情比較少。
這真是太諷刺了:AI 將一個互動式活動變成了一個我可以深度專注的靜態紙本報告 :)
只有一個問題:閱讀是很辛苦的工作 😅
正如 Andy Matuschak 所說:「書本不起作用」!你很容易欺騙自己以為你讀了,但實際上並沒有記住或理解。
我們該如何解決這個問題?我從 Andy 和 Michael Nielsen 在文章中嵌入間隔重複測驗(spaced repetition quizzes)的工作中獲得了靈感。
現在我的程式碼解釋器也做了類似的事情。在解釋器的底部有一個互動式測驗——關於變更的五個問題——我會試著回答它們。
我的規則是:在我能通過測驗之前,我不會將程式碼發送給他人,在審查他人程式碼時我也會這樣做。
測驗是一種速度調節器。與 AI 合作時,迴圈很容易比人類理解的速度更快。
測驗是一種平衡力量:我機械地問「我真的理解嗎?」以便我能繼續成為一個完整的創意參與者。
好的,這就是 explain-diff。如果你想要這個技能,這裡有:兩種變體,一種輸出 HTML,另一種輸出 Notion 頁面。
下一個想法:微型世界(micro-worlds)。這個想法靈感來自富有遠見的教育家 Seymour Papert。
Papert 有一個美妙的想法,他稱之為「活在數學國度」(living in Mathland):如果你想學數學,就活在數學國度——就像你想學法語,你就去法國生活一樣。我們能否建立一個環境,讓孩子們在其中自然地學習數學,作為他們好奇心的結果?
那麼我們該如何將其應用於程式碼?我們能否創造一個你可以居住並自然地直覺理解系統如何運作及其如何變化的世界?
我與一個代理人合作建構了這個除錯器,它讓我能夠逐步執行我的邏輯語言的執行——時間滑動,查看堆疊上的內容以及每個步驟評估的規則。我甚至可以為自己留下評論(「很好,我們正確地應用了那個規則」)。
為我製作除錯工具與讓代理人除錯之間有很大的區別——自己動手做,我才能在過程中發展理解力。
另一個例子。我正在將我的個人網站從一個框架遷移到另一個框架,Claude 寫了一個腳本來完成它。但它很難審查:我不熟悉新框架,我只能說「我猜看起來差不多對」。
所以我請 Claude 為我製作一個電子遊戲——一個指揮中心,讓我一步一步地完成遷移,觀察可見的效果和檔案樹的演變。它產生了一個使用者介面,我點擊按鈕逐步執行遷移,同時運行我的舊網站和新網站。
在這個指揮中心,我逐步觀察新網站的誕生。這讓我獲得了與手動完成類似的理解——但速度快得多,因為整個體驗都為我呈現出來了。
這裡的重點是,代理人可以編寫程式碼片段來幫助我們人類理解其他程式碼。
好了,最後一個技巧:共享空間(shared spaces)。到目前為止,這一切都是關於單獨理解……但當你在團隊工作時,你需要一起理解。
當你和另一個人擁有相同的心理模型時,你們就可以高效地溝通。你們有一個共享的詞彙,可以喚起相同的圖像,這樣你們就可以即興創作、交流並進行創意對話。沒有這些共享的結構,這些對話就困難得多。
我對創建共享環境感到非常興奮,團隊可以在其中共同建立這種理解。這有點像 Notion 的全部意義。
最近在 Notion,我們為人類和代理人協同工作發布了大量新功能,這樣你的整個團隊就能建立共享的理解,而不是各自在孤島中工作。
一個小例子:你現在可以在 Notion 中運行 Claude 和 Cursor 代理人。我現在大部分的程式碼編寫都是這樣做的。
當這些代理人在 Notion 中制定技術計劃時,預設情況下它是在一個協作頁面上,所以我可以立即與我的團隊評論和討論。一起思考,而不是獨自思考!
好了,總結一下。今天我們討論了一些關於理解程式碼的技巧……但實際上我認為這是一個更嚴重的問題。
人類理解事物如何運作(總體而言)仍然很重要!不僅是為了驗證,更是為了參與。
而且,不出所料,這不是一個新想法。它回溯到我們計算領域的起源……
50 年前,Alan Kay 設想電腦可以成為一種新媒介,比書本更能教會人們——尤其是孩子們——如何思考世界。
在這張圖片中,這些孩子們可能看起來像是在 iPad 上觀看 YouTube,但他們不是。他們在玩一個互動遊戲,並在玩耍時編輯程式碼,以更好地理解物理學。這是在 50 年前!!
現在你應該能理解這個迷因了。
重點一直是增強(augment),而不僅僅是自動化(automate)。
AI 現在讓創建模擬變得如此容易,這真是太美好了……讓 AI 教導我們是計算機所能開啟的最偉大的可能性之一。
這讓我對未來非常樂觀!
如果我們構建了正確的工具,我們現在就能比以往任何時候都更好地理解世界。我們不必僅僅將自己排除在迴圈之外,我們也可以更深入地參與其中。這取決於我們。
如果你喜歡這次演講,你可能會喜歡我寫的關於人機協作的其他文章: