前言¶
DeepSeek Harness (DSH) 提供了一個代碼執行接口 ctx.codeRuntime,用於在 Code Mode 中運行程序。內置的 worker-thread 後端在代理進程內運行,其信任姿態等同於 bash。對於需要嚴格隔離的場景,這無法滿足要求。dsh-code-runtime-container 插件爲此提供了一個容器隔離的後端實現,它將程序運行在一個全新的容器中,並應用了嚴格的資源與權限限制。
插件簡介¶
這是一個爲 DeepSeek Harness 代碼執行接口提供的容器隔離後端。由 tancheng33 維護。它解決了原生後端隔離不足的問題,通過容器技術提供更強的執行邊界。
核心功能¶
該插件通過容器機制提供以下隔離能力:
- 網絡隔離:使用
--network=none禁用所有網絡訪問。 - 文件系統隔離:使用只讀根文件系統,程序無法寫入宿主機文件系統。
- 資源限制:通過內核強制執行內存、CPU 和 PID 上限,防止資源耗盡或 Fork Bomb。
- 權限控制:默認使用
--cap-drop=ALL和no-new-privileges,並以nobody用戶運行。
安裝與啓用¶
安裝前,請確保宿主機上已安裝容器引擎(如 Docker、Podman 或 Nerdctl),並且有可用的本地鏡像。
執行以下命令安裝插件:
dsh plugin --profile <name> add dsh-code-runtime-container
安裝後,需要確保容器引擎有可用的鏡像。例如,使用官方 Node.js 鏡像:
docker pull node:22-alpine
配置與使用¶
該插件的默認配置是嚴格模式,旨在提供隔離能力。配置項通常在 YAML 文件中定義,例如:
- id: code-runtime-container
config:
workspacePath: /Users/me/projects/app
workspaceReadOnly: true
- workspacePath:如果需要程序讀取項目文件,可以指定絕對路徑並掛載到容器的
/workspace目錄。 - extraArgs:該參數用於傳入額外的
docker run標誌。任何配置不當(如--network=host)都可能削弱上述所有隔離策略。
適用場景與注意¶
該插件適合需要在 Code Mode 中運行不可信代碼的場景。使用時需注意以下幾點:
- 安全邊界:該插件不保護內核或容器運行時逃逸,也不保護 Docker 套接字訪問。如果攻擊者能接觸 Docker 套接字,仍可能利用宿主機權限。
- 信任姿態:設計上信任姿態等同於 bash,即假設運行環境本身是安全的。
- 錯誤處理:程序運行中的錯誤(如超時、OOM)會作爲結果字段返回,而不是直接拒絕執行。
- 工具隔離:該插件僅隔離代碼執行本身,不隔離工具調用。如果需要限制工具調用,需配合其他插件(如
dsh-egress-guard)。
結語¶
dsh-code-runtime-container 爲 DSH 提供了容器級的代碼執行隔離能力,彌補了原生 worker-thread 後端的隔離短板。如果你需要在 Code Mode 中運行不可信代碼,這個插件提供了比原生環境更強的邊界控制。更多技術細節與源碼,請參考 GitHub 倉庫。