sandbox-nono

by dsh-external

开发与运行时github 检测到 manifest package.json#dsh收录于 08-17

nono 沙盒支持

The nono (Landlock/Seatbelt) backend as an installable DSH profile bundle. This standalone package contains the sandbox provider, its invariant companion, the bundle patch, and…

安装

dsh plugin --profile web add github:dsh-external/sandbox-nono

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

nono(Landlock/Seatbelt)后端的可安装 DSH profile 组合包。这个 standalone package 包含沙箱 provider、不变式 companion、bundle patch,以及 vendored @dsh-external/nono-ts 原生执行器载体。

仓库结构

package.json              # standalone package 与 dsh.bundle 清单
cordis.patch.yml          # 显式 sandbox-nono provider 行
docs/                     # 双语 Nono 详细文档
src/                      # provider 与 invariant companion
tests/                    # 单元测试和真实 wrapper 集成测试
vendor-nono-ts/           # 固定版本的原生绑定与执行器 wrapper
lib/                      # 生成的安装产物

组合包会加入一个默认禁用的 sandbox-nono 行。部署需要 Nono 后端时,可以通过 profile overlay 启用它;已有 DSH sandbox 行不会被静默重命名或替换。

- id: sandbox-nono
  name: '@deepseek-ai/dsh-sandbox-nono'
  disabled: false
  config:
    probeTimeoutMs: 5000

当宿主没有 vendored 绑定、平台没有对应后端,或功能性通道探测无法证明隔离有效时,provider 会以 SANDBOX_UNAVAILABLE fail-closed。绑定解析、启动 argv 拼装、wrapper 失败分类和通道验收由 SDK 负责。

详细行为与限制见 docs/nono.md。

开发

完整 typecheck 需要把 DSH checkout 放在本仓库旁边:

../../deepseek-harness
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run test:e2e

prepare 直接从 src/ 构建,因此安装后的 package 运行时不依赖 sibling checkout。目前 vendored carrier 只包含 Linux x64 GNU 绑定;不支持的宿主会明确 fail-closed。

Model Experience

间接地,经由 @deepseek-ai/dsh-bash-sandbox 与 @deepseek-ai/dsh-tool-bash 呈现 enforcement 和 denial 事实。@deepseek-ai/dsh-sandbox seam 拥有 SANDBOX_UNAVAILABLE 文案。

已知限制与延后工作

  • 目前只提交了 linux-x64-gnu 原生绑定;其他平台需要在 vendor-nono-ts/native/ 下加入匹配的 carrier。
  • Windows 没有 Nono 后端,会 fail-closed。
  • 功能性探测结论会在 provider 生命周期内缓存;修复绑定后需要重新加载插件。

原始 README: https://github.com/omdsh-dev/sandbox-nono/blob/main/README.zh.md ↗