助手
扣子 AI 帮助与支持
你好,我是 扣子 文档问答助手 🎉 你在阅读当前文档的过程中,无论对文档概念的解释,还是文档内容方面的疑问,都可以随时向我提问,我会全力为你解答
推荐问题
如何快速了解这个空间的核心内容?
有哪些近期更新的重点文档?
我应该从哪些文档开始阅读?
文档反馈
低代码项目
快速开始
智能体
应用
资源
发布
模型
多人协作
开发工具
推广与变现

代码节点

更新于: 2026-06-24 15:44:40

代码节点支持通过编写代码来生成返回值。扣子编程支持在代码节点内使用 IDE 工具,编写自定义代码逻辑,来处理输入参数并返回响应结果。

说明

扣子编程于2025年9月16日对工作流的代码节点服务进行了升级,发布前请试运行进行验证。

配置代码节点

基础配置

代码节点的配置参数说明如下:

配置

说明

输入

声明代码中需要使用的变量。添加输入参数时需要设置参数名和变量值,其中变量值支持设置为固定值或引用上游节点的输出参数。

说明

在代码中引用输入参数时,直接通过 params[‘input’] 取值即可。

代码

代码节点中需要执行的代码片段,你可以直接编写。

  • 引用变量:直接使用输入参数中的变量,通过**return​**一个对象来输出处理结果。
  • 函数限制:不支持编写多个函数。即使仅有一个输出值,也务必保持以对象的形式返回。

支持 JavaScript 和 Python 两种语言。详细说明可参考开发语言

输出

代码运行成功后,输出的参数。你可以根据实际需求,在输出结构中只保留必要的参数。
当节点的异常处理方式设置为返回设定内容或执行异常流程时,同时返回 isSuccesserrorBody 参数,用于在节点执行异常时传递详细信息。

说明

确保此处定义的参数名、类型与代码的 return 对象完全一致。以代码节点默认提供的代码为例,输出的参数与代码中定义的 return 对象完全一致。

注意

  • 节点执行超时:单请求限制 60s。
  • 暂不支持 HTTP/HTTPS 以外的其他协议。
  • 每个低代码工作流中最多添加 50 个代码节点。

异常设置

默认情况下,节点运行超时、运行异常时,工作流会中断,工作流调试界面或 API 中会返回错误信息。你也可以手动设置节点运行超时等异常情况下的处理方式,例如超时时间、是否重试、是否跳转异常分支等。

异常处理设置

说明

超时时间

超时时间指节点运行的最大耗时,如果超过此时长,则判断为节点运行超时。
默认情况下,节点的超时时间默认为 60s,即 1 分钟。你也可以将其改为 0.1s~60s,灵活控制超时时间。

重试次数

节点运行超时或异常时,默认不重试,你也可以设置为重试 1 次。

异常处理方式

节点运行超时或异常时,默认中断工作流。你也可以手动修改此节点的异常处理方式:

  • 中断流程:工作流执行中断,不再运行后续节点。
  • 返回设定内容:发生异常后,工作流运行不会中断。开发者可自定义设置需要返回的输出字段内容,必须是输出中已定义的字段,且格式为合法的 JSON 格式。另外,节点还会返回输出参数 isSuccesserrorBody,传递节点异常的详细信息。
  • 执行异常流程:发生异常后,工作流运行不会中断,转而执行异常流程分析,开发者需要为新增的异常分支配置处理流程。异常信息会通过节点的输出参数 isSuccesserrorBody 返回。

Image

示例

开发语言

代码节点支持 JavaScript 和 Python 两种语言。

JavaScript

支持 V8 引擎的 11.3.244.8 版本(对应 Node.js 20.3.1 版本),并兼容 ECMAScript 2022 语法。
代码 IDE 支持 TypeScript,提供静态语言的编码体验。
在 JavaScript 中,仅内置了两个三方依赖库:

  • dayjs(版本 1.8.36)
  • lodash(版本 4.17.20) 。

