← ClaudeAtlas

workflow-interactive-devlisted

用于开发 FastGPT 工作流中的交互响应。详细说明了交互节点的架构、开发流程和需要修改的文件。
aiskillstore/marketplace · ★ 329 · AI & Automation · score 77
Install: claude install-skill aiskillstore/marketplace
# 交互节点开发指南 ## 概述 FastGPT 工作流支持多种交互节点类型,允许在工作流执行过程中暂停并等待用户输入。本指南详细说明了如何开发新的交互节点。 ## 现有交互节点类型 当前系统支持以下交互节点类型: 1. **userSelect** - 用户选择节点(单选) 2. **formInput** - 表单输入节点(多字段表单) 3. **childrenInteractive** - 子工作流交互 4. **loopInteractive** - 循环交互 5. **paymentPause** - 欠费暂停交互 ## 交互节点架构 ### 核心类型定义 交互节点的类型定义位于 `packages/global/core/workflow/template/system/interactive/type.d.ts` ```typescript // 基础交互结构 type InteractiveBasicType = { entryNodeIds: string[]; // 入口节点ID列表 memoryEdges: RuntimeEdgeItemType[]; // 需要记忆的边 nodeOutputs: NodeOutputItemType[]; // 节点输出 skipNodeQueue?: Array; // 跳过的节点队列 usageId?: string; // 用量记录ID }; // 具体交互节点类型 type YourInteractiveNode = InteractiveNodeType & { type: 'yourNodeType'; params: { // 节点特定参数 }; }; ``` ### 工作流执行机制 交互节点在工作流执行中的特殊处理(位于 `packages/service/core/workflow/dispatch/index.ts:1012-1019`): ```typescript // 部分交互节点不会自动重置 isEntry 标志(因为需要根据 isEntry 字段来判断是首次进入还是流程进入) runtimeNodes.forEach((item) => { if ( item.flowNodeType !== FlowNodeTypeEnum.userSelect && item.flowNodeType !== FlowNodeTypeEnum.formInput && item.flowNodeType !== FlowNodeTypeEnum.agent ) { item.isEntry = false; } }); ``` ## 开发新交互响应的步骤 ### 步骤 1: 定义节点类型 **文件**: `packages/global/core/workflow/template/system/interactive/type.d.ts` ```typescript export type YourInputItemType = { // 定义输入项的结构 key: string; label: string; value: any; // ... 其他字段 }; type