Skip to content

沙箱配置 ​

代码沙箱让 LLM 可以在隔离环境中执行 Python 和 Shell 代码。Openmim 支持三种沙箱后端。

选择沙箱后端 ​

通过 SANDBOX_PROVIDER 配置项选择:

json
{
  "SANDBOX_PROVIDER": "e2b"
}

可选值:e2b(默认)、shipyard、local


E2B(推荐) ​

E2B 提供云端隔离的代码执行环境,安全可靠。

配置 ​

json
{
  "SANDBOX_PROVIDER": "e2b",
  "E2B_API_KEY": "e2b_...",
  "E2B_TIMEOUT": 120
}

获取 API Key ​

  1. 注册 e2b.dev
  2. 在控制台创建 API Key
  3. 填入配置文件

特性 ​

  • 每个群组独立沙箱实例(按 chat_id 隔离)
  • 10 分钟空闲自动销毁,下次使用时重新创建
  • 同一群内的操作共享文件系统(可安装包、保存文件)
  • 规格:1 vCPU / 512 MB(E2B 基础模板)

费用 ​

E2B 有免费额度,超出后按使用量计费。日常群聊使用量通常在免费额度内。


Shipyard(自托管) ​

Shipyard 是可自托管的沙箱服务,适合私有部署场景。

配置 ​

json
{
  "SANDBOX_PROVIDER": "shipyard",
  "SHIPYARD_ENDPOINT": "http://127.0.0.1:8156",
  "SHIPYARD_ACCESS_TOKEN": "your-secret-token",
  "SHIPYARD_TTL": 3600,
  "SHIPYARD_MAX_SESSIONS": 1,
  "SHIPYARD_CPUS": 1.0,
  "SHIPYARD_MEMORY": "512m",
  "SHIPYARD_EXEC_TIMEOUT": 180
}

参数说明 ​

配置项默认值说明
SHIPYARD_ENDPOINThttp://127.0.0.1:8156Shipyard 服务地址
SHIPYARD_ACCESS_TOKENsecret-token访问令牌
SHIPYARD_TTL3600会话存活时间(秒)
SHIPYARD_MAX_SESSIONS1最大并发会话数
SHIPYARD_CPUS1.0CPU 核心数
SHIPYARD_MEMORY512m内存限制
SHIPYARD_EXEC_TIMEOUT180单次执行超时(秒)

Local(本机执行) ​

在本机的隔离工作目录中直接执行代码。

安全警告

Local 沙箱直接在宿主机执行代码,没有容器隔离!
仅在完全信任所有用户的私有环境中使用。
不要在公共群组中启用此选项。

配置 ​

json
{
  "SANDBOX_PROVIDER": "local",
  "LOCAL_SANDBOX_WORKDIR": "data/local_sandbox",
  "LOCAL_SANDBOX_TIMEOUT": 180
}

参数说明 ​

配置项默认值说明
LOCAL_SANDBOX_WORKDIRdata/local_sandbox代码执行工作目录
LOCAL_SANDBOX_TIMEOUT180执行超时(秒)

通用设置 ​

无论使用哪种沙箱后端,以下限制都适用:

参数值说明
单次执行最大输出4000 字符超出部分截断
工具返回给 LLM 的最大字符TOOL_RESULT_MAX_CHARS(默认 6000)二次截断
同一群内最大并发1串行执行,避免状态污染

沙箱对应工具 ​

工具名功能
run_python执行 Python 代码
run_shell执行 Shell 命令

这两个工具由沙箱插件注册,可在群设置中单独禁用。

禁用沙箱功能 ​

在全局配置中禁用沙箱插件:

json
{
  "PLUGINS_DISABLED": ["sandbox"]
}

或在群管理面板中禁用 run_python、run_shell 工具。

基于 python-telegram-bot 构建