> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coze.cn/llms.txt
> Use this file to discover all available pages before exploring further.

代码节点支持通过编写代码来生成返回值。扣子编程支持在代码节点内使用 IDE 工具，编写自定义代码逻辑，来处理输入参数并返回响应结果。
:::tip 说明
扣子编程于2025年9月16日对**工作流的代码节点服务**进行了升级，发布前请**试运行**进行验证。
:::
## 配置代码节点 {#e1aa3820}
### 基础配置 {#1c380b01}
代码节点的配置参数说明如下：
<!-- @cols-width: 221,620 -->
| | | \
|**配置** |**说明** |
|---|---|
| | | \
|**输入** |声明代码中需要使用的变量。添加输入参数时需要设置参数名和变量值，其中变量值支持设置为固定值或引用上游节点的输出参数。 |\
| |:::tip 说明 |\
| |在代码中引用输入参数时，直接通过 params['input'] 取值即可。 |\
| |::: |
| | | \
|**代码**： |代码节点中需要执行的代码片段，你可以直接编写。 |\
| | |\
| |* 引用变量：直接使用输入参数中的变量，通过**`return`​**一个对象来输出处理结果。 |\
| |* 函数限制：不支持编写多个函数。即使仅有一个输出值，也务必保持以对象的形式返回。 |\
| | |\
| |支持 JavaScript 和 Python 两种语言。详细说明可参考[开发语言](/guides/code_node#79fb9b0d)。 |
| | | \
|**输出** |代码运行成功后，输出的参数。你可以根据实际需求，在输出结构中只保留必要的参数。 |\
| |当节点的异常处理方式设置为返回设定内容或执行异常流程时，同时返回 `isSuccess`、`errorBody` 参数，用于在节点执行异常时传递详细信息。 |\
| |:::tip 说明 |\
| |确保此处定义的参数名、类型与代码的 **return** 对象完全一致。以代码节点默认提供的代码为例，输出的参数与代码中定义的 **return** 对象完全一致。 |\
| |::: |

:::notice 注意
* 节点执行超时：单请求限制 60s。
* 暂不支持 HTTP/HTTPS 以外的其他协议。
* 每个低代码工作流中最多添加 50 个代码节点。
:::
### 异常设置 {#b165f37a}
默认情况下，节点运行超时、运行异常时，工作流会中断，工作流调试界面或 API 中会返回错误信息。你也可以手动设置节点运行超时等异常情况下的处理方式，例如超时时间、是否重试、是否跳转异常分支等。
<!-- @cols-width: 188,664 -->
| | | \
|**异常处理设置** |**说明** |
|---|---|
| | | \
|超时时间 |超时时间指节点运行的最大耗时，如果超过此时长，则判断为节点运行超时。 |\
| |默认情况下，节点的超时时间默认为 60s，即 1 分钟。你也可以将其改为 0.1s~60s，灵活控制超时时间。 |
| | | \
|重试次数 |节点运行超时或异常时，默认不重试，你也可以设置为重试 1 次。 |
| | | \
|异常处理方式 |节点运行超时或异常时，默认中断工作流。你也可以手动修改此节点的异常处理方式： |\
| | |\
| |* **中断流程**：工作流执行中断，不再运行后续节点。 |\
| |* **返回设定内容**：发生异常后，工作流运行不会中断。开发者可自定义设置需要返回的输出字段内容，必须是输出中已定义的字段，且格式为合法的 JSON 格式。另外，节点还会返回输出参数 `isSuccess`、`errorBody`，传递节点异常的详细信息。 |\
| |* **执行异常流程**：发生异常后，工作流运行不会中断，转而执行异常流程分析，开发者需要为新增的异常分支配置处理流程。异常信息会通过节点的输出参数 `isSuccess`、`errorBody` 返回。 |

![Image=307x280](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/29a3611502344180aed9eaf50fe9e2a7~tplv-goo7wpa0wc-image.image)


## 示例 {#5219514f}
## 开发语言 {#79fb9b0d}
代码节点支持 JavaScript 和 Python 两种语言。
### JavaScript {#d9e98ada}
支持 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](https://wintercg.org/) 规范，并支持一系列 Web API，包括：

* `atob()`、`btoa()`、`console`、`setTimeout()`、`clearTimeout()`、`structuredClone()`、`URL`、`URLSearchParams`、`AbortController`、`AbortSignal`、`TextEncoder`、`TextDecoder`
* `WebStreams`
* `WebCrypto（算法仅支持 AES、HMAC、SHA）`

JavaScript 的三方依赖库示例代码如下：
```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 {#9b59f9fa}
基于 Python 3.11.3 的标准库，大多数模块都能正常运行。不支持的模块包括 `curses`、`dbm`、`ensurepip`、`fcntl`、`grp`、`idlelib`、`lib2to3`、`msvcrt`、`pwd`、`resource`、`syslog`、`termios`、`tkinter`、`turtle.py`、`turtledemo`、`venv`、`winreg`、`winsound`、`multiprocessing`*、*`threading`*、*`sockets`*、*`pty` 和 `tty`*。*
在 Python 环境中，仅内置了两个第三方依赖库：`requests_async` 和 `numpy`。其中，`requests_async` 与 `requests` 类似，但在使用时需要搭配 `await`。
:::tip 说明
* Python 运行时暂不支持 Http.client 方式的请求。
* 不支持使用除 `requests_async` 、`numpy` 以外的第三方依赖库。
* `time.sleep()` 方法由于是阻塞调用，会对代码执行性能产生影响，因此推荐使用异步版本的 `asyncio.sleep()` 来替代。
:::
示例如下：
```Python
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 编写代码 {#1e7d1baa}
扣子编程提供了网页版代码 IDE 环境供你使用，无需考虑代码部署等问题，只要关注代码逻辑即可。
在节点内的**代码**区域，单击**在IDE中编辑**，可通过代码 IDE 编辑和调试代码。
如果你已经为代码节点配置好了输入参数，编辑时支持自动补全参数。
![Image=793x363](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/f18c40167e7445eb85b2f17a68dd7355~tplv-goo7wpa0wc-image.image)
## 试运行代码节点 {#0c972734}
试运行代码节点时，填写输入参数，并单击**运行**。平台会自动执行代码片段，并展示运行结果。运行结果中包括输入参数和输出内容，其中输出内容由原始输出和最终输出组成。

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

![Image=498x321](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/5e9caa68188045129fb303ce641f1f50~tplv-goo7wpa0wc-image.image)
## 常见问题 {#e7520d93}
### 可以在代码节点中引入依赖包吗？ {#7f41f073}
代码节点仅支持引用以下第三方依赖，引入其他依赖的语句不生效。

* JavaScript：dayjs、lodash
* Python：requests_async 、numpy

### 为什么代码节点输出了 tako_bot_userhistory？ {#9ec26a6d}
如果在代码节点中通过函数遍历所有变量，可能会识别到部分系统变量，例如系统变量 tako_bot_userhistory，导致代码节点运行报错。如果需要在代码中使用代码节点定义的输入变量，直接通过 `params['input']` 取值即可，无需通过函数遍历。
tako_bot_userhistory 为 String 格式，表示会话中的上下文消息，例如 `TAKO_BOT_HISTORY :[{"content":"早上好","name":"小张","role":"user"}]`。此系统变量即将下线，如需获取会话中的上下文消息，推荐使用[查询消息列表节点](/guides/query_message_list)节点。
### 代码节点中如何使用 sleep 函数？ {#166872ec}
代码节点中，推荐使用 Python 标准库的 `asyncio.sleep` 函数，`time.sleep` 函数会阻塞工作流执行、导致触发限流。
`asyncio.sleep` 函数在异步编程中挂起当前任务、实现非阻塞的延迟，最长可延迟 1 分钟。此函数常用于需要在异步操作之间添加延迟的场景，例如在异步的数据处理中控制处理速率。目前工作流暂不支持异步插件节点，如果下游节点需要使用异步插件的执行结果，可以通过循环节点实现异步等待和结果轮询，其中异步等待由代码节点的 `asyncio.sleep` 函数实现。
例如以下示例代码表示等待 30 秒：
![Image=1316x569](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/0a67b4cf58c840679589df3eb1af58d2~tplv-goo7wpa0wc-image.image)

