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 仓库。

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

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

小夜