🎓 AI-LECTURER 週末主題課|2026-09-20|約 150 分鐘(可分次讀)

信任,但要查驗:AI 寫程式助手的稽核、可靠度與成本

彙整本週素材:Cloudflare/Security-Audit-Skill、Inside ZCode: Silently uploading your Gi、Your Agent Aced the Task. Will It Do It 、GPT-5.6 Luna vs. GPT-6 Astra: Is a $1.20、Breaking the 1.58-bit Barrier for Ternar、When LLM judges agree, should we believe
📍 真實場景
小林,一個人接案的網站工程師,平常靠 AI 助手幫忙寫程式、檢查程式

客戶的網站下週要上線,客戶要求上線前必須做過資安檢查。小林打算讓 AI 助手把整個專案掃過一遍,再交一份報告。

😖 卡住的地方:小林不知道該信 AI 到什麼程度。工具會不會偷偷把程式碼傳出去?這次抓得到漏洞,下次還抓得到嗎?用便宜的模型會不會漏掉關鍵問題?
💡 這門課給小林一套「三道檢查」:先看工具本身安不安全,再看結果穩不穩定,最後看評分可不可靠。他就能決定哪些工作放心交給 AI,哪些一定要自己把關。
第 1 單元|AI 助手上工了:從寫程式到當稽核員

🧭 本單元白話講

這門課的場景是:AI 助手不只幫你寫程式,還被請來當稽核員,替程式找漏洞、審查別人送來的修改。這個單元先看兩個實例,一個講「怎麼做」,一個講「值不值得」。第一個是 Cloudflare 公開的 Security-Audit-Skill,它是一套讓 AI 編碼代理化身資安稽核員的技能包事先寫好的一份工作說明書,AI 代理照著步驟去做某一類任務。它是 Cloudflare 內部漏洞獵殺系統的種子。那個系統後來長成跨多個程式庫、多階段的正式機制,公開的這一份則是它還只針對單一程式庫時的起點。

這套技能包把稽核拆成六個階段,每個階段都由彼此獨立的代理負責,沒有誰自己檢查自己。第一階段是偵查:先畫出系統的架構、信任邊界程式裡「可信的內部」和「不可信的外部輸入」交界的地方,攻擊常從這裡下手、外界資料進來的入口,以及過去留下的證據,寫進 architecture.md 和 coverage-ledger.json。第二階段是以覆蓋為導向的搜尋:照著覆蓋台帳一張記錄「哪些程式區塊已經查過、查了什麼」的清單,用來避免漏看,把一格一格的工作分給互相隔離的獵人代理,各自記錄檢查過什麼,再由「覆蓋批評者」找出還沒查到的缺口。

接下來是查證。第三階段,每個不重複的候選弱點都交給一位全新的驗證者,它的任務是想辦法把這個弱點推翻。第四階段把結果分成三種結論,寫進 findings.json 並對照 report-schema.json 檢查格式。confirmed(已確認)代表有完整的來源追蹤與可觀察到的具體結果。needs_validation(待驗證)代表還有一個明確沒解決的事實,所以不給嚴重程度。rejected(已駁回)則記錄被推翻的候選。老實標出「還不確定」,本身就是這套設計的一部分。

第五階段,全新的代理會再核對最終寫下的原始碼說法,如果有實質更換,還會有另一位獨立驗證者複查。第六階段才從這些查證過的紀錄,加上覆蓋台帳,產出 REPORT.md、FINDINGS-DETAIL.md、NEEDS-VALIDATION.md 三份文件。主控的父代理另外會跑 validate-coverage-ledger.cjs 和 validate-findings.cjs 兩支檢查程式,確認台帳與結論的格式沒有壞掉。同一個程式庫重複跑也是累加的:後面的執行會利用前次的台帳與發現去補缺口,並重新驗證有改動的原始碼,過期或未解決的工作不會被當成「已涵蓋」。

