全部產品
Search
文件中心

Function Compute:DeepSeek 模板

更新時間:Oct 11, 2026

本文提供 DeepSeek Harness 預置鏡像地址,並說明如何構建模板、建立沙箱和運行任務。

概述

DeepSeek Harness 是 DeepSeek AI 開源的 Agent harness(npm 包 @deepseek-ai/dsh,CLI 名 dsh),支援 headless 單任務、Web UI 和 SDK/ACP 程式化接入。

各地區 ACR 已預置 DeepSeek Harness 鏡像,無需自行推送鏡像或配置 ACR EE,選取下方鏡像地址,通過 from_image + Template.build 構建模板後即可使用。

本頁說明鏡像規格與完整用法:前置條件、鏡像地址、構建模板、建立沙箱、運行 DeepSeek Harness、自訂網域名瀏覽器訪問、銷毀沙箱、環境概覽與 Profile 能力約定。

前置條件

  • 首次使用請先完成通過 SDK 使用雲沙箱中的前置準備、API Key 建立和 SDK 配置(E2B API Key、api_url、domain)。

  • 已安裝依賴:pip install e2b==2.31.0(本模板不使用 Code Interpreter,無需安裝 e2b-code-interpreter)。

  • 已準備模型 API Key,建立沙箱時通過 envs 注入,鏡像內不預置。

    • 在 DeepSeek 開放平台擷取 DEEPSEEK_API_KEY。

    • 可選 DEEPSEEK_BASE_URL:指定中轉端點(dsh 原生讀取),不設定則直連 DeepSeek 官方。

鏡像地址

按地區選取 FROM_IMAGE:

地區

鏡像

cn-beijing

fc-e2b-registry.cn-beijing.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

cn-shenzhen

fc-e2b-registry.cn-shenzhen.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

ap-southeast-1

fc-e2b-registry.ap-southeast-1.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

cn-hongkong

fc-e2b-registry.cn-hongkong.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

cn-shanghai

fc-e2b-registry.cn-shanghai.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

cn-hangzhou

fc-e2b-registry.cn-hangzhou.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

us-east-1

fc-e2b-registry.us-east-1.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

us-west-1

fc-e2b-registry.us-west-1.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52

推薦構建規格:cpu_count=2,memory_mb=4096。

鏡像內建 Web UI 一鍵啟動指令碼 /opt/deepseek-harness/start.sh。

構建模板

自訂模板需先將鏡像構建為模板,只需執行一次。完成後儲存模板名稱,後續建立沙箱時直接複用。

以下以北京地區為例:

import time

from e2b import Template, default_build_logger

FROM_IMAGE = "fc-e2b-registry.cn-beijing.cr.aliyuncs.com/runtime/deepseek-harness:v0.0.52"
TEMPLATE_NAME = f"deepseek-harness-{int(time.time())}"

OPTS = {
    "api_key": "<你的 E2B API Key>",
    "api_url": "https://api.cn-beijing.e2b.fc.aliyuncs.com",
    "domain": "cn-beijing.e2b.fc.aliyuncs.com",
}

build = Template.build(
    Template().from_image(FROM_IMAGE),
    name=TEMPLATE_NAME,
    cpu_count=2,
    memory_mb=4096,
    on_build_logs=default_build_logger(),
    **OPTS,
)

print(f"template: {build.name}")   # 儲存,後續可複用

構建完成後控制台模板狀態應為 ready。同一模板名稱可多次建立沙箱,無需每次重新構建。

建立沙箱

建立沙箱時通過 envs 注入 DeepSeek API Key:

from e2b import Sandbox

sandbox = Sandbox.create(
    template=TEMPLATE_NAME,
    envs={"DEEPSEEK_API_KEY": "<your-deepseek-api-key>"},
    timeout=600,
    **OPTS,
)

運行 DeepSeek Harness

headless 單任務

--profile headless 執行一個任務,列印最終答案後退出:

