# 极智·智能体开发和应用平台 参考 > 本文件基于对 `https://szrh.cetccity.com:10503/` 平台的实际访问,并配合对前端 JS bundle(`/workflow-web/assets/index-2e3277ca.js`,约 7.4MB)的源码反查,整理出 26 个工作流节点的完整权威 schema(`initialData` 默认值、`outputVariables` 输出结构、`allowedConnections` 连接方向等),供本仓库后续做工作流引擎、节点 schema 等功能时直接对照落地。 > > 探索日期:2026-08-02。节点字段均来自前端注册表 `Y9e` 与各节点面板组件源码,**非推断**。 --- ## 1. 平台总览 | 项 | 值 | | --- | --- | | 平台名称 | 极智·智能体开发和应用平台(JIZHI · AGENT DEVELOPMENT AND APPLICATION PLATFORM) | | 入口 | `https://szrh.cetccity.com:10503/` | | 登录方式 | 手机号 + 密码(亦支持验证码登录) | | 主菜单 | 概览、智能体、自动化、数据源、模型、知识库、标签管理、其他管理(标签 / 模型 / 错误模式)、系统管理 | | 鉴权 Token | 登录成功后写入 `localStorage["Admin-Token"]`,并伴随 `Admin-Refresh-Token` / `Admin-Token-Expire-At` / `xSessionId` / `cryptKeys` / `cryptConf` 等 | | API 前缀 | `/jizhiApi/...`(请求体/响应体使用 `cryptConf` 中协商的密钥做加密,仅传 `Admin-Token` 不足以直接调用业务接口) | > 注:直接用 `fetch('/jizhiApi/...')` 调用业务接口会返回 `{"msg":"当前请求会话中不存在加密秘钥","code":521}`,需要先在浏览器内由前端 SDK 完成密钥协商。如需调试,请在浏览器控制台中复用前端已发出的请求而不是新造一个。 --- ## 2. 自动化(Automation)模块 入口:左侧菜单"自动化",对应路由 `/automation`。 ### 2.1 列表与创建入口 页面顶部提供两个创建入口: - **自动创建**:通过自然语言描述生成自动化任务(向导式)。 - **手动创建**:弹出对话框直接配置。 ### 2.2 手动创建对话框字段 打开"手动创建"对话框后,需要填写的字段如下(截图:`automation-manual-create.png`): | 字段 | 类型 | 是否必填 | 说明 | | --- | --- | --- | --- | | 任务名称 | 文本 | 是 | 自动化任务的展示名称 | | 任务类型 | 单选 | 是 | `Agent` 或 `工作流`,决定后续执行入口 | | 目标 | 下拉选择 | 是 | 选择具体的智能体或工作流(依"任务类型"动态过滤) | | 模型 | 下拉选择 | 否 | 执行时使用的默认大模型 | | 执行计划 | 单选 + 高级 | 是 | `每天` / `每周` / `每月` / `每小时` / `间隔` / `高级`,每种选项会进一步展开时间设置(如每周需选择星期几、每天需选择具体时刻) | | 时区 | 下拉选择 | 是 | 默认 `Asia/Shanghai` | | 启用 | 开关 | 否 | 创建后是否立即启用 | | 文本问题 | 文本域 | 是 | 自动化运行时输入给智能体/工作流的问题内容 | | 附件 | 文件上传 | 否 | 上传文件作为输入 | > "高级"执行计划支持类 cron 表达式配置(具体表达式 UI 未在探索中展开)。 --- ## 3. 智能体管理(Agent Management) 入口:左侧菜单"智能体",对应路由 `/agent-management`。 ## 3.1 智能体创建表单(基础信息) 点击"新增智能体"后弹出对话框,包含两个 Tab:**基础信息** 与 **Agent配置**(仅当应用类型为 Agent 时显示)。 ### 基础信息 Tab 字段(截图:`agent-create-form.png`) | 分组 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | --- | | 基础信息 | 智能体名称 | 文本 | 是 | 显示名称 | | 基础信息 | 智能体图标 | 图标选择 | 否 | 20 个内置预设图标 + 自定义上传 | | 基础信息 | 应用类型 | 单选 | 是 | `工作流` / `Agent`;切换后会重置后续 Tab | | 基础信息 | 排序号 | 数字 | 否 | 在列表中的排序权重 | | 基础信息 | 是否启用 | 开关 | 否 | 默认开启 | | 工作流(仅工作流类型显示) | 注册为子图 | 开关 | 否 | 开启后该工作流可被其他工作流通过"子图"节点调用 | | 分享设置 | 权限类型 | 单选 | 是 | 当前版本仅 `私有` | | 分享设置 | 匿名分享 | 开关 | 否 | 关闭(探索期间未开启) | | 内容引导 | 开场白 | 文本域 | 否 | 对话开始时显示的欢迎语 | | 内容引导 | 功能介绍 | 文本域 | 否 | 智能体能力说明 | | 内容引导 | 初始问题 | 列表 | 否 | 推荐问题列表,可多条添加 | --- ## 3.2 Agent 类型专属配置(Agent配置 Tab) 应用类型为 `Agent` 时,"基础信息"提交后会出现 **Agent配置** Tab,包含 6 个子 Tab: ### 3.2.1 运行参数(截图:`agent-config-capabilities.png`) | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | 默认模型 | 下拉选择 | 是 | 下拉列表来自"模型管理"中已配置的模型;可点击"刷新模型"重新拉取 | | 多模态补充 | 单选 | 否 | `跟随系统默认` / `开启` / `关闭` | | 默认工作路径 | 文本 | 是 | Agent 执行脚本/读写文件时的根目录 | | 角色提示词 | 文本域 | 是 | System Prompt,决定 Agent 的角色与行为 | | 对话记忆 | 开关 + 子项 | 否 | 启用后可选择"摘要模型" | | 长期记忆 | 开关 | 否 | 启用后跨会话保留关键信息 | | 子智能体 | 列表 | 否 | 可勾选"综合检索(系统内置)"或选择其他已创建的 Agent | ### 3.2.2 能力 Tab | 字段 | 类型 | 说明 | | --- | --- | --- | | 工作流调用 | 开关 | 允许 Agent 调用其他工作流 | | 内置浏览器 | 开关 | 启用平台内置浏览器访问网页 | | 客户端浏览器 | 开关 | 使用客户端本地浏览器(需客户端配合) | | 工具检索 | 开关 | 启用后 Agent 会按需从工具池中检索并调用 | ### 3.2.3 工具 Tab 工具分为两类: - **内建工具(10 个)** - 搜索类(5):网页搜索、知识库搜索、图片搜索、视频搜索、新闻搜索 - 文件类(2):文件读取、文件写入 - 数据库类(3):SQL 查询、NoSQL 查询、向量检索 - **系统工具(13 个)** - 来源:员工考核系统对接的工具集(人事、考勤、绩效等相关接口) ### 3.2.4 技能 Tab - 技能总开关:开启后 Agent 可使用已注册的技能(Skill)。 - 技能列表来自系统的"技能管理"模块,每个技能对应一个可独立执行的能力包。 ### 3.2.5 MCP Tab - 探索期间显示"暂无可绑定 MCP 服务"。MCP(Model Context Protocol)服务在系统管理中先注册后才能在此绑定。 ### 3.2.6 插件 Tab 5 个内建插件分组: | 分组 | 插件 | | --- | --- | | 文档与 Office | Word/Excel/PPT 生成与解析 | | 命令执行 | Shell / Python 沙箱命令执行 | | 图表 | 柱状图 / 折线图 / 饼图等可视化生成 | | 文件 | 文件转换、压缩、解压 | | 基础和交互 | 时间、计算器、单位换算、提醒等 | --- ## 4. 工作流编排 ### 4.1 入口与编排器架构 应用类型为"工作流"的智能体,在卡片或编辑页可进入"工作流编排"。系统提供两种编排器: | 编排器 | 路由 / URL | 实现 | 当前状态 | | --- | --- | --- | --- | | 工作流编排(默认 Tab) | `/agent-management/edit/{sceneId}/workflow-arrange` | 通过 iframe 嵌入 `/workflow-web/design/{graphId}?returnTo=...&sceneId={sceneId}`,底层为 **React Flow** | 主要使用,功能完整 | | 工作流编排(Vue3) | `/workflow-vue3/design/{id}` | Vue3 + Vue Flow 实现 | 部分场景报"工作流不存在",疑似与 graphId/sceneId 不同步 | > **权限**:只有创建人可以查看和编辑工作流详情;非创建人访问会得到"只有创建人可以查看工作流详情"提示。 ### 4.2 编排器顶层控件 | 区域 | 说明 | | --- | --- | | 顶部 Tab | 对话 / 编辑 / 工作流编排 / 工作流编排(Vue3) / 接口详情 | | 左侧节点列表 | 支持搜索;按 6 个分类分组(详见 4.3) | | 中部画布 | React Flow 画布;支持撤销/重做、缩放、小地图、导入/导出配置、添加注释 | | 右侧节点配置面板 | 选中节点后展开,字段依节点类型而异 | | 底部状态栏 | "上次发布 / 上次保存" 时间戳;按钮:`保存`、`发布 vX`、`历史`、`预览`、`配置校验`(带未修复校验数角标) | ### 4.3 节点类型注册表(来源:前端 `Y9e` 元数据 + 分类常量 `Z9e`) 下表列出全部 26 个用户可见节点类型,按 6 类分组。`type` 列为节点在序列化配置中的唯一标识(即 React Flow `node.type`)。 | 分类 | type | 显示名 | 配色 | 描述 | | --- | --- | --- | --- | --- | | 基础节点 | `llm` | 大模型 | pink | 调用大语言模型,根据提示词生成文本回复。 | | 基础节点 | `answer` | 回复 | purple | 将处理结果回复给用户,支持文本和文件输出。 | | 基础节点 | `retrieval` | 知识库检索 | orange | 从知识库中检索相关文档,支持语义和关键词混合搜索。 | | 基础节点 | `table_retrieval` | 表格知识库检索 | yellow | 从表格知识库中检索结构化数据,支持向量、全文和 NL2SQL 混合检索。 | | 基础节点 | `graph_retrieval` | 图谱知识库检索 | green | 从图谱知识库中检索实体与关系,返回子图及上下文摘要。 | | 基础节点 | `agent` | Agent | teal | 自主推理并调用工具完成任务的智能体节点。 | | 基础节点 | `subgraph` | 子图 | blue | 嵌入已发布的子工作流,实现流程复用和模块化编排。 | | 问题处理 | `classifier` | 意图识别 | purple | 利用大模型识别用户意图,将输入分类到预设类别。 | | 问题处理 | `param_ext` | 参数提取 | purple | 从用户输入中提取结构化参数,如日期、地点、数量等。 | | 问题处理 | `query_rewriter` | 问题改写 | purple | 结合上下文对用户问题进行改写,以提高检索准确率。 | | 问题处理 | `query_expansion` | 关键词提取 | purple | 从用户问题中提取关键词,用于后续检索或分析。 | | 逻辑 | `ifelse` | 条件分支 | orange | 根据条件表达式判断,将流程路由到不同分支。 | | 逻辑 | `loop` | 迭代 | orange | 对列表数据逐项或并行迭代处理,支持内嵌子图。 | | 工具 | `list_operation` | 列表操作 | teal | 对列表执行筛选、排序、截取和字段提取等操作。 | | 工具 | `http` | HTTP 请求 | teal | 发送 HTTP 请求并获取响应,支持重试和超时配置。 | | 工具 | `human` | 人工确认 | teal | 暂停流程等待人工审核或输入,支持多种交互方式。 | | 工具 | `tool` | 工具调用 | teal | 调用已注册的外部工具,按 Schema 传参并获取结果。 | | 工具 | `auto_db_query` | 数据自动查询 | teal | 由大模型自动生成 SQL 并查询数据库,适合自然语言提问。 | | 工具 | `db_query` | 数据查询 | teal | 手动编写 SQL 查询数据库,支持多任务并发执行。 | | 文件 | `file_download` | 文件下载 | yellow | 从指定 URL 下载文件,支持单文件和批量模式。 | | 文件 | `file_upload` | 文件上传 | yellow | 将文件上传到存储服务,返回访问 URL。 | | 文件 | `doc_ext` | 文档提取器 | yellow | 解析单个文件或文件列表,输出文件名与内容。 | | 文件 | `official_doc` | 公文生成 | yellow | 按标准格式生成通知、纪要等公文文档。 | | 转换 | `var_override` | 变量覆盖 | pink | 创建或覆盖变量的值,用于在节点间传递数据。 | | 转换 | `var_transform` | 变量转换 | pink | 将复杂数据结构拆分或转换为独立变量。 | | 转换 | `code` | 代码执行 | pink | 执行自定义 Python 或 JavaScript 代码片段。 | > 另有两个**隐藏节点** `toolretrieval`(工具检索,hidden=true)、`plugin`(插件,hidden=true),不在用户节点列表中,本文档不展开。`llmtool`(LLM 工具)作为 tool 的特殊形态,在面板序列化逻辑中出现,但未单独列入注册表。 ### 4.4 节点通用字段与异常处理 #### 4.4.1 通用基础字段(所有节点共享) 下列字段由节点渲染器统一处理,不属于各节点的 `initialData`: | 字段 | 类型 | 默认值 | 说明 | | --- | --- | --- | --- | | `id` | string | 自动生成 `${type}_${n}` | 节点唯一 ID,例如 `llm_1`、`answer_2` | | `type` | string | — | 节点类型 key(见 4.3) | | `position` | `{x, y}` | 自动布局 | 画布坐标 | | `data.label` | string | 默认显示名 + 序号 | 节点标题,可重命名 | | `data.width` | number | 节点默认 | 节点宽度(部分节点为 280) | | `data.height` | number | 节点默认 | 节点高度 | | `data.selected` | boolean | false | 是否选中 | | `data.join_enabled` | boolean | false | "汇聚执行":入边数 ≥ 2 时可开启,开启后等待所有上游到达再执行 | | `data.error_policy` | object | `{mode:"none", max_retries:0, ...}` | 异常处理策略(见 4.4.2) | #### 4.4.2 异常处理(`error_policy`) 面板底部统一渲染的异常处理区块。**注意**:以下 7 类节点禁用 "默认值" 模式,仅支持 "无 / 异常分支":`file_download`、`file_upload`、`doc_ext`、`official_doc`、`var_override`、`var_transform`、`code`。 | 字段 | 类型 | 取值 / 默认 | 说明 | | --- | --- | --- | --- | | `error_policy.mode` | enum | `none` / `default_value` / `error_branch` | 处理方式:异常时停止 / 走默认值 / 走异常分支 | | `error_policy.default_output` | any | — | mode=`default_value` 时使用的兜底输出 | | `error_policy.fallback_action` | enum | `stop` | mode=`error_branch` 时若异常分支也未成功,最终动作(停止) | | `error_policy.max_retries` | number | `0` | 最大重试次数 | | `error_policy.routes` | array | — | mode=`error_branch` 时定义异常分支连线 | | (classifier 专属)`error_policy.default_category` | string | — | 当 classifier+default_value 时,配置"默认分类" | --- ### 4.5 节点 schema 详情 > 下文按 4.3 表格顺序逐个列出每个节点的完整字段。每节包含: > - **基础属性**:display / color / 描述 / 连接方向(`sources` = 出边方向,`targets` = 入边方向,`*` 表示任意方向) > - **initialData**:节点 `data` 中的可配置字段(来自面板序列化白名单 + `Y9e[type].initialData` 默认值) > - **inputVariables**:可作为子图输入的变量声明 > - **outputVariables**:节点输出变量及其类型(部分为函数动态计算,标注 `动态`) > > 表格中"中文标签"列取自面板组件源码(`label:"..."` 模式直接匹配)。所有未列出的基础字段(`label`、`width`、`height`、`error_policy` 等)默认存在,不再重复。 #### 4.5.1 大模型(`llm`) | 属性 | 值 | | --- | --- | | display | 大模型 | | colorScheme | pink | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `model_id` | string | `""` | 模型(必填,下拉来自模型管理;带"刷新模型列表"按钮) | | `model_name` | string | `""` | 模型名(前端展示用,跟随 model_id) | | `temperature` | number | `0.1` | 温度(范围 0.0–1.0,步进 0.1) | | `system_prompt` | string | `""` | 系统提示(多行,placeholder:输入系统提示,可留空) | | `user_prompt` | string | `"{{global.query}}"` | 用户输入(必填,模板表达式) | | `stream` | boolean | `true` | 流式输出 | | `memory_enabled` | boolean | `false` | 短期记忆(开启后展开记忆配置) | | `memory_type` | enum | — | 记忆类型(仅 memory_enabled=true 时显示) | | `memory_window` | number | `3` | 最大记忆轮数(1–100) | | `json_output` | boolean | `false` | JSON 输出(helpTip:开启后强制模型输出 JSON 格式) | | `json_output_type` | enum | `"object"` | 输出类型:`object`(Object 对象) / `array`(Array 数组)(仅 json_output=true 且 stream=false 时显示) | | `thinking_mode` | enum | `"default"` | 思考模式:默认(跟随前端) / 开启 / 关闭 / 忽略(不传思考参数) | | `thinking_level` | enum | — | 思考级别:默认 / low(轻度) / medium(标准) / high(深度) / xhigh(扩展) / max(极深) / 忽略(不传思考级别) | **outputVariables**(动态:依赖 `json_output` / `stream` / `json_output_type`) | 变量 | 标签 | 类型 | | --- | --- | --- | | `response` | 模型回复 | String(默认);当 `json_output && !stream`:`json_output_type=array` → Array,否则 Object | #### 4.5.2 回复(`answer`) | 属性 | 值 | | --- | --- | | display | 回复 | | colorScheme | purple | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `input_schema` | string | `""` | 输出内容(模板表达式文本域,支持"插入变量" + 全屏编辑) | | `output_files` | array | `[]` | 文件输出(可添加;每项是文件变量引用) | **outputVariables**(动态:依赖 `output_files`) | 变量 | 标签 | 类型 | | --- | --- | --- | | `response` | 回复内容 | String | | `files` | 输出文件 | Array[File](仅当 output_files 非空) | #### 4.5.3 知识库检索(`retrieval`) | 属性 | 值 | | --- | --- | | display | 知识库检索 | | colorScheme | orange | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `query` | string | `"{{global.query}}"` | 意图查询(必填,用于检索召回和重排序) | | `queries` | array | `[]` | 检索查询(多路召回查询条件,可不填) | | `kb_ids` | array | `[]` | 知识库(多选,不填则查询全部) | | `kb_ids_var` | string | — | 知识库变量引用(如 `{{节点.kb_ids}}`) | | `kb_ids_mode` | enum | `"select"` | 知识库选择模式:`select`(下拉) / `variable`(变量) | | `tags` | array | undefined | 标签过滤 | | `tags_var` | string | — | 标签变量引用 | | `tags_mode` | enum | `"select"` | 标签选择模式 | | `search_mode` | enum | `"hybrid"` | 检索方式:`hybrid`(混合检索) / `vector`(向量检索) / `keyword`(分词检索) | | `size` | number | `5` | 最大召回数量 | | `enable_reranker` | boolean | `false` | 开启重排 | | `knn_score_threshold` | number | `0.8` | 召回阈值(向量相似度阈值,0–1) | | `rerank_score_threshold` | number | `0.5` | 重排阈值 | | `enable_citation` | boolean | `true` | 输出引用 | | `return_full_file_content` | boolean | `false` | 返回文件全文 | | `return_to_frontend` | boolean | — | 是否直接回前端 | | `connect_timeout` | number | — | 连接超时(秒,高级设置) | | `read_timeout` | number | — | 读取超时(秒) | | `write_timeout` | number | — | 写入超时(秒) | | `retry` | object | — | 失败重试:`{enable, count, interval_ms}` | **outputVariables** | 变量 | 标签 | 类型 | 说明 | | --- | --- | --- | --- | | `retrieval_result` | 检索结果(JSON) | Array | 详见下方 schema | | `formatted_result` | 格式化结果(Text) | String | | `retrieval_result` schema(每项字段):`unique_id`(本次检索唯一ID)、`page_content`(文档内容 LangChain 原始字段)、`content`(内容块完整内容)、`matched_content`(匹配的检索块内容)、`file_name`、`file_title`、`file_type`、`kb_id`(知识库ID)、`source_id`(来源ID 文件ID)、`score`(综合得分)、`recall_source`(召回来源: BM25/VECTOR/HYBRID)、`page_number`(页码)、`chunk_index`(内容块序号)、`meta`(结构化元数据 标题 条文等)、`extra_info`(元数据前缀文本)、`metadata`(LangChain 原始 metadata)。 #### 4.5.4 表格知识库检索(`table_retrieval`) | 属性 | 值 | | --- | --- | | display | 表格知识库检索 | | colorScheme | yellow | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `query` | string | `"{{global.query}}"` | 查询问题(必填,自然语言描述要查询的数据) | | `kb_ids` / `kb_ids_var` / `kb_ids_mode` | — | `[]` / — / `"select"` | 同 4.5.3 | | `size` | number | `10` | 最大召回量(限制明细数据的返回条数,不影响统计结果) | | `search_mode` | enum | `"hybrid_sql"` | 检索模式:`hybrid`(混合检索) / `sql`(SQL检索) / `hybrid_sql`(混合检索+SQL检索) | | `knn_score_threshold` | number | `null` | 召回阈值(不设置则使用默认值) | | `enable_citation` | boolean | `true` | 输出引用 | | `connect_timeout` / `read_timeout` / `write_timeout` / `retry` | — | — | 同 4.5.3 | **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `retrieval_result` | 检索结果(JSON) | Array | | `formatted_result` | 格式化结果(Text) | String | `retrieval_result` schema:`unique_id`(唯一ID)、`table_name`(表名)、`table_id`(表ID)、`row_data`(行数据 Object)、`columns`(列定义 Array)、`source_route`(命中来源)。 #### 4.5.5 图谱知识库检索(`graph_retrieval`) | 属性 | 值 | | --- | --- | | display | 图谱知识库检索 | | colorScheme | green | | sources / targets | `[right]` / `[left]` | > 受 feature flag `G9e` 控制,未开启时该节点从基础节点列表中过滤掉(`X9e.filter(e=>"graph_retrieval"!==e)`)。 **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `query` | string | `"{{global.query}}"` | 意图查询 | | `kb_ids` / `kb_ids_var` / `kb_ids_mode` | — | `[]` / — / `"select"` | 知识库(图谱)选择 | | `tags` | string | `""` | 标签过滤(多标签逗号分隔) | | `tags_mode` | enum | `"select"` | 标签选择模式 | | `enable_citation` | boolean | `true` | 输出引用 | | `max_hops` | number | `4` | 查询深度(跳数) | | `max_edges` | number | `200` | 最大边数 | | `max_entities` | number | `60` | 最大实体数 | **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `retrieval_result` | 检索结果(JSON) | Array | | `formatted_result` | 格式化结果(Text) | String | `retrieval_result` schema:`unique_id`(唯一ID)、`file_name`(来源文件)、`kb_name`(知识库)、`entities`(实体列表 Array)、`relations`(关系列表 Array)。 #### 4.5.6 Agent(`agent`) | 属性 | 值 | | --- | --- | | display | Agent | | colorScheme | teal | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `model_id` | string | `""` | 模型(必填) | | `system_prompt` | string | `""` | 系统提示 / 系统提示词 | | `user_prompt` | string | `"{{global.query}}"` | 用户输入 | | `stream` | boolean | `true` | 流式输出(helpTip:开启后 Agent 的回复将实时流式返回) | | `reply_result` | boolean | `true` | 回复结果 | | `agent_type` | enum | — | Agent 类型 | | `thinking_mode` | enum | `"default"` | 思考模式 | | `thinking_level` | enum | — | 思考级别 | | `multimodal_supplement_enabled` | boolean\|null | `null` | 多模态补充 | | `multimodal_supplement_model_id` | number | `-1` | 多模态补充模型(默认 -1 = 跟随主 Agent) | | `multimodal_supplement_image_model_id` | number | `-1` | 多模态图片模型 | | `multimodal_supplement_audio_model_id` | number | `-1` | 多模态音频模型 | | `multimodal_supplement_video_model_id` | number | `-1` | 多模态视频模型 | | `tools` | array | — | 工具(多选) | | `mcp_server_codes` | array | `[]` | MCP 服务 | | `plugin_package_ids` | array | `[]` | 插件包 | | `enable_skills` | boolean | `false` | Skill 模式(开启后展开"绑定技能") | | `skill_names` | array | `[]` | 绑定技能(未绑定时使用所有有权限的技能) | | `browser_usage_enabled` | boolean | `false` | 浏览器使用(beta) | | `user_memory_enabled` | boolean | `false` | 长期记忆 | | `conversation_memory_enabled` | boolean | `false` | 对话记忆 | | `conversation_memory_summary_model_id` | string | — | 摘要模型 | | `subagents` | array | `[]` | 子智能体 | | `system_subagents` | array | 见下 | 系统内置子智能体(默认含两条系统模板,enabled=false) | | `subagents_enabled` | boolean | `true` | 子智能体清单 | `system_subagents` 默认值: ```js [ { template_id: "sys.retrieval_grounder", enabled: false }, { template_id: "sys.jizhi_system_steward", enabled: false } ] ``` **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `response` | Agent回复 | String | #### 4.5.7 子图(`subgraph`) | 属性 | 值 | | --- | --- | | display | 子图 | | colorScheme | blue | | sources / targets | `[right]` / `[left]` | | inputVariables | `["Input"]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `subgraph_id` | string | `""` | 子工作流 ID | | `subgraph_name` | string | `""` | 子工作流名称 | | `subgraph_wf_id` | string | `""` | 子工作流 wf_id | | `input` | string | `""` | 子图输入(映射到子图开始节点) | | `input_params` | object | `{}` | 输入参数映射 | | `user_files` | string | `""` | 用户文件传递 | | `_startNodeInputs` | array | — | (运行时)子图开始节点输入声明 | | `_publishedOutputVariables` | array | — | (运行时)子图已发布输出变量 | | `_publishedOutputVariablesLoaded` | boolean | — | (运行时)加载标志 | | `_endNodeOutputs` | array | — | (运行时)子图结束节点输出 | **outputVariables**(动态:优先取 `_startNodeInputs` + `_publishedOutputVariables`,否则取 `_endNodeOutputs`,最后 fallback 为 `response:子图输出`) #### 4.5.8 意图识别(`classifier`) | 属性 | 值 | | --- | --- | | display | 意图识别 | | colorScheme | purple | | sources / targets | `[*]` / `[input]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `input_schema` | string | `"{{global.query}}"` | 输入(待分类文本) | | `model_id` / `model_name` | string | `""` | 模型(带刷新按钮) | | `categories` | array | 见下 | 分类列表(每项 `{category_id, category_name}`,支持"添加分类") | | `memory_enabled` | boolean | `false` | 短期记忆 | | `memory_type` | enum | — | 记忆类型 | | `memory_window` | number | `3` | 最大记忆轮数 | | `thinking_mode` | enum | `"default"` | 思考模式 | | `thinking_level` | enum | — | 思考级别 | | `system_prompt` | string | `""` | 系统提示词(提示词配置,可"恢复默认") | | `user_prompt` | string | `""` | 用户提示词 | `categories` 默认值: ```js [ { category_id: "category_1", category_name: "分类1" }, { category_id: "others_category", category_name: "其他情况" } ] ``` **outputVariables**(动态:当 error_policy.mode=default_value 时追加两个异常输出) | 变量 | 标签 | 类型 | | --- | --- | --- | | `class_name` | 识别结果 | String | | `all_classes` | 分类列表 | Array[String] | | `default_value` | 异常默认值 | Any(仅 default_value 模式) | | `raw_output` | 异常默认原始值 | String(仅 default_value 模式) | #### 4.5.9 参数提取(`param_ext`) | 属性 | 值 | | --- | --- | | display | 参数提取 | | colorScheme | purple | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `instruction` | string | `""` | 指令(输入提取指令) | | `input_schema` | string | `""` | 输入内容 (Input Schema,待提取文本) | | `model_id` / `model_name` | string | `""` | 模型 | | `parameters` | array | `[]` | 参数列表(详见下方) | | `memory_enabled` / `memory_type` / `memory_window` | — | — | 同 4.5.8 | | `thinking_mode` / `thinking_level` | — | — | 思考模式 / 级别 | | `system_prompt` | string | `""` | 系统提示词 | | `user_prompt` | string | `""` | 用户提示词 | `parameters` 数组每项结构为 `{ [paramName]: { type, description, required, ... } }`,参数 schema 编辑器支持的字段: | 子字段 | 说明 | | --- | --- | | 参数名称 | key(如 `user_name`) | | 中文名 | label | | 类型 | `String` / `Number` / `Array` / `Boolean` / `Object` 等 | | 数组元素类型 | 当 type=Array 时的元素类型 | | 描述 | description | | 必填 | required | **outputVariables**(动态:根据 `parameters` 列表生成) 每个 parameter 生成一个输出变量:`{name=paramName, label=description||paramName, type=映射后的类型}`。 类型映射:`str → String`、`number → Number`,其他保持。 #### 4.5.10 问题改写(`query_rewriter`) | 属性 | 值 | | --- | --- | | display | 问题改写 | | colorScheme | purple | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `model_id` / `model_name` | string | `""` | 模型 | | `input_schema` | string | `"{{global.query}}"` | 输入(待改写内容) | | `stream` | boolean | `false` | 流式输出 | | `memory_enabled` / `memory_type` / `memory_window` | — | — | 短期记忆 | | `thinking_mode` / `thinking_level` | — | — | 思考模式 / 级别 | | `system_prompt` | string | `""` | 系统提示词 | | `user_prompt` | string | `""` | 用户提示词 | **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `output` | 改写结果 | String | #### 4.5.11 关键词提取(`query_expansion`) | 属性 | 值 | | --- | --- | | display | 关键词提取 | | colorScheme | purple | | sources / targets | `[right]` / `[left]` | **initialData**:与 `query_rewriter` 完全一致(同字段集合,不同语义)。 **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `output` | 提取结果 | String | #### 4.5.12 条件分支(`ifelse`) | 属性 | 值 | | --- | --- | | display | 条件分支 | | colorScheme | orange | | sources / targets | `[]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `cases` | array | `[]` | 分支条件列表(详见下方) | `cases` 每个分支结构: ```ts { case_id: string, // 分支 ID label: string, // 分支名(默认"分支 N") conditions: Array<{ // 条件列表(AND 关系) variable: string, // 比较变量(来自上游变量选择) operator: enum, // 操作符:=, ≠, >, <, ≥, ≤, 包含, 不包含, 开始于, 结束于, 为空, 不为空 value: string // 比较值 }>, logical_operator: "AND" | "OR" // 多条件间的逻辑关系 } ``` UI 操作:每分支一个出口连线;"添加分支"按钮新增 case;"添加条件"在分支内新增 condition。 **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `result` | 判断结果 | String | > 画布上每个分支还会产生一个独立的输出把手(handle),通过 `error_policy.routes`/`cases` 路由。 #### 4.5.13 迭代(`loop`) | 属性 | 值 | | --- | --- | | display | 迭代 | | colorScheme | orange | | sources / targets | `[right]` / `[left]` | | inputVariables | `["Input"]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `input_variable` | string | `""` | 输入列表变量(必填,选择要迭代的列表变量) | | `input_variables` | array | `[]` | 多输入列表 | | `is_parallel` | boolean | `false` | 并发运行 | | `concurrency` | number | — | 并发度(并行执行的线程数量 1–16) | | `outputs` | array | `[]` | 输出变量配置(详见下方) | | `subgraph_config` | object | — | 内嵌子图配置(包含 `nodes`/`edges` 等子图完整定义) | `outputs` 每项: ```ts { name: string, // 变量名 label: string, // 中文名 type: string // 类型(如 String、Number、Array[Object] 等) } ``` UI 提供"添加输出"按钮配置 outputs;提示文案:"下游节点可通过变量引用迭代内部节点的输出(聚合为数组)"。 **outputVariables**(动态:基于 `outputs` + 内部子图节点输出聚合) 至少包含: | 变量 | 标签 | 类型 | | --- | --- | --- | | `response` | 循环响应 | String | | `results` | 循环结果 | Array | 随后追加每个 `outputs` 项(type 自动包装为 `Array[...]`)+ 内部节点输出(聚合为 `Array`,name 形如 `${nodeId}.${varName}`)。 #### 4.5.14 列表操作(`list_operation`) | 属性 | 值 | | --- | --- | | display | 列表操作 | | colorScheme | teal | | defaultWidth | 280 | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `input_variable` | string | `""` | 输入变量(要操作的列表) | | `input_variables` | array | `[]` | 多输入列表 | | `input_type` | string | `""` | 输入类型(运行时根据上游推导,如 `Array[File]`、`Array[Object]`) | | `filter_type` | enum | `"all"` | 过滤匹配模式:`all`(全部满足) / `any`(任一满足) | | `enable_filter` | boolean | `false` | 启用过滤 | | `conditions` | array | `[]` | 过滤条件列表(结构同 ifelse.conditions) | | `enable_sort` | boolean | `false` | 启用排序 | | `sort_by` | string | `""` | 排序字段 | | `sort_order` | enum | `"asc"` | 排序方向:`asc` / `desc` | | `enable_limit` | boolean | `false` | 启用截取 | | `limit` | number | `0` | 截取数量 | | `limit_type` | enum | `"top_n"` | 截取模式:`top_n`(前 N 条) / `bottom_n`(后 N 条) | | `enable_extract` | boolean | `false` | 启用字段提取 | | `extract_field` | string | `""` | 提取字段(单字段模式) | | `extract_fields` | array | `[]` | 提取字段列表(每项 `{field, type, label}`) | **outputVariables**(动态:依赖 `extract_fields` / `extract_field` / `input_type`) 基础输出(始终存在): | 变量 | 标签 | 类型 | | --- | --- | --- | | `result` | 过滤结果 | Array(type 与 extract 配置相关) | | `first_record` | 第一条记录 | Any / Object | | `last_record` | 最后一条记录 | Any / Object | 当 `input_type` 为 `Array[File]`/`File[]` 且未启用 extract 时,追加: | 变量 | 标签 | 类型 | | --- | --- | --- | | `result_info` | 过滤结果信息 | Array[FileInfo] | | `first_record_info` | 第一条记录信息 | FileInfo | | `last_record_info` | 最后一条记录信息 | FileInfo | #### 4.5.15 HTTP 请求(`http`) | 属性 | 值 | | --- | --- | | display | HTTP 请求 | | colorScheme | teal | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `url` | string | `""` | API 地址 | | `method` | enum | `"GET"` | 请求方法:`GET` / `POST` / `PUT` / `DELETE` / `PATCH` / `HEAD` | | `headers` | object | `{}` | 请求头(键值表) | | `params` | object | `{}` | 请求参数(query 键值表) | | `body` | string | `""` | 请求体(按 body_type 切换形态) | | `body_type` | enum | `"none"` | 请求体类型:`none` / `form-data` / `JSON` / `raw` / `binary` | | `body_form_data` | array | — | body_type=form-data 时的键值表(含 File 类型支持) | | `body_urlencoded` | object | — | body_type=urlencoded 时的键值表 | | `body_json` | object | — | body_type=JSON 时的对象(placeholder: `{ 'key': 'value' }`) | | `body_raw` | string | — | body_type=raw 时的原始内容 | | `body_binary` | string | — | body_type=binary 时的文件变量引用 | | `http2` | boolean | — | 协议:`HTTP/1.1` / `HTTP/2` | | `ssl_verify` | boolean | `true` | SSL 验证 | | `timeout_connect` | number | `5` | 连接超时(秒) | | `timeout_read` | number | `30` | 读取超时(秒) | | `timeout_write` | number | `30` | 写入超时(秒) | | `retry` | object | `{enable:false, count:3, interval:1000}` | 失败重试配置(启用重试 / 重试次数 / 重试间隔 ms) | **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `status_code` | 状态码 | Number | | `body` | 响应体 | String | | `headers` | 响应头 | Object | | `files` | 文件列表 | Array[File] | | `files_info` | 文件信息列表 | Array[FileInfo] | #### 4.5.16 人工确认(`human`) | 属性 | 值 | | --- | --- | | display | 人工确认 | | colorScheme | teal | | sources / targets | `[*]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `interaction_type` | enum | `"context_input"` | 交互类型:`context_input`(上下文输入) / `external_system`(外部系统处理) | | `title` | string | `""` | 标题(如:需要用户确认订单信息) | | `reason` | string | `""` | 原因 (reason),向用户说明需要介入的原因 | | `question` | string | `""` | 问题 (question),向用户提出的具体问题 | | `questions` | array | `[]` | 结构化问题(每项详见下方;空数组时执行页显示自由输入框) | | `output_variables` | array | `[]` | 输出变量配置(每项 `{name, label, type, scope}`) | | `external_system` | object | — | 外部系统配置(系统名称、系统地址) | | `routes` | array | `[]` | 输出分支(如:已完成 / 未完成) | `questions` 每项结构: ```ts { id: string, // 兼容 ID(可选) tab_title: string, // Tab 标题 content: string, // 问题内容 options?: Array<{ // 预置选项(空时该问题仅展示补充说明输入) name: string, // 选项名称 description: string, // 选项说明 }>, allow_multiple: boolean, // 允许多选 allow_supplement: boolean // 允许补充 } ``` **outputVariables**(动态:依赖 `interaction_type` / `questions` / `output_variables`) 基础输出(始终存在): | 变量 | 标签 | 类型 | | --- | --- | --- | | `action` | 操作类型 | String | | `data` | 操作数据 | Any | `interaction_type=context_input` 且 `questions.length>0` 时追加: | 变量 | 标签 | 类型 | | --- | --- | --- | | `response` | 人工回复 | String | | `answers` | 结构化答案 | Object | | `supplements` | 补充说明 | Object | `interaction_type=external_system` 时追加 `result`(处理结果, String)。否则追加 `output_variables` 配置的每个变量(type=String)。 #### 4.5.17 工具调用(`tool`) | 属性 | 值 | | --- | --- | | display | 工具调用 | | colorScheme | teal | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `tool_id` | string | `""` | 工具 ID(选择工具,搜索框:名称/ID/分类/描述) | | `tool_title` | string | `""` | 工具中文名(跟随 tool_id) | | `inputs` | object | `{}` | 工具入参(按工具 input schema 动态生成的表单) | | `inputs_mode` | enum | `"form"` | 输入模式:`form`(表单) / 其他 | | `output_schema` | object\|string | — | 工具输出 schema(来自工具定义,JSON Schema) | | `input_schema` | object\|string | — | 工具输入 schema(用于推导文件类型入参) | | `thinking_mode` | enum | `"default"` | 思考模式 | | `thinking_level` | enum | — | 思考级别 | | `llm_params_enabled` | boolean | `false` | LLM 参数模式开关 | | `llm_model_id` | string | `""` | LLM 模型(llm_params_enabled=true 时) | | `llm_prompt` | string | `""` | LLM 提示词 | | `llm_retry_max` | number | `3` | LLM 最大重试 | **outputVariables**(动态:基于 `output_schema` JSON Schema 递归生成,深度上限 5) 默认 fallback:`[{name:"result", label:"执行结果", type:"String"}]`。 支持识别 file / array[file] / object / array[object] 类型,自动展开 `result` + `file_info` / `files` + `files_info` 等配套输出。 #### 4.5.18 数据自动查询(`auto_db_query`) | 属性 | 值 | | --- | --- | | display | 数据自动查询 | | colorScheme | teal | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `datasource_code` | string | `""` | 数据源(必填,下拉来自 `getDatasourceList()`) | | `selected_tables` | array | `[]` | 表选择(多选) | | `execute_until` | enum | `"schema_only"` | 执行到:`schema_only`(仅生成 schema) / `generate_sql`(生成 SQL) / `execute_all`(执行到底) | | `step_generate_sql` | boolean | `false` | 分步:生成 SQL | | `step_execute_query` | boolean | `false` | 分步:执行查询 | | `model_id` | string | `""` | 模型 | | `system_prompt` | string | `""` | 系统提示 | | `user_prompt` | string | `""` | 用户输入 | | `user_requirements` | string | `""` | 自然语言问题(用户的查询需求) | | `max_rows` | number | `0` | 最大返回行数(0=不限制) | | `timeout` | number | `0` | 超时(秒,0=不限制) | | `thinking_mode` | enum | `"default"` | 思考模式 | | `thinking_level` | enum | — | 思考级别 | **outputVariables**(动态:依赖 `execute_until` / `step_generate_sql` / `step_execute_query`) | 变量 | 标签 | 类型 | 出现条件 | | --- | --- | --- | --- | | `table_schemas` | 表结构信息 | Array[Object] | 始终 | | `generated_sql` | 生成的SQL | Object(schema: `{sql, explanation}`) | step_generate_sql 或 execute_until ∈ {generate_sql, execute_all} | | `query_result` | 查询结果 | Object(schema 见下) | step_execute_query 或 execute_until=execute_all | `query_result` schema:`columns`(列信息 Array[{name, label, type}])、`rows`(数据行 Array[Object])、`total`(总行数 Number)、`executionTime`(执行耗时 Number)。 `table_schemas` 元素 schema:`tableName`/`table_name`(表名)、`tableComment`/`comment`(表注释)、`columns`(列信息 Array[{name, columnName, type, dataType, nullable, ableBeNull, comment, columnComment}])。 #### 4.5.19 数据查询(`db_query`) | 属性 | 值 | | --- | --- | | display | 数据查询 | | colorScheme | teal | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `datasource_code` | string | `""` | 数据源(必填) | | `tasks` | array | `[]` | 任务列表(详见下方) | | `concurrent` | boolean | `false` | 并发执行 | | `concurrency_limit` | number | `1` | 并发任务数上限 | | `timeout` | number | `0` | 超时(秒) | `tasks` 每项结构: ```ts { name: string, // 任务名 sql: string, // SQL 文本 output_variable: string // 输出变量名(默认 task_${name}) } ``` **outputVariables**(动态:每个 task 生成一个输出) 每任务输出: | 变量 | 标签 | 类型 | | --- | --- | --- | | `${output_variable}` | 任务结果: `${name}` | Object | 每输出 schema:`columns`(列信息 Array[{name, type, label}])、`rows`(数据行 Array[Object])、`total`(总行数)、`executionTime`(执行耗时)、`error_message`(错误说明)。 #### 4.5.20 文件下载(`file_download`) | 属性 | 值 | | --- | --- | | display | 文件下载 | | colorScheme | yellow | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `download_urls` | string | `""` | 下载链接(必填,多行,支持变量如 `{{node_id.url}}`) | | `output_mode` | enum | `"single"` | 输出模式:`single`(单个文件) / `multiple`(文件数组) | | `timeout_connect` | number | `30` | 连接超时(秒) | | `timeout_read` | number | `30` | 读取超时(秒) | | `timeout_write` | number | `30` | 写入超时(秒) | **outputVariables**(动态:依赖 `output_mode`) | 模式 | 变量 | 标签 | 类型 | | --- | --- | --- | --- | | single | `file` | 文件 | File | | single | `file_info` | 文件信息 | FileInfo | | multiple | `files` | 文件数组 | Array[File] | | multiple | `files_info` | 文件信息数组 | Array[FileInfo] | `FileInfo` schema:`url`、`fileName`、`filePath`、`size`、`mimeType`、`extension`。 #### 4.5.21 文件上传(`file_upload`) | 属性 | 值 | | --- | --- | | display | 文件上传 | | colorScheme | yellow | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `files_input` | string | `""` | 文件输入(必填,选择文件或文件列表变量) | | `upload_mode` | enum | `"single"` | 上传模式:`single`(单文件) / `batch`(批量) | | `timeout` | number | `60` | 超时时间(秒) | **outputVariables**(动态:依赖 `upload_mode`) | 模式 | 变量 | 标签 | 类型 | | --- | --- | --- | --- | | single | `url` | 文件URL | String | | single | `file_info` | 文件信息 | FileInfo | | single | `result` | 上传结果 | Object | | batch | `urls` | URL数组 | Array[String] | | batch | `files_info` | 文件信息数组 | Array[FileInfo] | | batch | `results` | 上传结果 | Array[Object] | #### 4.5.22 文档提取器(`doc_ext`) | 属性 | 值 | | --- | --- | | display | 文档提取器 | | colorScheme | yellow | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `input_file` | string | `""` | 输入文件(必填,选择文件或文件列表变量) | | `prefer_html_table` | boolean | `true` | 偏好HTML表格 | | `input_type` | string | `""` | 输入类型(运行时推导:单文件 / Array[File] 等) | | `connect_timeout` | number | — | 连接超时(秒) | | `read_timeout` | number | — | 读取超时(秒) | | `write_timeout` | number | — | 写入超时(秒) | **outputVariables**(动态:依赖 `input_type`) | 输入类型 | 输出 | | --- | --- | | 单文件 | `file_name`(文件名 String)、`file_content`(文件内容 String)、`error`(错误信息 String) | | Array[File] | `result`(解析结果 Array[Object],schema 同单文件三字段) | #### 4.5.23 公文生成(`official_doc`) | 属性 | 值 | | --- | --- | | display | 公文生成 | | colorScheme | yellow | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `documentType` | enum | `"tongzhi"` | 文种类型(详见下方枚举) | | `category` | enum | `"standard"` | 公文分类:`standard`(标准文 下行文) / `upstream`(上行文) / `other`(其他) | | `issueOrg` | string | `""` | 发文机关名称(必填) | | `issueNumber` | string | `""` | 发文字号 | | `copyNumber` | string | `""` | 份号(可选) | | `secretLevel` | enum | `""` | 密级:`""`/`secret`(秘密)/`confidential`(机密)/`top_secret`(绝密) | | `secretPeriod` | string | `""` | 保密期限 | | `urgencyLevel` | enum | `""` | 紧急程度:`""`/`urgent`(加急)/`very_urgent`(特急) | | `signers` | string | `""` | 签发人(多人逗号分隔) | | `title` | string | `""` | 标题(必填) | | `mainRecipient` | string | `""` | 主送机关 | | `content` | string | `""` | 正文内容(必填,支持变量引用) | | `attachments` | string | `""` | 附件名称(多个附件逗号分隔) | | `issueOrgName` | string | `""` | 发文机关署名 | | `issueDate` | string | `""` | 成文日期(如:2024年1月1日) | | `attendees` | string | `""` | 出席人员 | | `observers` | string | `""` | 列席人员(可选) | | `ccOrgs` | string | `""` | 抄送机关 | | `printOrg` | string | `""` | 印发机关 | | `printDate` | string | `""` | 印发日期 | | `showIssueNumber` | boolean | `true` | 显示发文字号 | | `showMainRecipient` | boolean | `true` | 显示主送机关 | | `showSigners` | boolean | `true` | 显示签发人 | | `showIssueOrgName` | boolean | `true` | 显示发文机关署名 | | `showIssueDate` | boolean | `true` | 显示成文日期 | | `showAttendees` | boolean | `true` | 显示出席人员 | `documentType` 枚举(15 种):`tongzhi`(通知)、`tongbao`(通报)、`baogao`(报告)、`qingshi`(请示)、`pifu`(批复)、`yijian`(意见)、`jueyi`(决议)、`jueding`(决定)、`gongbao`(公报)、`gonggao`(公告)、`tonggao`(通告)、`mingling`(命令/令)、`yian`(议案)、`jiyao`(纪要)、`gonghan`(函)。 UI 分组:版头信息、落款信息、纪要专用(仅纪要文种显示)、版记信息。 **outputVariables** | 变量 | 标签 | 类型 | | --- | --- | --- | | `files` | 文件数组 | Array[File] | | `files_info` | 文件信息数组 | Array[FileInfo] | #### 4.5.24 变量覆盖(`var_override`) | 属性 | 值 | | --- | --- | | display | 变量覆盖 | | colorScheme | pink | | defaultWidth | 280 | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `variables` | array | `[]` | 变量配置列表(详见下方;支持"添加变量") | | `width` | number | `280` | 节点宽度 | `variables` 每项结构: ```ts { target: string, // 变量名 (Key) label: string, // 变量名称(展示用) type: string, // 变量类型:String / Number / Boolean / Object / Array / File / FileInfo 等 value: any, // 变量值(支持变量引用 {{...}}) required: boolean, // 必填 options: string[], // 下拉选项(type=enum 时) allowed_types: string[] // 允许的文件类型(type=File 时) } ``` **outputVariables**(动态:根据 `variables` 列表生成) 每个 `variables` 项生成一个输出变量 `{name=target, label=label||target, type}`。 当 type 为 `File` / `Array[File]` / `FileInfo` / `Array[FileInfo]` 时,额外追加 `${target}_info` 配套 FileInfo 输出。 #### 4.5.25 变量转换(`var_transform`) | 属性 | 值 | | --- | --- | | display | 变量转换 | | colorScheme | pink | | defaultWidth | 280 | | sources / targets | `[right]` / `[left]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `input_variable` | string | `""` | 输入变量(选择要展开的变量 Object 或 Array[Object]) | | `input_type` | string | `""` | 输入类型(运行时推导) | | `input_schema` | array | `[]` | 输入 schema(来自上游,每项 `{name, label, type}`) | | `outputs` | array | `[]` | 输出变量结构(详见下方) | | `flatten` | boolean | `false` | 平铺变量 | | `width` | number | `280` | 节点宽度 | `outputs` 每项: ```ts { name: string, // 字段名 label: string, // 中文名 type: string // 类型(可空,未指定时从 input_schema 推导) } ``` UI 提供"添加"按钮新增输出,"选择字段"从上游 schema 拉取。 **outputVariables**(动态:依赖 `flatten` / `input_type` / `outputs`) - `flatten=true`:直接平铺每个 output 为独立变量(type 自动包装为 `Array[...]`,当 input_type 是 Array 时) - `flatten=false` 且 input_type 以 `Array` 开头:单个 `result`(展开结果, Array[Object]) 输出,schema 为 outputs 映射 - `flatten=false` 且 input_type 为 Object:每个 output 一对一输出(File 系追加 `_info` 配套) #### 4.5.26 代码执行(`code`) | 属性 | 值 | | --- | --- | | display | 代码执行 | | colorScheme | pink | | sources / targets | `[left, right]` / `[left, right]` | **initialData** | 字段 | 类型 | 默认值 | 中文标签 / 说明 | | --- | --- | --- | --- | | `language` | enum | `"python3"` | 语言:`python3`(Python) / `javascript`(JavaScript) | | `code` | string | `""` | 代码正文(多行编辑器) | | `args` | array | `[]` | 入参列表(每项 `{name, type}`,作为函数参数注入) | | `outputs` | array | `[{name:"result", type:"String"}]` | 输出变量声明(每项 `{name, type, label?}`) | **outputVariables**(动态:基于 `outputs`;若空则 fallback 为 `[{name:"result", label:"result", type:"String"}]`) 每个 `outputs` 项生成 `{name, label=label||name, type}` 输出。 #### 4.5.27 开始节点(`start`,系统节点) | 属性 | 值 | | --- | --- | | display | 开始 | | colorScheme | green | | sources / targets | `[right]` / `[]`(无入边) | 不可删除,每张图有且仅有一个。无 `initialData`,但内置 `inputs` 数组(用户可在"基础信息 → 内容引导"配置额外的输入字段)。 **outputVariables**(系统注入的"全局变量") | 变量 | 标签 | 类型 | | --- | --- | --- | | `query` | 用户问题 | String | | `token` | 用户Token | String | | `retrieval_counter` | 检索计数器 | Integer | | `files` | 用户文件 | Array[File](schema: file_name, url, file_path, mime_type, extension, size) | | `files_info` | 用户文件信息 | Array[FileInfo](schema: url, fileName, filePath, size, mimeType, extension) | | `user_id` | 用户ID | String | | `dept_id` | 部门ID | String | | `tenant_id` | 租户ID | String | > 模板表达式中以 `{{global.query}}`、`{{global.files}}` 等方式引用。 #### 4.5.28 结束节点(`end`,系统节点) | 属性 | 值 | | --- | --- | | display | 结束 | | colorScheme | red | | sources / targets | `[]`(无出边) / `[left]` | 不可删除,每张图有且仅有一个。无 `initialData` 默认字段,画布上默认显示"输出全部变量"。 **initialData** | 字段 | 类型 | 默认值 | 说明 | | --- | --- | --- | --- | | `output_variables` | array | `[]` | 显式声明输出;空数组 = 输出全部上游变量。每项 `{nodeId, name, label, type}` | **outputVariables**:`[]`(结束节点不向下游输出,是流程终点)。 --- ## 5. 关键 URL / 路由速查 | 用途 | URL | | --- | --- | | 登录 | `/login` | | 自动化列表 | `/automation` | | 智能体列表 | `/agent-management` | | 智能体编辑(含 Tab) | `/agent-management/edit/{sceneId}/{tab?}`,`tab` 取值:`dialog`(对话) / `edit`(编辑) / `workflow-arrange`(工作流编排) / `interface`(接口详情) | | 工作流编排 iframe | `/workflow-web/design/{graphId}?returnTo=...&sceneId={sceneId}` | | Vue3 工作流编排 | `/workflow-vue3/design/{id}` | > `{sceneId}` 是智能体 ID;`{graphId}` 是工作流图 ID,二者不一定相同(一个智能体可对应一个发布图与多个历史版本图)。 --- ## 6. 探索方法与已知限制 ### 6.1 节点 schema 数据来源 本文档 4.3 / 4.4 / 4.5 各节中的字段表来自 **前端 JS bundle 的静态分析**,并非 UI 截图推断: 1. 主 bundle `/workflow-web/assets/index-21045ea8.js`(~631KB)只是引导代码。 2. 真正的应用代码在按需加载的 chunk `/workflow-web/assets/index-2e3277ca.js`(~7.4MB,含 11657 个中文字符)中。 3. 在该 chunk 中可直接定位到 **节点元数据注册表 `Y9e`**(起始位置约 7213314,结束于约 7243000),其中按节点 type 顺序声明了每个节点的: - `display`(中文名)、`colorScheme`、`description`、`allowedConnections`(sources/targets) - `initialData`:默认配置对象(本文 4.5 各节"initialData"表的字段名与默认值即取自此处) - `inputVariables` / `outputVariables`:输入输出变量声明(部分为函数动态计算,函数源码完整保留在 bundle 中) - `properties`:字段校验器引用 4. 节点分类常量 `Z9e` 紧随其后(位置约 7243700),与 UI 左侧节点列表的 6 个分类完全一致。 5. 节点配置面板的中文表单标签(如"短期记忆""流式输出""输出引用"等)从各面板组件的 `label:"..."` JSX 属性中抽取,与 4.5 各节"中文标签"列对应。 > 因此 4.5 中所有字段名、默认值、输出变量 schema 均为**权威数据**,可直接用于后端 schema 建模。 ### 6.2 已知限制 1. **业务接口需要密钥协商**:直接 `fetch('/jizhiApi/...')` 会返回 `{"msg":"当前请求会话中不存在加密秘钥","code":521}`;如需通过 API 获取已有工作流的节点配置作为参考,需要先在前端 SDK 完成 `cryptKeys` / `cryptConf` 协商,或在浏览器控制台中复用前端已发出的请求。 2. **Vue3 编排器对部分工作流报"工作流不存在"**:用新建工作流的 ID 进入 Vue3 编排器会失败,需使用默认的"工作流编排"Tab(React Flow)。 3. **拖拽添加节点不稳定**:在 headless 浏览器中通过 `page.mouse` / `frame.dragTo` 触发 React Flow 的 HTML5 DnD 事件不易成功(多种合成事件方案均未生效)。但本次通过 JS bundle 静态分析已绕开此限制。 4. **图谱检索节点的 feature flag**:`graph_retrieval` 节点受常量 `G9e` 控制;若生产环境未开启,该节点会从基础节点列表中过滤掉(`X9e.filter(e=>"graph_retrieval"!==e)`),但 `Y9e` 注册表中仍保留其完整定义。 5. **测试残留**:为获取完整编辑权限,本次探索在平台创建过一个名为 `node-fields-exploration` 的工作流(智能体 ID `7782`),探索完成后已按 `/agent-management → 我的 → 工作流筛选 → 卡片"更多管理" → 删除智能体` 流程清理完毕(删除后"我的"工作流列表显示"暂无智能体")。 --- ## 7. 与本仓库(agent-management)的对照建议 下表把平台能力映射到本仓库后端可能的实现模块,便于后续做工作流引擎与节点 schema 时对照: | 平台能力 | 建议映射到本仓库的位置 | | --- | --- | | 智能体基础信息 + Agent 配置(运行参数 / 能力 / 工具 / 技能 / MCP / 插件) | `agent` 实体 + 配套的 `agent_capability` / `agent_tool_binding` 等关联表 | | 自动化任务(cron / 间隔) | `automation_task` 表 + 调度器(Quartz / Spring Scheduling) | | 工作流编排(节点 + 边 + 配置) | `workflow_graph` 表(存储 React Flow 序列化结果)+ 节点执行器(Strategy / Chain 模式) | | 节点配置 schema | 每个节点类型对应一个 `NodeHandler` 实现,定义输入 / 输出变量声明与执行逻辑(参考 4.5 / 4.6 的字段表) | | 节点异常处理 | `NodeExceptionConfig`(处理方式、最大重试次数),所有节点 Handler 共享 | | 工作流版本管理 | `workflow_graph_version`(每次发布生成一份快照,运行时按版本号加载) | | 子图 | `workflow_subgraph_binding`:节点 ID → 子工作流版本 ID | > 本仓库中"错误模式管理"相关功能(已扩展为 25 条内置模式并支持模糊匹配)对应到平台"其他管理 → 错误模式"页面,二者命名一致,可直接对齐。