DifySandbox 完整使用手册
DifySandbox 使用手册DifySandbox 是 Dify 平台开源的轻量级代码执行沙箱专为 AI 应用场景设计。本文将详细介绍 DifySandbox 的安装、配置和使用方法帮助开发者快速集成安全的代码执行能力。一、DifySandbox 简介DifySandbox 是一个专为 AI 应用场景设计的代码执行沙箱具有以下特点轻量级基于 Go 语言开发资源占用低多语言支持支持 Python、JavaScript、Java 等主流语言安全隔离多种隔离级别可选确保代码安全执行易于集成提供 RESTful API便于各种应用集成与其他方案对比特性DifySandboxJudge0自建沙盒部署复杂度简单中等复杂资源占用低中等高启动时间1秒1-3秒可优化适用场景AI 应用通用平台定制需求二、快速开始2.1 Docker 部署# 拉取镜像dockerpull langgenius/dify-sandbox:latest# 运行容器dockerrun-d--namedifysandbox-p8194:8194-v/var/run/docker.sock:/var/run/docker.sock langgenius/dify-sandbox:latest# 测试是否启动成功curlhttp://localhost:8194/health2.2 Docker Compose 部署# docker-compose.ymlversion:3.8services:difysandbox:image:langgenius/dify-sandbox:latestcontainer_name:difysandboxports:-8194:8194volumes:-/var/run/docker.sock:/var/run/docker.sockenvironment:-SANDBOX_MEMORY_LIMIT256-SANDBOX_CPU_LIMIT1-SANDBOX_MAX_EXECUTION_TIME30restart:unless-stoppedhealthcheck:test:[CMD,curl,-f,http://localhost:8194/health]interval:30stimeout:10sretries:3# 启动服务docker-composeup-d# 查看日志docker-composelogs-fdifysandbox三、API 使用详解3.1 执行代码请求地址POST /v1/sandbox/runcurl-XPOSThttp://localhost:8194/v1/sandbox/run-HContent-Type: application/json-d{ code: print(sum(range(1, 11))), language: python3 }响应结果{success:true,exit_code:0,stdout:55,stderr:,execution_time:0.015,execution_memory:35840}3.2 完整参数列表参数类型必填说明codestring是要执行的代码languagestring是编程语言stdinstring否标准输入timeoutint否超时时间秒默认 30memory_limitint否内存限制MB默认 256支持的语言language 值说明python3Python 3javascriptJavaScript (Node.js)javaJavagoGorustRustcCcppC3.3 Python 示例importrequestsdefrun_python_code(code:str,timeout:int30):responserequests.post(http://localhost:8194/v1/sandbox/run,json{code:code,language:python3,timeout:timeout})returnresponse.json()# 示例计算斐波那契数列resultrun_python_code( def fib(n): if n 1: return n return fib(n-1) fib(n-2) for i in range(10): print(fib(i), end ) )print(result)# {success: True, exit_code: 0, stdout: 0 1 1 2 3 5 8 13 21 34,...}3.4 JavaScript 示例constaxiosrequire(axios);asyncfunctionrunJavaScript(code){constresponseawaitaxios.post(http://localhost:8194/v1/sandbox/run,{code:code,language:javascript});returnresponse.data;}// 示例数组操作runJavaScript(const arr [1, 2, 3, 4, 5]; const doubled arr.map(x x * 2); console.log(doubled.join(, ));).then(result{console.log(result.stdout);// 输出: 2, 4, 6, 8, 10});3.5 Java 示例curl-XPOSThttp://localhost:8194/v1/sandbox/run-HContent-Type: application/json-d{ code: public class Main { public static void main(String[] args) { System.out.println(\Hello from Java!\); } }, language: java }四、安全配置4.1 环境变量配置环境变量默认值说明SANDBOX_MEMORY_LIMIT256内存限制MBSANDBOX_CPU_LIMIT1CPU 核心数SANDBOX_MAX_EXECUTION_TIME30最大执行时间秒SANDBOX_MAX_OUTPUT_SIZE1024最大输出大小KBSANDBOX_ENABLE_NETWORKfalse是否允许网络访问4.2 安全策略级别DifySandbox 支持多种安全策略级别级别 1基础隔离默认资源限制CPU、内存、执行时间适用于可信代码、内部系统级别 2增强隔离禁用网络限制文件系统访问适用于用户提交的代码级别 3最高隔离完全隔离的容器禁止所有危险操作适用于不受信任的代码4.3 网络访问控制默认情况下网络访问是禁用的。如需启用dockerrun-d--namedifysandbox-p8194:8194-eSANDBOX_ENABLE_NETWORKtrue langgenius/dify-sandbox:latest4.4 自定义允许的模块Python对于 Python可以限制可导入的模块dockerrun-d--namedifysandbox-p8194:8194-eSANDBOX_ALLOWED_PYTHON_MODULESmath,random,json,collections langgenius/dify-sandbox:latest五、在 Dify 平台中使用5.1 配置 Code Executor 节点打开 Dify Studio添加 “Code Executor” 节点选择 “DifySandbox” 作为执行器配置默认参数5.2 在工作流中使用┌─────────────┐ ┌──────────────────┐ ┌─────────────┐ │ User Input │ ──▶ │ Code Executor │ ──▶ │ Output │ │ │ │ (Python Script) │ │ │ └─────────────┘ └──────────────────┘ └─────────────┘示例工作流代码# 从用户输入获取数据user_input{{user_input}}# 处理数据resulteval(user_input)# 返回结果print(fResult:{result})六、集成到应用6.1 Python SDK 封装importrequestsfromtypingimportOptional,Dict,AnyclassDifySandbox:def__init__(self,base_url:strhttp://localhost:8194):self.base_urlbase_urldefrun(self,code:str,language:strpython3,stdin:Optional[str]None,timeout:int30,memory_limit:int256)-Dict[str,Any]:responserequests.post(f{self.base_url}/v1/sandbox/run,json{code:code,language:language,stdin:stdin,timeout:timeout,memory_limit:memory_limit},timeouttimeout5)response.raise_for_status()returnresponse.json()# 使用示例sandboxDifySandbox()resultsandbox.run(print(Hello!),python3)print(result)6.2 Java SDK 封装importokhttp3.*;importorg.json.JSONObject;importjava.util.concurrent.TimeUnit;publicclassDifySandbox{privatefinalOkHttpClientclient;privatefinalStringbaseUrl;publicDifySandbox(StringbaseUrl){this.clientnewOkHttpClient.Builder().connectTimeout(30,TimeUnit.SECONDS).readTimeout(60,TimeUnit.SECONDS).build();this.baseUrlbaseUrl;}publicJSONObjectrun(Stringcode,Stringlanguage){JSONObjectbodynewJSONObject();body.put(code,code);body.put(language,language);RequestrequestnewRequest.Builder().url(baseUrl/v1/sandbox/run).post(RequestBody.create(body.toString(),MediaType.get(application/json))).build();try(Responseresponseclient.newCall(request).execute()){returnnewJSONObject(response.body().string());}catch(Exceptione){thrownewRuntimeException(e);}}}6.3 JavaScript/Node.js 封装constaxiosrequire(axios);classDifySandbox{constructor(baseUrlhttp://localhost:8194){this.clientaxios.create({baseURL:baseUrl,timeout:60000});}asyncrun(code,languagepython3,options{}){constresponseawaitthis.client.post(/v1/sandbox/run,{code,language,...options});returnresponse.data;}// 便捷方法asyncrunPython(code,options{}){returnthis.run(code,python3,options);}asyncrunJavaScript(code,options{}){returnthis.run(code,javascript,options);}}// 使用示例constsandboxnewDifySandbox();constresultawaitsandbox.runPython(import json data {name: Dify, version: 1.0} print(json.dumps(data)));console.log(result.stdout);七、监控与运维7.1 健康检查# 检查服务状态curlhttp://localhost:8194/health# 响应示例{status:healthy,version:1.0.0}7.2 日志管理# 查看容器日志dockerlogs difysandbox# 实时查看日志dockerlogs-fdifysandbox# 按级别过滤dockerlogs difysandbox21|grepERROR7.3 性能监控建议集成 Prometheus 进行监控# prometheus.ymlscrape_configs:-job_name:difysandboxstatic_configs:-targets:[difysandbox:8194]7.4 常见问题排查问题可能原因解决方案执行超时代码死循环/计算量大增加 timeout 或优化代码内存超限申请过多内存减小 memory_limit 或优化代码连接失败服务未启动检查容器状态和网络语言不支持language 参数错误使用支持的语言标识八、最佳实践8.1 安全建议最小权限原则仅授予必要的资源限制网络隔离默认禁用网络访问输入验证对用户输入进行严格验证超时设置合理设置执行超时时间日志审计记录所有执行记录8.2 性能优化连接复用使用连接池减少开销批量执行需要执行多条代码时批量处理资源预估根据代码复杂度合理分配资源缓存结果对相同代码进行结果缓存8.3 高可用部署# docker-compose-cluster.ymlversion:3.8services:difysandbox-1:image:langgenius/dify-sandbox:latestdeploy:replicas:2environment:-SANDBOX_MEMORY_LIMIT256networks:-sandbox-networkdifysandbox-2:image:langgenius/dify-sandbox:latestdeploy:replicas:2environment:-SANDBOX_MEMORY_LIMIT256networks:-sandbox-networknginx:image:nginx:alpineports:-8194:80volumes:-./nginx.conf:/etc/nginx/nginx.conf:rodepends_on:-difysandbox-1-difysandbox-2networks:-sandbox-networknetworks:sandbox-network:driver:bridge九、API 参考9.1 端点列表方法路径说明GET/health健康检查POST/v1/sandbox/run执行代码GET/v1/sandbox/languages支持的语言列表9.2 错误响应{success:false,error:Execution timeout,error_code:TIMEOUT}错误码说明错误码说明TIMEOUT执行超时MEMORY_LIMIT内存超限RUNTIME_ERROR运行时错误COMPILE_ERROR编译错误INVALID_LANGUAGE不支持的语言INVALID_REQUEST请求参数错误十、总结DifySandbox 是一个功能强大且易于使用的代码执行沙箱特别适合 AI 应用场景。其主要优势包括轻量级资源占用低启动快速安全可靠多级别安全策略易于集成RESTful API 多语言 SDK开源免费Apache 2.0 许可证无论是构建 AI 编程助手、智能客服还是代码评测工具DifySandbox 都是一个值得考虑的选择。参考资源GitHub: https://github.com/langgenius/dify-sandboxDify 官网: https://dify.ai本文由 OpenClaw 自动发布

