Skip to content

什麼是 AI Harness?AI 為什麼能讀檔、跑終端機與呼叫工具?

模型負責決定下一步,Harness 負責讓下一步真的發生

前面提過,同一個 AI 模型放在不同工具裡,有時只會回答問題,有時卻能打開專案、修改檔案,做完還會自己跑測試。

這個差異,剛好可以從你現在讀的這篇文章開始看。

開始動工前,我只下了一個很簡單的要求:「先用你的概念,撰寫 Day 3。」後面卻發生了一串動作:AI 先讀取原本的草稿和專案規則,查證 Harness 的資料,重寫文章、修改三張示意圖,接著重新建置網站,再打開頁面確認圖片和文字有沒有問題。

我輸入的只有一句話,但中間其實有很多細節要處理。負責把這些步驟串起來,讓模型真的能在電腦裡做事的這一層,通常會被稱為 AI HarnessAgent Harness

AI Harness 連接模型、專案檔案、終端機與其他工具,讓模型提出的動作能真的被執行

AI Harness 是什麼?

先講最簡單的版本:Harness 就是負責把模型接上資料與工具,並且真的把動作執行出來的系統。

模型可以理解我說的話,也可以判斷下一步應該做什麼;可是它不會憑空知道文章放在哪個資料夾,也不能自己伸手打開檔案。這些資料要先被送給模型,模型提出的動作也需要有人真的去執行。

Harness 就站在中間,主要處理四件事:

  • 準備資料:整理這次任務需要的文章、程式、需求與專案規則。
  • 提供工具:讓模型可以讀寫檔案、執行指令、打開瀏覽器或呼叫其他服務。
  • 管理權限:限制可以動到哪裡,遇到需要確認的操作先停下來詢問。
  • 帶回結果:把檔案內容、錯誤訊息與測試結果送回模型,讓它繼續判斷。

OpenAI 介紹 Codex Harness 時,提到的範圍也不只工具呼叫,還包含 Agent loop、對話狀態、設定、權限,以及 MCP 和 Skill 等擴充能力。[1] 不同產品怎麼切這一層,名稱和範圍不一定完全相同;這篇先把 Harness 當成「負責接上並執行的那一層」就好。

AI Harness 負責準備資料、提供工具、管理權限並把執行結果送回模型

這也解釋了為什麼同一個模型換到不同應用程式,表現可能差很多:不一定是模型突然變聰明,而是外面的 Harness 能提供的資料、工具和流程不一樣。

一句需求,背後實際跑了什麼?

回到這篇文章的例子。如果只看畫面,我輸入一句需求,過一會兒就拿到一篇完整草稿;但站在 Harness 的角度,這不是一次完成,而是一輪一輪跑出來的:

  1. 先收下任務:我要重寫 Harness 文章,語氣要更口語,內容也不能太薄。
  2. 準備相關資料:找出原本的草稿、專案規則、寫作 Skill 和官方說明。
  3. 讓模型判斷下一步:先整理文章主線,再決定哪些段落需要補充或重寫。
  4. 真的執行動作:修改文章與 SVG,檢查文字和排版,接著重新建置網站。
  5. 把結果送回模型:如果圖片無法顯示、文字被切掉或建置失敗,模型就根據錯誤再調整。
  6. 交回成果:所有檢查完成後,再告訴我改了什麼、結果放在哪裡。

撰寫 Harness 文章時,系統準備草稿、規則與資料,執行文章和圖片修改,再把檢查結果送回模型繼續判斷

這個過程通常不會只問模型一次。模型先提出一個動作,Harness 執行之後把結果放回去,模型再根據新的資訊決定下一步。OpenAI 把這個反覆運作的過程稱為 Agent loop[2]

所以 Agent 能自己修正,不是因為它一開始就把所有步驟想得完美,而是它可以「做一步、看結果、再決定下一步」。測試失敗並不是流程外的意外,錯誤訊息本身也是下一輪判斷要用的資料。

Harness 的能力從哪裡來?

第一次看到 Agent 又能改檔案、又能讀 Notion,還會按照固定步驟檢查文章,很容易以為這些能力全部藏在模型裡。其實模型比較像是負責判斷的人,它能使用哪些能力,還要看 Harness 替它接上了什麼。

入門時,可以先分成下面三類:

內建工具像手腳、MCP 像外接插座、Skill 像工作手冊,分別負責執行動作、連接外部服務與提供做事方法

內建工具:負責真的動手

檔案讀寫、終端機與瀏覽器操作,可能是 AI Coding 工具原本就準備好的能力。模型要求「讀取這個檔案」時,Harness 會呼叫對應的工具,再把讀到的內容送回模型。

可以把內建工具想成 Agent 的手腳。它決定 Agent 能不能在目前的專案裡找資料、改內容、執行測試,以及實際打開頁面檢查。

不過,有手腳不代表可以隨便亂碰。工具通常還會受到工作目錄和權限限制;如果操作超出原本範圍,Harness 可能會要求使用者確認,或直接拒絕執行。

MCP:負責接到專案以外

