我們正從單輪互動的助理,邁向能長時間執行、處理實際知識工作的智慧體:讀取大型資料集、更新檔案,以及編寫應用程式。
根據開發人員的回饋,以及我們打造 Codex 和內部智慧體的經驗,我們正推出一組新的智慧體基礎功能,讓長時間任務更容易實現:
- 技能(符合 Agent Skills 開放標準):可重複使用、具版本管理的指示,能掛載至容器中,讓智慧體更可靠地執行任務。
- 升級版 Shell 工具:由 OpenAI 託管、具備受控網際網路存取功能的容器,智慧體可在其中安裝相依套件、執行指令碼,以及寫入輸出內容(例如報告和產出檔案)。
- 伺服器端壓縮:以簡單的方式,自動壓縮智慧體長時間執行時的上下文,讓你不會觸及上下文限制。
文件和 API 參考文件已分別介紹上述各項功能。本文著重於一些不易想到、卻是我們目前觀察到成效最佳的技巧與模式,這些經驗來自 OpenAI 的內部工作,以及早期採用技能的客戶 Glean 在正式環境中的應用。
快速掌握基本概念
技能:模型可按需載入的「作業程序」
技能由一組檔案,以及包含前置中繼資料與指示的 SKILL.md 資訊清單組成。可以把它想成一本具版本管理的操作手冊,模型要執行實際工作時,就能查閱。
有可用的技能時,平台會向模型提供各項技能的 name、description 和 path。模型會根據這些中繼資料,決定是否呼叫某項技能。如果決定呼叫,就會讀取 SKILL.md,取得完整的工作流程。
Shell 工具:為智慧體提供「執行能力」
Shell 工具讓模型能在真正的終端環境中工作,可使用以下任一環境:
- 由 OpenAI 管理的託管容器。
- 由你自行執行的本機 Shell 執行環境(工具語意相同,但機器由你掌控)。
託管 Shell 環境透過 Responses API 執行,因此你的請求能保留工作狀態、呼叫工具、在多輪互動中延續工作,並產出檔案。
壓縮:讓長時間任務持續推進
隨著工作流程拉長,就會遇到上下文視窗限制。伺服器端壓縮會自動管理上下文視窗並壓縮對話歷史,讓長時間任務持續推進。
Responses API 的壓縮功能提供兩種處理方式:
- 伺服器端壓縮(新功能): 當上下文超過門檻時,便會在串流中自動執行壓縮,不必另行呼叫壓縮功能。
- 獨立壓縮端點: 若要明確控制壓縮的時機,請使用
/responses/compact。
為什麼搭配使用效果更好
- 技能將穩定的程序與範例移入可重複使用的套件,減少提示詞雜亂糾結的情況。
- Shell 提供完整的執行環境,讓你能安裝程式碼、執行指令碼,以及寫入輸出內容。
- 壓縮能維持長時間執行的連貫性,讓同一個工作流程持續執行,不必手動整理上下文。
- 結合這些功能,你就能建立可重複執行、能實際完成工作的流程,同時避免系統提示詞變成一份龐大又容易出錯的文件。
實用技巧
1) 把技能描述寫成路由邏輯,而不是行銷文案
技能描述實際上就是模型判斷是否使用技能的依據。它應該回答以下問題:
- 什麼時候應該使用這項技能?
- 什麼時候不應該使用這項技能?
- 輸出內容和成功標準是什麼?
一個實用的做法是,直接在描述中加入簡短的「適用情況與不適用情況」區塊,並提供具體資訊,例如輸入內容、涉及的工具,以及預期產出的檔案。
2) 加入反例與邊界情況,減少誤觸發
一個出乎意料的失敗情況是:提供技能後,初期的正確觸發率反而可能下降。我們觀察到有效的改善方法之一,是加入反例,並涵蓋邊界情況。
實際做法就是明確列出幾種「在……情況下,不要呼叫這項技能」的案例,並說明應該改採什麼做法。這能幫助模型更明確地選擇技能,尤其是在多項技能乍看之下很相似時。
Glean 就親身遇過這種情況:在針對性評估中,採用技能路由後,初期的觸發率下降了約 20% ;後來在描述中加入反例並涵蓋邊界情況後,觸發率才恢復。
3) 將範本與範例放在技能中(未使用時幾乎不增加成本)
如果你一直把範本塞進系統提示詞,請停止這種做法。
將範本與完整操作範例放在技能中,有兩個優點:
- 需要時就能取得,也就是在呼叫技能時。
- 不會增加無關查詢的 Token 用量。
這對知識工作的產出尤其有效,例如:
- 結構化報告。
- 升級處理案件的分流摘要。
- 客戶經營計畫。
- 資料分析報告。
Glean 表示,這種模式在正式環境中的品質提升與延遲縮短方面,帶來了幅度最大的幾項改善,因為這些範例只有在技能觸發時才會載入。
4) 及早規劃容器重複使用與壓縮,支援長時間執行
需要長時間執行的智慧體,很少能只靠一次提示就成功完成任務。一開始就要規劃如何保持連貫性:
- 若要維持穩定的相依套件、保留快取檔案與中間產出,請在各步驟間重複使用同一個容器。
- 傳入
previous_response_id,讓模型能在同一個對話串中繼續工作。 - 將壓縮納入長時間執行的預設基礎功能,而不是留作緊急備援。
這樣搭配能減少重新開始的情況,並在對話串逐漸變長時,維持多步驟工作的連貫性。
5) 需要確定性時,明確要求模型使用技能
預設情況下,模型會自行決定何時使用技能。這通常正是你想要的行為。
但如果你正在正式環境中執行有明確約定的工作流程,而且希望模型依照確定的方式行事,而不是靈活判斷,只要說:
「請使用 <skill name> 技能。」
這是提升可靠性最簡單的方法,能把模糊的路由判斷變成明確的約定。
6) 將技能與網路連線視為高風險組合(在設計時限制影響範圍)
這項安全性建議現在很容易被忽略,日後卻很難補救。
將技能與開放的網路存取結合,會形成高風險的資料外洩途徑。 如果要使用網路連線,請嚴格限制網路允許清單,將工具輸出視為不可信的資料;在面向消費者、且使用者預期有嚴格確認機制的流程中,應避免同時提供開放的網際網路存取與功能強大的作業程序。
穩健的預設安全設定如下:
- 技能: 允許
- Shell: 允許
- 網路:針對範圍明確且有限的任務,依個別請求 設定最小允許清單後才啟用
7) 以 /mnt/data 作為成果檔案的交接點
在託管 Shell 環境的工作流程中,將 /mnt/data 作為輸出檔案的標準存放位置,方便後續擷取、審查或傳入接下來的步驟。這些檔案可以是報告、清理後的資料集,以及完成的試算表。
可以這樣理解:工具將資料寫入磁碟,模型根據磁碟上的資料進行推理,開發人員則從磁碟擷取成果。
8) 將允許清單理解為雙層系統(組織層級與請求層級)
網路存取由兩個層級控管:
- 組織層級的允許清單由管理員設定,用來界定可存取目的地的最大範圍。
- 請求層級的
network_policy,其範圍必須是組織允許清單的子集。
實務運作上有兩個重點:
- 組織允許清單應保持精簡且穩定,只納入「已核准且可信任的目的地」。
- 請求允許清單的範圍應更小,只納入「這項任務所需的目的地」。
如果請求包含組織允許清單以外的網域,就會傳回錯誤。
9) 使用 domain_secrets 進行需要驗證的呼叫(避免憑證外洩)
如果允許存取的網域需要驗證標頭,請使用 domain_secrets,讓模型完全不會接觸到原始憑證。
執行時,模型看到的是預留位置(例如 $API_KEY),而 sidecar 元件只會針對已核准的目的地注入實際值。只要智慧體需要從容器內呼叫受保護的 API,這都是穩健的預設做法。
10) 在雲端與本機使用相同的 API
你可以使用這兩項基礎能力,無須將所有功能都交由託管環境執行:
- 技能可搭配託管 Shell 環境與本機 Shell 模式使用。
- Shell 提供本機執行模式,讓你自行執行
shell_call,再將shell_call_output傳回模型。 - 如果你使用 Agents SDK,也可以接入自己的 Shell 執行器。
實用的開發循環如下:
- 從本機開始(快速迭代、存取內部工具、方便偵錯)。
- 需要可重複執行、具備隔離性且部署一致的環境時,再移至託管容器。
- 在兩種模式下使用相同的技能(即使執行環境改變,工作流程仍保持穩定)。
三種建構模式
歡迎自由嘗試這些新的智慧體基礎能力。以下提供三個範例,說明如何將它們結合,打造實用的應用程式。
模式 A:安裝 -> 擷取資料 -> 寫入成果檔案
這是運用託管 Shell 環境最簡單的方式:讓智慧體安裝相依套件、擷取外部資料,並產出具體的交付成果。
例如:
- 安裝幾個程式庫。
- 爬取資料或呼叫 API。
- 將報告寫入
/mnt/data/report.md。
這個模式為能處理實際工作的智慧體奠定基礎,因為它建立了明確的審查交接點:應用程式可以將成果檔案展示給使用者、記錄下來、比對差異,或傳入後續步驟。
模式 B:結合技能與 Shell,建立可重複執行的工作流程
成功建立一、兩個 Shell 工作流程後,你會發現下一個問題:流程雖然可行,但提示詞一旦偏離原本的寫法,可靠性就會下降。
這時技能就能派上用場。以下是一套可長期沿用的架構:
- 將工作流程(步驟、防護機制、範本)寫入技能。
- 將技能掛載至 Shell 環境。
- 讓智慧體遵循技能,以確定性的方式產出成果檔案。
這種做法特別適合以下工作流程:
- 分析或編輯試算表。
- 清理資料集並產生摘要。
- 為例行業務流程產生標準化報告。
模式 C(進階):以技能承載企業工作流程
我們早期觀察到的一個現象是:從單一工具呼叫擴展到多工具編排時,準確率會下降。技能可讓工具使用的推理更依循明確程序,在不讓系統提示詞變得臃腫的情況下,彌補這個落差。
以下是 Glean 的具體案例:
- 一項針對 Salesforce 設計的技能提高了評估準確率( 73% -> 85% ),並將 首個 Token 的回應時間 縮短了 18.1%。
- 實務做法包括仔細設計路由邏輯、提供反例,以及在技能中嵌入範本與範例。
- Glean 也會將企業工作流程中的例行任務寫成技能,包括客戶經營規劃、升級案件分流,以及產生符合品牌風格的內容。
這正是技能開始發揮強大作用的方式。技能成為持續更新的 SOP(標準作業程序):隨著組織發展而調整,並由智慧體一致地執行。
建構一次,隨處執行
當長時間執行的智慧體既能遵循程序,又能在電腦上完成實際工作時,實用性就會大幅提升。技能、託管 Shell 環境與壓縮功能共同奠定了這個基礎。重點回顧如下:
- 使用技能定義做事的方法(程序、範本、防護機制)。
- 使用 Shell 執行實際操作(安裝、執行、寫入成果檔案)。
- 使用壓縮功能,讓長時間執行的任務保持連貫(無須手動管理上下文)。
- 需要快速迭代時,先從本機開始。
- 需要可重複且隔離的執行環境時,再移至託管容器。
- 透過組織層級與請求層級的允許清單嚴格控管網路存取,並使用網域密鑰進行需要驗證的呼叫。