[0:00]就在上週,Anthropic不小心把Claude Code的原始碼外洩了。 一個年收估計25億美金的產品,1900多個檔案,51萬行程式碼,全部被攤在陽光下。 Anthropic的CEO Dario Amodei自己說過,公司內部有70%到90%的程式碼是Claude寫的。 Claude Code的創始工程師 Boris Cherny也表示自己已經好幾個月沒有親手改過一行code。 講到這裡,其實一些問題已經很明顯了。 在AI時代,懂得跟AI協作的團隊,這代速度可以是別人的好幾倍。 但風險也同樣放大了好幾倍。 AI之所以能把效率拉高十倍,往往是因為我們願意讓它主導更多決策,推動更多流程。 就像OpenClaw一樣,越強大的Agent,往往也是越危險的Agent。 不過,今天我想聊的不是怎麼避免這種悲劇。 原始碼外流之後,很多人開始挖寶。 我自己也看了不少國內外的分析,但發現絕大多數人都把焦點放在Claude Code即將推出的新功能上,什麼電子雞寵物,還沒發布的voice mode, 24小時運作的background agent等,能搶在官方之前偷窺即將上線的東西,當然很有趣。 但我認為,這次外流真正值得看的,不是接下來要加什麼功能,而是Claude Code的底層架構。 我是真的發自內心地想知道Claude Code到底為什麼這麼好用,這麼有靈性。 不管你是AI工作者,還是單純因為興趣平常喜歡研究這些東西,這都是一次非常難得的機會。 一間帶著整個產業往前走的公司,它的agent系統底層是怎麼設計的?為什麼每個人用Claude Code的時候,應該都有經歷過那個aha moment,覺得這東西跟其他AI tool就是不一樣。 有人把整個codebase拆開來分析,發現了一件事,AI模型本身大概只佔整個系統的20%。 剩下80%全部都是底層的基礎建設,怎麼管理權限讓AI不會亂來,怎麼在斷線之後記住之前做到哪,怎麼控制成本不讓它燒光你的額度,怎麼在出問題的時候知道哪裡壞了。 都是最無聊的東西,但恰恰是這80%,決定了Claude Code用起來是好用到爆,還是又一個AI玩具。 今天這支影片,我從Claude Code的原始碼裡面,整理出六個讓Claude Code這麼好用的底層設計分享給各位。 這部影片只有乾貨,沒有廢話,建議先點贊收藏,因為你之後應該會想要再回來開,那我們直接開始。 第一個底層設計是Permission框架。 市面上每一個教你做AI Agent的教學,結尾都一樣。 寫好prompt,接上tool calling,部署上線。 然後上線之後第一個壞掉的地方,通常就是Agent做了你不想讓它做的事。 Claude Code的做法是把所有tool分成三個信任等級。 Built-in是最高信任,內建的核心功能,像讀檔案,搜尋程式碼,永遠可用。 Plugin是中等信任,第三方開發的擴充功能,可以被關掉。 Skill是使用者自定義的能力,預設最低信任。 每個等級的載入方式,審核流程,失敗處理都不一樣。 就像公司裡面的門禁系統,正職員工能刷卡進所有辦公室,外包人員只能進特定樓層,訪客進門要有人帶。 你不會給每個人同一張門禁卡,Agent的tool也不應該有同樣的信任等級。 但真正誇張的是接下來這個數字。 光是讓Agent執行一個shell command,也就是你在終端機裡面打的那些指令,就要通過18個獨立的安全模組。 18個,一個工具,18項檢查。 這18個模組各自負責不同的事。 有的檢查這個指令是不是已知安全的pattern,比如ls或git status這種唯讀操作,是的話就跳過其他檢查直接放行。 有的偵測destructive command,就是那些會刪除資料,覆蓋檔案,或者做了就沒辦法復原的操作,像remove或drop table。 有的專門負責git相關的安全檢查,防止你不小心force push,把整個production branch覆蓋掉。 有的負責sandbox determination,決定這個指令該不該被關在一個隔離環境裡跑,就算出事也不會影響到外面。 每一個模組都能獨立阻止執行。 不是一道關卡,是18道,每一道抓不同類型的風險。 這個設計叫defense in depth,深度防禦。 就像機場安檢不會只有一道門,X光機,金屬探測器,人工檢查,行為分析,每一層各自負責不同的東西。 任何一層漏掉了,下一層還有機會攔住。 還有一個更基礎的東西,tool registry,你可以把它想成一份工具清單。 Claude Code有207個面向使用者的command,184個面向model的tool,每個工具都要先把自己名字、來源、功能描述登記在這份清單上。 系統看清單就知道有哪些工具可以用,不需要真的去跑它。 而且不是每次對話都載入全部工具,它會根據當下的任務模式和權限設定,只組裝這次對話真正需要的那幾個。 如果你有看過我上一支影片,這個概念你應該不陌生。 上次我們聊到skills的progressive disclosure,用不到的skill就不載入。 Claude Code對工具用的是完全一樣的設計,200多個工具不是每次都全部搬出來,而是只載入需要的那幾個。 工具少了,塞給AI的背景資料就小,回應就快,token也更省。 如果你的Agent能在真實世界做事,跑code, call API,改檔案,發訊息,但你沒有permission layer,那你有一個demo,不是一個產品。 你用Claude Code的時候有沒有注意到,它在跑shell command之前,有些會直接跑,有些會先問你一次,ls,git status這種它直接放行, 但碰到可能有風險的操作就會停下來等你同意,那不是客氣,那是18道安全模組跑完之後的判定結果。 第二個底層設計是Session,重點是什麼?它存的是完整狀態,不是只存對話。 安全擋住了,但Agent還是會掛。 連線斷了,process crash了,或者使用者直接把tab關掉了,掛了之後重新打開,一切從頭來,之前建立的context不見了, 之前授權過的操作要重新授權,之前算到一半的東西要重算。 如果你的Agent framework把session當成對話記錄在存,那只要出了一點差錯就等於重來。 但session不只是對話記錄。 Claude Code的session是一個完整的可復原state object,用JSON存在本地詞點,裡面包含對話內容,每一輪用了多少token,哪些操作已經被授權,當前的設定是什麼。 而且不是關閉才存,是每一個重要事件發生之後都會存。 同一個stored session你可以完整重建整個對話引擎,把檔案載入,把對話記錄重建,把token用量還原,拿回一個跟斷線前一模一樣的引擎。 不是差不多,是一模一樣。 就像打遊戲存檔,如果存檔只記了你在哪張地圖,但沒存血量,裝備,技能點,讀檔之後你拿到的是一個殘缺的角色。 你站在對的地方,但狀態全部跑掉了。 Session persistence要存的是完整的遊戲狀態,不只是你站在哪裡。 但這裡有一個更深的區分,幾乎所有Agent framework都搞混的,conversation state跟workflow state是兩個不同的問題。 Conversation state回答的是我們聊到哪了, Workflow state回答的是做到第幾步了,哪些事情已經實際執行了,這個步驟重試安不安全,重啟之後下一步該做什麼。 舉個例子,Agent幫你重構一個大檔案,改了三個函數之後斷線了,重連之後,它記得你們在聊重構, 但不記得前三個函數已經改好了,所以它又改了一次,結果把已經改好的東西改壞了。 這就是只有conversation state,沒有workflow state的後果。 如果你沒有分開處理這兩個東西,Agent crash之後,最好的情況是從頭來,最壞的情況是剛才說的,重複執行一個已經做過的操作。 解法是每一個會對外部世界產生改變的步驟,都要打checkpoint,而且每個操作都要給一個唯一的編號,這樣就算重試了, 系統看到這個編號就知道這個我做過了,不用再做一次,不會重複執行。 你有沒有碰過用其他AI tool聊到一半斷線,重連之後它完全不記得之前在幹嘛,你得從頭解釋一遍。 Claude Code很少有這個問題,就算做到一半電腦關機了,重開之後只要用斜線resume就可以找回之前的對話記錄, 它還記得你在做什麼,做到哪一步,之前授權過什麼。 第三個底層設計是Budget,用戶的額度遇到上限之前就要擋住,不是褲子都脫了才跟我說請加值。 Agent穩定,不會亂做事,掛了,也能復原。 但穩定地燒錢,也是一種壞法。 Claude Code的做法是,每一輪對話之前先預估這一輪大概會用掉多少token。 如果預估超過budget,直接在API call發出去之前擋掉,跟用戶說你剩餘的額度不足以完成這次任務。 有趣的是,budget防護其實對Anthropic短期營收不利。 你會覺得他們應該樂見用戶多燒token才對。 但這跟Amazon退貨策略一樣,短期虧損換長期信任。 Cost tracking不只是賬單的一行數字,它是一個keep human in the loop的方式,使用者付費天經地義,但這樣的設計類似明碼標價,讓使用者知道自己該付多少費用。 你用Claude Code的時候有沒有注意到,它快要用完額度的時候會主動告訴你,然後進入一個收尾模式,把手上的事做個合理的收束。 不會突然斷在半路讓你不支所措,每一輪開始前先算這一輪要花多少,不夠就提前通知你,而不是做到一半才說額度用完了。 第四個底層設計是系統記錄,Agent不能只靠對話記錄來debug,它需要自己的系統日誌。 錢的問題能擋了,但有些問題不會直接爆炸,是慢慢壞的。 Agent行為漂移了,回應品質下降了,某個工具靜靜地失敗但沒人發現,這時候你需要的不是對話記錄,是系統記錄。 對話記錄告訴你使用者跟Agent說了什麼,System log告訴你系統做了什麼,兩件不同的事。 這裡有兩個不同層次的記錄,第一個是即時的,叫streaming event。 Claude Code在回應你的過程中,不只是吐文字給你,每一個動作都會即時廣播狀態,選了哪個工具,權限決策是什麼,token用了多少,為什麼停下來。 如果你用過Claude Code,你一定有這個經驗,看著它streaming的過程,發現它要往你不想要的方向走,直接打斷。 這種即時介入只有在每個event都帶有意義的狀態時才做得到。 第二個是事後的,叫HistoryLog,就是系統日誌,它獨立於對話之外,記錄所有系統層級的事件, 哪些資料被載入了,哪些工具被啟動了,系統怎麼決定要走哪條路,哪些操作被拒絕了。 每個事件都有分類,有結構化的細節,這是事後debug的時候用的。 然後每一種對話結束的方式都有名字,completed, budget exceeded, turn limit, user cancelled, error, timeout。 UI根據結束原因顯示不同訊息,你的Agent不是停了,是因為什麼原因停了。 這個區別在debug的時候非常關鍵。 還有一個Doctor pattern,就是健康檢查,一個專門的指令,啟動時自動跑,也能隨時手動跑,檢查API credential有沒有過期, 外部連線通不通,設定檔完不完整,工具能不能正常載入,就像汽車的儀表板,不用等到拋錨了才知道哪裡有問題。 你用Claude Code的時候,看到底下顯示Reading file, Running command這些狀態訊息,那不是裝飾,那是streaming event即時回饋系統狀態, 系統正在做什麼,你看到它在想什麼,準備用什麼工具,為什麼停下來。 這種透明度讓你可以隨時介入修正方向,大部分AI tool做不到這件事,因為它們的streaming只有文字,沒有狀態。 第五個底層設計是系統瘦身,你不能讓系統無限膨脹。 前面四個底層設計讓Agent活得下來,但系統會越跑越肥,肥了就會慢。 第一個要瘦的是工具,前面講過了,不是每次對話都需要所有工具。 Claude Code根據mode, permission context, deny-list組裝session-specific的tool pool, Plan mode不載入能改檔案的tool,被deny的tool下次不出現。 工具少了,整個系統都輕了。 第二個要瘦的是對話歷史,對話記錄不應該是只進不出的流水賬,越長token越多,成本越高,回應品質也會掉。 Claude Code超過一定turn數就自動compact,但它是summarize,不是truncate,差別在哪? Truncate是把前面的對話直接砍掉,等於Agent失憶了。 Summarize是把前面的對話濃縮成重點,Agent還記得發生過什麼,只是不記得逐字逐句的細節,保留context的同時減少token。 之前答應各位要出一支記憶系統相關的影片,一直沒時間,但各位別慌,我近期應該就會開始處理了。 第三個要瘦的是啟動流程,大部分AI tool打開之後,還要花時間搞清楚你在幹嘛。 Claude Code不一樣,它的啟動背後跑了一套七個階段的流程,先驗證你的賬號憑證,掃描你的project結構,包含讀取CLAUDE.md裡面你寫好的專案指令, 然後檢查執行環境,接著同時初始化工作區跟工具清單,再載入plugin, skill, MCP server,最後決定要用什麼模式進入主迴圈。 每一個階段都要等上一個階段完成才能開始,該同時跑的就同時跑,不浪費時間。 關鍵在於,Agent在你打第一個字之前,就已經有完整的situational awareness。 你的賬號驗好了,project掃完了,該裝的plugin裝好了,該跑的檢查跑完了,你還沒開口,它已經準備好了。 你有沒有注意到Claude Code開啟的速度?你打開它,還沒打字,它已經知道你在哪個project,用什麼語言,有哪些檔案。 那不是魔法,那是七個階段的啟動流程,在你打第一個字之前,就把所有前置作業跑完了。 對話越來越長,但它還是很順,那是auto compaction在背後幫你瘦身。 第六個底層設計是模組化,角色,記憶,技能,全部要可以插拔,擴充。 能跑,能活,不會發福之後,還剩一個問題就是功能的可擴充性,今天要加一個新功能,會不會牽一髮動全身? Claude Code定義了六種agent type,Explore, plan, verification, guide, general purpose, statusline setup。 每一種有自己的prompt, allowed tool, denied tool, Explore agent不能改檔案,plan agent不能跑code。 你叫它偵查,它就只能偵查,不能順手改東西,你叫它規劃,它就只能出方案,不能自己跑去實作。 大部分人的直覺會覺得agent越強大越好,但在production環境下剛好相反,嚴格限制每個角色能做什麼, 才是讓系統可靠運作的關鍵,就像公司管理,你不會讓會計去做產品決策,也不會讓工程師去簽財務報表。 每個人有明確的職責範圍,出了問題馬上知道是哪個環節出事。 Memory系統有八個模組,它會幫每一筆記憶打相關性分數,看跟當前任務有多相關。 太舊的記憶會自動降權,記憶還有分類,有些是整個團隊共用的,有些是你個人的,有些是某個project限定的。 另外還分persistent memory跟session memory,前者是長期記住的,後者是這次對話結束就可以丟掉的。 但最關鍵的設計是每一筆memory都要追provenance,也就是所謂的來源,這筆記憶是從哪來的,什麼時候產生的,是使用者說的還是model自己推論的, 有沒有更新的資訊跟它矛盾,沒有來源的memory,對使用者來說就是AI幻覺。 然後20個skill module提供了一個很聰明的中間地帶,不用讓Agent每次從零開始摸索, 也不用把所有workflow寫死在程式碼裡,每個skill自帶觸發條件,就是什麼情況下該用這個skill,有自己的prompt模板, 需要用到哪些工具,input要長什麼樣,output要長什麼樣,全部定義好,是一個獨立的,可插拔的模組。 想擴充新能力的話,寫一個skill就好,不用改核心架構。 你用Claude Code的時候有沒有用過Skill?你可以定義一個skill讓它用特定的方式寫test,或者用你習慣的workflow做code review。 定義一次之後,下次你只要說一句話就知道該怎麼做,不用每次重新解釋。 我上一支影片講的就是Skill的大方向概念,如果各位需要我出一期從零開始製作Skill的實戰教學,在底下留言讓我知道。 六個底層設計講完了。 最後講一下這次事件我一些額外的想法。 過去幾年,大家都在比誰的model更強,跑分更高。 但不論是2026年AI開始真正進入企業的實作應用階段,或者是Claude Code這次外流的原始碼,都讓我知道一件事,model本身的能力當然重要, 但真正的護城河在應用層面的框架,或者說一個好的企業層級的Harness。 Harness你可以理解成把model包起來的那一整套系統,包含安全,穩定,效率,擴展性的所有設計,讓model能在真實世界可靠運作。 那80%的底層設計,Claude Code為什麼用起來跟其他AI coding tool就是不一樣,不是因為Claude的model比別人好多少,其實有可能就是,哈哈。 而是因為那80%的底層設計,18道安全模組,完整的session persistence, budget check,七個階段的初始化pipeline,模組化的skill系統。 這些東西加在一起,才創造了那個讓你覺得這工具太他媽好用的aha moment。 Agent框架跟模型本身的能力我覺得是同樣重要的,你只要付錢,就可以輕鬆使用最頂尖的模型,但你拿不到那個讓model在production環境下安全,穩定,好用的框架。 所有Agent教學教你的是那20%,剩下80%就是今天講的這六件事,你不需要親自去讀完51萬行code,你需要的是建立起自己的認知系統, 去理解Harness的重要性,去理解為什麼光有好的model不夠,還需要好的框架。 如果你最近也在打造自己的AI Agent,希望今天這支影片有給你一點啟發。 那以上就是今天的內容,各位喜歡的話記得幫我按贊,追踪加分享,這是我持續創作下去的動力。 我們下次見。
Watch on YouTube
Share
MORE TRANSCRIPTS



