DSH / PLUGIN / E2B

dsh-e2b

v0.1.0-rc.5deepseek-ai / deepseek-harness47f943859b

DSH 已内置插件运行时与平台内置源码可配置
运行时构成
HOSTCLIENTUITOOLDATAFLOW

概览

dsh-e2b

一个 E2B 沙箱的共享生命周期所有者。文件系统与进程管理适配器注入 ctx.e2b,等待其唯一的 SDK 句柄,因此处于同一个远程 Linux 工作树与进程环境中。本包固定使用 e2b@2.29.1;可选组合见包族索引。
BUILT-IN / ATOMIC
已随 DSH 提供,无需单独安装

这是 Harness 已内置的原子模块,不是可独立激活的 Profile 层。

能力

它贡献了什么

HostCordis loadable可配置
Client / UIHost only0 contributions
Model tools0None declared
Profile stateabsentDSH 已内置

README / ZH

插件文档

@deepseek-ai/dsh-e2b

English | 中文

一个 E2B 沙箱的共享生命周期所有者。文件系统与进程管理适配器注入 ctx.e2b,等待其唯一的 SDK 句柄,因此处于同一个远程 Linux 工作树与进程环境中。本包固定使用 e2b@2.29.1;可选组合见包族索引

配置

- id: e2b
  name: '@deepseek-ai/dsh-e2b'
  config:
    cwd: /home/user/workspace
    timeoutMs: 300000

- id: subprocess-e2b
  name: '@deepseek-ai/dsh-subprocess-e2b'

- id: fs-e2b
  name: '@deepseek-ai/dsh-fs-e2b'

apiKey 可省略;省略时读取 E2B_API_KEY。该密钥只配置宿主 SDK 连接,绝不会安装进沙箱。cwd 默认为 /home/user/workspace,并且必须是绝对 POSIX 路径。timeoutMs 默认为 5 分钟并控制沙箱生命周期;超时会删除沙箱。

生命周期与所有权

构造阶段会启动一次沙箱创建。服务在 getSandbox() 成功返回前,会创建 cwd 和私有的 cwd/.dsh-e2b 适配器状态目录,验证该预留路径是真实目录而非符号链接或其他文件类型,再把该目录的 mode 设为 0700。每个适配器内部的 E2B 命令 shell 都会获得一个位于根目录下、全新随机生成的 HOME,因此 SDK 固定使用的登录 shell 不会在控制命令之前解析可变用户主目录中的配置文件。

资源释放会先阻止继续获取新句柄,再等待初始化完成,然后删除沙箱。SandboxNotFoundError 表示沙箱已因超时或被另一个所有者删除,因此可视为完全停稳。初始目录设置失败时会尝试删除一次;若该尝试也失败,则由已配置的 E2B 超时约束沙箱的存活时间。提供方插件必须在该所有者之后加载,并在其之前 dispose(资源释放)。

模型体验

无。本共享运行时所有者不注册模型可见上下文;提供方适配器及其消费方拥有所有渲染效果。

KV Cache 影响

不会直接失效;本包不会贡献请求 token。

已知限制与延后工作

  • 这不是完整的 harness 运行时:Cordis 服务、agent(智能体)/会话状态、会话日志、LLM(大语言模型)请求、skill(技能)和 SDK 侧缓冲仍留在宿主进程中。
  • 沙箱状态是短暂的:资源释放和超时都会删除沙箱;重新连接、pause/leave 保留、模板、卷和快照均不在本 POC 范围内。
  • 没有配置部署平台:网络策略、宿主工作区同步和沙箱发现均不在本 POC 范围内。
  • cwd 是解析约定,而不是包含边界:适配器和命令可以访问沙箱中的其他路径;E2B 网络访问也继续采用基础镜像的策略。

LIMITATIONS

已知限制

- **这不是完整的 harness 运行时**:Cordis 服务、agent(智能体)/会话状态、会话日志、LLM(大语言模型)请求、skill(技能)和 SDK 侧缓冲仍留在宿主进程中。 - **沙箱状态是短暂的**:资源释放和超时都会删除沙箱;重新连接、pause/leave 保留、模板、卷和快照均不在本 POC 范围内。 - **没有配置部署平台**:网络策略、宿主工作区同步和沙箱发现均不在本 POC 范围内。 - **`cwd` 是解析约定,而不是包含边界**:适配器和命令可以访问沙箱中的其他路径;E2B 网络访问也继续采用基础镜像的策略。