本文根據 E2B 官方文檔首頁整理,資料核對於 2026-10-11。文中代碼取自官方頁面,沒有在本機運行驗證。
適用於誰
- 搜「e2b 是什麼」「e2b 沙箱」「e2b sandbox」「e2b sdk」的人;
- 在做能寫代碼、跑代碼的智能體,發愁「模型生成的代碼到底在哪執行」的人;
- 看到別人的智能體項目依賴裏有
e2b,想知道它是幹什麼的人。
結論先說
- E2B 提供隔離的沙箱,讓智能體可以安全地執行代碼、處理數據、運行工具。
- 一個沙箱就是一台按需創建的 Linux 虛擬機,官方的描述是快速、安全,並且可以暫停和恢復。
- 用起來就三步:拿到 API Key 並設成環境變量
E2B_API_KEY→ 裝 SDK(npm i e2b或pip install e2b)→Sandbox.create()之後在裏面執行命令。 - 它解決的問題是隔離:模型寫的代碼不在你的伺服器或電腦上跑,出了問題影響不到你的環境。
一、為什麼智能體需要沙箱
讓模型「寫一段代碼分析這個 CSV 並畫圖」,寫出來的代碼總得有地方執行。幾種做法的差別:
| 在哪執行 | 問題 |
|---|---|
| 你的應用伺服器上 | 模型生成的代碼能讀到伺服器上的密鑰、文件,能訪問內網,一段有問題的代碼就可能造成事故 |
| 用戶的電腦上 | 同樣的風險落到用戶頭上,而且環境各不相同 |
| 一次性的隔離環境裏 | 代碼能碰到的只有沙箱裏的東西,用完銷燬 |
模型生成的代碼應當被當作不可信的代碼對待:它可能寫錯,也可能因為讀到了惡意內容而被帶偏。沙箱就是第三種做法的現成實現。不少智能體框架的示例裏,執行命令的工具背後都是某種沙箱,例如《Vercel AI SDK 是什麼》裏引用的官方示例。
二、三個核心概念
官方文檔首頁列的概念:
| 概念 | 官方的說明 |
|---|---|
| Sandbox(沙箱) | 為你的智能體按需創建的、快速且安全的 Linux 虛擬機,可以按需暫停和恢復 |
| Template(模板) | 定義沙箱啟動時的環境 |
| Persistence(持久化) | 暫停沙箱會儲存它的文件系統和內存;暫停的沙箱會一直保留,直到你把它終止 |
模板的用途:你的任務總是需要某些軟件包時,把它們做進模板,新沙箱啟動時就已經裝好,不必每次現裝。
暫停與恢復的用途:一個要持續很久、中間有等待的任務(比如等用戶確認),可以先把沙箱暫停,回來再接着用,文件和內存狀態都在。
三、安裝 SDK
JavaScript / TypeScript:
bash
npm i e2b
Python:
bash
pip install e2b
創建沙箱需要 API Key,SDK 從環境變量 E2B_API_KEY 讀取。在 E2B 的控制台拿到 Key 後設置環境變量(macOS / Linux 用 export E2B_API_KEY=...,Windows PowerShell 用 $env:E2B_API_KEY = "...")。
四、第一段代碼
官方的最小示例,創建一個沙箱並在裏面執行一條命令。
Python:
python
from e2b import Sandbox
sandbox = Sandbox.create() # Needs E2B_API_KEY environment variable
result = sandbox.commands.run('echo "Hello from E2B Sandbox!"')
print(result.stdout)
JavaScript / TypeScript:
javascript
import { Sandbox } from 'e2b'
const sandbox = await Sandbox.create() // Needs E2B_API_KEY environment variable
const result = await sandbox.commands.run('echo "Hello from E2B Sandbox!"')
console.log(result.stdout)
Sandbox.create():創建一台新的沙箱虛擬機;sandbox.commands.run(...):在沙箱裏執行一條終端命令;result.stdout:命令的標準輸出。
這條 echo 是在遠端的沙箱裏執行的,不是在你的電腦上。
五、接到智能體裏:基本思路
把沙箱做成智能體的一個工具:
- 定義一個「執行命令」或「運行代碼」的工具,參數是模型給出的命令或代碼;
- 工具的實現裏,把這段內容交給沙箱執行;
- 把標準輸出和報錯原樣返回給模型;
- 模型根據結果決定下一步:修正代碼重試,或者給出最終答案。
官方文檔裏有專門的章節講怎麼把大模型接到沙箱上、讓它運行 AI 生成的代碼。工具調用的機制見《Claude 工具調用入門》;用框架來組織這個循環,可以看《OpenAI Agents SDK 教學》或《Pydantic AI 是什麼》。
六、還能做什麼
官方文檔首頁提到的其他能力:
- 向沙箱上載文件、從沙箱下載文件,比如把用戶的數據文件傳進去、把生成的圖表取出來;
- 安裝自定義的第三方軟件包;
- 桌面沙箱:給「電腦操作」類智能體用的虛擬 Linux 桌面,智能體可以看到並控制它;
- 在 GitHub Actions 的 CI/CD 裏使用,用於測試、校驗和 AI 代碼審查。
每一項的具體接口見官方文檔的對應章節。
七、注意事項
- 沙箱隔離的是執行環境,不是你傳進去的數據。傳進沙箱的文件和密鑰,沙箱裏的代碼都能讀到。只傳任務需要的東西,不要把生產環境的憑據放進去;
- 用完要清理。按官方說明,暫停的沙箱會一直保留到你終止它。長期不用的沙箱及時終止,避免不必要的佔用;
- API Key 只放在服務端,不要寫進前端代碼或提交進倉庫;
- 費用:按官方定價頁為準,本文不列數字。
常見問題
Q:和 Docker 容器有什麼區別?
按官方的說法,E2B 的沙箱是虛擬機,並且是託管服務:你通過 SDK 按需創建,不用自己維護宿主機。自己用 Docker 搭隔離環境也是常見做法,隔離強度和運維工作由你自己負責。
Q:只能跑 Python 嗎?
沙箱是一台 Linux 虛擬機,上面的最小示例執行的是終端命令。能運行什麼取決於沙箱環境裏裝了什麼,可以通過模板定製。
Q:ChatGPT、Claude 自帶的代碼執行和它是一回事嗎?
思路相同,都是把模型寫的代碼放到隔離環境裏跑。區別在於那些是產品內置的功能,而 E2B 是給開發者在自己的應用裏用的基礎設施。
Q:必須用 E2B 才能做會跑代碼的智能體嗎?
不是。它是這類沙箱服務中的一個,一些模型廠商的 API 也自帶代碼執行工具。關鍵是原則:模型生成的代碼不要直接在有權限、有數據的環境裏執行。
參考資料
- E2B Documentation(官方文檔):https://docs.e2b.dev/
0 條評論
還沒有評論,來搶沙發~