第二個實例回答另一個問題:審查程式修改時,便宜的 AI 模型夠不夠用?Entelligence 拿 50 個公開的評測用 PRpull request,工程師把改好的程式提交給團隊審閱的申請,通過後才會併入正式程式 來測,分別來自 Cal.com、Sentry、Discourse、Keycloak、Grafana,各 10 個,每個都在乾淨的基底上被埋入缺陷。便宜的 GPT-5.6 Luna 與昂貴的 GPT-6 Astra 拿到同樣的提示、同樣的程式差異。價格差在 tokenAI 計費與處理文字的最小單位,可粗略想成一小段字詞:Luna 每百萬個輸入 0.20 美元、輸出 1.20 美元,Astra 則是 10 美元與 50 美元。換算下來,單次審查是 0.0041 美元對 0.113 美元,差 28 倍。怎麼判斷抓到的是真 bug?每個 PR 的所有發現匿名混在一起,由 Astra 與 Sol 兩個模型法官各自判斷,兩位都認定是真 bug 才算通過。兩位對 91% 的發現看法一致,最後有 143 個不同的 bug 通過。作者也坦白,Astra 同時是法官之一,可能略微偏袒自己。

結果是:Luna 抓到 69 個已驗證的 bug,Astra 抓到 92 個。也就是 Luna 花了 Astra 3.6% 的錢(0.20 美元對 5.66 美元),拿到 75% 的成績,而每個已驗證 bug 的成本,Astra 貴了 20 倍。代價在可信度:Luna 提出的 93 個發現裡有 24 個查無此事,Astra 的 96 個只有 4 個,換成精確率AI 說「這是 bug」的那些發現中,真的是 bug 的比例就是 74% 對 96%。更關鍵的是資安:24 個資安 bug 裡,Luna 抓到 9 個,Astra 抓到 19 個。所以作者的結論是:這個價位的 Luna 抓日常的正確性 bug 夠用,但不會讓它單獨審查登入驗證或權限相關的程式碼。

⚙️ 脈絡拆解

1
1 偵查:先畫地圖先不急著找漏洞,而是把系統怎麼組成、哪裡是信任邊界、外界資料從哪些入口進來、過去有什麼證據,都記進 architecture.md 與 coverage-ledger.json。
2
2 搜尋弱點:照台帳分區獵捕依台帳把程式切成一格一格,分給彼此隔離的獵人代理各查一格並記錄檢查內容,另有覆蓋批評者專門挑出漏看的地方。
3
3–4 驗證並整理:找人來推翻每個候選弱點交給全新的驗證者,任務是試著把它推翻。結果分成 confirmed、needs_validation、rejected 三類寫進 findings.json,並用 report-schema.json 檢查格式。
4
5 二次查核:再由別人核對全新的代理再核對最終寫下的原始碼說法。若有實質更換,會再交給另一位獨立驗證者複查。
5
6 出報告:只寫查證過的從已驗證的紀錄與覆蓋台帳,產出 REPORT.md、FINDINGS-DETAIL.md、NEEDS-VALIDATION.md 三份文件,報告內容全部來自前面查證過的紀錄。
同樣 50 個 PR、同樣提示:便宜模型與昂貴模型的差別
項目GPT-5.6 Luna(便宜)GPT-6 Astra(昂貴)
已驗證的 bug 數6992
提出的發現數(其中查證失敗)93(24 個失敗)96(4 個失敗)
精確率74%96%
24 個資安 bug 中抓到幾個919
50 個 PR 的總花費$0.20$5.66
每個已驗證 bug 的成本$0.0030$0.061
平均每次審查時間23 秒36 秒
平均每次輸出 token 數2,104688

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 Cloudflare 的六階段流程和這份實測,為什麼都不讓 AI 自己給自己打分數?
Cloudflare 讓全新的驗證者專門負責推翻候選弱點,最後再由獨立代理核對最終紀錄。實測則要 Astra 與 Sol 兩位法官都認定,才算真 bug。共同的邏輯是:找問題的人和查驗的人要分開,結論才有份量。連 Astra 兼任法官這件事,作者都標成可能的偏袒,代表「誰來查驗」本身也要被查驗。
🔭 「便宜模型抓一般錯誤夠用」這句話,界線畫在哪裡?
數字有兩面。Luna 用 3.6% 的錢拿到 75% 的已驗證 bug,量大時很划算。但它有 24 個發現查無此事,約每四個發現就有一個是假警報,24 個資安 bug 也只抓到 9 個,不到四成,Astra 則接近八成。作者把界線畫在登入驗證與權限這類程式碼上:日常的正確性 bug 可以放心交給便宜模型,這類程式碼不要讓它獨自把關。

