问题摘要
在 相同 Astron Agent 版本 的两套独立环境中,从环境 A 导出工作流(YAML)并导入到环境 B 后,即使环境 B 已存在同名插件,导入后的工作流仍无法直接调试/发布使用,必须手工重新选择插件并重新编排。
期望行为
当目标环境存在可匹配资源(如同名插件)时,导入应:
- 自动将节点引用映射到目标环境对应的资源 ID
- 导入后可直接调试、保存、发布,无需手工重连
- 若无法自动映射,应明确提示哪些节点失败,而不是静默失效
实际行为
- 从环境 A 导出工作流 YAML
- 在环境 B 创建同名插件(名称相同,ID 不同)
- 将 YAML 导入环境 B
- 插件节点绑定丢失,输入/输出常被清空
- 必须手工重新选择插件并重新编排后才能使用
复现步骤
前置条件
- 两套独立部署(不同业务库 / 不同资源 ID),Astron 版本相同
- 两端均可创建插件与工作流
- 不能共用同一业务库,否则
pluginId 可能相同,无法体现问题
步骤
- 环境 A:创建插件,名称固定为
demo-cross-env-plugin,记录其 toolId 为 A_TOOL_ID
- 环境 A:新建工作流,节点至少包含:开始 → 插件(
demo-cross-env-plugin)→ 结束;调试通过后导出 YAML
- 环境 B:创建同名插件
demo-cross-env-plugin,记录 B_TOOL_ID(确认 A_TOOL_ID ≠ B_TOOL_ID)
- 环境 B:导入上述 YAML
- 打开导入后的工作流,不要重新选择插件,检查插件节点状态
- 直接点击调试/试运行,记录失败现象
- 再手工重选同名插件,确认重编排后可恢复
现象对照
| 检查项 |
期望 |
实际 |
| 插件绑定 |
自动绑定环境 B 同名插件 |
绑定丢失 / 需重选 |
| 节点输入输出 |
保留 |
常被清空 |
| 直接调试/发布 |
可用 |
失败,需手工重编排 |
初步原因分析
导入清洗逻辑位于 WorkflowExportService.cleanNodesForImport / cleanPluginNode:
- 仅按
pluginId(toolId) 校验插件是否存在及权限
- 目标环境找不到相同 ID(或无权访问)时:移除
pluginId,并清空 inputs / outputs
- 没有按插件名称做回退映射
因此「名称一致、ID 不同」的跨环境场景下,绑定必然丢失。
同类仅按 ID 清洗的逻辑也可能影响:
- 大模型节点(
llmId)
- 知识库节点(
repoId / repoIds)
- 子工作流节点(
flowId)
- 数据库节点(
dbId)
建议方案
- 短期:导入时先按 ID 匹配;ID 不存在时,按名称在目标环境唯一匹配并回写新 ID
- 中期:导出增加稳定迁移字段(如
pluginName / 业务 key),优先按稳定标识映射
- 体验:导入完成后给出报告:已自动映射 N 个节点 / 需手工处理 M 个节点
环境信息
- Astron Agent 版本:
v1.1.0
- 两端是否同版本:是
- 是否同名插件、不同 ID:是
- 主要涉及节点:插件节点(模型/知识库等可能同类问题)
优先级
高:跨环境迁移(开发 → 测试 → 生产 / 私有化交付)是高频场景;当前只能手工重编排,成本高且易出错。
问题摘要
在 相同 Astron Agent 版本 的两套独立环境中,从环境 A 导出工作流(YAML)并导入到环境 B 后,即使环境 B 已存在同名插件,导入后的工作流仍无法直接调试/发布使用,必须手工重新选择插件并重新编排。
期望行为
当目标环境存在可匹配资源(如同名插件)时,导入应:
实际行为
复现步骤
前置条件
pluginId可能相同,无法体现问题步骤
demo-cross-env-plugin,记录其toolId为A_TOOL_IDdemo-cross-env-plugin)→ 结束;调试通过后导出 YAMLdemo-cross-env-plugin,记录B_TOOL_ID(确认A_TOOL_ID ≠ B_TOOL_ID)现象对照
初步原因分析
导入清洗逻辑位于
WorkflowExportService.cleanNodesForImport/cleanPluginNode:pluginId(toolId) 校验插件是否存在及权限pluginId,并清空inputs/outputs因此「名称一致、ID 不同」的跨环境场景下,绑定必然丢失。
同类仅按 ID 清洗的逻辑也可能影响:
llmId)repoId/repoIds)flowId)dbId)建议方案
pluginName/ 业务 key),优先按稳定标识映射环境信息
v1.1.0优先级
高:跨环境迁移(开发 → 测试 → 生产 / 私有化交付)是高频场景;当前只能手工重编排,成本高且易出错。