跨环境导入工作流后,即使插件名称一致也需手工重新编排

Author: somunslotus1Created Aug 7, 2026Updated Aug 18, 2026

问题摘要

相同 Astron Agent 版本 的两套独立环境中,从环境 A 导出工作流(YAML)并导入到环境 B 后,即使环境 B 已存在同名插件,导入后的工作流仍无法直接调试/发布使用,必须手工重新选择插件并重新编排。

期望行为

当目标环境存在可匹配资源(如同名插件)时,导入应:

  1. 自动将节点引用映射到目标环境对应的资源 ID
  2. 导入后可直接调试、保存、发布,无需手工重连
  3. 若无法自动映射,应明确提示哪些节点失败,而不是静默失效

实际行为

  1. 从环境 A 导出工作流 YAML
  2. 在环境 B 创建同名插件(名称相同,ID 不同)
  3. 将 YAML 导入环境 B
  4. 插件节点绑定丢失,输入/输出常被清空
  5. 必须手工重新选择插件并重新编排后才能使用

复现步骤

前置条件

  • 两套独立部署(不同业务库 / 不同资源 ID),Astron 版本相同
  • 两端均可创建插件与工作流
  • 不能共用同一业务库,否则 pluginId 可能相同,无法体现问题

步骤

  1. 环境 A:创建插件,名称固定为 demo-cross-env-plugin,记录其 toolIdA_TOOL_ID
  2. 环境 A:新建工作流,节点至少包含:开始 → 插件(demo-cross-env-plugin)→ 结束;调试通过后导出 YAML
  3. 环境 B:创建同名插件 demo-cross-env-plugin,记录 B_TOOL_ID(确认 A_TOOL_ID ≠ B_TOOL_ID
  4. 环境 B:导入上述 YAML
  5. 打开导入后的工作流,不要重新选择插件,检查插件节点状态
  6. 直接点击调试/试运行,记录失败现象
  7. 再手工重选同名插件,确认重编排后可恢复

现象对照

检查项 期望 实际
插件绑定 自动绑定环境 B 同名插件 绑定丢失 / 需重选
节点输入输出 保留 常被清空
直接调试/发布 可用 失败,需手工重编排

初步原因分析

导入清洗逻辑位于 WorkflowExportService.cleanNodesForImport / cleanPluginNode

  • 仅按 pluginIdtoolId 校验插件是否存在及权限
  • 目标环境找不到相同 ID(或无权访问)时:移除 pluginId,并清空 inputs / outputs
  • 没有按插件名称做回退映射

因此「名称一致、ID 不同」的跨环境场景下,绑定必然丢失。

同类仅按 ID 清洗的逻辑也可能影响:

  • 大模型节点(llmId
  • 知识库节点(repoId / repoIds
  • 子工作流节点(flowId
  • 数据库节点(dbId

建议方案

  1. 短期:导入时先按 ID 匹配;ID 不存在时,按名称在目标环境唯一匹配并回写新 ID
  2. 中期:导出增加稳定迁移字段(如 pluginName / 业务 key),优先按稳定标识映射
  3. 体验:导入完成后给出报告:已自动映射 N 个节点 / 需手工处理 M 个节点

环境信息

  • Astron Agent 版本:v1.1.0
  • 两端是否同版本:是
  • 是否同名插件、不同 ID:是
  • 主要涉及节点:插件节点(模型/知识库等可能同类问题)

优先级

:跨环境迁移(开发 → 测试 → 生产 / 私有化交付)是高频场景;当前只能手工重编排,成本高且易出错。