dsh-capsule:为第三方 DeepSeek Harness 插件提供 Linux 沙箱隔离

前言

DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在开发或集成第三方插件时,一个直接的问题是:如何在不影响宿主环境安全性的前提下,给予插件必要的执行能力。如果插件直接运行在 DSH 进程中,将获得宿主的全部权限,这在安全上是一个隐患。

dsh-capsule 插件通过在 Linux 系统上创建独立的 Bubblewrap 进程来解决这个问题。它将兼容的第三方 DSH 客户端运行在隔离的环境中,由宿主进行完整性校验和权限控制。

插件介绍

插件名称:dsh-capsule

核心定位:为第三方 DeepSeek Harness 插件提供 OS 级别的隔离能力胶囊。

维护者:2-c-q

分类:admin-security

开源协议:MIT

该插件通过 Bubblewrap 构建全新的用户、PID、挂载和网络命名空间,将插件代码与宿主环境物理隔离,防止恶意代码或错误代码破坏宿主系统。

核心功能

根据插件的功能描述,其核心能力包括:

  1. 运行隔离:在全新的 Linux Bubblewrap 进程中运行兼容的第三方 DSH 客户端。DSH 进程中不会加载客端的代码,且代码在两次调用之间不会驻留内存。
  2. 完整性验证:由受信任的主机验证一个完整性固定的 JavaScript 工件(Artifact),确保运行的是未被篡改的代码。
  3. 隔离贡献:在隔离的 describe 单元中发现并贡献信息。
  4. 工具注册:代表宿主注册真实的 DSH 工具和静态系统提示部分。
  5. 逐次调用:每次工具调用都会启动一个新的隔离单元,确保状态隔离。

安装与启用

在安装之前,必须确保宿主系统满足前置条件。

前置条件:

  • 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

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

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

小夜