📝 隨堂考(點選答案,立即回饋)

Q1. 在 Cloudflare 的六階段流程裡,「全新的驗證者」拿到候選弱點時,任務是什麼?
✅ 素材寫明,每個不重複的候選弱點都交給一位全新的驗證者,它要試著推翻這個弱點。找的人與查的人分開,可以避免同一個代理自己說了算。
Q2. 依照 50 個 PR 的實測結果,下列哪種用法最貼近作者的建議?
✅ Luna 用 3.6% 的花費抓到 75% 的已驗證 bug,日常夠用。但它的資安 bug 只抓到 9 個,Astra 抓到 19 個,誤報也較多(93 個發現中 24 個查證失敗)。所以作者說不會讓它單獨審查登入驗證或權限程式碼。
第 2 單元|第一道檢查:你的程式碼被帶去哪裡了?

🧭 本單元白話講

上一單元說到,AI 助手上工後,你的角色從寫程式的人變成稽核員。稽核的第一站不是 AI 寫出來的程式,而是這個工具本身:它在你的電腦上做了什麼,又把什麼帶去了哪裡。本課的案例是智譜推出的 AI 寫程式桌面軟體 ZCode。有位使用者原本只是想清出硬碟空間,卻發現 ZCode 存放自己資料的根資料夾 ~/.zcode 佔了 700MB 以上。他斷斷續續追查,最後得到一個連他自己都吃驚的結論。

作者確認的是:只要你處於登入狀態,ZCode 就會把整個工作區(你正在做的專案資料夾)打包,連同完整的 Git 歷史Git 是記錄程式每次修改的系統,歷史就是每一版怎麼改、改了什麼的完整紀錄、大型素材檔的快取、Git 的操作流水帳和全域設定,加密後直接送到阿里雲的 OSS阿里雲的雲端檔案儲存服務,可以想成網路上的大倉庫。打包時會排除 node_modules 等依賴。以作者的例子來說,整個專案倉庫有 10GB,扣掉依賴後剩下 345MB。他形容這 345MB 幾乎全是核心智慧財產,而且是他正在開發的商業專案。

這件事最值得停下來想的是加密的設計。用來加密的 RSA 公鑰一對配對鑰匙中只能上鎖的那一把;配對的私鑰才能開鎖,是伺服器在每次上傳時當場發給客戶端的,而對應的私鑰只放在雲端。結果是:躺在你自己硬碟裡那份幾百 MB 的密文,你解不開,連 ZCode 客戶端自己也解不開。換句話說,你手上有這個檔案,卻沒有任何辦法自己驗證裡面到底裝了什麼。

這份調查給稽核員的示範,是從一個不合理的數字開始追。作者先比較資料夾大小,鎖定 v2/checkpoints/,裡面有一個 313MB 的 .enc 檔,旁邊有一份狀態檔(見下方逐行導讀)。日誌裡卻沒有任何明確的上傳網址,於是他拆開客戶端的 app.asar桌面軟體把自己的程式碼打包成的一個檔案,拆開後就能看到它實際會連去哪些網址、做哪些事,還原出完整的上傳流程(見流程圖)。要注意的是,這一份 313MB 剛好因為失敗 564 次而卡在待上傳資料夾,但整套上傳流程是作者從程式本體還原出來的。