result = sandbox.commands.run(
    'dsh --profile headless "用一句話介紹 DeepSeek Harness" 2>&1',
    timeout=0,
)
print(result.stdout)

模型 API Key 未注入或無效時,dsh 以非零碼退出並給出明確錯誤(錯誤輸出在 stderr,下表為經 2>&1 合并後的錯誤原文):

情境

輸出

未提供 Key

dsh: MISSING_CREDENTIAL: llm-deepseek: no API key for provider route "deepseek-official"; store DEEPSEEK_API_KEY through the credentials service (the web Models page writes it), or export DEEPSEEK_API_KEY in the launching environment

Key 無效

dsh: AUTH: Authentication Fails, Your api key: ****3000 is invalid(3000 為無效 Key 的末 4 位,隨實際 Key 變化)

Web UI

鏡像內建一鍵啟動指令碼,沙箱內執行一條命令即可啟動 Web UI。指令碼後台啟動 dsh web(僅監聽 127.0.0.1:8080,Token 鑒權),就緒後在 stdout 輸出 DSH_WEB_TOKEN 與 DSH_WEB_LAUNCH_URL;指令碼等冪,Web UI 已在運行時直接回顯現有 token,不重複啟動:

import re

r = sandbox.commands.run("/opt/deepseek-harness/start.sh", timeout=180)
print(r.stdout)
# 輸出形如:
# DSH_WEB_TOKEN=<token>
# DSH_WEB_LAUNCH_URL=http://127.0.0.1:8080/?token=<token>

token = re.search(r"DSH_WEB_TOKEN=(\S+)", r.stdout).group(1)

用 SDK 連接埠代理把沙箱內 8080 連接埠映射為公網可訪問地址。預設平台網域名稱(*.e2b.fc.aliyuncs.com)下該地址僅適合 curl / SDK 層驗證,Web UI 無法在瀏覽器中使用;要在瀏覽器中使用 Web UI,須先綁定自訂網域名,參見瀏覽器訪問:

host = sandbox.get_host(8080)
print(f"https://{host}/?token={token}")
警告

輸出的 URL 含 ?token=,等同於訪問憑據,不要分享或記錄帶 token 的 URL(瀏覽器歷史、終端輸出、代理日誌都可能留存)。首次訪問建立會話後,改用不帶 ?token= 的 URL 繼續訪問。

DEEPSEEK_API_KEY 未注入時,start.sh 非零退出並提示通過 envs 注入。

瀏覽器訪問(自訂網域名 + --trusted-host)

預設平台網域名稱(*.e2b.fc.aliyuncs.com)下 Web UI 無法在瀏覽器中使用,原因有二:

  1. 平台對預設網域名稱的 HTTP 響應強制添加 Content-Disposition: attachment,瀏覽器開啟會下載 HTML 檔案而非渲染頁面。

  2. dsh 對 /api 請求設有瀏覽器信任柵欄,預設只信任 loopback 主機名稱;經平台網域名稱代理訪問時 Host 不被信任,/api 全部返回 403,頁面為空白殼。

預設網域名稱僅適合 curl / SDK 層驗證:不帶 token 訪問返回 401(dsh 原生鑒權提示),帶 token 訪問返回 303 並簽發會話 cookie,攜帶 cookie 再訪返回 200。