JavaScript 运行时遵循 WinterCG 规范,并支持一系列 Web API,包括:

  • atob()btoa()consolesetTimeout()clearTimeout()structuredClone()URLURLSearchParamsAbortControllerAbortSignalTextEncoderTextDecoder
  • WebStreams
  • WebCrypto(算法仅支持 AES、HMAC、SHA)

JavaScript 的三方依赖库示例代码如下:

//only dayjs and lodash are allowed
import dayjs from 'dayjs';
import _ from 'lodash';
 
async function main({ params }: Args): Promise<Output> {
    // get input params by this way
    return {
      content: params.name
    };
}

Python

基于 Python 3.11.3 的标准库,大多数模块都能正常运行。不支持的模块包括 cursesdbmensurepipfcntlgrpidleliblib2to3msvcrtpwdresourcesyslogtermiostkinterturtle.pyturtledemovenvwinregwinsoundmultiprocessingthreadingsocketsptytty
在 Python 环境中,仅内置了两个第三方依赖库:requests_asyncnumpy。其中,requests_asyncrequests 类似,但在使用时需要搭配 await

说明

  • Python 运行时暂不支持 Http.client 方式的请求。
  • 不支持使用除 requests_asyncnumpy 以外的第三方依赖库。
  • time.sleep() 方法由于是阻塞调用,会对代码执行性能产生影响,因此推荐使用异步版本的 asyncio.sleep() 来替代。

示例如下:

import requests_async as requests

async def main(args: Args) -> Output:
    # you can get url by this way
    url = args.params['url']
    response = await requests.get(url)
    ret = {
      'code': response.status_code,
      'res': response.text,
    }
    return ret

使用代码 IDE 编写代码

扣子编程提供了网页版代码 IDE 环境供你使用,无需考虑代码部署等问题,只要关注代码逻辑即可。
在节点内的代码区域,单击在IDE中编辑,可通过代码 IDE 编辑和调试代码。
如果你已经为代码节点配置好了输入参数,编辑时支持自动补全参数。
Image

试运行代码节点

试运行代码节点时,填写输入参数,并单击运行。平台会自动执行代码片段,并展示运行结果。运行结果中包括输入参数和输出内容,其中输出内容由原始输出和最终输出组成。

  • 原始输出:代码执行的真实输出结果,包含代码中定义的所有输出参数。你也可以单击原始输出,将原始输出的参数结构同步到代码节点。
  • 最终输出:按照代码节点中指定的输出参数结构生成的输出结果。

Image

常见问题

可以在代码节点中引入依赖包吗?

代码节点仅支持引用以下第三方依赖,引入其他依赖的语句不生效。

  • JavaScript:dayjs、lodash
  • Python:requests_async 、numpy

为什么代码节点输出了 tako_bot_userhistory?

如果在代码节点中通过函数遍历所有变量,可能会识别到部分系统变量,例如系统变量 tako_bot_userhistory,导致代码节点运行报错。如果需要在代码中使用代码节点定义的输入变量,直接通过 params['input'] 取值即可,无需通过函数遍历。
tako_bot_userhistory 为 String 格式,表示会话中的上下文消息,例如 TAKO_BOT_HISTORY :[{"content":"早上好","name":"小张","role":"user"}]。此系统变量即将下线,如需获取会话中的上下文消息,推荐使用查询消息列表节点节点。

代码节点中如何使用 sleep 函数?

代码节点中,推荐使用 Python 标准库的 asyncio.sleep 函数,time.sleep 函数会阻塞工作流执行、导致触发限流。
asyncio.sleep 函数在异步编程中挂起当前任务、实现非阻塞的延迟,最长可延迟 1 分钟。此函数常用于需要在异步操作之间添加延迟的场景,例如在异步的数据处理中控制处理速率。目前工作流暂不支持异步插件节点,如果下游节点需要使用异步插件的执行结果,可以通过循环节点实现异步等待和结果轮询,其中异步等待由代码节点的 asyncio.sleep 函数实现。
例如以下示例代码表示等待 30 秒:
Image