如果資料放在 Notion、Figma 或其他外部服務,單靠專案裡的檔案就不夠了。MCP(Model Context Protocol) 提供一套共同的連接方式,讓 AI 應用程式可以取得外部資料或使用外部工具。[3]

例如我把文章規劃放在 Notion,Agent 原本只看得到本機專案;接上對應的 MCP 之後,它才多了一條可以讀取 Notion 的路。MCP 解決的是「怎麼連到外面」,不會自動教 Agent 該怎麼寫一篇文章。

另外,瀏覽器、GitHub 或其他服務究竟算內建工具,還是透過 MCP 接入,會因為你使用的產品而不同。與其硬背分類,不如先看它這次能連到哪裡、可以做什麼。

Skill:負責提醒它怎麼做

Skill 比較像一份可以重複使用的工作手冊。裡面可以放指令、步驟、參考資料和輔助腳本,告訴 Agent 遇到某一類任務時,應該先看什麼、照什麼順序做,以及最後要檢查哪些項目。[4]

這次撰寫這篇文章時,專案裡的文章 Skill 就要求我先確認寫作語氣、補足論述、替抽象概念準備示意圖,最後還要建置並檢查實際頁面。它沒有替我接上新的網站,而是提醒我這類工作該怎麼做才完整。

所以可以先這樣記:

  • 內建工具是手腳,負責執行動作。
  • MCP是外接插座,負責連接專案以外的資料與服務。
  • Skill是工作手冊,負責提供做事的方法。

三者可以一起使用,但不是同一件事。Skill 可以要求 Agent 使用某個 MCP 取得資料,再用內建工具修改檔案;真正把這些能力排進同一個任務、收集結果並繼續往下跑的,才是 Harness。

有工具以後,為什麼還要管權限?

Agent 能夠讀寫檔案很方便,但同一個能力也可能改錯檔案、刪掉重要內容,或把還沒檢查的結果送到外部服務。工具越多,能造成的影響也越大。

因此 Harness 不只負責「讓動作成功」,也要負責「這個動作現在能不能做」。像是讀取專案內容,通常可以直接進行;如果要改到專案外的檔案、安裝新的套件、發布網站或對外傳送訊息,就可能需要先取得允許。

這也是為什麼使用 Agent 時,不能只看最後一句「完成了」。你還要確認它讀了什麼、改了什麼、執行了哪些操作,以及測試通過是否真的等於功能能用。Harness 可以幫忙守住執行範圍,但要不要接受這個結果,最後還是人的責任。

不用急著背名詞,先把四件事說清楚

看懂 Harness 之後,不代表你現在就要自己建立一套 Harness,也不用第一天就安裝很多 MCP。比較實際的開始方式,是先把任務交代清楚。

以修改這篇文章為例,如果我只說「幫我把文章弄好」,Agent 還是得猜什麼叫作好。比較完整的說法會是:

請依照剛才確認的方向,重寫這篇 Harness 文章。語氣要口語,保留足夠論述,加入示意圖與實際畫面待補位置;完成後執行建置並檢查文章畫面。這次只修改目前這一篇。

裡面其實交代了四件事:

  • 目標:要重寫文章,而且要讓初學者看懂 Harness。
  • 資料:可以參考原本的草稿、專案規則與實際工作過程。
  • 範圍:只修改目前這篇文章,不要動到其他內容。
  • 完成條件:要有足夠論述、圖片、建置結果與實際畫面檢查。

你說得越清楚,Harness 越容易準備正確的資料與工具,模型也比較不需要一路猜。當然,需求不可能一次就寫得完美;看到結果之後繼續補充與修正,本來就是 Agent loop 的一部分。

TIP

不用先研究每一項工具的技術細節。先挑一個很小的任務,觀察 Agent 讀了哪些資料、用了什麼工具、在哪裡詢問權限,以及最後怎麼證明自己做完,會比背名詞更容易理解 Harness。

模型負責決定下一步,Harness 負責讓下一步真的發生。它準備資料、提供工具、守住權限,再把執行結果送回模型。少了其中一塊,Agent 的做事方式就可能完全不同。

下一篇,我們會回到實際使用的工具,聊聊 Claude Code 與 Codex 在做事方式上有哪些差異,以及我會怎麼選。規格可以列成表格,但真正用起來順不順,往往還是藏在這些 Harness 細節裡。

如果你想知道前面說的流程實際長什麼樣,下面就是本次撰寫文章的協作畫面。左邊是文章的本機預覽,右邊則是 Codex 讀取規則、修改內容並回報結果的過程;這不是另外做的示意介面,而是這篇文章真的怎麼被修改出來的。

左側顯示 Harness 文章的本機預覽,右側顯示 Codex 協助讀取規則、修改內容與回報結果的實際工作畫面

這篇文章的內容、流程圖與檢查結果,就是在這次協作過程中一步一步完成的。


  1. OpenAI, Unlocking the Codex harness: how we built the App Server↩︎

  2. OpenAI, Unrolling the Codex agent loop↩︎

  3. OpenAI, Model Context Protocol↩︎

  4. OpenAI, Skills & Plugins↩︎

內容持續更新,歡迎透過社群回饋建議。