前言¶
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