RL 代理沙箱應讓實驗可重複,方法是隔離狀態、控制資源、記錄動作與輸出,以及在每次試驗之間重置環境。這對於強化學習、評估迴圈、編碼代理、瀏覽器代理,以及任何代理可以執行命令、修改檔案、呼叫工具或改變其學習環境的試誤系統來說至關重要。
為什麼 RL 代理需要沙箱
強化學習建立在互動之上。代理觀察環境、選擇動作、接收回饋,並更新其策略或決策流程。在玩具模擬器中,這個迴圈可能只是在網格上移動一個標記。在現代的代理系統中,動作可能包括執行 Python、安裝套件、編輯儲存庫、點擊網頁應用程式、呼叫工具,或產生一個由評分員評估的檔案。
這使得執行環境成為實驗的一部分。如果兩個試驗共享檔案系統、快取、瀏覽器工作階段、背景程序或部分修改過的儲存庫,那麼第二個試驗的起始狀態就會與第一個不同。獎勵的提升可能是因為代理學會了新東西,也可能是因為環境意外保留了相依性、憑證、編譯好的二進位檔、瀏覽器 Cookie 或產生的輔助檔案。若缺乏隔離與重置行為,就很難區分兩者。
沙箱為每次試驗提供了明確的執行邊界。這本身並非完整的安全策略,也無法取代獎勵設計、策略審查、存取控制或人工核准的需求。它為建構者提供了一個受控的場所,用來執行代理動作、觀察副作用、捕獲工件,並在下一次嘗試前重置環境。
對於 RL 風格的代理工作,有用的問題不只是「這個沙箱安全嗎?」更好的問題是:這個執行環境能否支援可重複的實驗,而不讓一次試驗悄悄污染下一次?
可重置性對 RL 代理試驗的意義
可重置性是將環境恢復到已知基準線的能力,以便開始新的回合、評估或訓練批次。在實務上,這個基準線包含的不僅僅是一個乾淨的目錄。
一個 RL 代理沙箱可能需要重置的項目包括:
- 在試驗期間建立、編輯、刪除或下載的檔案。
- 安裝的套件、建置快取、編譯好的工件與暫存檔。
- 執行中的程序、連接埠、通訊端、瀏覽器工作階段與背景工作。
- 環境變數與範圍內的憑證。
- 資料庫固定資料、本機服務、佇列或模擬 API。
- 網路政策、套件註冊表配置與工具權限。
- 評估狀態、獎勵記錄與評分員輸入。
重置機制取決於工作負載。一個編碼基準測試可能會還原儲存庫檢出與測試固定資料。一個瀏覽器任務可能會清除 Cookie、本機儲存、下載檔與瀏覽器設定檔。一個資料分析代理可能會重設輸入資料集,同時只保留經核准的輸出工件。一個多步驟代理評估可能需要暫停、檢查,然後繼續或捨棄沙箱。
常見的錯誤是把重置視為在末尾執行的清理腳本。清理腳本會失敗。代理可以殺死它們、在執行前掛起、填滿磁碟、留下背景程序,或建立腳本不知道的路徑。更穩健的設計是每次試驗都從已知的範本或快照開始,記錄哪些內容變更了,然後拆除或重置整個執行環境邊界。
可重複的環境與狀態快照
可重複的 RL 試驗需要一個清晰的基準線。該基準線應定義作業系統映像、語言執行環境、套件、資料集版本、環境變數、檔案、網路政策、資源限制與進入點命令。
有三種常見的基準線模式:
| 模式 | 最佳適用情境 | 注意事項 |
|---|---|---|
| 從範本建立全新沙箱 | 獨立回合、批次評估、編碼任務、瀏覽器任務 | 啟動時間與套件安裝時間可能占據短試驗的大部分時間 |
| 快照與還原 | 需要在每次嘗試前準備好環境的多步驟任務 | 若快照未版本化,快照漂移可能隱藏變更 |
| 具有受控檢查點的長期沙箱 | 互動式除錯、課程任務、人機協作修正 | 除非檢查點明確,否則狀態可能在試驗間洩漏 |
當大多數試驗都從相同的已知映像啟動時,範本很有用。快照在需要昂貴的設定之後很有用:安裝相依性、下載公開固定資料、編譯專案,或開啟一個準備好瀏覽器的工作空間。長期運作的工作階段可以幫助那些確實需要記憶體與狀態的代理工作流程,但它們不應成為評估的預設選項,除非狀態模型是實驗的一部分。
一個實用規則:在試驗開始前定義允許持續存在的內容。如果答案是「除了經核准的工件外,什麼都不保留」,則使用全新沙箱或快照還原。如果答案是「代理應基於先前的嘗試建構」,則將該持續性視為實驗的一部分並記錄下來。
確定性與非確定性執行
並非每個代理試驗都能完全確定。語言模型取樣、外部 API、瀏覽器時序、套件註冊表可用性、平行程序與網路延遲都可能變化。儘管如此,沙箱可以減少可避免的變異來源。
為了提高可重複性,控制你能控制的部分:
- 鎖定套件版本、容器映像、資料集、提示詞、評估器程式碼與模型配置。
- 記錄模型、環境或評估器支援的隨機種子。
- 凍結基準測試固定資料與預期輸出。
- 將套件安裝路由到經核准的註冊表或快取。
- 避免將即時生產系統作為獎勵來源,除非任務明確涉及即時整合。
- 捕獲執行期間使用的確切命令、工具呼叫、檔案與網路目的地。
然後將確定性故障與隨機行為分開。如果試驗 7 失敗是因為代理選擇了不同的計畫,那是有用的資訊。如果試驗 7 失敗是因為前一次試驗在同一個連接埠上留下了程序,那是環境污染。如果試驗 7 失敗是因為套件註冊表回傳了不同的版本,那是相依性漂移。
沙箱應讓這些差異可見。目標不是假裝每個 RL 代理執行都是確定的。目標是移除隱藏狀態,並保留足夠的證據來解釋為什麼執行結果會改變。
試驗迴圈的資源與時間限制
RL 與評估迴圈可以執行許多試驗。單一代理錯誤可能迅速倍增:無限迴圈、失控的套件安裝、分叉的程序、大量下載、無限制的日誌,或重複的瀏覽器工作階段。資源控制可以防止一個糟糕的試驗消耗整個評估預算。
在沙箱層級設定限制,而不僅僅是在代理提示詞內部:
| 限制 | 對 RL 代理的重要性 |
|---|---|
| 牆上時鐘超時 | 防止懸掛的回合阻塞批次 |
| CPU 與記憶體配額 | 防止一個試驗耗盡相鄰試驗的資源 |
| 磁碟配額 | 控制日誌、快取、套件安裝與產生的工件 |
| 程序限制 | 減少失控子程序與背景工作失敗 |
| 網路政策 | 防止意外呼叫、下載或內部存取 |
| 輸出大小限制 | 保持模型上下文與遙測管線可用 |
| 並行沙箱上限 | 在掃描期間保護預算與共享基礎設施 |
超時需要細微差別。對於短基準測試回合,硬超時是正確的。長期任務可能需要暫停、恢復或檢查點,以便人類在決定是否繼續之前檢查進度。重要的是執行環境策略是明確的。代理不應僅僅因為獎勵迴圈未完成而獲得無限的計算資源。
用於獎勵、評估與除錯的遙測
獎勵訊號只有在你能解釋它們時才有用。在代理系統中,一個分數通常結合了許多東西:任務成功、測試結果、命令退出碼、檔案差異、瀏覽器狀態、延遲、令牌使用、人工標籤與評估器輸出。沙箱應捕獲理解分數所需的證據,而不儲存不必要的秘密或私人資料。
有用的遙測包括:
- 沙箱 ID、試驗 ID、任務 ID、範本或快照版本以及開始時間。
- 用於執行的模型與代理配置。
- 工具呼叫、Shell 命令、退出碼與執行時間。
- 讀取、寫入、建立、刪除或匯出的檔案。
- 聯絡的網路域名與安裝的套件名稱。
- 瀏覽器動作、螢幕截圖、下載內容以及相關的最終頁面狀態。
- 評估器輸入、獎勵輸出、測試結果與評估器錯誤。
- 從沙箱複製出來以供審查的工件。
保持原始日誌的範圍。完整的命令輸出、原始提示詞、瀏覽器螢幕截圖與產生的檔案可能包含敏感資訊。對於許多系統,更好的預設是結構化遙測加上選擇性保留的工件。儲存足夠的資訊來重現和除錯執行;避免將日誌變成另一個充滿憑證、客戶資料和未經審查的模型輸出的數據湖。
獎勵設計也應考慮沙箱限制。如果代理不允許存取公開網際網路,就不要因為即時網站無法使用而將其評為失敗。如果沙箱有很小的磁碟配額,則衡量代理如何處理該限制,而不是它是否能暴力破解儲存空間。環境政策與獎勵函數應保持一致。
檔案、網路與不安全動作邊界
沙箱在縮小代理可以觸及的範圍時最有幫助。對於 RL 風格的試驗,假設代理可能會發現令人驚訝的動作。它可能執行提示詞中未提及的命令、檢查隱藏檔案、重試被封鎖的網路路徑、安裝套件,或產生在後續步驟中改變行為的腳本。
使用與任務匹配的檔案系統邊界:
- 當代理只需要檢查輸入時,將其掛載為唯讀。
- 將產生的輸出放在單獨的可寫入目錄中。
- 將憑證、主機配置、瀏覽器設定檔與部署金鑰保留在工作空間之外。
- 在試驗之間重置可寫入目錄。
- 預設只複製經核准的工件,而不是整個工作空間。
網路政策也需要相同的精確度。編碼基準測試可能不需要網際網路存取。套件安裝任務可能需要註冊表允許清單。瀏覽器代理評估可能需要特定的公開網站,並封鎖內部元資料端點。資料代理工作流程可能需要一個狹窄的 API,而不是廣泛的私有網路可達性。
不安全動作應保持在自動迴圈之外,除非實驗明確包含它們且審查路徑清晰。範例包括生產環境部署、面向客戶的訊息、帳單變更、存取控制編輯、大量匯出、破壞性資料庫寫入與基礎設施修改。沙箱可以包含執行環境副作用;它無法決定哪些商業動作需要核准。
工件捕獲與人工審查
RL 代理試驗結束時應產生一個可審查的記錄。這並不意味著保留所有東西。它意味著保留評分、稽核和從試驗中學習所需的工件。
對於編碼代理,這可能是修補程式、測試日誌、產生的報告和最終工作空間差異。對於瀏覽器代理,這可能是螢幕截圖序列、下載的檔案、最終 URL 和 DOM 摘要。對於資料分析代理,這可能是筆記本、圖表、轉換後的資料集和評估器分數。對於安全敏感的工作流程,它可能包括被拒絕的動作與核准請求。
人工審查應位於沙箱實驗會影響外部系統的邊界。良好的審查點包括:
- 將檔案從沙箱匯出到生產工作空間之前。
- 發送訊息、開立工單、發布頁面或部署程式碼之前。
- 授予新的網路、檔案系統或秘密權限之前。
- 在即時使用者或客戶資料上使用學到的策略之前。
- 在重複失敗之後,這些失敗暗示獎勵破解、提示注入或環境濫用。
審查應設計到迴圈中,而不是在代理擁有廣泛存取權限後才附加。沙箱應使提議的動作、支援工件與試驗歷史易於檢查。
Novita Agent Sandbox 的定位
Novita Agent Sandbox 是一個雲端沙箱執行環境,適用於需要隔離環境來執行程式碼、處理檔案系統、執行瀏覽器風格工作流程以及長期執行任務的 AI 代理。目前的 Novita 文件描述了沙箱功能,例如命令執行、檔案操作、範本、快照、暫停與恢復、背景執行以及 SDK/CLI 生命週期管理。
對於 RL 風格的代理工作,這些原始功能對應到核心環境需求:
| RL 代理需求 | 要尋找的沙箱原始功能 |
|---|---|
| 從已知基準線開始每次試驗 | 基於範本或快照的沙箱建立 |
| 執行代理動作而不接觸主機 | 隔離的命令執行與範圍限制的檔案系統 |
| 只保留選定的輸出 | 檔案操作與工件匯出政策 |
| 支援長期評估 | 背景執行、暫停/恢復、逾時政策 |
| 除錯失敗或出乎意料的試驗 | 日誌、命令結果、檔案差異與捕獲的工件 |
| 將評估與應用邏輯分開 | 圍繞每次執行的 SDK/CLI 生命週期控制 |
保持產品邊界清晰。Novita Agent Sandbox 提供可以支援評估與 RL 代理基礎設施的執行環境原始功能,但建構者仍需定義獎勵函數、環境範本、工具政策、網路規則、遙測模式、秘密處理與人工核准工作流程。不要將任何沙箱提供者視為自主代理的完整安全層。
RL 代理沙箱檢查清單
在執行重複的 RL 風格試驗或大型評估批次之前,使用此檢查清單:
| 領域 | 要回答的問題 |
|---|---|
| 基準線 | 每次試驗從哪個範本、快照、資料集、相依性集和評估器版本開始? |
| 重置 | 試驗之間會清除哪些狀態,以及哪些狀態是故意保留的? |
| 確定性 | 哪些種子、套件版本、模型設定和固定資料是鎖定的? |
| 檔案系統 | 哪些路徑是唯讀、可寫入、隱藏或匯出的? |
| 網路 | 出口是否被封鎖、列入允許清單、代理、記錄,或是特定於任務? |
| 資源 | CPU、記憶體、磁碟、程序、逾時和並行限制是什麼? |
| 工具 | 代理可以呼叫哪些命令、套件管理器、瀏覽器和 API? |
| 獎勵 | 哪些證據提供獎勵,分數能否從捕獲的工件中解釋? |
| 遙測 | 命令、檔案變更、網路呼叫、輸出和評估器結果是否已記錄而不儲存秘密? |
| 工件 | 哪些輸出被複製出來、保留、編輯或丟棄? |
| 人工審查 | 哪些動作在離開沙箱或觸及外部系統之前需要核准? |
如果有一行不清楚,請在擴展迴圈之前修復它。小的歧義在乘以數百或數千次試驗時會變得昂貴。
常見問題
什麼是 RL 代理沙箱?
RL 代理沙箱是一個隔離的執行環境,代理可以在其中採取動作、接收回饋,並在試驗之間重置到已知的環境狀態。它用於保持實驗可重複、包含副作用,以及捕獲用於評分和除錯的證據。
為什麼可重置性對強化學習代理很重要?
可重置性防止一次試驗的檔案、程序、快取、瀏覽器工作階段或安裝的套件影響下一次試驗。如果沒有可靠的重置,獎勵的變化可能反映隱藏的環境漂移,而不是更好的代理行為。
RL 代理沙箱能讓自主代理安全嗎?
不。沙箱可以減少執行環境的爆炸半徑,並使副作用更容易觀察,但它不是完整的安全保證。建構者仍然需要範圍限制的權限、網路政策、秘密處理、獎勵設計、監控以及對敏感外部動作的人工審查。
每個 RL 試驗都應該從全新的沙箱開始嗎?
不一定。全新沙箱最適合獨立評估。快照還原可能在昂貴的設定後更有效率。長期沙箱可以適合互動式或課程類型的工作,但持續狀態應明確並記錄。
RL 代理沙箱應該記錄什麼?
記錄試驗 ID、沙箱基準線、命令、工具呼叫、退出碼、檔案變更、網路目的地、資源使用、評估器輸入、獎勵輸出和經核准的工件。預設避免記錄原始秘密、不必要的客戶資料或完整的未經審查的檔案內容。