至於怎麼關掉:作者在文中提供了一行就能永久關閉這個上傳的防禦作法,但本課取得的素材節錄,剛好在講到上傳細節時中斷,看不到那行指令。本課不自行編造指令,請直接讀原文:https://blog.ferstar.org/en/posts/zcode-silent-workspace-snapshot-upload/ 。另外,這是單一使用者的調查紀錄,不是廠商的說明。比較穩妥的態度,是把它當成「值得在自己電腦上照著查一遍」的線索,而不是定論。

⚙️ 脈絡拆解

1
向伺服器領「上傳許可」ZCode 客戶端向 zcode.z.ai 的 /api/v1/snapshot/upload-credential 發出請求。伺服器回傳快照編號、這一輪專用的 RSA 公鑰、大小上限,以及 OSS 的表單簽章和回呼資訊。
2
在你的電腦上打包加密先把工作區壓成一包(tar.gz),再用 AES-256-CTR 這種加密法把內容鎖起來,最後用剛領到的公鑰把「開鎖用的鑰匙」再鎖一層。私鑰只在雲端,所以這一包只有雲端那端能打開。
3
直接丟進阿里雲 OSS客戶端用表單直傳(PostObject)的方式,把加密好的 tar.gz.enc 直接送到 OSS,不必先經過 ZCode 伺服器轉手。
4
OSS 回頭通知已收到OSS 收到檔案後,透過回呼(callback)通知 ZCode 伺服器確認收件。整個過程都在背景進行。
~/.zcode 底下三個大資料夾:作者如何縮小嫌疑範圍
資料夾大小裡面是什麼作者的判斷
cli/約 257MB每次使用過程的資料庫、執行日誌未點名
computer-use/約 130MB隨軟體附帶的應用程式與執行所需的元件未點名
v2/checkpoints/約 303MB313MB 的 .enc 加密檔與一份狀態檔主要嫌疑

🔍 程式碼漫遊(點有 ● 的行看白話講解)

這是作者在 ~/.zcode/v2/checkpoints/ 裡發現的狀態檔(節錄關鍵欄位,省略最外層大括號)。逐行讀一遍,就能看出軟體在背景做了什麼。

