从零开始设计一个智能体编排系统 - 节点系统篇
·
导读:节点是智能体编排的核心元素。本文带你深入了解 18 种节点的设计理念、视觉呈现和交互细节,揭示如何让复杂的智能体能力变得简单易用。
一、节点:智能体的"能力积木"
1.1 节点的设计哲学
核心理念:每个节点封装一个独立的能力单元,通过组合节点构建复杂智能体。
┌────────────────────────────────────────────────────┐
│ 节点设计三原则 │
├────────────────────────────────────────────────────┤
│ │
│ 🎯 单一职责 → 一个节点只做一件事 │
│ 📦 高内聚 → 所有相关配置集中在一起 │
│ 🔗 低耦合 → 通过标准接口与其他节点交互 │
│ │
└────────────────────────────────────────────────────┘
1.2 节点的价值
传统开发方式 vs 节点编排方式
──────────────── ────────────────
写代码实现 AI 对话 拖入 AI 节点
写代码调用 API 拖入工具节点
写代码处理数据 拖入数据节点
写代码实现循环 拖入循环节点
写代码处理异常 拖入错误处理节点
需要专业开发技能 不需要编程知识
开发周期长 分钟级搭建
难以修改 随时调整
不易复用 模板化分享
二、节点类型全景图
2.1 分类体系
我们将 18+ 种节点分为六大类:
┌──────────────────────────────────────────────────────┐
│ 节点分类金字塔 │
├──────────────────────────────────────────────────────┤
│ │
│ 第一层:基础节点(必需) │
│ ├─ 🟢 开始节点:智能体的入口 │
│ └─ 🔴 结束节点:智能体的终点 │
│ │
│ 第二层:输出节点(展示) │
│ └─ 🟡 消息节点:向用户输出内容 │
│ │
│ 第三层:AI 能力节点(核心) │
│ ├─ 🔵 AI 节点:大模型对话 │
│ ├─ 🟣 检索节点:知识库查询 │
│ └─ 🟤 分类节点:智能分类 │
│ │
│ 第四层:流程控制节点(逻辑) │
│ ├─ 🟠 条件节点:分支判断 │
│ ├─ 🔷 迭代节点:遍历数组 │
│ ├─ 🔶 循环节点:重复执行 │
│ └─ 🟢 等待节点:暂停等待 │
│ │
│ 第五层:数据处理节点(工具) │
│ ├─ 🔵 文本处理节点:字符串操作 │
│ ├─ 🔵 数据操作节点:对象处理 │
│ ├─ 🔵 列表操作节点:数组处理 │
│ └─ 🟤 代码节点:自定义逻辑 │
│ │
│ 第六层:扩展节点(高级) │
│ ├─ 🔵 工具节点:调用外部 API │
│ ├─ 🔵 变量聚合节点:数据汇总 │
│ └─ 🔵 变量赋值节点:数据修改 │
│ │
└──────────────────────────────────────────────────────┘
2.2 节点能力矩阵
┌──────────────────────────────────────────────────────┐
│ 节点能力一览表 │
├──────────────────────────────────────────────────────┤
│ │
│ 节点类型 │ 核心能力 │ 典型场景 │
│ ─────────────│────────────────│────────────────│
│ 开始 │ 接收用户输入 │ 智能体启动 │
│ AI │ 大模型对话 │ 问答、生成 │
│ 检索 │ 知识库查询 │ 信息检索 │
│ 条件 │ 分支判断 │ 多路径流程 │
│ 消息 │ 内容输出 │ 用户交互 │
│ 迭代 │ 遍历数组 │ 批量处理 │
│ 循环 │ 重复执行 │ 定时任务 │
│ 工具 │ API 调用 │ 外部集成 │
│ 代码 │ 自定义脚本 │ 复杂逻辑 │
│ │
└──────────────────────────────────────────────────────┘
三、节点视觉设计
3.1 节点外观结构
每个节点都有统一的外观结构:
┌─────────────────────────────────────────┐
│ 节点外观结构 │
├─────────────────────────────────────────┤
│ │
│ ┌───────────────────────┐ │
│ │ [图标] 节点名称 │ ← 头部 │
│ ├───────────────────────┤ │
│ │ │ │
│ │ 简要信息/预览 │ ← 内容 │
│ │ │ │
│ ├───────────────────────┤ │
│ │ ●输入 输出● │ ← 底部 │
│ └───────────────────────┘ │
│ │
│ 尺寸:宽 280px,高度自适应 │
│ │
└─────────────────────────────────────────┘
3.2 头部设计
节点头部承载核心识别信息:
┌──────────────────────────────────────────────────────┐
│ 节点头部元素 │
├──────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ [🤖图标] 智能客服助手 [✏️] [🗑️] │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 元素说明: │
│ ├─ 图标:节点类型的视觉符号 │
│ ├─ 名称:可编辑的节点标识 │
│ ├─ 编辑按钮:双击或点击图标编辑 │
│ └─ 操作按钮:悬停时显示操作菜单 │
│ │
└──────────────────────────────────────────────────────┘
3.3 内容区域
不同节点的内容区域显示不同的预览信息:
┌──────────────────────────────────────────────────────┐
│ 各节点内容预览示例 │
├──────────────────────────────────────────────────────┤
│ │
│ 【AI 节点】 │
│ ┌─────────────────────────────────┐ │
│ │ 模型:GPT-4 │ │
│ │ 提示词:你是一个专业的客服... │ │
│ │ 工具:搜索、计算器 │ │
│ └─────────────────────────────────┘ │
│ │
│ 【检索节点】 │
│ ┌─────────────────────────────────┐ │
│ │ 知识库:产品知识库 │ │
│ │ Top K:5 条 │ │
│ │ 相似度:0.7 │ │
│ └─────────────────────────────────┘ │
│ │
│ 【条件节点】 │
│ ┌─────────────────────────────────┐ │
│ │ 条件 1:用户等级 > 5 │ │
│ │ 条件 2:订单金额 > 1000 │ │
│ │ 默认:普通用户 │ │
│ └─────────────────────────────────┘ │
│ │
│ 【循环节点】 │
│ ┌─────────────────────────────────┐ │
│ │ 循环次数:10 │ │
│ │ 条件:结果.length > 0 │ │
│ │ 状态:运行中/已完成 │ │
│ └─────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────┘
3.4 连接点设计
连接点是节点的"输入输出接口":
┌──────────────────────────────────────────────────────┐
│ 连接点位置规范 │
├──────────────────────────────────────────────────────┤
│ │
│ 普通节点: │
│ ┌───────────────────────┐ │
│ │ ●输入(左侧) │ │
│ │ │ │
│ │ 输出●(右侧)│ │
│ └───────────────────────┘ │
│ │
│ 条件节点(多输出): │
│ ┌───────────────────────┐ │
│ │ ●输入(左侧) │ │
│ │ │ │
│ │ Case 1 ●(右侧) │ │
│ │ Case 2 ●(右侧) │ │
│ │ 默认 ●(右侧) │ │
│ └───────────────────────┘ │
│ │
│ 连接点样式: │
│ ├─ 未连接:灰色小圆点 │
│ ├─ 已连接:蓝色实心圆 │
│ ├─ 可连接:悬停时高亮 │
│ └─ 尺寸:15px × 15px │
│ │
└──────────────────────────────────────────────────────┘
四、核心节点详解
4.1 开始节点
作用:智能体的入口,接收用户输入并初始化变量。
┌──────────────────────────────────────────────────────┐
│ 开始节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [🟢开始图标] 开始 │ │
│ ├─────────────────────────────────┤ │
│ │ 模式:对话模式 │ │
│ │ 输入参数:2 个 │ │
│ │ 开场白:您好,我是智能助手... │ │
│ └─────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 运行模式:对话/任务/Webhook │
│ ├─ 输入参数定义 │
│ ├─ 开场白设置 │
│ └─ 初始化变量 │
│ │
│ 输出变量: │
│ ├─ sys.query(用户问题) │
│ ├─ sys.user_id(用户 ID) │
│ └─ sys.files(上传文件) │
│ │
└──────────────────────────────────────────────────────┘
工作模式对比:
┌─────────────────────────────────────────┐
│ 三种工作模式 │
├─────────────────────────────────────────┤
│ │
│ 对话模式 │
│ ├─ 适用场景:聊天机器人 │
│ ├─ 特点:多轮对话、有开场白 │
│ └─ 用户交互:即时回复 │
│ │
│ 任务模式 │
│ ├─ 适用场景:单次任务 │
│ ├─ 特点:一次性输入、一次输出 │
│ └─ 用户交互:任务完成后结束 │
│ │
│ Webhook 模式 │
│ ├─适用场景:外部系统调用 │
│ ├─ 特点:API 触发、自动响应 │
│ └─ 用户交互:无界面交互 │
│ │
└─────────────────────────────────────────┘
4.2 AI 节点
作用:调用大模型,执行对话、推理、生成等任务。
┌──────────────────────────────────────────────────────┐
│ AI 节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [🤖AI图标] 智能对话 │ │
│ ├─────────────────────────────────┤ │
│ │ 模型:GPT-4 │ │
│ │ 温度:0.7 │ │
│ │ 提示词:分析用户意图... │ │
│ │ 工具:2 个 │ │
│ └─────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 模型选择 │
│ ├─ 参数调优(温度、Top-P 等) │
│ ├─ 提示词配置 │
│ ├─ 工具绑定 │
│ ├─ 记忆窗口 │
│ └─ 错误处理 │
│ │
│ 输出变量: │
│ ├─ content(AI 回答) │
│ ├─ tokens_used(Token 用量) │
│ └─ tool_calls(工具调用记录) │
│ │
└──────────────────────────────────────────────────────┘
提示词配置示意:
┌──────────────────────────────────────────────────────┐
│ 提示词配置界面 │
├──────────────────────────────────────────────────────┤
│ │
│ 系统提示词: │
│ ┌─────────────────────────────────────────┐ │
│ │ 你是一个专业的客服助手,请根据用户问题 │ │
│ │ 提供准确、友好的回答。参考检索到的知识 │ │
│ │ 库内容来回答。 │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 用户提示词(支持变量): │
│ ┌─────────────────────────────────────────┐ │
│ │ 用户问题:{begin@query} │ │
│ │ 参考信息:{retrieval@content} │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 变量插入按钮:[ 🔗插入变量 ] │
│ │
└──────────────────────────────────────────────────────┘
4.3 检索节点
作用:从知识库中查询相关信息。
┌──────────────────────────────────────────────────────┐
│ 检索节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [🔍检索图标] 知识检索 │ │
│ ├─────────────────────────────────┤ │
│ │ 知识库:产品文档 │ │
│ │ 查询:{begin@query} │ │
│ │ Top K:5 条 │ │
│ │ 相似度阈值:0.7 │ │
│ └─────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 知识库选择 │
│ ├─ 查询变量 │
│ ├─ 相似度阈值 │
│ ├─ Top K 设置 │
│ ├─ 重排序模型 │
│ └─ 空结果处理 │
│ │
│ 输出变量: │
│ ├─ content(检索内容) │
│ ├─ results(结果列表) │
│ └─ sources(来源信息) │
│ │
└──────────────────────────────────────────────────────┘
4.4 条件节点
作用:根据条件判断,选择不同的执行路径。
┌──────────────────────────────────────────────────────┐
│ 条件节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [🔀条件图标] 用户判断 │ │
│ ├─────────────────────────────────┤ │
│ │ 条件 1:VIP 用户 │ │
│ │ 条件 2:普通用户 │ │
│ │ 默认:转人工 │ │
│ │ ●Case1 │ │
│ │ ●Case2 │ │
│ │ ●默认 │ │
│ └─────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 多条件分支 │
│ ├─ 条件表达式(支持变量) │
│ ├─ 逻辑组合(AND/OR) │
│ └─ 默认分支 │
│ │
│ 连接点: │
│ ├─ 输入:1 个 │
│ ├─ 输出:多个(Case 1, Case 2, ...) │
│ └─ 默认:最后一个输出 │
│ │
└──────────────────────────────────────────────────────┘
条件配置界面:
┌──────────────────────────────────────────────────────┐
│ 条件配置界面 │
├──────────────────────────────────────────────────────┤
│ │
│ 【条件分支 1】 │
│ ├─ 名称:VIP 用户 │
│ ├─ 规则: │
│ │ ├─ {begin@user_level} > 5 │
│ │ └─ {begin@balance} > 1000 │
│ ├─ 逻辑:AND │
│ └─ 目标:vip_service_node │
│ │
│ 【条件分支 2】 │
│ ├─ 名称:普通用户 │
│ ├─ 规则: │
│ │ └─ {begin@user_level} >= 1 │
│ ├─ 逻辑:OR │
│ └─ 目标:normal_service_node │
│ │
│ 【默认分支】 │
│ ├─ 名称:转人工 │
│ └─ 目标:human_service_node │
│ │
│ [+ 添加条件分支] │
│ │
└──────────────────────────────────────────────────────┘
4.5 消息节点
作用:向用户输出内容。
┌──────────────────────────────────────────────────────┐
│ 消息节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [💬消息图标] 输出回答 │ │
│ ├─────────────────────────────────┤ │
│ │ 内容: │ │
│ │ 根据检索结果,为您找到了... │ │
│ │ │ │
│ └─────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 消息内容(支持变量) │
│ ├─ 输出格式(文本/卡片) │
│ ├─ 自动播放(音频) │
│ └─ 记忆保存 │
│ │
│ 消息类型: │
│ ├─ 文本消息 │
│ ├─ 卡片消息 │
│ ├─ 图片消息 │
│ └─ 音频消息 │
│ │
└──────────────────────────────────────────────────────┘
五、高级节点详解
5.1 迭代节点
作用:遍历数组,对每个元素执行相同的操作。
┌──────────────────────────────────────────────────────┐
│ 迭代节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现(容器节点): │
│ ┌─────────────────────────────────────┐ │
│ │ [🔄迭代图标] 批量处理 │ │
│ ├─────────────────────────────────────┤ │
│ │ │ │
│ │ 输入数组:{retrieval@results} │ │
│ │ │ │
│ │ ┌─────────────────────────────┐ │ │
│ │ │ [子节点 1] │ │ ← 内部区域 │
│ │ │ 处理单个元素 │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ │ │
│ │ 输出变量:处理结果数组 │ │
│ │ │ │
│ └─────────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 输入数组(要遍历的数据) │
│ ├─ 迭代变量名(当前元素) │
│ ├─ 索引变量名(当前位置) │
│ └─ 输出变量(收集结果) │
│ │
│ 使用场景: │
│ ├─ 批量处理检索结果 │
│ ├─ 批量生成内容 │
│ └─ 批量调用 API │
│ │
└──────────────────────────────────────────────────────┘
迭代流程示意:
输入数组:[{文件1}, {文件2}, {文件3}]
↓
┌─────────────────────────────────────┐
│ 迭代节点 │
│ │
│ 第 1 次:处理 {文件1} │
│ 第 2 次:处理 {文件2} │
│ 第 3 次:处理 {文件3} │
│ │
└─────────────────────────────────────┘
↓
输出数组:[{结果1}, {结果2}, {结果3}]
5.2 循环节点
作用:重复执行某段流程,直到满足终止条件。
┌──────────────────────────────────────────────────────┐
│ 循环节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现(容器节点): │
│ ┌─────────────────────────────────────┐ │
│ │ [🔁循环图标] 定时检查 │ │
│ ├─────────────────────────────────────┤ │
│ │ │ │
│ │ 循环变量:计数器 = 0 │ │
│ │ 最大次数:10 │ │
│ │ │ │
│ │ ┌─────────────────────────────┐ │ │
│ │ │ [子节点] │ │ ← 内部区域 │
│ │ │ 执行检查逻辑 │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ │ │
│ │ 终止条件:结果.length > 0 │ │
│ │ │ │
│ └─────────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 循环变量(初始化) │
│ ├─ 最大循环次数 │
│ ├─ 终止条件 │
│ └─ 输出变量 │
│ │
│ 使用场景: │
│ ├─ 定时检查任务状态 │
│ ├─ 等待外部事件 │
│ ├─ 重试失败操作 │
│ │
└──────────────────────────────────────────────────────┘
循环流程示意:
开始循环
↓
┌─────────────────────────────────────┐
│ 第 1 次:检查状态 → 未完成 │
│ 第 2 次:检查状态 → 未完成 │
│ 第 3 次:检查状态 → 未完成 │
│ 第 4 次:检查状态 → 已完成 ✓ │
│ │
│ 终止条件满足,退出循环 │
└─────────────────────────────────────┘
↓
继续执行后续节点
5.3 工具节点
作用:调用外部 API 或内置工具。
┌──────────────────────────────────────────────────────┐
│ 工具节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [🔧工具图标] 搜索引擎 │ │
│ ├─────────────────────────────────┤ │
│ │ 工具类型:Web 搜索 │ │
│ │ 查询:{begin@query} │ │
│ │ 结果数量:5 │ │
│ └─────────────────────────────────┘ │
│ │
│ 内置工具类型: │
│ ├─ Web 搜索 │
│ ├─ 文件处理 │
│ ├─ 数据库查询 │
│ ├─ 邮件发送 │
│ └─ 天气查询 │
│ │
│ 自定义工具: │
│ ├─ API URL │
│ ├─ 请求方法 │
│ ├─ 参数配置 │
│ └─ 返回值处理 │
│ │
│ 输出变量: │
│ ├─ result(工具返回结果) │
│ ├─ status(执行状态) │
│ └─ error(错误信息) │
│ │
└──────────────────────────────────────────────────────┘
5.4 代码节点
作用:执行自定义代码脚本。
┌──────────────────────────────────────────────────────┐
│ 代码节点设计 │
├──────────────────────────────────────────────────────┤
│ │
│ 视觉表现: │
│ ┌─────────────────────────────────┐ │
│ │ [💻代码图标] 数据转换 │ │
│ ├─────────────────────────────────┤ │
│ │ 语言:Python │ │
│ │ 输入:2 个变量 │ │
│ │ 输出:1 个变量 │ │
│ └─────────────────────────────────┘ │
│ │
│ 核心配置: │
│ ├─ 编程语言(Python/JavaScript) │
│ ├─ 输入变量 │
│ ├─ 代码脚本 │
│ ├─ 输出变量 │
│ └─ 运行环境 │
│ │
│ 使用场景: │
│ ├─ 复杂数据转换 │
│ ├─ 自定义计算逻辑 │
│ ├─ 数据清洗 │
│ └─ 特殊格式处理 │
│ │
└──────────────────────────────────────────────────────┘
六、节点交互设计
6.1 基础交互
┌──────────────────────────────────────────────────────┐
│ 节点基础交互 │
├──────────────────────────────────────────────────────┤
│ │
│ 单击节点 → 选中(蓝色边框) │
│ 双击节点 → 打开配置表单 │
│ 拖拽节点 → 移动位置 │
│ 右键节点 → 显示操作菜单 │
│ │
│ 操作菜单: │
│ ├─ ✏️ 编辑配置 │
│ ├─ 📋 复制节点 │
│ ├─ 🗑️ 删除节点 │
│ ├─ 🔄 重置配置 │
│ └─ ℹ️ 查看详情 │
│ │
└──────────────────────────────────────────────────────┘
6.2 工具栏设计
节点悬停时显示快捷操作按钮:
┌──────────────────────────────────────────────────────┐
│ 节点工具栏 │
├──────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────┐ │
│ │ [🤖] 智能对话 │ │
│ └─────────────────────────────┤ ← 工具栏位置 │
│ ┌──────────────┐ │ │
│ │ [▶] [📋] [×]│ │ │
│ └──────────────┘ │ │
│ │ 模型:GPT-4 │ │
│ │ ... │ │
│ └─────────────────────────────┘ │
│ │
│ 工具栏按钮: │
│ ├─ ▶ 运行节点(测试) │
│ ├─ 📋 复制节点 │
│ └─ × 删除节点 │
│ │
│ 显示时机:悬停节点时自动显示 │
│ 隐藏时机:移开鼠标后自动隐藏 │
│ │
└──────────────────────────────────────────────────────┘
6.3 状态反馈
节点在执行过程中显示不同的状态:
┌──────────────────────────────────────────────────────┐
│ 节点状态反馈 │
├──────────────────────────────────────────────────────┤
│ │
│ 【等待状态】 │
│ ┌─────────────────────────────────┐ │
│ │ [🤖] 智能对话 │ │
│ │ ⏳ 等待上游输入... │ ← 灰色状态栏 │
│ └─────────────────────────────────┘ │
│ │
│ 【运行状态】 │
│ ┌─────────────────────────────────┐ │
│ │ [🤖] 智能对话 │ │
│ │ ⚙️ 正在处理... 45% │ ← 蓝色进度条 │
│ └─────────────────────────────────┘ │
│ │
│ 【成功状态】 │
│ ┌─────────────────────────────────┐ │
│ │ [🤖] 智能对话 │ │
│ │ ✓ 已完成 │ ← 绿色状态栏 │
│ │ 耗时:2.3 秒 │ │
│ └─────────────────────────────────┘ │
│ │
│ 【错误状态】 │
│ ┌─────────────────────────────────┐ │
│ │ [🤖] 智能对话 │ │
│ │ ❌ 执行失败 │ ← 红色状态栏 │
│ │ 错误:API 超时 │ │
│ └─────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────┘
七、节点模板化
7.1 预设模板
为常用场景提供预设节点配置:
┌──────────────────────────────────────────────────────┐
│ 预设节点模板 │
├──────────────────────────────────────────────────────┤
│ │
│ 【客服对话模板】 │
│ ├─ AI 节点 + 检索节点 + 消息节点 │
│ ├─ 预设提示词 │
│ ├─ 预设参数 │
│ └─ 一键添加 │
│ │
│ 【数据分析模板】 │
│ ├─ 代码节点 + 列表节点 + 消息节点 │
│ ├─ 预设脚本 │
│ └─ 预设输出格式 │
│ │
│ 【批量处理模板】 │
│ ├─ 迭代节点 + 处理节点 │
│ ├─ 预设循环逻辑 │
│ └─ 预设输出收集 │
│ │
└──────────────────────────────────────────────────────┘
7.2 自定义模板
用户可以保存自己的节点配置为模板:
保存模板流程:
配置节点 → 点击"保存为模板" → 输入名称 → 确认保存
↓
模板库中新增模板 → 下次可直接使用
八、节点扩展机制
8.1 自定义节点类型
系统支持扩展新的节点类型:
┌──────────────────────────────────────────────────────┐
│ 自定义节点步骤 │
├──────────────────────────────────────────────────────┤
│ │
│ 1️⃣ 定义节点类型 │
│ ├─ 节点名称 │
│ ├─ 节点图标 │
│ └─ 节点颜色 │
│ │
│ 2️⃣ 设计节点配置表单 │
│ ├─ 配置项定义 │
│ ├─ 输入输出变量 │
│ └─ 校验规则 │
│ │
│ 3️⃣ 实现节点执行逻辑 │
│ ├─ 输入处理 │
│ ├─ 核心逻辑 │
│ ├─ 输出处理 │
│ └─ 错误处理 │
│ │
│ 4️⃣ 注册节点类型 │
│ ├─ 节点组件注册 │
│ ├─ 表单组件注册 │
│ └─ 执行器注册 │
│ │
└──────────────────────────────────────────────────────┘
8.2 节点插件系统
插件化设计:
┌─────────────────────────────────────────┐
│ 节点插件结构 │
├─────────────────────────────────────────┤
│ │
│ 节点插件 │
│ ├─ manifest.json(插件元数据) │
│ ├─ node.vue(节点组件) │
│ ├─ form.vue(配置表单) │
│ ├─ executor.js(执行逻辑) │
│ └─ icon.svg(节点图标) │
│ │
└─────────────────────────────────────────┘
九、总结
9.1 节点设计要点回顾
┌────────────────────────────────────────────────────┐
│ 节点设计六大要点 │
├────────────────────────────────────────────────────┤
│ │
│ 1️⃣ 类型丰富 → 18+ 种节点覆盖各种场景 │
│ 2️⃣ 视觉统一 → 统一的外观结构 │
│ 3️⃣ 交互友好 → 悬停、选中、操作都有反馈 │
│ 4️⃣ 配置灵活 → 支持变量引用和表达式 │
│ 5️⃣ 状态可见 → 实时显示执行状态 │
│ 6️⃣ 可扩展 → 支持自定义节点类型 │
│ │
└────────────────────────────────────────────────────┘
9.2 最佳实践建议
- ✅ 合理命名:节点名称清晰表达功能
- ✅ 精简配置:避免过度配置,保持简洁
- ✅ 变量引用:充分利用变量传递数据
- ✅ 错误处理:关键节点配置异常处理
- ✅ 测试验证:配置后立即测试验证
系列文章导航:
- ✅ 架构篇 - 整体设计和技术选型
- ✅ DSL 设计篇 - 数据结构与序列化
- ✅ 画布实现篇 - VueFlow 集成与交互
- ✅ 节点系统篇 - 18 种节点的实现细节(本文)
- 📝 表单系统篇 - 动态表单与变量引用
- 📝 状态管理篇 - Pinia Store 设计
- 📝 高级特性篇 - 迭代/循环/嵌套
- 📝 实战篇 - 从零构建一个完整智能体
作者注:本文基于 agent-flow 项目的实际代码分析编写,力求还原真实的架构设计过程。欢迎在评论区讨论或提问!
下一篇:从零开始设计一个智能体编排系统 - 表单系统篇(敬请期待)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)