前言¶
DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在开发或集成第三方插件时,一个直接的问题是:如何在不影响宿主环境安全性的前提下,给予插件必要的执行能力。如果插件直接运行在 DSH 进程中,将获得宿主的全部权限,这在安全上是一个隐患。
dsh-capsule 插件通过在 Linux 系统上创建独立的 Bubblewrap 进程来解决这个问题。它将兼容的第三方 DSH 客户端运行在隔离的环境中,由宿主进行完整性校验和权限控制。
插件介绍¶
插件名称:dsh-capsule
核心定位:为第三方 DeepSeek Harness 插件提供 OS 级别的隔离能力胶囊。
维护者:2-c-q
分类:admin-security
开源协议:MIT
该插件通过 Bubblewrap 构建全新的用户、PID、挂载和网络命名空间,将插件代码与宿主环境物理隔离,防止恶意代码或错误代码破坏宿主系统。
核心功能¶
根据插件的功能描述,其核心能力包括:
- 运行隔离:在全新的 Linux Bubblewrap 进程中运行兼容的第三方 DSH 客户端。DSH 进程中不会加载客端的代码,且代码在两次调用之间不会驻留内存。
- 完整性验证:由受信任的主机验证一个完整性固定的 JavaScript 工件(Artifact),确保运行的是未被篡改的代码。
- 隔离贡献:在隔离的
describe单元中发现并贡献信息。 - 工具注册:代表宿主注册真实的 DSH 工具和静态系统提示部分。
- 逐次调用:每次工具调用都会启动一个新的隔离单元,确保状态隔离。
安装与启用¶
在安装之前,必须确保宿主系统满足前置条件。
前置条件:
- Bubblewrap:宿主必须安装 Bubblewrap,且必须支持
--ro-bind-fd参数。 - 系统限制:Ubuntu 24.04 可能需要加载 AppArmor 配置文件以允许未授权的用户命名空间。
安装命令:
通过 DSH 插件管理器安装插件包:
dsh plugin --profile <profile> add github:2-c-q/dsh-capsule
依赖要求:
安装包接受以下 peer dependencies,版本范围为 0.1.0-rc.5 到 0.2.0:
@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools
典型用法¶
安装完成后,需要在配置文件中定义胶囊实例。
1. 准备宿主环境
在 Debian 或 Ubuntu 系统上安装 Bubblewrap:
sudo apt-get update && sudo apt-get install --yes bubblewrap
如果是在 Ubuntu 24.04 上,建议安装系统自带的 AppArmor 配置文件以确保用户命名空间功能可用。
2. 配置胶囊
在配置文件中(通常通过 cordis.patch.yml),定义胶囊的根目录、清单文件和策略。以示例 echo-capsule 为例:
- id: dsh-capsule-host
config:
capsules:
- root: /absolute/path/to/dsh-capsule/examples/echo-capsule
manifest: capsule.json
policy:
capsuleId: example.echo
tools:
- capsule_echo
promptSections:
- capsule.echo.guidance
grants: []
bubblewrapCommand: bwrap
# ... 其他配置参数(如 maxManifestBytes, maxFrameBytes 等)
3. 工作区访问
若要授予插件读取宿主文件系统的权限,需使用 workspaceRoot 和 policy。
- 请求:在插件 manifest 中声明
{"kind":"workspace-read","path":"reference/context.txt"}。 - 配置:在胶囊配置中指定
workspaceRoot并在 policy 的grants中匹配该路径。
配置后,文件将在胶囊内以只读方式挂载到 /workspace/reference/context.txt。注意,v0.1 版本仅支持对现有常规文件的精确只读挂载,不支持目录挂载或写入挂载。
适用场景与注意¶
适用场景:
- 需要在宿主环境中运行不可信或待验证的第三方 DSH 插件。
- 需要严格隔离插件对宿主系统资源(文件、网络、进程)的访问。
重要注意:
- Linux 限制:v0.1 版本的隔离提供程序仅支持 Linux 系统。
- 安全边界:隔离边界是宿主与胶囊之间的执行世界证明。如果宿主环境(如 Bubblewrap 版本)或配置(如 manifest/policy)不匹配,胶囊将无法激活。
- 威胁模型:该插件的目标是限制运行时权限,不保护宿主免受内核漏洞、Bubblewrap 本身漏洞、侧信道攻击或拒绝服务攻击的影响。
- 权限模型:v0.1 协议仅支持
workspace-read。不支持workspace-write、network-connect、subprocess-exec或storage。目录挂载在当前版本也不被视为一种能力。
总结¶
dsh-capsule 为 DeepSeek Harness 插件生态提供了一个基于 Bubblewrap 的轻量级沙箱解决方案。通过将插件运行在独立的 Linux 进程中并验证其完整性,它有效地限制了插件的运行时权限,降低了宿主环境被破坏的风险。对于需要集成外部插件的开发者,这是一个必要的隔离机制。
插件目录:https://www.skillhub.cn/plugins/2-c-q/dsh-capsule
GitHub 仓库:https://github.com/2-c-q/dsh-capsule