前言¶
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 仓库。