Skip to content

About

Dify 插件离线打包导入工具 - 从联网环境打包插件为离线包,导入到内网 Dify 服务器安装

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Dify Plugin Offline Tool (Dify插件离线打包导入工具)

一个可视化的桌面工具,用于在外网环境下载 Dify 插件并打包为离线版本,然后在内网环境导入到 Dify 服务器中。

功能特性

  • 🔍 插件市场浏览 - 搜索和浏览 Dify Marketplace 上的所有插件
  • 📦 离线打包 - 将插件重新打包为离线可用版本(预下载所有 Python 依赖)
  • 🚀 一键导入 - 将离线插件包批量导入到内网 Dify 服务器
  • 🖥️ 可视化界面 - 现代化的 Web GUI,操作简单直观
  • 🔄 跨平台支持 - 支持 Linux / macOS / Windows
  • 📡 双认证模式 - 支持 Console API 和 Plugin Daemon API 两种认证方式

工作流程

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│   外网环境       │     │   数据传输        │     │   内网环境       │
│                 │     │                  │     │                 │
│ 1. 浏览插件市场  │────▶│ 2. 导出离线包     │────▶│ 3. 导入到内网Dify│
│    下载插件      │     │    .difypkg      │     │    服务器        │
│ 4. 离线打包     │     │                  │     │                 │
└─────────────────┘     └──────────────────┘     └─────────────────┘

快速开始

方式一:直接运行(推荐)

# 1. 克隆项目
git clone https://github.com/yourname/dify-plugin-tool.git
cd dify-plugin-tool

# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动工具
python start.py

# 工具将在 http://127.0.0.1:5678 启动,并自动打开浏览器

方式二:桌面应用模式

# 安装 pywebview
pip install pywebview

# 启动桌面应用
python start.py --desktop

方式三:打包为可执行文件

# 安装 PyInstaller
pip install pyinstaller

# 打包
pyinstaller --onefile --name "DifyPluginTool" \
    --add-data "templates:templates" \
    --add-data "static:static" \
    --hidden-import=core.plugin_tool \
    start.py

# 生成的可执行文件在 dist/ 目录下

使用指南

第一步:在外网环境下载插件

  1. 启动工具后,进入 「插件市场」 页面
  2. 搜索需要的插件,点击下载按钮
  3. 下载的插件保存在临时目录中

第二步:离线打包

  1. 进入 「离线打包」 页面
  2. 选择已下载的插件(或上传本地的 .difypkg 文件)
  3. 配置目标平台(如内网服务器是 Linux x86_64)
  4. 选择合适的 PyPI 镜像源加速下载
  5. 点击 「开始离线打包」
  6. 打包完成后,离线插件包保存在导出目录中

第三步:传输到内网环境

将导出目录中的 .difypkg 文件通过安全通道(U盘、堡垒机等)传输到内网环境。

第四步:在内网环境导入

  1. 在内网电脑上启动工具
  2. 进入 「导入部署」 页面
  3. 配置内网 Dify 服务器的地址和认证信息
  4. 测试连接成功后,选择要导入的离线插件包
  5. 点击 「批量导入到目标服务器」

服务器配置说明

Console API 模式(推荐)

  • 服务器地址: Dify 控制台的地址,如 http://192.168.1.100:80
  • API Token: 在浏览器中登录 Dify 控制台,打开开发者工具(F12),在 Network 面板中找到任意请求,复制 Authorization 请求头中的 Bearer Token

Plugin Daemon API 模式

  • 服务器地址: Plugin Daemon 的地址,通常与 Dify API 相同
  • Server Key: Dify 环境变量 PLUGIN_DAEMON_SERVER_KEY 的值

离线打包原理

本工具的核心原理参考了 dify-plugin-repackaging 项目:

  1. 解压 .difypkg - 插件包本质是 ZIP 格式
  2. 下载 Python 依赖 - 使用 pip download 将所有依赖下载为 .whl 文件
  3. 内嵌 wheel 包 - 将下载的 wheel 文件放入 wheels/ 目录
  4. 修改 requirements.txt - 添加 --no-index --find-links=./wheels/ 实现离线安装
  5. 重新打包 - 将修改后的内容重新打包为 .difypkg

注意事项

  1. 签名验证: 内网 Dify 服务器需要设置 FORCE_VERIFYING_SIGNATURE=false 才能安装重新打包的插件
  2. 包大小限制: 如果插件包较大,需要调整 Dify 的 PLUGIN_MAX_PACKAGE_SIZE 和 Nginx 的 NGINX_CLIENT_MAX_BODY_SIZE
  3. Python 版本: Dify 插件运行时使用 Python 3.12,跨平台打包时工具会自动指定 Python 3.12
  4. uv 工具: 推荐安装 uv 以获得更好的依赖处理能力

技术栈

  • 后端: Python + Flask
  • 前端: HTML/CSS/JavaScript (原生)
  • 桌面模式: PyWebView (可选)
  • 打包工具: PyInstaller (可选)

命令行参数

python start.py [OPTIONS]

选项:
  --host TEXT       监听地址 (默认: 127.0.0.1)
  --port INTEGER    监听端口 (默认: 5678)
  --debug           启用调试模式
  --no-browser      不自动打开浏览器
  --desktop         桌面应用模式 (需要 pywebview)

项目结构

dify-plugin-tool/
├── app.py                  # Flask Web 后端
├── start.py                # 启动入口
├── requirements.txt        # Python 依赖
├── core/
│   └── plugin_tool.py      # 核心业务逻辑
├── templates/
│   └── index.html          # 前端页面
├── static/
│   ├── css/
│   │   └── style.css       # 样式文件
│   └── js/
│       └── app.js          # 前端逻辑
└── README.md               # 项目文档

致谢

License

MIT License

About

Dify 插件离线打包导入工具 - 从联网环境打包插件为离线包,导入到内网 Dify 服务器安装

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages