Agent Node fails with PluginNotFoundError when using Workflow-as-Tool after upgrade from 1.9.1 to 1.12.1

这是 Dify 1.12.1 的已知 Bug,Agent 节点使用工作流工具(Workflow-as-Tool)时,因工作流图 JSON 中缺少 type 字段,工具被错误归类为 BUILT_IN 插件并在插件守护进程中查找失败。优先排查工作流图 JSON 中该工具的配置是否包含 type: wor

快速结论:这是 Dify 1.12.1 的已知 Bug,Agent 节点使用工作流工具(Workflow-as-Tool)时,因工作流图 JSON 中缺少 type 字段,工具被错误归类为 BUILT_IN 插件并在插件守护进程中查找失败。优先排查工作流图 JSON 中该工具的配置是否包含 type: workflow 字段。

适用环境:Dify 1.12.1,Docker Compose 自托管部署;影响所有使用工作流工具的 Agent 节点(包括已有和新建),不影响 Tool 节点或 MarketPlace 插件。

最快修复方案:升级到最新 main 代码(Issue 中已确认前端和迁移逻辑已修复,云服务已部署热修复,刷新浏览器即可)。如果暂时无法升级,可优先尝试手动修改数据库中受影响的 Agent 节点工作流图 JSON,为工具配置补上 type: workflow 字段。

注意事项:手动修改数据库属于非官方方案,Issue 中提到没有官方脚本,修改前务必备份数据库;Issue 中提到的 SQL 补丁方案(Dosu 评论)未被原始 Issue 提交者明确验证,仅为建议方案。

问题场景

用户在 Dify 1.9.1 中配置了多个工作流工具(Workflow-as-Tool),并在 Agent 节点(FunctionCalling 策略)中引用这些工具;将 Dify 升级到 1.12.1(Docker Compose 方式)并执行插件迁移命令后,运行包含 Agent 节点的工作流时触发 PluginNotFoundError 错误。

报错原文

PluginNotFoundError: plugin not found
Agent Node fails with PluginNotFoundError when using Workflow-as-Tool after upgrade from 1.9.1 to 1.12.1

原因分析

该问题根因位于 api/core/workflow/nodes/agent/agent_node.py 第 262 行:

provider_type = ToolProviderType(tool.get("type", ToolProviderType.BUILT_IN))

当工作流工具通过 UI 保存到 Agent 节点配置时,工作流图 JSON 中工具的 type 字段未被写入(缺失),导致代码默认使用 ToolProviderType.BUILT_IN 分支,进而通过 get_builtin_provider()get_plugin_provider() 在插件守护进程中查找工具。由于工作流工具注册在 tool_workflow_providers 表中(而非插件守护进程的 tool_installations 表中),插件守护进程查找必然失败并返回 plugin not found

正确执行路径应走 tool_manager.py 第 325 行的 ToolProviderType.WORKFLOW 分支,直接查询 tool_workflow_providers 表。这是一个前端 Bug(保存时未写入 type 字段)以及迁移逻辑缺失导致的,后端代码在 type 缺失时仍默认 BUILT_IN,问题在更新或修补数据前持续存在。

环境排查

  • 确认 Dify 版本为 1.12.1(Docker Compose 自托管部署)。
  • 升级前 Dify 版本为 1.9.1,存在多个已发布为工具的工作流,且 Agent 节点引用了这些工作流工具。
  • 确认工具存在于 tool_workflow_providers 表(Issue 中为 21 条记录),而插件守护进程的 tool_installations 表仅有 10 条 Marketplace 插件记录(即工作流工具未注册到插件守护进程)。
  • 检查工作流图 JSON 中 agent_parameters.tools.value[] 里的工具配置是否缺少 type 字段(预期为 "type": "workflow")。

解决步骤

  1. 首选:升级到最新 main 代码。Issue 中已确认前端保存逻辑和迁移逻辑已在 main 分支修复;如果使用云服务,热修复已部署,刷新浏览器即可生效。
  2. 临时方案(可优先尝试,需谨慎):如果暂时无法升级,需要手动修补数据库中所有受影响的工作流图 JSON,为每个受影响的工具配置补上 "type": "workflow" 字段。
    1. 先通过 SQL 查询定位受影响的工作流图:
      SELECT graph FROM workflows w JOIN apps a ON a.workflow_id = w.id WHERE a.id = '<app_id>';
    2. 找到 agent_parameters.tools.value[] 中缺少 type 字段的工具配置,手动补上 "type": "workflow"
    3. 注意:Issue 中未提供可直接执行的完整 UPDATE 脚本,Dosu 评论提到的 SQL 补丁方案只是建议,需要你根据自己的数据结构和实际字段情况编写。
  3. 验证修复效果:修改后重新运行包含 Agent 节点的工作流,确认不再报 PluginNotFoundError,Agent 节点能正确调用工作流工具并通过 ToolProviderType.WORKFLOW 路径执行。

验证方法

修改后重新运行工作流,确认 Agent 节点不再抛 PluginNotFoundError;同时检查插件守护进程日志,不应再出现 record not found 或插件查找失败的错误。也可在数据库中确认工作流图 JSON 中每个工作流工具配置都包含 "type": "workflow" 字段。

参考来源

langgenius/dify #32149

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18422

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注