跳转到主要内容
本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版
代码节点执行自定义 Python 或 JavaScript 来处理工作流中复杂的数据转换、计算和逻辑。当预设节点无法满足你的特定处理需求时可以使用它。
代码节点配置界面

沙箱服务

代码节点依赖 sandbox 服务,该服务在标准 Docker Compose 部署中定义,随整个技术栈一起自动启动:
docker compose up -d
沙箱以独立容器运行,将代码执行与宿主机及其他服务隔离。通过 docker/envs/core-services/sandbox.env.example 中的 SANDBOX_* 环境变量调整其行为(worker 超时、经由 SSRF 代理的网络访问、端口),通过 docker/envs/core-services/shared.env.example 中的 CODE_* 变量调整输出限制(由 API 读取)。

配置

定义 输入变量 以访问工作流中其他节点的数据,然后在代码中引用这些变量。你的函数必须返回一个包含你已声明的 输出变量 的字典。
def main(input_variable: str) -> dict:
    # Process the input
    result = input_variable.upper()
    return {
        'output_variable': result
    }

语言支持

根据你的需求和熟悉程度在 PythonJavaScript 之间进行选择。两种语言都在安全沙箱中运行,并可访问用于数据处理的常用库。
Python 包含标准库,如 jsonmathdatetimere。非常适合数据分析、数学运算和文本处理。
def main(data: list) -> dict:
    import json
    import math
    
    average = sum(data) / len(data)
    return {'result': math.ceil(average)}

错误处理和重试

为失败的代码执行配置自动重试行为,并定义代码遇到错误时的回退策略。
错误处理配置选项
重试设置 允许最多 10 次自动重试,并可配置间隔(最大 5000ms)。启用此功能来处理临时处理问题。 错误处理 让你在代码执行失败时定义回退路径,使你的工作流即使在代码遇到问题时也能继续运行。
重试配置界面

输出验证和限制

代码输出会根据 API 容器上设置的可配置限制进行验证:
  • 字符串:最大长度由 CODE_MAX_STRING_LENGTH 设置(默认 400,000 个字符),空字节会被剥离。
  • 数字:范围由 CODE_MAX_NUMBERCODE_MIN_NUMBER 设置(默认为 int64 范围),浮点数精度由 CODE_MAX_PRECISION 设置(默认 20 位小数)。
  • 对象和数组:最大嵌套深度由 CODE_MAX_DEPTH 设置(默认 5),数组大小由 CODE_MAX_STRING_ARRAY_LENGTHCODE_MAX_OBJECT_ARRAY_LENGTHCODE_MAX_NUMBER_ARRAY_LENGTH 设置。
默认值位于 docker/envs/core-services/shared.env.example。收紧限制可约束输出大小,放宽限制可让工作流正常产出更大的负载。

安全考虑

代码在严格的沙箱中执行,阻止文件系统访问、网络请求和系统命令。这在提供编程灵活性的同时保持安全性。 出于安全原因,某些操作会被自动阻止。避免尝试访问系统文件或执行可能危险的操作。默认情况下,沙箱代码的出站网络调用经由 SSRF 代理路由,设置 SANDBOX_ENABLE_NETWORK=false 可完全禁用沙箱代码的网络访问。

依赖支持

代码节点支持 Python 和 JavaScript 的外部依赖:
# Python: Import numpy, pandas, requests, etc.
import numpy as np
import pandas as pd

def main(data: list) -> dict:
    df = pd.DataFrame(data)
    return {'mean': float(np.mean(df['values']))}
// JavaScript: Import lodash, moment, etc.
const _ = require('lodash');

function main(data) {
    return { unique: _.uniq(data) };
}
沙箱环境中预装了依赖项。可在你的 Dify 安装中查看可用包列表。
最后修改于 2026年6月25日