全部產品
Search
文件中心

Function Compute:Desktop 模板

更新時間:Sep 03, 2026

Desktop 模板提供完整的 Linux 案頭環境,內建 Chrome,併兼容 e2b-desktop / @e2b/desktop SDK。您可以通過截圖感知案頭,通過滑鼠、鍵盤操作 GUI 應用,並通過即時資料流觀察執行過程。

與 browser 模板相比,Desktop 模板控制的是整套虛擬桌面,而不是只通過 CDP 控制瀏覽器。本頁介紹鏡像配置、模板構建和最小驗證;完整的滑鼠鍵盤操作、即時資料流和安全建議,請參見使用 Computer Use Sandbox。

功能特性

特性 說明
完整案頭 提供視窗管理器、終端和檔案管理工具
G使用者介面自動化 通過截圖、滑鼠座標、鍵盤和視窗 API 操作案頭應用
瀏覽器 內建 Chrome,可通過應用啟動介面開啟指定 URL
即時查看 通過 SDK 開啟整案頭即時資料流
SDK 相容 支援 Python e2b-desktop 和 TypeScript @e2b/desktop

預設配置

本文使用 v0.0.44 版本的北京地區鏡像:

配置項 預設值 說明
容器鏡像 fc-e2b-registry.cn-beijing.cr.aliyuncs.com/runtime/desktop:v0.0.44 Desktop 官方鏡像,北京地區樣本
CPU 4 vCPU 推薦起始規格
記憶體 8192 MB 推薦起始規格
說明

構建模板時,鏡像倉庫地區應與雲沙箱接入地區保持一致。其他地區請將鏡像地址中的地區替換為對應地區,並保持版本為唯一標籤 v0.0.44;同時配置同地區的 E2B_API_URL 和 E2B_DOMAIN。

構建 Desktop 模板

Desktop 模板不是開通即用,需要先從官方 Desktop 鏡像構建一個帶名稱的自訂模板。模板無需配置啟動命令或就緒命令,Desktop SDK 會自動啟動案頭環境和即時資料流服務。

Python

安裝依賴:

uv venv .venv --python 3.12
source .venv/bin/activate
uv pip install e2b-desktop==2.4.1 python-dotenv

將以下代碼儲存為 build.py:

"""Desktop 模板構建樣本。"""

from dotenv import load_dotenv
from e2b import Template, default_build_logger

load_dotenv()

# SDK 自動讀取 E2B_API_KEY / E2B_API_URL / E2B_DOMAIN 環境變數。
FROM_IMAGE = "fc-e2b-registry.cn-beijing.cr.aliyuncs.com/runtime/desktop:v0.0.44"

build = Template.build(
    Template().from_image(FROM_IMAGE),
    name="my-desktop-template",
    cpu_count=4,
    memory_mb=8192,
    on_build_logs=default_build_logger(),
)
print(f"template_id: {build.template_id}")

運行構建:

python build.py

Node.js

安裝依賴:

npm install e2b@^2.31.0 @e2b/desktop@2.3.1 dotenv
npm install --save-dev tsx
npm pkg set type=module

將以下代碼儲存為 build.mjs:

// Desktop 模板構建樣本。
import "dotenv/config";
import { Template, defaultBuildLogger } from "e2b";

const FROM_IMAGE =
  "fc-e2b-registry.cn-beijing.cr.aliyuncs.com/runtime/desktop:v0.0.44";

const build = await Template.build(
  Template().fromImage(FROM_IMAGE),
  "my-desktop-template",
  {
    cpuCount: 4,
    memoryMB: 8192,
    onBuildLogs: defaultBuildLogger(),
  },
);
console.log(`template_id: ${build.templateId}`);

運行構建:

node build.mjs

最小驗證

模板構建完成後,建立沙箱、啟動 Chrome 並截圖,驗證案頭環境和應用啟動能力。

Python:

from pathlib import Path

from dotenv import load_dotenv
from e2b_desktop import Sandbox

load_dotenv()

desktop = None
try:
    desktop = Sandbox.create(template="my-desktop-template", timeout=600)
    desktop.launch("google-chrome", "https://example.com")
    # 等待應用視窗渲染完成,避免截到尚未載入的案頭。
    desktop.wait(10000)
    Path("desktop.png").write_bytes(desktop.screenshot())
finally:
    if desktop is not None:
        desktop.kill()

TypeScript:將以下代碼儲存為 desktop.ts。

import "dotenv/config";
import { writeFileSync } from "node:fs";
import { Sandbox } from "@e2b/desktop";

let desktop: Sandbox | undefined;
try {
  desktop = await Sandbox.create("my-desktop-template", { timeoutMs: 600_000 });
  await desktop.launch("google-chrome", "https://example.com");
  // 等待應用視窗渲染完成,避免截到尚未載入的案頭。
  await desktop.wait(10_000);
  writeFileSync("desktop.png", await desktop.screenshot());
} finally {
  await desktop?.kill();
}

運行樣本:

npx tsx desktop.ts

常用能力速查

能力 Python TypeScript
建立沙箱 Sandbox.create(template=..., timeout=...) Sandbox.create(template, { timeoutMs })
啟動應用 desktop.launch("google-chrome", url) desktop.launch("google-chrome", url)
等待 desktop.wait(10000) desktop.wait(10000)
截圖 desktop.screenshot() desktop.screenshot()
移動滑鼠 desktop.move_mouse(x, y) desktop.moveMouse(x, y)
單擊 / 雙擊 / 右鍵 left_click() / double_click() / right_click() leftClick() / doubleClick() / rightClick()
滾動 desktop.scroll("down", amount) desktop.scroll("down", amount)
拖拽 desktop.drag((x1, y1), (x2, y2)) desktop.drag([x1, y1], [x2, y2])
輸入文本 desktop.write("...") desktop.write("...")
按鍵 / 按鍵組合 press("enter") / press(["ctrl", "c"]) press("enter") / press(["ctrl", "c"])
當前視窗 ID desktop.get_current_window_id() desktop.getCurrentWindowId()
開啟 / 停止即時資料流 stream.start() / stream.stop() stream.start() / stream.stop()
擷取流地址 stream.get_url(auth_key=...) stream.getUrl({ authKey })
銷毀沙箱 desktop.kill() desktop.kill()

使用限制

限制項 說明
資源規格 建議使用 4 vCPU、8192 MB 記憶體或更高規格
地區 鏡像、E2B_API_URL 和 E2B_DOMAIN 必須使用同一地區
即時資料流 同一沙箱同一時刻只能開啟一個整案頭 Desktop stream;v0.0.44 版本暫不支援指定單個視窗
生命週期 任務結束後應調用 kill(),避免案頭沙箱持續佔用資源

相關文檔