Secure your Agent Harness with Code Sandboxing
三句話摘要
設計 AI 代理程式在隔離沙箱中安全地撰寫和執行程式碼,以加速複雜任務的完成。 讓 AI 代理撰寫和執行沙箱隔離的程式碼,能大幅減少工具呼叫次數、加速任務完成、且避免推理時的算術錯誤。 工具呼叫 vs. 程式碼執行的效率差異:連續使用 12 個不同工具需要 12 個回合、12 次令牌消耗,代理改為撰寫一段程式碼將這些工具串聯,能同時獲得所有答案,減少等待時間和令牌使用。
重點整理
重點- 1
工具呼叫 vs. 程式碼執行的效率差異:連續使用 12 個不同工具需要 12 個回合、12 次令牌消耗,代理改為撰寫一段程式碼將這些工具串聯,能同時獲得所有答案,減少等待時間和令牌使用。
- 2
代理程式碼執行的安全隔離:不能直接在生產環境執行代理生成的程式碼,必須建立隔離的沙箱環境(如 Node VM)來防止程式碼逃逸或對系統造成傷害,確保在生產環境前的離線測試也要遵守此原則。
- 3
發揮語言模型的最佳能力:語言模型在程式碼撰寫上表現優異,但在算術和數字推理上容易產生幻覺。透過讓代理撰寫確定性程式碼(而非純推理)來完成計算工作,能同時利用其強項並避免弱點。
- 4
沙箱 API 設計:定義代理在沙箱中能存取的函數清單(如 `getCharges`、`searchKnowledgeBase`),透過白名單機制控制代理的權限,確保其只能呼叫預先批准的操作。
實用技巧與重點
乾貨- 技術架構:
- 使用 Node VM 的 `VM.createContext()` 建立隔離環境
- 超時預設值:2000 毫秒
- 使用 Promise.race() 實現超時機制
- 以 IIFE(立即呼叫函式運算式)搭配 async 包裝用戶程式碼
- 沙箱 API 函數:
- `getCharges(customerId: string)`:查詢客戶費用記錄
- `searchKnowledgeBase(query: string)`:搜尋知識庫
- `console.log()`:輸出日誌用於除錯
- 工具設計:
- 工具名稱:`run_code`
- 輸入:JavaScript 程式碼(字串)
- 輸出:`{ok: boolean, result?: any, error?: string, logs: string[]}`
- 允許的操作:await 工具呼叫、console.log、return 任何 JSON 值
- 具體案例:
- 任務:找出重複費用並計算應退款金額
- 代理生成的程式碼:呼叫 `getCharges()`、搜尋退款政策、執行數學運算
- 發現結果:客戶被重複收費兩次各 $49,應退款 $49
結論
結論“讓 AI 代理撰寫和執行沙箱隔離的程式碼,能大幅減少工具呼叫次數、加速任務完成、且避免推理時的算術錯誤。”
完整解析
詳細當我們設計 AI 代理系統時,常面臨一個核心挑戰:代理在需要執行危險操作(如執行 bash 命令、SQL 查詢或複雜算術)時,該如何安全地處理?傳統做法是提供一系列工具,讓代理逐一呼叫;但這種方法存在兩個問題:每次工具呼叫都需要等待回應,導致多個往返延遲;且語言模型在純推理算術時容易產生幻覺。
講者提出的解決方案是「程式碼模式」(Code Mode):與其讓代理連續呼叫 12 個工具,不如讓它撰寫一段 JavaScript 程式碼,在該程式碼中使用這些工具並進行計算,然後一次性執行並返回結果。這個方法的優勢在於,它同時利用了語言模型的兩項能力——編寫程式碼的能力(非常強)和程式碼執行的決定性(完全準確)。
實作上,使用 Node VM 函式庫在隔離沙箱中執行程式碼。首先透過 `VM.createContext()` 建立一個受限的執行環境,定義該環境可以存取的 API(如 `getCharges` 和 `searchKnowledgeBase`),並設置安全防護如超時機制(預設 2 秒)和日誌記錄。代理生成的程式碼被包裝在一個 async IIFE(立即呼叫的非同步函式)中,讓代理能使用 top-level await,無須顯式定義外層函式。
一個具體例子是退款處理流程:使用者要求代理「找出重複收費並計算退款金額」。代理不是呼叫「搜尋所有費用」工具、再呼叫「查詢退款政策」工具、最後嘗試自己做數學,而是直接撰寫程式碼呼叫 `getCharges()` 取得費用清單、呼叫 `searchKnowledgeBase()` 查詢退款政策、再用程式碼邏輯檢測重複項(同一客戶、同一天、同一金額)並計算答案。結果是:一次程式碼執行取代了多次工具往返,速度更快且完全準確——發現客戶被收費兩次各 $49,應退款 $49。
這個方法被譽為「前沿技術」,因為大多數生產系統尚未廣泛採用,但採用者通常是專門從事 AI 系統開發的專業團隊。關鍵是要認識到語言模型在寫程式碼上遠優於在計算上的表現,因此應當充分發揮這項優勢。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。


