🎙️ OpenAI 驚爆 AI 自主越獄!為什麼年輕人正集體復古叛逃|AI 日報 Podcast
OpenAI 的測試模型竟然學會自主「越獄」,自己跑去駭入 Hugging Face 伺服器偷看答案,這可是史上第一起 AI 自主發動的駭客事件!除了這起驚悚資安風暴,沐妍今天還要聊聊為什麼現在有過半大眾對 AI 感到擔憂,甚至讓年輕人掀起一波買卡帶、玩編織的「復古叛逃」潮。另外,Nvidia 為什麼捧著大筆現金瘋狂投資資料標註公司,等一下告訴你!
懂專案慣例的重構:介面放哪、DI 註冊寫在哪、'use client' 該不該加。通用工具不知道的事,它從你的 repo 學。

一分鐘看懂 Refactory 解決什麼問題
六件事,是裝了它跟沒裝它的差別
套一份固定範本:介面丟進它自己喜歡的資料夾,欄位命名、this.、XML doc 全都跟隔壁那個檔不一樣,於是 PR 有一半的留言在講排版。
慣例是從被編輯的那個 class 和它的鄰居「量」出來的 —— 你用底線它就用底線、你寫 XML doc 它就補 XML doc、Extract Interface 放進你 repo 真的在用的那個資料夾。生出來的碼直接過你自己的 analyzer。
型別推不出來就塞一個 any,建構子少一個參數就補 null! —— 編得過、跑起來才炸,而且 code review 完全看不出來。
每個重構只有三種狀態:可用、有警告(強制走 Preview),或不可用並附上你看得懂的理由。看似合理但其實錯的結果,是唯一沒有任何後續關卡擋得住的東西,所以寧可不做。
一次噴幾百條 warning,每一條看起來都一樣重要,於是整包被 disable 掉,再也沒人看。
熱點 = git 修改頻率 × 複雜度。沒人碰的複雜檔不是急事,每週都在改的複雜檔才是;儀表板直接把最痛的十個檔案排給你,點一下就跳過去。
只回答「現在有幾個問題」,沒有昨天可以比。想看趨勢就得架 SonarQube 那種伺服器、接 CI、還要有人維護。
每次掃描存一份快照(保留 100 筆),畫成趨勢圖,還逐條規則告訴你多了幾筆少了幾筆:+3 cs.magicNumber、−2 react.indexAsKey。全部在本機,零伺服器、零帳號。
要註冊、要訂閱、要把你的原始碼送到別人的伺服器,再按 token 跟你收錢。
它只負責寫 prompt,跑的是你自己電腦上的 claude CLI —— 你的登入、你的模型、你的核可流程,diff 是你看著它落地的。原始碼不離開你的機器,這個外掛連你的 API key 都拿不到。沒裝 Claude Code?其餘功能照樣全開。
Invert if、Merge nested if、Introduce variable 這些,JetBrains 系 IDE 有十五年了,VS Code 幾乎沒有任何語言有;有的也得先裝語言伺服器、載入專案。
Python、Go、Java、Kotlin、Rust、PHP、C、C++、Objective-C、Dart、Swift、Scala 全都有,靠的是一次詞法掃描 —— 不用 language server、不用 SDK、不用載入專案。在一個什麼都沒裝的 VS Code 打開 .go 檔,這些照樣出現。
不重造編輯器已經有的東西 —— 只補上沒人做的
抽元件(同檔/新檔)、抽 hook、safe delete、改 prop 名稱含所有呼叫點、import 路徑轉換、'use client' 邊界診斷 —— JavaScript 與 JSX 一併適用。
TS · TSX · JS · JSX
加注入依賴(六處協同編輯)、Extract Interface 到你的 repo 實際使用的資料夾、介面成員同步到所有實作、DI 註冊、控制器 clone 到下一個 API 版本。
C# · .NET 8
Invert if、Merge / Split if、Introduce / Inline variable、De Morgan、轉插值字串 —— 不用 language server、不用 SDK、什麼都不用裝。
Python · Go · Java · Kotlin · Rust · PHP · C · C++ · Obj-C · Dart · Swift · Scala
為了「產生的碼像鄰居寫的」而生的細節
一個按鍵列出這個位置所有能做的事,內建重構與 Refactory 並列;不可用的動作也列出來,附上原因。
Extract Interface 的目標資料夾從鄰居 class 學出來;欄位底線、this.、XML doc 從被編輯的 class 量測,不是從設定讀。
加注入依賴一次落地六處編輯:using、欄位、XML doc、建構子參數、<param> 標籤、賦值 —— 一個 undo stop。
抽元件自動推導 props 型別、'use client' 逐字帶到新檔、module 常數 export 而不是複製。
命名時呼叫點、interface、函式、型別引用四處同時進入編輯狀態,打一次字全部一起改。
推不出型別就拒絕並指名、dependency array 絕不修改、有手動 new 就不注入 —— 不確定的事明說,不用近似值猜。
不載入 solution、不載入 TypeScript program;跨檔問題用宣告索引與 import graph 回答,上千個檔案一秒內建完。
.refactory.json 進版控 —— 慣例是專案的屬性,不是個人偏好;沒寫的欄位用偵測的。
React / C# 的「編得過但之後會痛」即時畫波浪線:sync-over-async、元件裡定義元件、state 原地 mutate。會炸的是 warning、品味是 hint。
整個工作區掃一輪(不開檔、不灌爆 Problems),依檔案或規則分組、八種主題,Copy report 直接貼 PR。
每個函式、方法、建構子的循環複雜度,兩個引擎用同一套計數規則,混合 repo 的數字可以直接比;每個檔案給一個 0–100 分與 A–F 等第,外加全工作區「最複雜函式」排行。
每一次完成的工作區掃描存一份快照(保留 100 筆),畫成趨勢圖,並列出對上一次的逐條規則增減。中途取消的掃描不記錄,免得畫出假的進步。
整個 repo 一次 git log,跟健康分數 join 起來排名 —— 常改又複雜的檔案排最前面。不是 git repo?這一段直接不出現,不會跳錯誤。
任一檔案或熱點按 ✦ Review,把度量、churn、熱點名次與每一條 finding 寫成 markdown briefing,再開你自己的 claude session 指過去;Review top 3 一次評三個最危險的檔案,因為「先做哪一個」不是只看得到一個檔的 session 能回答的。
quick fix 直接開本機 claude session 修這條 smell:你的登入、你的模型、你的核可流程,外掛只寫 prompt。
只有一種正確改法的機械性修復一次全部套用(throw ex; → throw; 等),一個 undo 全部退回。
全部都是真實編輯器的截圖與錄影,不是示意圖