要在瀏覽器中使用 Web UI,須先綁定自訂網域名,並在啟動時通過 --trusted-host 把公網主機名稱加入信任清單:

  1. 綁定自訂網域名:控制台添加網域名稱、DNS 解析與 HTTPS 認證的完整步驟見雲沙箱自訂網域名。要點:配置控制鏈路網域名稱 api.<你的自訂網域名> 與資料鏈路泛網域名稱 *.<你的自訂網域名>,認證須覆蓋泛網域名稱,網域名稱需按所在地區要求完成備案。

  2. SDK 換用自訂網域名:將 OPTS 替換為與控制台一致的配置(api_key 須為綁定該網域名稱同一帳號下的 Key),後續 Template.build(...)、Sandbox.create(...) 等所有調用均使用新的 OPTS。替換 OPTS 後需重新執行 Sandbox.create(...) 建立沙箱,本步驟的 sandbox.get_host(8080) 才會返回自訂網域名下的主機名稱:

    OPTS = {
        "api_key": "<你的 E2B API Key>",
        "api_url": "https://api.<你的自訂網域名>",
        "domain": "<你的自訂網域名>",
    }
  3. 帶 --trusted-host 啟動並訪問:start.sh 額外參數原樣透傳給 dsh web,將 sandbox.get_host(8080) 返回的公網主機名稱傳入:

    host = sandbox.get_host(8080)   # 8080-<sandbox_id>.<你的自訂網域名>
    
    r = sandbox.commands.run(
        f"/opt/deepseek-harness/start.sh --trusted-host {host}",
        timeout=180,
    )
    token = re.search(r"DSH_WEB_TOKEN=(\S+)", r.stdout).group(1)
    
    print(f"https://{host}/?token={token}")

瀏覽器開啟輸出的 URL 即可使用 Web UI。首次進入會彈出 Internal Testing Notice(DeepSeek Harness 0.1 內測期提示),單擊 Continue 關閉;必須先選 workspace 才能對話(單擊 Choose workspace 選擇一個目錄),之後模型流式回複,介面含思考過程摺疊與每輪 Token 用量統計。輸出的 URL 同樣含 token,按憑據處理;首次訪問建立會話後,改用不帶 ?token= 的 URL 即可。

關於 --trusted-host 與鑒權:

  • 加入信任清單隻影響信任柵欄,鑒權不變:不帶 token 訪問仍返回 401,首次訪問後由會話 cookie 承接(30 天有效)。

  • 可重複傳入多個主機名稱;條目帶連接埠號碼時精確匹配,不帶連接埠號碼時匹配任意連接埠。

  • dsh 重啟後 token 會變化,已簽發的瀏覽器會話 cookie 仍有效。

排障:若訪問返回代理層 403(JSON 錯誤體),帶 X-Access-Token: <sandbox._envd_access_token> 要求標頭重試。_envd_access_token 是 Python SDK 的內部屬性(e2b==2.31.0 實測可用,後續版本可能重新命名或移除),對應 Sandbox Access Token,隨沙箱銷毀失效。

銷毀沙箱

任務完成後釋放資源(會一併結束沙箱內的 dsh web 進程):

sandbox.kill()

環境概覽

專案

規格

作業系統

Debian 13

dsh 路徑

/home/user/.dsh/bin/dsh(0.1.5-rc.1,rc 版本,行為可能隨上遊變動)

內建 Node

v22.22.3(/home/user/.dsh/tools/node/bin/node,dsh 不依賴系統 Node)

系統 Node

v20.x

預設使用者 / 工作目錄

user / /home/user

Profile 能力約定

Profile

用法

說明

headless

dsh --profile headless "<任務>"

執行單任務,列印最終答案後退出

web

/opt/deepseek-harness/start.sh(或裸 dsh web --no-open)

Web UI,Token 鑒權;指令碼固定監聽 127.0.0.1:8080,裸 dsh web 預設 127.0.0.1:3080

sdk

dsh --profile sdk

JSON-RPC stdio,供 SDK client 接入

sdk-minimal

dsh --profile sdk-minimal

獨立極簡 agent 配置樹

acp

dsh --profile acp

ACP stdio,供自動化 client 接入

headless 與 web 為本頁流程所用 profile;sdk、sdk-minimal、acp 說明來自鏡像內 dsh README(/home/user/.dsh/lib/node_modules/@deepseek-ai/dsh/README.zh.md),內建 profile 在首次使用時自動初始化。其他 profile 通過 dsh plugin --profile <name> <pnpm args> 管理;運行命令所在目錄即預設 workspace 根目錄。