當 OpenAI 發表「幾乎能做(幾乎)所有事」的 Codex 時,整個科技圈都為之振奮。AI 寫程式、起草郵件已行之有年,但 Codex 聲稱能操作 macOS ——「用自有游標去看、去點、去輸入」—— 這代表的是一種本質上完全不同的能力。
要跨越雲端語言模型與本地作業系統之間的鴻溝,困難度出了名的棘手。幾十年來,自動化仰賴的是脆弱的應用程式介面(APIs)或 DOM 抓取腳本,只要 UI 元素一變動就立刻報廢。
核心工程洞見在於:Codex 捨棄了程式碼層級的整合,改採像素層級的執行。 透過多模態視覺結合底層核心事件注入,OpenAI 把圖形使用者介面(GUI)變成了一套通用 API。
以下就是讓這一切成真的技術架構。
Mac 原生代理的架構
要讓 AI 在無人介入下測試應用程式,或反覆調整前端設計,它需要一個持續運作的感知—推理—行動(Perceive-Reason-Act)迴圈。以下是 Codex 大致如何在 macOS 上實作每一個階段。
1. 感知:語意視覺與定位引擎
AppleScript 之類的傳統自動化工具會讀取 UI 的無障礙樹(accessibility tree)。這種做法很快,但遇到自訂的 Electron 應用、網頁畫布或遊戲——這些 UI 元素缺少正確無障礙標記的場景——就會失效。
OpenAI 表示 Codex 是靠「看」來使用應用程式,這意謂它仰賴電腦視覺(Computer Vision)。執行於 Mac 上的宿主應用程式會以高頻率擷取桌面畫面。接著,多模態模型利用語意分割來解析這些影格——它不是去找 HTML 標籤,而是用視覺辨識出按鈕、搜尋列、選單等介面元素的形狀與脈絡。

這裡最關鍵的工程挑戰是定位(Grounding)。一旦 AI 鎖定目標,它會執行一段計算,把語意物件對應到螢幕上精確的像素座標。它把「點擊關閉按鈕」翻譯成準確的 (x, y) 位置,並依照特定的顯示器解析度與縮放比例進行調校。
| 階段 | 發生什麼事 | 技術 |
|---|---|---|
| 畫面擷取 | 高頻率擷取桌面截圖 | 宿主應用程式 |
| 語意解析 | 依視覺外觀辨識 UI 元素,而非依程式碼 | 多模態視覺模型 |
| 定位 | 把語意目標對應到像素座標 | 座標迴歸模型 |
| 動作派送 | 將合成輸入事件注入作業系統 | 系統框架掛鉤 |
2. 行動:注入作業系統層級事件
知道要點哪裡,唯有軟體能真正觸發該動作才有意義。Codex 完全繞過實體硬體。
要能在原生層級與 macOS 互動,Codex 幾乎可以肯定調用了 Apple 最深層的系統框架:Quartz Event Services與Accessibility API。
當 Codex 決定點擊時,它會合成一個虛擬的 CGEvent——先 mouseDown、再 mouseUp——並直接注入 macOS 的系統事件佇列。從作業系統的角度看,這個合成事件與實體觸控板按壓完全無從區分。這正是 Codex 為什麼能操作任何應用程式的緣故:人類能點的,Codex 就能點。
3. 隔離:「幽靈游標」的運作機制
或許技術上最具野心的宣稱,是 Codex 能「在背景執行,不接管你的電腦」。任何用過巨集錄製工具的人都知道,傳統自動化會完全劫持滑鼠游標。
要達成並行執行,系統必須把 AI 的輸入與使用者的實體輸入隔離開來。大概有兩種可能的實作方式:
| 方式 | 如何運作 | 取捨 |
|---|---|---|
| 定向視窗路由 | macOS 允許把事件送往特定的行程識別碼(PIDs)。Codex 把合成的點擊直接送到目標應用程式的事件迴圈,繞過全域硬體游標。 | 較低開銷;需要精準的視窗定位。 |
| 虛擬影格緩衝 | 系統啟動一個無頭(headless)虛擬桌面層。Codex 在這個隱形工作區內「看見」並運作,而使用者繼續在主工作區不受干擾地作業。 | 較高記憶體用量;隔離性更強。 |
虛擬影格緩衝這套做法,與 Anthropic 推出自家 Computer Use 能力時所觀察到的機制相符,暗示這可能正逐漸成為桌面 AI 代理的業界標準模式。
展望:後 API 時代
後續影響遠遠超越技術實作本身。OpenAI 在作業系統層級打通了「視覺到行動」的管線,使得傳統 API 變成可有可無。我們正邁入大型行動模型(LAM)的時代。
看看實際的意涵:
- 舊有軟體整合: 2008 年的企業工具、沒有 API?Codex 根本不需要。它會開啟應用程式、瀏覽介面、複製資料,再貼進現代化儀表板。
- 平台限制: 平台用激進的 API 速率限制來箝制開發者存取?Codex 直接開瀏覽器、像真人使用者那樣驅動介面。
- 跨應用工作流程: 過去需要在互不相通的應用之間架設客製中介軟體的任務,現在只要一句自然語言指令就能編排完成。
軟體業花了幾十年為應用之間搭橋。如今 Codex 征服了 macOS GUI,應用之間再也不必彼此對話——AI 會代替我們去使用它們。
FAQ
Codex 在 macOS 上是如何「看見」螢幕的?
Codex 使用一個宿主應用程式,以高頻率擷取桌面截圖。接著多模態視覺模型會對這些影格執行語意分割,根據按鈕、選單、文字欄位等 UI 元素的視覺外觀來辨識它們,而非依賴底層程式碼或無障礙標記。
Codex 用了哪些 macOS 框架來模擬點擊與按鍵?
Codex 大概是與 Apple 的 Quartz Event Services 和 Accessibility API 介接。它合成虛擬的 CGEvent(如 mouseDown 與 mouseUp)並注入 macOS 系統事件佇列,讓這些輸入與實體硬體事件無從分辨。
Codex 怎麼能在背景執行而不劫持游標?
系統可能採用定向視窗路由——把事件直接送往特定的行程識別碼(PID);或是採用虛擬影格緩衝,建立一個隱形桌面工作區,讓 AI 在其中獨立運作,而使用者的實體游標不受影響。
什麼是大型行動模型(LAM)?它和 LLM 有何不同?
大型行動模型(Large Action Model)把大型語言模型(LLM)的能力,從文字生成延伸到真實世界的任務執行。LLM 產出回應,LAM 則是透過視覺感知環境、推論該採取什麼動作,再透過系統層級的輸入注入來執行這些動作。Codex 正是 LAM 概念的一個具體實作。
發佈留言