相关新闻

Java Web 高校毕业与学位资格审核系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

Java Web 高校毕业与学位资格审核系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着高等教育规模的不断扩大,高校毕业与学位资格审核工作日益复杂化。传统的人工审核方式效率低下,容易出现遗漏或错误,难以满足现代高校管理的需求。信息化技术的快速发展为高校管理提供了新的解决方案,构建一套高效、准确、…

2026/7/4 17:41:29 阅读更多 →
时序聚类+状态识别,WOA-Kmeans++结合Transformer-BiLSTM组合模型,MATLAB代码

时序聚类+状态识别,WOA-Kmeans++结合Transformer-BiLSTM组合模型,MATLAB代码

一、研究背景 随着大数据时代的到来,如何从高维、非线性、时序数据中提取有效特征并进行准确分类成为研究热点。传统 K-Means 聚类易陷入局部最优,而深度学习模型(如 Transformer 和 BiLSTM)在序列建模中表现优异。本文结合两者&a…

2026/7/4 17:42:05 阅读更多 →
我砍掉了外包剪辑,广告人用哪款AI软件做营销视频?(真实项目复盘)

我砍掉了外包剪辑,广告人用哪款AI软件做营销视频?(真实项目复盘)

大家好,我是summer。上周我砍掉了一个长期合作的剪辑外包,不是因为预算,是因为即梦Seedance2.0把他的工作替代了一半。先交代一下背景:我是做广告的,品牌营销视频、产品发布片、情绪向广告片、节奏卡点短视频——这些都…

