快速结论:这是 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")。
解决步骤
- 首选:升级到最新 main 代码。Issue 中已确认前端保存逻辑和迁移逻辑已在 main 分支修复;如果使用云服务,热修复已部署,刷新浏览器即可生效。
- 临时方案(可优先尝试,需谨慎):如果暂时无法升级,需要手动修补数据库中所有受影响的工作流图 JSON,为每个受影响的工具配置补上
"type": "workflow"字段。- 先通过 SQL 查询定位受影响的工作流图:
SELECT graph FROM workflows w JOIN apps a ON a.workflow_id = w.id WHERE a.id = '<app_id>'; - 找到
agent_parameters.tools.value[]中缺少type字段的工具配置,手动补上"type": "workflow"。 - 注意:Issue 中未提供可直接执行的完整 UPDATE 脚本,Dosu 评论提到的 SQL 补丁方案只是建议,需要你根据自己的数据结构和实际字段情况编写。
- 先通过 SQL 查询定位受影响的工作流图:
- 验证修复效果:修改后重新运行包含 Agent 节点的工作流,确认不再报
PluginNotFoundError,Agent 节点能正确调用工作流工具并通过ToolProviderType.WORKFLOW路径执行。
验证方法
修改后重新运行工作流,确认 Agent 节点不再抛 PluginNotFoundError;同时检查插件守护进程日志,不应再出现 record not found 或插件查找失败的错误。也可在数据库中确认工作流图 JSON 中每个工作流工具配置都包含 "type": "workflow" 字段。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


