當任務需要保留檔案、已安裝的依賴套件、瀏覽器或預覽存取權限、長時間執行的指令,以及可重複審查的輸出結果,而非僅止於單次程式碼執行時,AI 代理就需要具狀態的沙箱。程式碼解釋器對於侷限的計算、圖表繪製和一次性腳本仍然很有用。一旦代理需要編輯儲存庫、重試失敗的測試、保留產生的工件、檢查網頁 UI,或將工作交還給人類,它就需要更接近工作區或代理電腦的環境。
從程式碼解釋器到代理電腦,究竟改變了什麼?
早期的「程式碼解釋器」功能解決了一個狹隘但重要的問題:讓模型能夠編寫並執行程式碼,通常是 Python,針對附加到對話中的檔案進行操作。這對於許多資料處理任務來說已經足夠。使用者可以上傳 CSV 檔案,要求進行轉換,取得圖表,然後下載輸出結果。
代理工作的涵蓋範圍則更廣。一個編碼代理可能需要複製專案、安裝依賴套件、編輯檔案、執行測試、檢查日誌、啟動開發伺服器、開啟預覽、修正結果,並將狀態保留足夠長的時間,讓審查者能夠驗證發生了哪些變更。一個瀏覽器代理可能需要 Cookie、下載的檔案、螢幕截圖、DOM 狀態,以及重播失敗步驟的方法。一個研究或評估代理可能需要數百個隔離的工作單元,這些工作單元會保留工件和日誌以供後續檢查。
這就是為什麼相關詞彙正在轉變:
- 程式碼解釋器 指的是針對短腳本和產生的輸出進行管理的執行工具。
- 沙箱 指的是一個隔離的環境,不受信任或由代理產生的工作可以在其中執行,與主機系統隔離。
- 工作區 指的是一個基於檔案的環境,任務狀態可以在其中跨步驟累積。
- 代理電腦 指的是一個更完整的執行環境,包含檔案、指令、套件、瀏覽器或 UI 存取權限、日誌、預覽、工件、生命週期控制,以及重置或快照選項。
這些術語有所重疊。有用的區別不在於品牌名稱,而在於代理需要多少狀態和審查表面。
核心術語的含義是什麼?
| 概念 | 主要任務 | 典型狀態模型 | 最佳適用場景 |
|---|---|---|---|
| 程式碼解釋器 | 執行產生的程式碼並回傳輸出 | 短暫的會話狀態 | 計算、檔案轉換、圖表、小型腳本 |
| 沙箱 | 將執行環境與主機及其他會話隔離 | 短暫或持久 | 執行不受信任的程式碼、指令執行、瀏覽器自動化 |
| 工作區 | 將檔案和環境上下文整合在一起 | 持久的檔案系統或可還原的映像 | 編碼代理、資料專案、任務交接、可重複審查 |
| 代理電腦 | 為代理提供一個包含工具和生命週期控制的任務環境 | 具有日誌、工件、預覽和重置/快照路徑的具狀態執行環境 | 多步驟軟體任務、瀏覽器代理、評估、長時間執行的工作流程 |
同一個產品可以涵蓋多個類別。一個具狀態的沙箱可以表現得像一個工作區。一個具備終端機、瀏覽器、工件和生命週期管理的工作區,開始感覺像一台代理電腦。評估的關鍵問題在於代理能做些什麼、哪些狀態會保留下來,以及人類能夠多可靠地檢查或重置結果。
何時短暫的程式碼執行就足夠了?
當任務規模小、範圍有限,且容易從最終輸出驗證時,短暫執行仍然是正確的預設選擇。
在以下情況使用短暫的程式碼解釋器型環境:
- 輸入檔案已事先提供。
- 任務可以在一或幾次腳本執行中完成。
- 輸出是圖表、表格、轉換後的檔案或計算結果。
- 不需要在受管環境之外安裝套件。
- 使用者不需要檢查正在執行的應用程式、瀏覽器狀態或長指令日誌。
- 一旦答案傳遞完畢,會話就可以被丟棄。
例如,一位支援分析師要求助理依類別對工單進行分組,並不需要一個持久的工作區。一位資料分析師要求一次性的視覺化圖表,可能不需要瀏覽器存取或快照。為工作添加超出需求的基礎設施,可能會使生命週期、成本和安全性審查變得更困難。
代理何時需要具狀態的沙箱?
當代理不僅僅是計算一個答案,而是透過一個工作流程來操作時,具狀態的沙箱就變得重要。
檔案必須跨越多個步驟保留下來
代理經常會建立中間檔案:下載的原始資料、產生的程式碼、測試固定裝置、建置工件、螢幕截圖、報告和日誌。如果每次執行都從乾淨的狀態開始,代理就必須反覆重建上下文,或者將過多的狀態塞進模型的提示詞中。
一個具狀態的檔案系統為代理提供了上下文視窗之外的工作記憶體。它也為人類提供了具體可檢查的東西。
依賴套件需要被安裝或重複使用
許多實際任務依賴於預設執行環境中不存在的套件。一個編碼代理可能需要 npm ci、pip install、Playwright 瀏覽器、編譯器或專案特定的二進位檔案。一個資料代理可能需要與生產環境版本相符的函式庫。
如果這些依賴套件在每次指令執行後都消失,代理就會浪費時間並產生更多的失敗點。範本和快照有助於團隊從已知的環境開始,而不是在每次執行時都重建它。
指令執行時間可能超過一個模型回應週期
建置、測試、爬蟲、遷移、訓練任務和評估框架的執行時間可能超過單一回應週期。代理需要啟動指令、監控輸出、從部分失敗中恢復,並擷取日誌。
這需要處理狀態。它也需要逾時控制、取消功能,以及在模型進行下一步後檢索結果的方法。
瀏覽器和預覽存取成為任務的一部分
許多代理工作流程是視覺化或面向網頁的:
- 一個編碼代理啟動一個本地網頁應用程式並檢查渲染後的頁面。
- 一個瀏覽器代理瀏覽網站、下載檔案、填寫表單或擷取螢幕截圖。
- 一個審查代理驗證圖表、報告或示範頁面是否確實能渲染。
對於這些工作,環境需要的不仅仅是標準輸出。它需要連接埠、預覽 URL、瀏覽器自動化、螢幕截圖,或其他一些工件路徑,讓代理和審查者能夠看到結果。
人類審查需要可重複的證據
代理可以說「測試通過了」或「應用程式看起來正確」,但生產團隊需要可重複的證據。一個好的執行環境會保留日誌、產生的檔案、螢幕截圖和預覽鏈接,時間足夠長,以便另一個人或流程可以審查它們。
這就是具狀態的沙箱改變協作模式的地方。沙箱不僅是模型的工具;它也是審查工件。
一個具狀態的代理沙箱應該保留什麼?
只有在有明確目的時,狀態才有用。一個具狀態的沙箱應該清楚說明哪些東西會保留下來、哪些會重置,以及哪些可以轉變為可重複使用的起點。
檔案系統狀態
檔案系統是代理工作的基本單位。它應該能夠保存原始碼檔案、產生的輸出、測試工件、日誌、螢幕截圖和下載的輸入資料。它也應該能夠輕鬆地透過 SDK、CLI 或 UI 列出、讀取、寫入、上傳和下載檔案。
執行環境和套件狀態
執行環境應該支援任務所需的語言和套件管理器。對於編碼代理,這通常意味著 shell 指令、專案層級的依賴套件,以及重複使用已準備好的環境的能力。對於瀏覽器代理,它可能包括瀏覽器二進位檔案和自動化框架。
網路和網頁存取權限
網路存取需要謹慎的政策,而不是模糊的開放性。有些代理需要出站套件下載、API 呼叫或網頁瀏覽。其他的則應該在更嚴格的出口規則下執行。團隊應該評估執行環境是否允許他們決定沙箱可以存取什麼,以及這些選擇如何被記錄。
預覽和工件擷取
代理的輸出通常不僅僅包含文字。尋找對檔案、螢幕截圖、瀏覽器會話、暴露的連接埠、網頁預覽和指令日誌的支援。這些工件是審查者從相信代理的聲明到實際檢查結果的關鍵。
生命週期控制
具狀態並不意味著永久。執行環境應該支援建立、逾時、暫停或恢復(如果可用)、終止和清理。它也應該支援範本或快照,以便可以重複使用已準備好的環境,而不必永遠保留每個會話。
重置和快照路徑
代理會犯錯。一個實用的代理電腦需要一個乾淨的重置路徑,以及在進行有風險的工作之前擷取良好狀態的方法。快照在設定完成後、依賴套件安裝後,或長時間評估執行之前非常有用。
團隊應該如何評估代理執行環境?
評估標準應該與供應商的宣稱分開。合適的執行環境取決於工作流程、風險概況和審查流程。
| 評估標準 | 應該問什麼 | 為什麼重要 |
|---|---|---|
| 生命週期 | 環境如何被建立、暫停、恢復、超時和刪除? | 防止被遺棄的會話和不受控制的成本 |
| 檔案系統 | 代理和審查者能否檢查檔案和工件? | 使多步驟工作可審查 |
| 套件安裝 | 依賴套件能否被安裝、快取、模板化或快照? | 減少設定重複和環境漂移 |
| 指令執行 | 日誌、退出碼、超時和背景任務是否可存取? | 使失敗可除錯 |
| 瀏覽器或預覽存取 | 代理能否檢查渲染後的輸出或自動化瀏覽器? | 支援網頁應用程式、UI 任務和視覺審查 |
| 網路政策 | 允許哪些出站存取,以及如何控制? | 降低來自套件擷取、網頁瀏覽和外部呼叫的風險 |
| 隔離性 | 什麼邊界將沙箱彼此之間以及與主機隔離開? | 決定執行環境適合處理哪種程式碼和資料 |
| 範本和快照 | 團隊能否重複使用已知良好的環境? | 提高可重現性 |
| 人機交接 | 審查者能否看到相同的檔案、日誌、螢幕截圖或預覽? | 將執行環境轉變為可審查的工件 |
| 成本模型 | 計費是根據會話時間、CPU、記憶體、儲存空間還是並發數? | 避免代理並行執行時產生意外成本 |
安全敏感的問題需要精確的文件和產品審查。避免將任何沙箱視為神奇的保護。隔離、網路存取、機密處理和日誌都需要明確的設計選擇。
Novita Agent Sandbox 在哪裡適用?
Novita Agent Sandbox 專為需要隔離、具狀態執行環境的代理工作流程而設計。Agent Sandbox 概述 將沙箱描述為代理可以執行指令、讀寫檔案、安裝依賴套件以及使用基於瀏覽器的工作流程的環境。它也定義了用於準備好的起始環境的範本,以及用於保存已配置沙箱狀態的快照。
這使得 Novita 適合在您的代理工作負載需要以下項目時進行評估:
- 在隔離環境內執行程式碼;
- 跨多個步驟的檔案存取;
- 依賴套件安裝和可重複使用的準備環境;
- 面向瀏覽器的工作流程;
- 人類可以檢查的產生物件;
- 透過 SDK 或 CLI 進行的生命週期控制;
- 一個結合了模型 API 和代理沙箱基礎設施的平台方向。
這並不意味著每個代理都需要一個具狀態的沙箱。如果您的應用程式只需要對使用者上傳的檔案進行一次性 Python 執行,那麼程式碼解釋器模式可能更簡單。如果您的團隊已經有一個具有嚴格出口、機密處理、稽核和審查流程的內部執行環境,那麼問題在於外部沙箱是否能在不削弱這些控制的情況下提升開發速度。
將 Novita Agent Sandbox 作為架構決策的一部分,而不是作為每個執行路徑的全面替代方案。
一個實用的決策規則
在選擇執行環境之前,問一個問題:
在第一個模型回合結束後,第二個人或代理能否從這個環境中恢復、檢查或重現這項工作?
如果答案是否定的,而且輸出仍然有用,那麼短暫執行可能就足夠了。如果答案需要是肯定的,那麼任務正在朝具狀態的沙箱或代理電腦邁進。
對於生產環境的代理系統,這通常會變成預設模式:
- 從一個乾淨的範本或快照開始。
- 讓代理在隔離的執行環境內工作。
- 擷取檔案、日誌、螢幕截圖、預覽和指令結果。
- 將環境保留足夠長的時間以供審查。
- 根據結果進行重置、刪除或快照。
這個工作流程給了模型行動的空間,同時保持了結果的可檢查性。
推薦文章
- Building a Coding Agent with Novita’s Agent Sandbox
- Host Clawdbot with Novita Sandbox Template
- Which Inference Provider Is Right for AI Agents
常見問題
程式碼解釋器和代理沙箱是一樣的嗎?
不一樣。程式碼解釋器通常專注於在受管的會話中執行產生的程式碼並回傳輸出。代理沙箱是一個更廣泛的隔離環境,用於指令、檔案、依賴套件、瀏覽器工作流程、生命週期控制和可審查的工件。
所有 AI 代理都需要具狀態的沙箱嗎?
不需要。簡單的資料轉換、計算和一次性腳本在短暫執行中就能很好地運作。當工作流程依賴於持久的檔案、已安裝的套件、長時間執行的程序、瀏覽器或預覽存取權限,或人類對工件的審查時,代理才需要具狀態的沙箱。
什麼是代理電腦?
代理電腦是一個任務環境,為 AI 代理提供類似電腦的工具:檔案系統、shell、套件、瀏覽器或 UI 存取權限、日誌、工件、生命週期控制,以及重置或快照選項。對於長時間執行和可審查的代理工作來說,這是一個有用的概念。
為什麼快照對代理工作流程很重要?
快照讓團隊能夠保存已配置的環境並在之後重複使用。它們減少了重複的設定工作,提高了可重現性,並在代理執行有風險或實驗性操作之前提供了一個乾淨的返回點。
團隊應該如何思考沙箱安全性?
將沙箱安全性視為一個架構決策。在執行敏感工作負載或不受信任的程式碼之前,請審查隔離模型、網路存取、機密處理、日誌、生命週期清理和人類審查流程。
