dify中启用安全代码执行必须通过独立部署的difysandbox服务实现;仅v1.14.0+版本支持自动发现,低版本需手动修改端点;沙箱须以read_only:true运行,dify需配置code_execution_sandbox_url并重启服务。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中启用安全可控的代码执行能力,必须通过DifySandbox组件实现——它不是Dify内置功能,而是独立部署、通过API接入的沙箱服务,直接决定Python/JS等代码能否被调用且不危及主机系统。
确认Dify版本与沙箱兼容性
进入Dify项目根目录,运行git log -n 1检查当前提交哈希。只有 commit hash 含 【v1.14.0+】 或 tag 标记为 v1.14.2 的版本才原生支持 DifySandbox 的自动发现机制;低于此版本需手动修改 api/core/model_runtime/code_executor/code_executor.py 中的默认端点地址。
若使用离线部署包(如 dify-1.14.2-offline.tar),请核对压缩包内 docker-compose.yml 是否已包含 sandbox: 服务块——缺失则需从 GitHub 主仓库 dify-sandbox 分支拉取对应 release 版本补全。
部署DifySandbox独立服务
方法一:Docker Compose一键启动(推荐)
下载官方沙箱镜像:docker pull langgenius/dify-sandbox:0.3.0。该镜像已预编译 Go 运行时并禁用 shell 调用权限,无需额外加固。
创建 sandbox-compose.yml 文件,内容如下:
version: "3.8"services: sandbox: image: langgenius/dify-sandbox:0.3.0 ports: - "8081:8080" restart: unless-stopped read_only: true tmpfs: - /tmp:rw,size=32m,mode=1777
执行 docker-compose -f sandbox-compose.yml up -d 启动。注意:【必须设置 read_only: true】,否则容器内进程可写入根文件系统,绕过沙箱隔离。
配置Dify连接沙箱服务
第一步:编辑 Dify 的 .env 文件
定位到 dify/docker/.env,找到 CODE_EXECUTION_SANDBOX_URL 行,将其值改为 http://host.docker.internal:8081(Docker for Linux/Mac)或 http://172.17.0.1:8081(CentOS 7/8 Docker 引擎默认网桥网关)。
第二步:验证网络连通性
进入 Dify API 容器内部:docker exec -it dify-api-1 sh,然后执行 wget --spider http://host.docker.internal:8081/health。返回 200 表示网络打通;若超时,说明 Docker 网络模式未启用 host.docker.internal 解析,需改用网关 IP 并确保防火墙放行 8081 端口。
第三步:重启 Dify 服务链
回到 Dify 项目 docker 目录,执行 docker-compose restart api web worker。这一步不可跳过——旧 API 进程缓存了空的沙箱配置,不重启不会加载新 URL。











