Dify 自建版接入 Notion 知识库完整排错记录

 

Dify 自建版接入 Notion 知识库完整排错记录



从 provider not found 到最终成功,在自建 Dify 环境中启用 Notion 知识库时,遇到一个经典错误:

provider not found

尤其是在使用 Docker Compose 自行部署的情况下,这个问题更常见。本文记录我从发现问题、逐步排查,到最终成功接入 Notion 的完整流程,希望对遇到相似问题的人有帮助。


一、问题背景

使用的是 Docker Compose 部署的 Dify,API 和 WEB 的版本都是最新的:

  • dify-api:1.9.2
  • dify-web:1.9.2

但在 Dify 知识库中尝试挂接 Notion 时一直提示:

provider not found

即便已经在 .env 中设置了 Notion 的配置项,也把 Integration Token 配置好了,还是无法正常挂接。

二、初步排查:确认服務狀態

我首先查看了当前正在运行的容器:

sudo docker compose ps

输出如下:

docker-plugin_daemon-1   langgenius/dify-plugin-daemon:0.3.3-local
docker-api-1             langgenius/dify-api:1.9.2
docker-web-1             langgenius/dify-web:1.9.2
...

这里一个非常关键的点出现了:

plugin_daemon 的版本是:0.3.3-local(本地构建版)

而 API / WEB / WORKER 已经是 1.9.2 版本。

Version mismatch(版本不匹配)是根本问题

三、深入排查:查看 plugin-daemon 日志

我查看 Notion 相关日志:

sudo docker compose logs plugin_daemon --tail=200 | grep notion

输出表明 Notion 插件正常加载:

new plugin logged in: langgenius/notion_datasource:0.1.13
plugin langgenius/notion_datasource:0.1.13 started

这证明 plugin_daemon 是在运行插件的,并没有挂掉。

但是,因为 plugin-daemon 是 0.3.3-local,它属于非常老的版本,而 Notion Provider 是后期才加入的新插件。

于是导致:

  • API 1.9.x → 支持 Notion 数据源插件
  • plugin-daemon 0.3.3 → 不完全支持/不兼容
  • 知识库挂接 → 报 provider not found

这就解释了为什么插件“看似启动了”,但知识库仍然无法导入 Notion。

四、关键原因:版本体系是独立的

这一点非常重要:

组件版本体系
API / WEB / WORKER1.x 系列
plugin-daemon0.x 系列(独立发布)
notion_datasource 插件0.x 系列

因此:

  • plugin-daemon 不随 API 升级
  • plugin-daemon:1.9.2 这种镜像不存在
  • 使用过老的 plugin-daemon 就会出现 provider 找不到

尝试 docker compose pull 时出现:

manifest for langgenius/dify-plugin-daemon:1.9.2 not found

这进一步证明 plugin-daemon 根本没有对应的 1.x 版本。

五、解决方案:升级 plugin-daemon 到最新 0.x 正式版

最关键的一步,就是在 docker-compose.yml 中把 plugin-daemon 的镜像改成最新的版本。

例如:

plugin_daemon:
  image: langgenius/dify-plugin-daemon:0.4.3

或使用最新版:

plugin_daemon:
  image: langgenius/dify-plugin-daemon:latest

之后执行:

sudo docker compose pull
sudo docker compose down
sudo docker compose up -d

更新后的 plugin-daemon 会自动加载最新的 datasource 插件,包括:

  • langgenius/notion_datasource
  • langgenius/notion

并完全兼容 API 1.9.x。

六、完成插件配置(否则仍然无法导入)

插件升级成功后,还需要进入 Dify 后台完成配置:

路径:

Dify 控制台 → Plugins(扩展) → Notion Data Source → Configure

必须填写:

  • Integration Type: internal
  • Notion Internal Secret: secret_xxxxxxxx

保存。

⚠ 这是插件自己的配置,与 .env 无关,也不是在知识库里填。

七、创建新的知识库(重要)

最后,再在知识库中新建并选择:

✔ Notion Data Source(插件)
❌ 不要选择旧的 “Notion”(那是历史遗留项)

填写 Page ID → 测试连接 → 导入成功。

八、总结:整个问题的核心点

经过完整排查,我得出了这次问题的最终本质原因:

API / WEB 升级到了 1.9.2,但 plugin-daemon 仍然是旧版本 0.3.3-local。

导致:

  • Notion 插件无法兼容
  • provider not found
  • 无论怎么填 Token 或 Page ID 都无法正常挂接

修复方式非常简单:

把 plugin-daemon 升级到最新版本即可

九、最后的工作指令(可直接粘贴)

1. 编辑 compose 文件:

plugin_daemon:
  image: langgenius/dify-plugin-daemon:0.4.3

2. 重启:

sudo docker compose pull
sudo docker compose down
sudo docker compose up -d

3. 配置插件:

Dify → Plugins → Notion Data Source → Configure

4. 新建知识库(必须使用插件版 Notion Data Source)

完结:现在拥有完全可复现的解决方案

这一整套排查过程从:

  • 初始报错
  • 容器检查
  • 版本比对
  • 插件日志确认
  • 到最终升级修复

油管:https://youtu.be/zv-qZ3d6nWw


留言