內建重構與 Refactory 並列同一選單,最近用過的動作浮到最上面,不可用的附理由。

選取 JSX、執行、原地命名 —— props 從捕捉到的值推導,四處同時 linked edit。

六筆編輯一次落地:using 依字母序插入、<param> 插在與參數位置相符的地方。

帶警告的計畫強制走 preview,每一筆編輯落地前都看得見。

37 條 smell 的工作區總覽:依檔案或規則分組、嚴重度過濾、點一下跳到那行,八種主題可選。

健康分數、最複雜函式排行、每次掃描的趨勢圖與逐條規則增減,以及 churn × 複雜度的熱點排名 —— 「該先修哪一個」的答案就在這一頁。

React 的問題在打字的當下就畫波浪線;問題一被改掉,波浪線與 Problems 同時消失 —— 不用存檔、不用等 CI 跑完才知道。
位置決定一切 —— 沒有任何動作是「順便列出來」的
在 VS Code 按 Ctrl+Shift+X 開啟擴充套件面板。
搜尋「Refactory」,點擊 Install 安裝。
打開任何一個支援語言的檔案,按 Ctrl+Alt+Shift+T 開始。C# 功能需要 .NET 8 runtime,找不到時只有 C# 那一半會關閉。
也可在 Marketplace 直接安裝,或在命令列執行下方指令。