For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主要導覽
2026年2月11日 API

Shell + 技能 + 壓縮:讓長時間執行的智慧體完成實際工作的技巧

運用 Responses API 中的技能、託管 Shell 環境與伺服器端壓縮功能進行開發的實用模式。

作者: Charlie Guo

Shell + 技能 + 壓縮:讓長時間執行的智慧體完成實際工作的技巧

我們正從單輪互動的助理,邁向能長時間執行、處理實際知識工作的智慧體:讀取大型資料集、更新檔案,以及編寫應用程式。

根據開發人員的回饋,以及我們打造 Codex 和內部智慧體的經驗,我們正推出一組新的智慧體基礎功能,讓長時間任務更容易實現:

  • 技能(符合 Agent Skills 開放標準):可重複使用、具版本管理的指示,能掛載至容器中,讓智慧體更可靠地執行任務。
  • 升級版 Shell 工具:由 OpenAI 託管、具備受控網際網路存取功能的容器,智慧體可在其中安裝相依套件、執行指令碼,以及寫入輸出內容(例如報告和產出檔案)。
  • 伺服器端壓縮:以簡單的方式,自動壓縮智慧體長時間執行時的上下文,讓你不會觸及上下文限制。

文件和 API 參考文件已分別介紹上述各項功能。本文著重於一些不易想到、卻是我們目前觀察到成效最佳的技巧與模式,這些經驗來自 OpenAI 的內部工作,以及早期採用技能的客戶 Glean 在正式環境中的應用。

快速掌握基本概念

技能:模型可按需載入的「作業程序」

技能由一組檔案,以及包含前置中繼資料與指示的 SKILL.md 資訊清單組成。可以把它想成一本具版本管理的操作手冊,模型要執行實際工作時,就能查閱。

有可用的技能時,平台會向模型提供各項技能的 namedescriptionpath。模型會根據這些中繼資料,決定是否呼叫某項技能。如果決定呼叫,就會讀取 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,其範圍必須是組織允許清單的子集。

實務運作上有兩個重點:

  1. 組織允許清單應保持精簡且穩定,只納入「已核准且可信任的目的地」。
  2. 請求允許清單的範圍應更小,只納入「這項任務所需的目的地」。

如果請求包含組織允許清單以外的網域,就會傳回錯誤。

9) 使用 domain_secrets 進行需要驗證的呼叫(避免憑證外洩)

如果允許存取的網域需要驗證標頭,請使用 domain_secrets,讓模型完全不會接觸到原始憑證。

執行時,模型看到的是預留位置(例如 $API_KEY),而 sidecar 元件只會針對已核准的目的地注入實際值。只要智慧體需要從容器內呼叫受保護的 API,這都是穩健的預設做法。

10) 在雲端與本機使用相同的 API

你可以使用這兩項基礎能力,無須將所有功能都交由託管環境執行:

  • 技能可搭配託管 Shell 環境與本機 Shell 模式使用。
  • Shell 提供本機執行模式,讓你自行執行 shell_call,再將 shell_call_output 傳回模型。
  • 如果你使用 Agents SDK,也可以接入自己的 Shell 執行器。

實用的開發循環如下:

  1. 從本機開始(快速迭代、存取內部工具、方便偵錯)。
  2. 需要可重複執行、具備隔離性且部署一致的環境時,再移至託管容器。
  3. 在兩種模式下使用相同的技能(即使執行環境改變,工作流程仍保持穩定)。

三種建構模式

歡迎自由嘗試這些新的智慧體基礎能力。以下提供三個範例,說明如何將它們結合,打造實用的應用程式。

模式 A:安裝 -> 擷取資料 -> 寫入成果檔案

這是運用託管 Shell 環境最簡單的方式:讓智慧體安裝相依套件、擷取外部資料,並產出具體的交付成果。

例如:

  • 安裝幾個程式庫。
  • 爬取資料或呼叫 API。
  • 將報告寫入 /mnt/data/report.md

這個模式為能處理實際工作的智慧體奠定基礎,因為它建立了明確的審查交接點:應用程式可以將成果檔案展示給使用者、記錄下來、比對差異,或傳入後續步驟。

模式 B:結合技能與 Shell,建立可重複執行的工作流程

成功建立一、兩個 Shell 工作流程後,你會發現下一個問題:流程雖然可行,但提示詞一旦偏離原本的寫法,可靠性就會下降。

這時技能就能派上用場。以下是一套可長期沿用的架構:

  1. 將工作流程(步驟、防護機制、範本)寫入技能。
  2. 將技能掛載至 Shell 環境。
  3. 讓智慧體遵循技能,以確定性的方式產出成果檔案。

這種做法特別適合以下工作流程:

  • 分析或編輯試算表。
  • 清理資料集並產生摘要。
  • 為例行業務流程產生標準化報告。

模式 C(進階):以技能承載企業工作流程

我們早期觀察到的一個現象是:從單一工具呼叫擴展到多工具編排時,準確率會下降。技能可讓工具使用的推理更依循明確程序,在不讓系統提示詞變得臃腫的情況下,彌補這個落差。

以下是 Glean 的具體案例:

  • 一項針對 Salesforce 設計的技能提高了評估準確率( 73% -> 85% ),並將 首個 Token 的回應時間 縮短了 18.1%
  • 實務做法包括仔細設計路由邏輯、提供反例,以及在技能中嵌入範本與範例。
  • Glean 也會將企業工作流程中的例行任務寫成技能,包括客戶經營規劃、升級案件分流,以及產生符合品牌風格的內容。

這正是技能開始發揮強大作用的方式。技能成為持續更新的 SOP(標準作業程序):隨著組織發展而調整,並由智慧體一致地執行。

建構一次,隨處執行

當長時間執行的智慧體既能遵循程序,又能在電腦上完成實際工作時,實用性就會大幅提升。技能、託管 Shell 環境與壓縮功能共同奠定了這個基礎。重點回顧如下:

  • 使用技能定義做事的方法(程序、範本、防護機制)。
  • 使用 Shell 執行實際操作(安裝、執行、寫入成果檔案)。
  • 使用壓縮功能,讓長時間執行的任務保持連貫(無須手動管理上下文)。
  • 需要快速迭代時,先從本機開始。
  • 需要可重複且隔離的執行環境時,再移至託管容器。
  • 透過組織層級與請求層級的允許清單嚴格控管網路存取,並使用網域密鑰進行需要驗證的呼叫。

開始在自己的應用程式中使用吧。請參閱技能文件Shell 文件壓縮功能文件,了解具體做法。