"workspacePath": "/Users/ferstar/myprojects/<a commercial project>",
💬 被打包的是哪個資料夾:作者正在開發的商業專案,不是範例或空專案。
"lastCompressedSize": {
💬 這個欄位記錄最近一次壓縮前後的大小。
"encryptedSizeBytes": 313070842,
💬 加密後約 313MB,就是 v2/checkpoints/ 裡那個 .enc 檔的大小。
"workspaceSizeBytes": 345549173
💬 排除 node_modules 等依賴後,實際要送的工作區約 345MB;整個倉庫則有 10GB。
"kind": "baseline",
💬 baseline 代表全量快照,也就是完整打包一份,而不只是送變動的部分。
"failureCount": 564
💬 已失敗 564 次,檔案留在本機的待上傳資料夾等下次重試。這表示軟體會自己在背景一再嘗試,你不必做任何事它也在試。

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼「有加密」不等於「可以放心」?
加密只回答「別人偷不走」,沒有回答「誰握有鑰匙」。本案的私鑰只在雲端,所以能解開這包資料的只有持有私鑰的那一端,你和 ZCode 客戶端都不行。資料對你來說變成黑箱:你既不能檢查裡面有什麼,也不能確認裡面沒有什麼。稽核工具時,該問的不是「有沒有加密」,而是「誰能解、我能不能自己驗證」。
🔭 稽核 AI 助手的工具,第一個動作該是什麼?
這次的線索不是來自廣告或說明文件,而是一個不合理的數字:資料夾佔了 700MB 以上。順著它往下查,依序看到 v2/checkpoints/、.enc 檔、狀態檔裡的 failureCount: 564,最後拆開 app.asar 才把流程說清楚。稽核員的第一個動作,是對不合理的體積、反覆失敗的紀錄這類痕跡追問「為什麼」,並且看實際留在你電腦上的證據,而不是只看工具自己怎麼介紹。

📝 隨堂考(點選答案,立即回饋)

Q1. 作者為什麼說,連 ZCode 客戶端自己也解不開那份 .enc 加密檔?
✅ 公鑰只能上鎖,要開鎖必須用配對的私鑰。這把私鑰只存在雲端,客戶端手上只有伺服器當次發來的公鑰,所以你和客戶端都無法解開本機那份密文。
Q2. 作者為什麼要拆開客戶端的 app.asar 來查?
✅ 作者在日誌裡沒有找到任何明確的上傳網址,只好拆開 app.asar,才還原出「向 zcode.z.ai 領憑證、本機加密、直傳 OSS」的完整流程。加密檔本身他並沒有辦法解開。
第 3 單元|第二、三道檢查:結果穩不穩?評分準不準?

🧭 本單元白話講

上一單元我們查了「你的程式碼被帶去哪裡」,這一單元要接著問兩件更日常的事:AI 助手做事穩不穩?替 AI 打分數的評審準不準?這兩道檢查有個共通的陷阱:一個好看的數字,背後常藏著沒說出口的假設。

先看穩不穩。IBM Research 團隊的文章,拿一個以 GPT-4.1 驅動的代理程式能自己一步步規劃、操作工具去完成任務的 AI,而不只是回答問題,在 AppWorld 的測試任務上把每個任務重複跑五次。平均成功率是 77.4%,看起來相當強。但如果只數「同一個任務五次全部成功」的比例,只剩 53.0%,整整少了 24.4 個百分點。文章把這個差距叫作「一致性落差」,在比較難的任務上,落差甚至達到 30 個百分點。

這個落差為什麼重要?文章舉的例子是核對一筆金融交易,或檢查合約裡有沒有某項義務。今天做對了,不代表明天同樣的請求也會做對,這在正式使用時就是可靠度問題。多數排行榜報的是 Mean@k把同一批任務跑 k 次,把每次的通過率取平均,回答「這個 AI 平均有多好」,也就是 77.4% 那個數字。使用者真正在意的卻是 Pass^k同一個任務跑 k 次,每一次都成功才算通過的比例,回答「再問一次還會一樣好嗎」,也就是 53.0% 那個數字。

好消息是,這個落差可以量測,也可以改善。團隊做了一個診斷工具叫 Consistency Analyzer:只拿代理程式自己留下的一份操作紀錄,在每個決策點一次要求 k 個可能的做法(預設 k=5),找出「差一點就會做出不同選擇」的容易翻轉的決策點。它只需要一份紀錄,不需要標準答案,也不必把整個任務重跑一遍。再把診斷結果整理成指引後,落差從 24.4 個百分點縮到 12.0 個百分點(同任務的 Pass⁵ 提高 16.0 點,相似任務提高 13.0 點),而且平均準確度沒有因此下降。

再看評分準不準。現在很常見的做法,是請 LLM 評審讓一個大型語言模型扮演裁判,替 AI 的輸出打分數或判斷對錯 來評測。Amazon Science 的文章舉了一個例子:一套系統會先檢索一段文字再回答問題,要判斷抓回來的段落和問題相不相關。請十位評審模型判斷,八位說「相關」,兩位說「不相關」。八比二看起來很有說服力,但關鍵不只是幾票,而是這些評審有多獨立地得出同一個結論。如果它們共用同一份提示詞範本、訓練血統相近、屬於同一個模型家族,或有相同的盲點,八票可能只是同一個錯誤重複了八次,這就是 假共識看起來很多評審同意,其實只是想法太像的評審在重複同一個判斷,並不是八份獨立的證據

多數決,以及「依歷史準確度加權」的多數決,都是常見的基準做法,但兩者都默認評審犯錯是各自獨立的。這篇論文(發表於 ICML)改用 Ising 模型一種統計模型,能描述一群「是/否」變數之間兩兩互相牽動的關係,把評審團看成一張網路:每位評審有自己的可靠度,評審之間也有「太像」或「互補」的關係。方法同時學這兩件事,再據此調整總分。它不需要人類標好的答案就能學習,在三個任務上,比最強的基準(依歷史準確度加權的評審團)在標準指標上高出 9% 到 14%。

⚙️ 脈絡拆解

1
請多位 AI 評審看同一份東西為了降低單一評審的雜訊,讓好幾個評審模型各自判斷,例如「這段檢索到的文字和問題相不相關」。
2
多數決:一人一票票多的一方獲勝,簡單好懂。但它把評審看成各自獨立,默認大家犯錯的原因互不相干。
3
加權多數決:歷史上比較準的評審,票比較重這比單純數票更進步,但仍然沒有問「這些評審是不是太像」,同樣把評審看成互不相干。
4
依賴感知:把評審團當成一張網路同時學每位評審的可靠度,以及評審之間的相似程度,再依此調整總分,讓意見的多樣性真的被算進去。不需要人類標準答案。
同樣跑 k 次,三種成績單問的是完全不同的問題(三者關係永遠是 Pass^k ≤ Mean@k ≤ Pass@k)
指標它問的問題怎樣算過關給人的感覺
Mean@k這個 AI 平均有多好?跑 k 次,把通過率取平均排行榜最常見的數字,例如本例的 77.4%
Pass@kk 次裡至少成功一次嗎?只要有一次成功就算樂觀;適合能自己驗證、失敗可以重試的場合
Pass^k同樣的事再請它做一次,還會一樣好嗎?k 次每一次都成功才算悲觀;本例 k=5 時只剩 53.0%

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 平均成功率 77.4% 已經很高了,為什麼還要另外看「五次全成功」的 53.0%?
因為兩個數字回答不同的問題。平均值回答「這個 AI 平均有多好」,卻沒回答使用者真正在意的「同樣的事再請它做一次,還會一樣好嗎」。對核對交易、檢查合約義務這類任務,偶爾失敗一次就可能是致命的。更值得注意的是,文章的診斷與指引能把落差從 24.4 縮到 12.0 個百分點,平均準確度卻沒有掉,代表「穩定度」是可以獨立量測、獨立改善的品質面向。看 AI 助手的成績單時,別只看第一個數字,也要問第二個。
🔭 10 位評審有 8 位說對,為什麼不能直接相信多數?
票數只告訴你「有幾位同意」,證據有多強卻取決於「彼此有多獨立」。共用提示詞範本、訓練血統或模型家族的評審,可能一起犯同一個錯,八票就成了一份證據被重複計算。把兩道檢查放在一起看,會得到同一個稽核習慣:看到漂亮的數字,先問它默認了什麼。平均成功率隱藏了「同一件事每次結果不同」,多數決隱藏了「評審其實不夠獨立」。作者的方法不靠人類標準答案,直接從評審輸出中學出相似關係,在三個任務上比最強基準高 9% 到 14%,顯示把「相似度」納入計算是有實際效益的。

📝 隨堂考(點選答案,立即回饋)

Q1. 某 AI 代理程式的平均成功率是 77.4%,但同一個任務連跑五次「全部成功」的任務只有 53.0%。這個 53.0% 對應哪個指標?
✅ 77.4% 是 Mean@5(平均通過率)。「五次全部成功」問的是 Pass^5,它是悲觀版的問法,所以只剩 53.0%。Pass@5 只要求至少成功一次,數字一定不會比 Mean@5 低,所以不可能是 53.0%。
Q2. 十位 AI 評審有八位判斷「相關」,為什麼這仍然不一定可信?
✅ 票數只代表有幾位同意,重點還要看評審是否獨立。太像的評審會一起犯錯,形成「假共識」。多找同一家族的評審只會讓假共識更強,而不是更可信。
第 4 單元|對你的意義:成本與把關的取捨

🧭 本單元白話講

前面兩單元我們查了程式碼被帶去哪、結果穩不穩、評分準不準;這一單元要把這些檢查變成決策:錢花在哪、哪些關卡不能省。先看價差。同樣審查 50 個真實的 PR工程師把改好的程式碼交給團隊檢查、申請合併的一份提案,便宜的 GPT-5.6 Luna 每次審查約 $0.0041,貴的 GPT-6 Astra 約 $0.113,差了 28 倍。50 個全部跑完,Luna 總共只花 $0.20,Astra 花 $5.66。

便宜的代價在哪?Luna 找到 69 個經過驗證的真 bug,Astra 找到 92 個。Luna 抓到 Astra 約 75% 的量,卻只花 3.6% 的錢。換算成每個真 bug,Luna 約 $0.0030,Astra 約 $0.061,貴了 20 倍。有一點反直覺:Luna 每次審查輸出 2,104 個 token模型計費的文字單位,大約是一小段字詞,是 Astra(688 個)的 3.1 倍,總價仍然比較低,因為它的輸出單價低了約 42 倍。代價出現在可信度:Luna 提出的 93 項發現中有 24 項驗證不過,Astra 是 96 項只有 4 項不過,用 精確率模型提出的問題裡,真的是 bug 的比例 來看就是 74% 對 96%。白話講,便宜模型會多喊一些「狼來了」,這些假警報最後要靠人花時間挑掉,這筆時間成本不在價目表裡。

最需要留意的是資安。資料集裡有 24 個安全性 bug,Luna 只抓到 9 個(不到四成),Astra 抓到 19 個(約八成)。所以文章作者的結論很具體:Luna 處理日常的正確性 bug 夠用,但登入驗證、權限控制這類程式碼,他們不會讓它獨自審查。依這個結論,可以畫出一條分工線:一般程式碼由便宜模型先全面掃過,碰到驗證與權限就升級處理。

那全部交給貴模型就能放心嗎?也不能。Astra 在 24 個資安 bug 中仍漏掉 5 個。另外,這場比較裡判定「是不是真 bug」的兩位評審之一就是 Astra 自己,作者也承認這可能略微偏袒它,這正是上一單元「評分準不準」的實戰版本。以素材的數字推論,安全性相關的最後一關必須留給人:貴模型只是把漏網率壓低,不是降到零。

另一條線是模型本身越跑越省。三元模型每個權重只能是 -1、0、+1 三種值的語言模型的每個 權重模型內部用來存放學到知識的數字 只有三種值,業界常見做法是五個值塞進一個位元組,平均每個權重占 1.625 位元電腦儲存的最小單位,一個位元只能是 0 或 1。研究者量了 29 個三元模型,發現零最多佔到 51.5%,於是設計 BITCOS:先用一張 位元圖用 0 和 1 標記每個位置「有」或「沒有」的清單 標出哪些權重非零,再只替非零的權重存正負號,平均每個權重花 2 - z 位元(z 是零的比例)。結果 29 個模型中有 26 個比五合一更省,最稀疏的降到 1.485 位元。依公式推算,零的比例只要超過 37.5%,2 - z 就會低於 1.625。速度方面,核心運算最多快 1.28 倍;實際跑整個模型時,CPU 每秒吐字最多快 1.18 倍,GPU 最多快 1.27 倍。

所以壓縮技術怎麼讓便宜模型「越來越夠用」?誠實的答案是:它降的是跑模型的成本與時間,不是判斷力。論文沒有測程式碼審查的品質,素材也沒說 Luna 是三元模型。1.27 倍的加速,跟 Luna 與 Astra 的 28 倍價差比起來很小;但方向很明確:同樣的硬體能更省、更快地跑模型,便宜這一端的可用範圍會慢慢擴大。實務上不要等壓縮技術來替你決定,用自己的 PR 抽樣重新量:便宜模型抓得到什麼、漏了什麼,再決定哪些關卡升級、哪些留給人。

⚙️ 脈絡拆解

1
便宜模型先全面掃描每個 PR 都先給便宜模型看(Luna 一次約 $0.0041),負責抓日常的正確性 bug,也就是素材裡它表現夠用的範圍。
2
碰到驗證與權限就分流只要程式碼牽涉登入驗證或權限判斷,就標記起來,不讓便宜模型單獨把關(它 24 個資安 bug 只抓到 9 個)。
3
敏感部分升級給貴模型被標記的部分交給貴模型複查(Astra 一次約 $0.113,資安 bug 抓到 19 個),用較高的單價換較低的漏網率。
4
資安的最後一關留給人貴模型仍漏掉 5 個資安 bug,評審也可能略偏袒它,所以由人做最終確認,並用自己的 PR 定期抽樣驗證這條分工線。
同樣 50 個 PR:便宜模型 vs 貴模型(數字皆出自實測文章)
項目GPT-5.6 Luna(便宜)GPT-6 Astra(貴)
50 個 PR 總成本$0.20$5.66
每次審查成本$0.0041$0.113
已驗證的真 bug69 個92 個
精確率74%96%
安全性 bug(共 24 個)抓到9 個19 個
每個真 bug 的成本$0.0030$0.061
每次審查平均時間23 秒36 秒
每次審查平均輸出 token2,104688

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼「壓縮技術讓便宜模型越來越夠用」不能直接當成結論?
BITCOS 改變的是儲存空間與跑的速度:最多快 1.18 到 1.27 倍,遠小於 Luna 與 Astra 之間 28 倍的價差。它也沒測程式碼審查的品質。Luna 在資安 bug 上的落差(9 對 19)和 74% 對 96% 的精確率是判斷力問題,壓縮只會讓「不夠準的便宜模型」變得更便宜,不會自動讓它變準。所以正確用法是:把壓縮當成成本下降的趨勢,把品質留給自己的抽樣驗證。
🔭 這場 Luna 對 Astra 的比較,哪些地方要打折扣看?
第一,判定真 bug 的兩位評審之一就是 Astra,作者自己承認可能略微偏袒它,貴模型的優勢可能被高估一點。第二,只有 50 個 PR、5 個開源專案,而且文章來自 entelligence.ai,他們自己的審查者留言也放進了比較池。所以這組數字適合當「分工的起點」,不適合當「永遠成立的定律」;把上一單元學到的「評分準不準」拿來檢查評審本身,就是這一課最實用的習慣。

📝 隨堂考(點選答案,立即回饋)

Q1. 依實測文章的數字與結論,便宜的 Luna 最不適合單獨負責哪一類工作?
✅ 24 個安全性 bug 中,Luna 只抓到 9 個,Astra 抓到 19 個;作者明說日常正確性 bug 用 Luna 夠用,但不會讓它獨自審查驗證與權限程式碼。速度上 Luna 反而比較快,所以第三個選項不是它的弱點。
Q2. BITCOS 為什麼能比「五個三元值塞進一個位元組」更省空間?
✅ BITCOS 的成本是每個權重 2 - z 位元(z 是零的比例)。研究者量到零最多佔 51.5%,因此 29 個模型中有 26 個比五合一更省,最稀疏的降到 1.485 位元。它並沒有把權重改成 0,也沒有丟掉零的位置資訊。

✅ 離開前自測(全勾=這課真的學會了)

0%