节点手册:条件路由与流程工具

适用版本:ChengOS v0.1.0+ | 最后核对:2026-08-13 | 来源:crates/cheng-nodes/src/nodes/builtin/utils

这些节点决定数据流向何处、以什么形状到达。utils/condition_router 是确定性分支 —— 简单模式是一条规则配一对真/假输出,高级模式是多规则 switch,每个分支一个输出端口。 只要规则能写下来,就优先用它而不是 LLM 分支。utils/to_items 把单个值展开成条目供下游逐条处理, utils/type_cast 在连接处修正类型不匹配,utils/smart_var 保存一个可在多处引用的具名值, utils/delay 则用来给有速率限制的服务放慢调用节奏。

条件路由 — utils/condition_router

根据字段条件进行路由分流:支持多种匹配运算符,点号嵌套路径,自动生成 Schema 提示以及增强的兜底元数据.

输入

字段 类型 必填 默认值 说明
context object (端口) null 输入 Agent 上下文(可选). 连接端口,不是表单字段。 控件:code-editor
response string "" LLM 响应文本(JSON 格式). 控件:code-editor
custom_data string null 自定义 JSON 数据. 控件:code-editor
payload_source enum response 选择数据提取来源. 控件:select. 取值:response (从 response 字段解析 JSON), context (从完整 context 序列化为 JSON), custom (从 custom_data 字段取值)
branch_fields array<object> [] 分流字段列表(点击 + 添加;每个条目自动生成对应的输出端口)
strict_mode boolean false JSON 解析失败时报错(false 则路由到兜底输出)
generate_schema boolean false 启用自动生成的 JSON Schema 提示,并输出到 schema_hint 端口(可连接到上游 LLM 的 system_prompt).
mode enum advanced Simple(If:单规则,True/False)或 Advanced(Switch:多规则多输出). 控件:select. 取值:simple (If 模式:单条件,True / False 输出), advanced (Switch 模式:多规则多输出(默认,兼容旧行为))
match_policy enum all First:首次匹配后停止;All:输出所有匹配的分支(默认). 控件:select. 取值:first (仅输出第一个命中的分支), all (所有命中的分支都输出(默认))
fallback_mode enum fallback_output FallbackOutput:路由到 fallback_out(默认);None:跳过;Output0:路由到第一个分支端口. 控件:select. 取值:fallback_output (输出到 fallback_out 端口(默认)), none (不输出,下游自动跳过), output0 (输出到第一个分支端口)

输出

字段 类型 说明
branch_outputs array<any> (端口) 分支输出列表,与 branch_fields 一一对应(匹配时为 Agent 上下文,未命中时为 null). 连接端口,不是表单字段。
fallback_out object 兜底输出(在 Simple 模式下充当 ‘False’).当没有分支规则匹配时触发,包含诊断元数据.
context_out object 传统兜底输出(请使用 fallback_out).为保持向后兼容而镜像 fallback_out.
schema_hint object (端口) 自动生成的结构化输出提示(可连接到上游 LLM 节点的 system_prompt 端口). 连接端口,不是表单字段。

智能变量 — utils/smart_var

自动检测文本变量,动态生成端口,支持完整输出和选择性提取

输入

字段 类型 必填 默认值 说明
template string 原始文本(支持 JSON,curl,YAML 等). 控件:textarea
extract_mode enum auto 提取模式:auto=自动检测键名,manual=仅 {{var}} 语法. 控件:select. 取值:auto, manual
output_vars array<string> [] 要包含在输出中的变量列表. 控件:multi-select. 选项来源:ports

输出

字段 类型 说明
full_text string 变量替换后的完整文本
selected_vars object 已选择的变量键值对
all_variables array<string> 所有提取的变量名
preview_content string 格式化后的预览内容
statistics object 变量提取统计

转为项数组 — utils/to_items

将任何输入规范化为循环容器就绪的项数组

输入

