# Batch Install Plugins from GitHub

**作者:** [Fu-Jie](https://github.com/Fu-Jie) | **版本:** 1.1.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)

一键将 GitHub 仓库中的插件批量安装到你的 OpenWebUI 实例。

## 主要功能

- 一键安装：单个命令安装所有插件
- 自动更新：自动更新之前安装过的插件
- 公开 GitHub 支持：支持从一个或多个公开 GitHub 仓库安装插件
- 多类型支持：支持 Pipe、Action、Filter 和 Tool 插件
- 多仓库选择器：一次请求可合并多个仓库，并在同一个分组对话框中查看
- 交互式选择对话框：先按仓库和类型筛选、按关键词搜索并查看描述信息，再勾选要安装的插件，只安装所选子集
- 国际化：支持 11 种语言

## 流程

```
用户输入
    │
    ▼
┌─────────────────────────────────────┐
│  从 GitHub 多仓库发现插件            │
│  (获取文件树 + 解析 .py 文件)        │
└─────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────┐
│  按类型和关键词过滤                  │
│  (tool/filter/pipe/action)         │
└─────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────┐
│  显示选择对话框                      │
│  (仓库分组 + 筛选 + 搜索)            │
└─────────────────────────────────────┘
    │
    ├── [取消] → 结束
    │
    ▼
┌─────────────────────────────────────┐
│  安装到 OpenWebUI                   │
│  (更新或创建每个插件)                │
└─────────────────────────────────────┘
    │
    ▼
   完成
```

## 使用方法

1. 打开 OpenWebUI，进入 **Workspace > Tools**
2. 从市场安装 **Batch Install Plugins from GitHub**
3. 为你的模型/对话启用此工具
4. 让模型调用工具来安装插件

## 交互式安装工作流

`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、Classic298/open-webui-plugins 安装所有插件
```

你可以直接使用任意一行，也可以在一次请求里组合多个仓库。如果想安装多个仓库的插件，优先使用一条合并后的请求，而不是分成多行单独发送。已安装的插件会自动更新。

## 使用示例

更多高级用法：

```
# 一次请求组合多个仓库
"从 Fu-Jie/openwebui-extensions、iChristGit/OpenWebui-Tools 安装所有插件"

# 按插件类型过滤
"从 iChristGit/OpenWebui-Tools 仅安装 tool 插件"
"从 Classic298/open-webui-plugins、Haervwe/open-webui-tools 仅安装 action 插件"

# 排除特定插件
"从 Haervwe/open-webui-tools、Classic298/open-webui-plugins 安装所有插件, exclude_keywords=test,deprecated"

# 从你自己的仓库安装
"从 your-username/my-plugin-collection 安装所有插件"
```

## 默认仓库

未指定仓库时，工具会使用 `Fu-Jie/openwebui-extensions`（我的个人合集）。你也可以在同一次请求里把它和其他仓库一起传入。

## 插件检测规则

### Fu-Jie/openwebui-extensions（严格模式）

对于默认仓库，工具会采用更严格的筛选规则：
1. 包含 `class Tools:`、`class Filter:`、`class Pipe:` 或 `class Action:` 的 `.py` 文件
2. Docstring 中包含 `title:`、`description:` 和 **`openwebui_id:`** 元数据
3. 文件名不能以 `_cn` 结尾

### 其他公开 GitHub 仓库

其他仓库的插件必须满足：
1. 包含 `class Tools:`、`class Filter:`、`class Pipe:` 或 `class Action:` 的 `.py` 文件
2. Docstring 中包含 `title:` 和 `description:` 字段

## 配置（Valves）

| 参数 | 默认值 | 描述 |
| --- | --- | --- |
| `SKIP_KEYWORDS` | `test,verify,example,template,mock` | 逗号分隔的跳过关键词 |
| `TIMEOUT` | `20` | 请求超时时间（秒）|

## 选择对话框超时时间

插件选择对话框的默认超时时间为 **2 分钟（120 秒）**，为用户提供充足的时间来：
- 阅读和查看插件列表
- 勾选或取消勾选想安装的插件
- 处理网络延迟

## 支持

⭐ 如果这个插件对你有帮助，欢迎到 [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) 点个 Star，这将是我持续改进的动力，感谢支持。