2026/5/17 7:10:13 阅读更多 →

最新新闻

多智能体系统安全控制与责任分配技术解析

多智能体系统安全控制与责任分配技术解析

1. 多智能体系统安全责任分配的核心挑战 在机器人集群、无人机编队等典型多智能体系统中,安全责任分配面临三个维度的核心挑战: 1.1 安全性与自主性的矛盾 传统集中式控制虽然能保证全局安全,但要求所有智能体公开完整状态信息&#xff0c…

2026/7/4 17:41:06 阅读更多 →
深度解析开源抖音下载器:3大技术优势与实战部署指南

深度解析开源抖音下载器:3大技术优势与实战部署指南

深度解析开源抖音下载器:3大技术优势与实战部署指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…

2026/7/4 17:41:06 阅读更多 →
操作系统级缓存:超越Redis的系统性能优化底层原理与实践

操作系统级缓存:超越Redis的系统性能优化底层原理与实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 大家好,我是专注于技术实战分享的博主。在追求极致性能的路上,我们常常将目光投向 Redis 这类明星缓存中间件…

2026/7/4 17:39:05 阅读更多 →
揭秘evbunpack:高效破解Enigma Virtual Box打包文件的专业工具

揭秘evbunpack:高效破解Enigma Virtual Box打包文件的专业工具

揭秘evbunpack:高效破解Enigma Virtual Box打包文件的专业工具 【免费下载链接】evbunpack Enigma Virtual Box Unpacker / 解包、脱壳工具 项目地址: https://gitcode.com/gh_mirrors/ev/evbunpack 当你在逆向工程或软件分析工作中遇到Enigma Virtual Box打…

2026/7/4 17:37:04 阅读更多 →
跨平台开发实战:从操作系统差异看远程控制软件适配挑战

跨平台开发实战:从操作系统差异看远程控制软件适配挑战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 你是不是也经常遇到这样的困惑:手头一台Windows笔记本办公,家里一台Mac Mini当服务器,还有一台L…

2026/7/4 17:35:03 阅读更多 →
基于YOLOv8的字符识别系统开发与实践

基于YOLOv8的字符识别系统开发与实践

1. 项目概述这个基于YOLOv8的字母数字识别检测系统是我最近完成的一个计算机视觉项目。它能够实时检测并识别图像和视频中的36类字符(数字0-9和字母A-Z),在复杂场景下表现出色。相比传统OCR技术,这个系统最大的优势在于能够处理任…

2026/7/4 17:33:03 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