字段 类型 必填 默认值 说明
input any 转换为循环项的数据
mode enum auto 如何转换输入. 控件:select. 取值:auto (Automatically detect input type.), array (Input is an array — pass through, normalizing each element.), single (Wrap any single value into a one-element array.), split_text (Split a string into text items.), refs (File / document / chunk reference passthrough — no content expansion.), object_values (Convert object key-value pairs into items.), range (Generate a numeric range as items.)
chunkSize integer 500 当 分割方式 = 块 时每个块的字符数. 控件:number
maxItems integer 0 发出的最大项数 (0 = 无限制). 控件:number
rangeEnd integer 0 范围结束 (不包含, 范围模式). 控件:number
rangeStart integer 0 范围开始 (包含, 范围模式). 控件:number
rangeStep integer 1 连续范围值之间的步长. 控件:number
splitBy enum paragraph 文本分割策略 (分割文本模式). 控件:select. 取值:paragraph (Split on blank lines (two consecutive newlines).), line (Split on every newline.), sentence (Heuristic sentence splitting (punctuation-based).), chunk (Fixed character chunk size.)

输出

字段 类型 说明
items any 循环就绪的项数组
count integer 数组中的项数
mode_used string 应用的转换模式

类型转换 — utils/type_cast

在常用端口类型之间转换,支持作为一等公民的 Agent 上下文

输入

字段 类型 必填 默认值 说明
agent_context object (端口) null 在此连接 Agent 上下文类型对象. 连接端口,不是表单字段。
text string (端口) null 在此连接字符串/文本输出. 连接端口,不是表单字段。
json object (端口) null 在此连接对象输出. 连接端口,不是表单字段。
array array<any> (端口) null 在此连接数组输出. 连接端口,不是表单字段。
integer integer (端口) null 在此连接整数输出. 连接端口,不是表单字段。
number number (端口) null 在此连接数字输出. 连接端口,不是表单字段。
boolean boolean (端口) null 在此连接布尔值输出. 连接端口,不是表单字段。

输出

字段 类型 说明
agent_context object (端口) 转换后的 Agent 上下文. 连接端口,不是表单字段。
text string (端口) 转换后的字符串. 连接端口,不是表单字段。
json object (端口) 转换后的对象. 连接端口,不是表单字段。
array array<any> (端口) 转换后的数组. 连接端口,不是表单字段。
number number (端口) 转换后的数字. 连接端口,不是表单字段。
integer integer (端口) 转换后的整数. 连接端口,不是表单字段。
boolean boolean (端口) 转换后的布尔值. 连接端口,不是表单字段。
source_type string 所选输入源类型

延迟 — utils/delay

在工作流中添加延迟,用于测试暂停和停止功能

输入

字段 类型 必填 默认值 说明
delay_type enum fixed 固定,随机范围,直到时间戳,直到一天中某个时间,固定加抖动,或指数退避. 控件:select. 取值:fixed (固定时长延迟), random_range (随机区间延迟), until_timestamp (延迟到绝对时间戳), until_time_of_day (延迟到某个本地时间), fixed_with_jitter (固定延迟并附加抖动), exponential_backoff (指数退避)
delay_value integer 5 延迟时间值(配合单位使用). 控件:number
delay_unit enum seconds 延迟时间单位:毫秒或秒. 控件:select. 取值:milliseconds (毫秒), seconds (秒), minutes (分钟), hours (小时)
max_delay_value integer null 随机范围延迟的上限. 控件:number
target_timestamp string null RFC3339 时间戳,或带有时区的本地日期时间表达. 控件:datetime-local
time_of_day string null 本地目标时间,格式为 HH:MM 或 HH:MM:SS
timezone string UTC 本地日期时间表达所使用的 IANA 时区;默认为 UTC.
jitter_percent integer null 固定加抖动模式的最大正负抖动百分比. 控件:number
attempt integer null 指数退避模式的零基重试次数. 控件:number
initial_delay_value integer null 指数退避模式的初始延迟值. 控件:number
max_backoff_value integer null 指数退避模式的最大延迟值. 控件:number
multiplier number null 指数退避模式的增长倍数. 控件:number
log_message string null 日志消息:延迟前后输出
passthrough any null 透传数据:原样转发到输出端口

输出

字段 类型 说明
completed boolean 延迟是否正常完成
actual_delay_ms integer 实际延迟时长(毫秒)
passthrough any 从输入透传的数据
log_message string 从输入透传的日志信息
context object 组合了日志消息和透传数据的 Agent 上下文
info object 详细的延迟执行信息

下一步

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容