dsh-code-runtime-container:容器隔離的代碼執行後端

前言

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 中運行不可信代碼的場景。使用時需注意以下幾點:

  1. 安全邊界:該插件不保護內核或容器運行時逃逸,也不保護 Docker 套接字訪問。如果攻擊者能接觸 Docker 套接字,仍可能利用宿主機權限。
  2. 信任姿態:設計上信任姿態等同於 bash,即假設運行環境本身是安全的。
  3. 錯誤處理:程序運行中的錯誤(如超時、OOM)會作爲結果字段返回,而不是直接拒絕執行。
  4. 工具隔離:該插件僅隔離代碼執行本身,不隔離工具調用。如果需要限制工具調用,需配合其他插件(如 dsh-egress-guard)。

結語

dsh-code-runtime-container 爲 DSH 提供了容器級的代碼執行隔離能力,彌補了原生 worker-thread 後端的隔離短板。如果你需要在 Code Mode 中運行不可信代碼,這個插件提供了比原生環境更強的邊界控制。更多技術細節與源碼,請參考 GitHub 倉庫。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