feat: add interactive selection dialog to batch installer (#60)

* feat: add interactive selection dialog to batch installer

* feat: improve batch installer selection dialog

* feat: add search and filtering to batch installer dialog

* fix: sync type filter with selected plugins

* fix: sync search results with selected plugins

* feat: add multi-repository batch install support

* fix: clarify single-call multi-repo usage

* feat: add repository filters to selection dialog

* refactor: simplify selection dialog header

* docs: simplify batch installer quick start

* docs: feature batch installer on homepage
This commit is contained in:
Fu-Jie
2026-03-16 15:39:14 +08:00
committed by GitHub
parent f142b32486
commit 8573a0d7b0
16 changed files with 977 additions and 377 deletions

View File

@@ -1,6 +1,6 @@
# Batch Install Plugins from GitHub
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 1.0.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 1.1.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
One-click batch install plugins from GitHub repositories to your OpenWebUI instance.
@@ -8,9 +8,10 @@ One-click batch install plugins from GitHub repositories to your OpenWebUI insta
- **One-Click Install**: Install all plugins with a single command
- **Auto-Update**: Automatically updates previously installed plugins
- **Public GitHub Support**: Install plugins from any public GitHub repository
- **Public GitHub Support**: Install plugins from one or many public GitHub repositories
- **Multi-Type Support**: Supports Pipe, Action, Filter, and Tool plugins
- **Confirmation**: Shows plugin list before installing, allows selective installation
- **Multi-Repository Picker**: Combine multiple repositories in one request and review them in a single grouped dialog
- **Interactive Selection Dialog**: Filter by repository and type, search by keyword, review plugin descriptions, then install only the checked subset
- **i18n**: Supports 11 languages
## Flow
@@ -20,7 +21,7 @@ User Input
┌─────────────────────────────────────┐
│ Discover Plugins from GitHub
│ Discover Plugins from GitHub Repos
│ (fetch file tree + parse .py) │
└─────────────────────────────────────┘
@@ -32,8 +33,8 @@ User Input
┌─────────────────────────────────────┐
│ Show Confirmation Dialog │
│ (list plugins + exclude hint)
│ Show Selection Dialog
│ (repo groups + filters + search)
└─────────────────────────────────────┘
├── [Cancel] → End
@@ -57,49 +58,23 @@ User Input
## Interactive Installation Workflow
Each request handles one repository. To mix repositories, send another request after the previous installation completes.
The `repo` parameter accepts one or more `owner/repo` values separated by commas, semicolons, or new lines.
After plugin discovery and filtering, OpenWebUI opens a browser dialog built with the `execute` event. The dialog merges results from every requested repository, groups them by repository, supports repository tags, type filters, and keyword search, and lets you check exactly which plugins to install before the API calls start.
If one user request mentions multiple repositories, keep them in the same request so the model can pass them into a single tool call.
## Quick Start: Install Popular Collections
Copy any of these prompts and paste them into your chat:
Paste this prompt into your chat:
```
# Install all from my collection (default)
Install all plugins
# Add popular community tools
Install all plugins from iChristGit/OpenWebui-Tools
# Add utility-focused extensions
Install all plugins from Haervwe/open-webui-tools
# Add mixed community implementations
Install all plugins from Classic298/open-webui-plugins
# Add function-based plugins
Install all plugins from suurt8ll/open_webui_functions
# Add OpenRouter pipe integration
Install all plugins from rbb-dev/Open-WebUI-OpenRouter-pipe
Install all plugins from Fu-Jie/openwebui-extensions, iChristGit/OpenWebui-Tools, Haervwe/open-webui-tools, Classic298/open-webui-plugins, suurt8ll/open_webui_functions, rbb-dev/Open-WebUI-OpenRouter-pipe
```
Each line is a separate request. Already installed plugins are automatically updated.
Once the dialog opens, use the repository tags, type filters, and keyword search to narrow the list before installing. Already installed plugins are automatically updated.
## Usage Examples
For more advanced usage patterns:
```
# Filter by plugin type
"Install only tool plugins from iChristGit/OpenWebui-Tools"
"Install only action plugins from Classic298/open-webui-plugins"
# Exclude specific plugins
"Install all plugins from Haervwe/open-webui-tools, exclude_keywords=test,deprecated"
# Install from your own repository
"Install all plugins from your-username/my-plugin-collection"
```
You can replace that repository list with your own collections whenever needed.
## Default Repository
@@ -127,11 +102,11 @@ For other repositories:
| `SKIP_KEYWORDS` | `test,verify,example,template,mock` | Comma-separated keywords to skip |
| `TIMEOUT` | `20` | Request timeout in seconds |
## Confirmation Timeout
## Selection Dialog Timeout
User confirmation dialogs have a default timeout of **2 minutes (120 seconds)**, allowing sufficient time for users to:
The plugin selection dialog has a default timeout of **2 minutes (120 seconds)**, allowing sufficient time for users to:
- Read and review the plugin list
- Make installation decisions
- Check or uncheck the plugins they want
- Handle network delays
## Support

View File

@@ -1,6 +1,6 @@
# Batch Install Plugins from GitHub
**作者:** [Fu-Jie](https://github.com/Fu-Jie) | **版本:** 1.0.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
**作者:** [Fu-Jie](https://github.com/Fu-Jie) | **版本:** 1.1.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
一键将 GitHub 仓库中的插件批量安装到你的 OpenWebUI 实例。
@@ -8,9 +8,10 @@
- 一键安装:单个命令安装所有插件
- 自动更新:自动更新之前安装过的插件
- 公开 GitHub 支持:支持从任何公开 GitHub 仓库安装插件
- 公开 GitHub 支持:支持从一个或多个公开 GitHub 仓库安装插件
- 多类型支持:支持 Pipe、Action、Filter 和 Tool 插件
- 安装确认:安装前显示插件列表,支持选择性安装
- 多仓库选择器:一次请求可合并多个仓库,并在同一个分组对话框中查看
- 交互式选择对话框:先按仓库和类型筛选、按关键词搜索并查看描述信息,再勾选要安装的插件,只安装所选子集
- 国际化:支持 11 种语言
## 流程
@@ -20,7 +21,7 @@
┌─────────────────────────────────────┐
│ 从 GitHub 发现插件
│ 从 GitHub 多仓库发现插件 │
│ (获取文件树 + 解析 .py 文件) │
└─────────────────────────────────────┘
@@ -32,8 +33,8 @@
┌─────────────────────────────────────┐
│ 显示确认对话框 │
│ (插件列表 + 排除提示)
│ 显示选择对话框 │
│ (仓库分组 + 筛选 + 搜索)
└─────────────────────────────────────┘
├── [取消] → 结束
@@ -57,49 +58,23 @@
## 交互式安装工作流
每次请求处理一个仓库。如需混合多个来源,请在上一次安装完成后再发起下一次请求
`repo` 参数现在支持多个 `owner/repo`,可用逗号、分号或换行分隔
在插件发现和过滤完成后OpenWebUI 会通过 `execute` 事件打开浏览器选择对话框。对话框会合并所有目标仓库的结果,按仓库分组展示,并支持仓库标签、类型筛选、关键词搜索和描述查看,再开始调用安装 API。
如果一次用户请求里提到了多个仓库,尽量保持在同一次请求里,让模型把它们合并到一次工具调用中。
## 快速开始:安装热门插件集
复制以下任一提示词,粘贴到你的对话框中:
复制下面这条提示词,粘贴到你的对话框中:
```
# 安装我的默认集合
安装所有插件
# 添加热门社区工具
从 iChristGit/OpenWebui-Tools 安装所有插件
# 添加实用工具扩展
从 Haervwe/open-webui-tools 安装所有插件
# 添加混合社区实现
从 Classic298/open-webui-plugins 安装所有插件
# 添加基于函数的插件
从 suurt8ll/open_webui_functions 安装所有插件
# 添加 OpenRouter 管道集成
从 rbb-dev/Open-WebUI-OpenRouter-pipe 安装所有插件
从 Fu-Jie/openwebui-extensions、iChristGit/OpenWebui-Tools、Haervwe/open-webui-tools、Classic298/open-webui-plugins、suurt8ll/open_webui_functions、rbb-dev/Open-WebUI-OpenRouter-pipe 安装所有插件
```
每一行是一个独立的请求。已安装的插件会自动更新。
弹窗出现后,直接用里面的仓库标签、类型筛选和关键词搜索来缩小范围再安装。已安装的插件会自动更新。
## 使用示例
更多高级用法:
```
# 按插件类型过滤
"从 iChristGit/OpenWebui-Tools 仅安装 tool 插件"
"从 Classic298/open-webui-plugins 仅安装 action 插件"
# 排除特定插件
"从 Haervwe/open-webui-tools 安装所有插件, exclude_keywords=test,deprecated"
# 从你自己的仓库安装
"从 your-username/my-plugin-collection 安装所有插件"
```
需要时,你也可以把这串仓库替换成你自己的插件仓库组合。
## 默认仓库
@@ -127,11 +102,11 @@
| `SKIP_KEYWORDS` | `test,verify,example,template,mock` | 逗号分隔的跳过关键词 |
| `TIMEOUT` | `20` | 请求超时时间(秒)|
## 确认超时时间
## 选择对话框超时时间
用户确认对话框的默认超时时间为 **2 分钟120 秒)**,为用户提供充足的时间来:
插件选择对话框的默认超时时间为 **2 分钟120 秒)**,为用户提供充足的时间来:
- 阅读和查看插件列表
- 做出安装决定
- 勾选或取消勾选想安装的插件
- 处理网络延迟
## 支持

View File

@@ -1,6 +1,6 @@
# Batch Install Plugins from GitHub
| By [Fu-Jie](https://github.com/Fu-Jie) · v1.0.0 | [⭐ Star this repo](https://github.com/Fu-Jie/openwebui-extensions) |
| By [Fu-Jie](https://github.com/Fu-Jie) · v1.1.0 | [⭐ Star this repo](https://github.com/Fu-Jie/openwebui-extensions) |
| :--- | ---: |
| ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&label=%F0%9F%91%A5&style=flat) | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&label=%E2%AD%90&style=flat) | ![top](https://img.shields.io/badge/%F0%9F%8F%86-Top%20%3C1%25-10b981?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_contributions.json&label=%F0%9F%93%A6&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&label=%E2%AC%87%EF%B8%8F&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&label=%F0%9F%92%BE&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&label=%F0%9F%91%81%EF%B8%8F&style=flat) |
@@ -12,9 +12,10 @@ One-click batch install plugins from GitHub repositories to your OpenWebUI insta
- **One-Click Install**: Install all plugins with a single command
- **Auto-Update**: Automatically updates previously installed plugins
- **Public GitHub Support**: Install plugins from any public GitHub repository
- **Public GitHub Support**: Install plugins from one or many public GitHub repositories
- **Multi-Type Support**: Supports Pipe, Action, Filter, and Tool plugins
- **Confirmation**: Shows plugin list before installing, allows selective installation
- **Multi-Repository Picker**: Combine multiple repositories in one request and review them in a single grouped dialog
- **Interactive Selection Dialog**: Filter by repository and type, search by keyword, review plugin descriptions, then install only the checked subset
- **i18n**: Supports 11 languages
## Flow
@@ -24,7 +25,7 @@ User Input
┌─────────────────────────────────────┐
│ Discover Plugins from GitHub
│ Discover Plugins from GitHub Repos
│ (fetch file tree + parse .py) │
└─────────────────────────────────────┘
@@ -36,8 +37,8 @@ User Input
┌─────────────────────────────────────┐
│ Show Confirmation Dialog │
│ (list plugins + exclude hint)
│ Show Selection Dialog
│ (repo groups + filters + search)
└─────────────────────────────────────┘
├── [Cancel] → End
@@ -61,49 +62,23 @@ User Input
## Interactive Installation Workflow
Each request handles one repository. To mix repositories, send another request after the previous installation completes.
The `repo` parameter accepts one or more `owner/repo` values separated by commas, semicolons, or new lines.
After plugin discovery and filtering, OpenWebUI opens a browser dialog built with the `execute` event. The dialog merges results from every requested repository, groups them by repository, supports repository tags, type filters, and keyword search, and lets you check exactly which plugins to install before the API calls start.
If one user request mentions multiple repositories, keep them in the same request so the model can pass them into a single tool call.
## Quick Start: Install Popular Collections
Copy any of these prompts and paste them into your chat:
Paste this prompt into your chat:
```
# Install all from my collection (default)
Install all plugins
# Add popular community tools
Install all plugins from iChristGit/OpenWebui-Tools
# Add utility-focused extensions
Install all plugins from Haervwe/open-webui-tools
# Add mixed community implementations
Install all plugins from Classic298/open-webui-plugins
# Add function-based plugins
Install all plugins from suurt8ll/open_webui_functions
# Add OpenRouter pipe integration
Install all plugins from rbb-dev/Open-WebUI-OpenRouter-pipe
Install all plugins from Fu-Jie/openwebui-extensions, iChristGit/OpenWebui-Tools, Haervwe/open-webui-tools, Classic298/open-webui-plugins, suurt8ll/open_webui_functions, rbb-dev/Open-WebUI-OpenRouter-pipe
```
Each line is a separate request. Already installed plugins are automatically updated.
Once the dialog opens, use the repository tags, type filters, and keyword search to narrow the list before installing. Already installed plugins are automatically updated.
## Usage Examples
For more advanced usage patterns:
```
# Filter by plugin type
"Install only tool plugins from iChristGit/OpenWebui-Tools"
"Install only action plugins from Classic298/open-webui-plugins"
# Exclude specific plugins
"Install all plugins from Haervwe/open-webui-tools, exclude_keywords=test,deprecated"
# Install from your own repository
"Install all plugins from your-username/my-plugin-collection"
```
You can replace that repository list with your own collections whenever needed.
## Default Repository
@@ -131,11 +106,11 @@ For other repositories:
| `SKIP_KEYWORDS` | `test,verify,example,template,mock` | Comma-separated keywords to skip |
| `TIMEOUT` | `20` | Request timeout in seconds |
## Confirmation Timeout
## Selection Dialog Timeout
User confirmation dialogs have a default timeout of **2 minutes (120 seconds)**, allowing sufficient time for users to:
The plugin selection dialog has a default timeout of **2 minutes (120 seconds)**, allowing sufficient time for users to:
- Read and review the plugin list
- Make installation decisions
- Check or uncheck the plugins they want
- Handle network delays
## Support

View File

@@ -1,6 +1,6 @@
# Batch Install Plugins from GitHub
| 作者:[Fu-Jie](https://github.com/Fu-Jie) · v1.0.0 | [⭐ 点个 Star 支持项目](https://github.com/Fu-Jie/openwebui-extensions) |
| 作者:[Fu-Jie](https://github.com/Fu-Jie) · v1.1.0 | [⭐ 点个 Star 支持项目](https://github.com/Fu-Jie/openwebui-extensions) |
| :--- | ---: |
| ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&label=%F0%9F%91%A5&style=flat) | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&label=%E2%AD%90&style=flat) | ![top](https://img.shields.io/badge/%F0%9F%8F%86-Top%20%3C1%25-10b981?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_contributions.json&label=%F0%9F%93%A6&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&label=%E2%AC%87%EF%B8%8F&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&label=%F0%9F%92%BE&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&label=%F0%9F%91%81%EF%B8%8F&style=flat) |
@@ -12,9 +12,10 @@
- 一键安装:单个命令安装所有插件
- 自动更新:自动更新之前安装过的插件
- 公开 GitHub 支持:支持从任何公开 GitHub 仓库安装插件
- 公开 GitHub 支持:支持从一个或多个公开 GitHub 仓库安装插件
- 多类型支持:支持 Pipe、Action、Filter 和 Tool 插件
- 安装确认:安装前显示插件列表,支持选择性安装
- 多仓库选择器:一次请求可合并多个仓库,并在同一个分组对话框中查看
- 交互式选择对话框:先按仓库和类型筛选、按关键词搜索并查看描述信息,再勾选要安装的插件,只安装所选子集
- 国际化:支持 11 种语言
## 流程
@@ -24,7 +25,7 @@
┌─────────────────────────────────────┐
│ 从 GitHub 发现插件
│ 从 GitHub 多仓库发现插件 │
│ (获取文件树 + 解析 .py 文件) │
└─────────────────────────────────────┘
@@ -36,8 +37,8 @@
┌─────────────────────────────────────┐
│ 显示确认对话框 │
│ (插件列表 + 排除提示)
│ 显示选择对话框 │
│ (仓库分组 + 筛选 + 搜索)
└─────────────────────────────────────┘
├── [取消] → 结束
@@ -61,49 +62,23 @@
## 交互式安装工作流
每次请求处理一个仓库。如需混合多个来源,请在上一次安装完成后再发起下一次请求
`repo` 参数现在支持多个 `owner/repo`,可用逗号、分号或换行分隔
在插件发现和过滤完成后OpenWebUI 会通过 `execute` 事件打开浏览器选择对话框。对话框会合并所有目标仓库的结果,按仓库分组展示,并支持仓库标签、类型筛选、关键词搜索和描述查看,再开始调用安装 API。
如果一次用户请求里提到了多个仓库,尽量保持在同一次请求里,让模型把它们合并到一次工具调用中。
## 快速开始:安装热门插件集
复制以下任一提示词,粘贴到你的对话框中:
复制下面这条提示词,粘贴到你的对话框中:
```
# 安装我的默认集合
安装所有插件
# 添加热门社区工具
从 iChristGit/OpenWebui-Tools 安装所有插件
# 添加实用工具扩展
从 Haervwe/open-webui-tools 安装所有插件
# 添加混合社区实现
从 Classic298/open-webui-plugins 安装所有插件
# 添加基于函数的插件
从 suurt8ll/open_webui_functions 安装所有插件
# 添加 OpenRouter 管道集成
从 rbb-dev/Open-WebUI-OpenRouter-pipe 安装所有插件
从 Fu-Jie/openwebui-extensions、iChristGit/OpenWebui-Tools、Haervwe/open-webui-tools、Classic298/open-webui-plugins、suurt8ll/open_webui_functions、rbb-dev/Open-WebUI-OpenRouter-pipe 安装所有插件
```
每一行是一个独立的请求。已安装的插件会自动更新。
弹窗出现后,直接用里面的仓库标签、类型筛选和关键词搜索来缩小范围再安装。已安装的插件会自动更新。
## 使用示例
更多高级用法:
```
# 按插件类型过滤
"从 iChristGit/OpenWebui-Tools 仅安装 tool 插件"
"从 Classic298/open-webui-plugins 仅安装 action 插件"
# 排除特定插件
"从 Haervwe/open-webui-tools 安装所有插件, exclude_keywords=test,deprecated"
# 从你自己的仓库安装
"从 your-username/my-plugin-collection 安装所有插件"
```
需要时,你也可以把这串仓库替换成你自己的插件仓库组合。
## 默认仓库
@@ -131,11 +106,11 @@
| `SKIP_KEYWORDS` | `test,verify,example,template,mock` | 逗号分隔的跳过关键词 |
| `TIMEOUT` | `20` | 请求超时时间(秒)|
## 确认超时时间
## 选择对话框超时时间
用户确认对话框的默认超时时间为 **2 分钟120 秒)**,为用户提供充足的时间来:
插件选择对话框的默认超时时间为 **2 分钟120 秒)**,为用户提供充足的时间来:
- 阅读和查看插件列表
- 做出安装决定
- 勾选或取消勾选想安装的插件
- 处理网络延迟
## 支持

View File

@@ -4,6 +4,6 @@ OpenWebUI native Tool plugins that can be used across models.
## Available Tool Plugins
- [Batch Install Plugins from GitHub](batch-install-plugins-tool.md) (v1.0.0) - One-click batch install plugins from GitHub repositories with confirmation and multi-language support.
- [Batch Install Plugins from GitHub](batch-install-plugins-tool.md) (v1.1.0) - One-click batch install plugins from GitHub repositories with an interactive selection dialog and multi-language support.
- [OpenWebUI Skills Manager Tool](openwebui-skills-manager-tool.md) (v0.3.0) - Simple native skill management (`list/show/install/create/update/delete`).
- [Smart Mind Map Tool](smart-mind-map-tool.md) (v1.0.0) - Intelligently analyzes text content and proactively generates interactive mind maps to help users structure and visualize knowledge.

View File

@@ -4,6 +4,6 @@
## 可用 Tool 插件
- [Batch Install Plugins from GitHub](batch-install-plugins-tool.zh.md) (v1.0.0) - 一键从 GitHub 仓库批量安装插件,支持确认和多语言。
- [Batch Install Plugins from GitHub](batch-install-plugins-tool.zh.md) (v1.1.0) - 一键从 GitHub 仓库批量安装插件,支持交互式选择对话框和多语言。
- [OpenWebUI Skills 管理工具](openwebui-skills-manager-tool.zh.md) (v0.3.0) - 简化技能管理(`list/show/install/create/update/delete`)。
- [智能思维导图工具 (Smart Mind Map Tool)](smart-mind-map-tool.zh.md) (v1.0.0) - 智能分析文本内容并主动生成交互式思维导图,帮助用户结构化与可视化知识。