Compare commits

...

36 Commits

Author SHA1 Message Date
fujie
a7b244602f feat(pipe): release v0.6.2 - full-lifecycle file agent support 2026-02-10 14:55:16 +08:00
github-actions[bot]
3343e73848 chore: update community stats - followers increased (215 -> 216) 2026-02-10 04:51:12 +00:00
github-actions[bot]
7ab3e51d6f chore: update community stats - followers increased (214 -> 215) 2026-02-10 03:11:20 +00:00
github-actions[bot]
303d21c73d chore: update community stats - followers increased (213 -> 214) 2026-02-09 21:18:32 +00:00
github-actions[bot]
054af87e6e chore: update community stats - points increased (261 -> 262), followers increased (212 -> 213) 2026-02-09 19:34:12 +00:00
github-actions[bot]
991570d025 chore: update community stats - plugin version updated 2026-02-09 17:24:09 +00:00
fujie
5a5261d184 chore(release): bump github-copilot-sdk to 0.6.1 and update READMEs/CHANGELOG 2026-02-10 01:04:13 +08:00
fujie
8cdc7723d2 docs(pipes): update github-copilot-sdk README version to 0.6.1 2026-02-10 01:04:02 +08:00
github-actions[bot]
a167f51026 chore: update community stats - followers increased (211 -> 212) 2026-02-09 15:25:46 +00:00
fujie
03ff69f9e0 docs: synchronize README_CN.md with the latest premium layout and market links 2026-02-09 22:12:21 +08:00
fujie
62c69a9a41 fix: restore <b> tags in summary for proper rendering on GitHub 2026-02-09 22:09:14 +08:00
fujie
9bf2a5d2a2 docs: link Star Features titles to OpenWebUI Community market 2026-02-09 22:07:56 +08:00
fujie
13aed46c05 docs: shorten community market badges to Get-Market for better visual balance 2026-02-09 22:06:37 +08:00
fujie
02a1668979 docs: add direct Community Market download badges to Star Features 2026-02-09 22:04:46 +08:00
fujie
9760ccb243 style: silence MD033 lint errors by wrapping with markdownlint-disable comments 2026-02-09 22:00:45 +08:00
fujie
e2c705fe15 style: reduce HTML elements in README.md collapsible sections and fix summary bold 2026-02-09 21:59:43 +08:00
fujie
37c7bf73c0 style: fix table formatting lint errors in README.md 2026-02-09 21:58:55 +08:00
fujie
447e791ab6 style: fix lint global errors and synchronize stats generator 2026-02-09 21:58:27 +08:00
fujie
cde685a364 docs: synchronize project contents with disk and add missing filters 2026-02-09 21:55:54 +08:00
fujie
b00206b063 docs: implement collapsible project content layout in home README 2026-02-09 21:53:47 +08:00
fujie
e0a838e512 docs: finalize home README with 5 star features and BYOK highlight (pure English) 2026-02-09 21:51:36 +08:00
fujie
b9f4f5f1d6 chore: update project README with star feature highlight (English only) 2026-02-09 21:47:54 +08:00
github-actions[bot]
c1afd1fa23 chore: update community stats - points increased (259 -> 261), followers increased (210 -> 211) 2026-02-09 13:37:24 +00:00
Jeff
eaeaadaf12 Merge pull request #39 from Fu-Jie/add-abaroni-contributor
chore: add @abaroni as contributor
2026-02-09 20:27:07 +08:00
fujie
ee70c6629e chore: add @abaroni as contributor (ideas) 2026-02-09 20:26:27 +08:00
github-actions[bot]
692971c93c chore: update community stats - new plugin added (20 -> 21), plugin version updated 2026-02-09 12:25:10 +00:00
fujie
e17818bf6c chore: re-trigger release for v0.6.0 2026-02-09 19:54:49 +08:00
fujie
c5c9fd9d57 fix(ci): fix shell script error when commit messages contain backticks 2026-02-09 19:53:23 +08:00
fujie
5c9875d390 feat: add openwebui_id to the GitHub Copilot SDK files filter plugin metadata. 2026-02-09 19:48:41 +08:00
fujie
9185f88d40 feat: release github-copilot-sdk v0.6.0 and files-filter v0.1.2 2026-02-09 19:45:23 +08:00
github-actions[bot]
1fcad993ea chore: update community stats - followers increased (208 -> 210) 2026-02-09 03:10:29 +00:00
github-actions[bot]
1594ea3a20 chore: update community stats - followers increased (207 -> 208) 2026-02-09 00:44:14 +00:00
github-actions[bot]
ee681ddad9 chore: update community stats - followers increased (206 -> 207) 2026-02-08 21:11:27 +00:00
github-actions[bot]
881597fd51 chore: update community stats - followers increased (205 -> 206) 2026-02-08 07:21:06 +00:00
github-actions[bot]
5772b1c65f chore: update community stats - plugin version updated, points increased (258 -> 259) 2026-02-08 00:53:22 +00:00
fujie
3d4b4b96e8 fix(docs): Repair broken valves table in README 2026-02-08 08:33:02 +08:00
40 changed files with 4669 additions and 3068 deletions

View File

@@ -4,7 +4,7 @@ description: OpenWebUI Plugin Development & Release Workflow
# OpenWebUI Plugin Development Workflow # OpenWebUI Plugin Development Workflow
This workflow outlines the standard process for developing, documenting, and releasing plugins for OpenWebUI, ensuring compliance with project standards and CI/CD requirements. This workflow outlines the standard process for developing, documenting, and releasing plugins for OpenWebUI. **Crucially, the default goal of this workflow is "Preparation" (updating all relevant files) rather than automatic "Submission" (git commit/push), unless a release is explicitly requested.**
## 1. Development Standards ## 1. Development Standards
@@ -45,8 +45,12 @@ When adding or updating a plugin, you **MUST** update the following documentatio
### Plugin Directory ### Plugin Directory
- `README.md`: Update version, description, and usage. **Explicitly describe new features in a prominent position at the beginning.** - `README.md`: Update version, description, and usage.
- `README_CN.md`: Update version, description, and usage. **Explicitly describe new features in a prominent position at the beginning.** - **Key Capabilities**: **MUST** include ALL core functionalities and features. Do not only list new features in "What's New".
- **What's New**: Explicitly describe only the latest changes/updates in a prominent position at the beginning. This section is dynamic and changes with versions.
- `README_CN.md`: Update version, description, and usage.
- **核心功能 (Key Capabilities)**: **必须**包含所有核心功能和特性,不能只在 "What's New" 中列出。
- **最新更新 (What's New)**: 在开头显眼位置明确描述最新的更改/更新。此部分是动态的,随版本变化。
### Global Documentation (`docs/`) ### Global Documentation (`docs/`)
@@ -73,7 +77,9 @@ Reference: `.github/workflows/release.yml`
- **When to Bump**: Only update the version when: - **When to Bump**: Only update the version when:
- User says "发布" / "release" / "bump version" - User says "发布" / "release" / "bump version"
- User explicitly asks to prepare for release - User explicitly asks to prepare for release
- **Agent Initiative**: After completing significant changes (new features, bug fixes, or multiple code modifications), the agent **SHOULD proactively ask** the user if they want to release a new version. If confirmed, update all version-related files. - **Agent Initiative**: After completing significant changes (new features, bug fixes, or multiple code modifications), the agent **SHOULD proactively ask** the user if they want to **prepare a new version** for release.
- **Release Information Compliance**: When a release is requested, the agent must generate a standard release summary (English commit title + bilingual bullet points) as defined in Section 3 & 5.
- **Default Action (Prepare Only)**: When performing a version bump or update, the agent should update all files locally but **STOP** before committing. Present the changes and the **proposed Release/Commit Message** to the user and wait for explicit confirmation to commit/push.
- **Consistency**: When bumping, update version in **ALL** locations: - **Consistency**: When bumping, update version in **ALL** locations:
1. English Code (`.py`) 1. English Code (`.py`)
2. Chinese Code (`.py`) 2. Chinese Code (`.py`)
@@ -102,6 +108,21 @@ Reference: `.github/workflows/release.yml`
- Format: `https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/{type}/{name}/README.md` - Format: `https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/{type}/{name}/README.md`
- Example: `https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/filters/folder-memory/README.md` - Example: `https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/filters/folder-memory/README.md`
### Release Content Standard
When the user confirms a release, the agent **MUST** follow these content standards:
1. **Commit Message**:
- **Language**: English ONLY.
- **Format**: `type(scope): description` (e.g., `feat(pipes): add streaming support for Copilot SDK`).
- **Body**: List 1-3 key changes in bullet points.
2. **Release Summary (for user review)**:
- Before committing, present a "Release Draft" containing:
- **Title**: e.g., `Release v0.1.1: [Plugin Name] - [Brief Summary]`
- **Changes**: Bilingual bullet points (English/Chinese) describing the impact.
- **Verification Status**: Confirm all 8+ files have been updated and synced.
3. **Internal Documentation**: Ensure "What's New" sections in READMEs and `docs/` match exactly the changes being released.
### Pull Request Check ### Pull Request Check
- Workflow: `.github/workflows/plugin-version-check.yml` - Workflow: `.github/workflows/plugin-version-check.yml`
@@ -122,4 +143,7 @@ Before committing:
## 5. Git Operations (Agent Rules) ## 5. Git Operations (Agent Rules)
Strictly follow the rules defined in `.github/copilot-instructions.md`**Git Operations (Agent Rules)** section. 1. **Prepare-on-Demand**: Focus on file modifications and local verification first.
2. **No Auto-Commit**: Never `git commit`, `git push`, or `create_pull_request` automatically after file updates unless the user explicitly says "commit this" or "release now".
3. **Draft Mode**: If available, use PRs as drafts first.
4. **Reference**: Strictly follow the rules defined in `.github/copilot-instructions.md`**Git Operations (Agent Rules)** section.

View File

@@ -46,6 +46,16 @@
"ideas" "ideas"
] ]
} }
,
{
"login": "abaroni",
"name": "Alessandro Baroni",
"avatar_url": "https://avatars.githubusercontent.com/u/21365486?v=4",
"profile": "https://github.com/abaroni",
"contributions": [
"ideas"
]
}
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,
"skipCi": true, "skipCi": true,

View File

@@ -481,6 +481,60 @@ async def get_user_language(self):
**注意**: 即使插件有 `Valves` 配置,也应优先尝试自动探测,提升用户体验。 **注意**: 即使插件有 `Valves` 配置,也应优先尝试自动探测,提升用户体验。
### 8. 智能代理文件交付规范 (Agent File Delivery Standards)
在开发具备文件生成能力的智能代理插件(如 GitHub Copilot SDK 集成)时,必须遵循以下标准流程,以确保文件在不同存储后端(本地/S3下的可用性并绕过不必要的 RAG 处理。
#### 核心协议:三步交付法 (The 3-Step Delivery Protocol)
1. **本地写入 (Write Local)**:
- 代理必须在当前执行目录 (`.`) 下创建文件。
- **严禁**使用系统临时目录(如 `/tmp`)存放待发布的文件,因为这些路径在隔离的工作空间外不可见。
2. **显式发布 (Publish)**:
- 必须调用内建工具 `publish_file_from_workspace(filename='name.ext')`
- 该工具负责将文件迁移至 Open WebUI 正式存储(自动适配 S3并注入 `skip_rag` 元数据以防止触发向量化流程RAG Bypass
3. **呈现链接 (Display Link)**:
- 获取工具返回的 `download_url`(正确格式为 `/api/v1/files/{id}/content`)。
- **必须**以 Markdown 链接形式(如 `[点击下载报告](url)`)展示给用户。
#### 路径语义 (Path Semantics)
- 代理应始终将“当前目录”视为其受保护所在的私有工作空间。
- `publish_file_from_workspace` 的参数 `filename` 仅需传入相对于当前目录的文件名。
### 9. Copilot SDK 插件工具定义规范 (Copilot SDK Tool Definition Standards)
在为 GitHub Copilot SDK 开发自定义工具时,为了确保大模型能正确识别参数(避免生成空的 `properties` Schema必须遵循以下定义模式
#### 显式参数模型 (Explicit Parameter Schema)
**禁止**仅依赖函数签名和类型提示。**必须**定义一个继承自 `pydantic.BaseModel` 的类来描述参数,并在 `define_tool` 中通过 `params_type` 显式引用。
```python
from pydantic import BaseModel, Field
from copilot import define_tool
# 1. 定义参数模型
class MyToolParams(BaseModel):
query: str = Field(..., description="搜索关键词")
limit: int = Field(default=10, description="返回结果数量限制")
# 2. 实现工具逻辑
async def my_custom_search(query: str, limit: int) -> dict:
# ... 逻辑实现 ...
return {"results": []}
# 3. 注册工具(关键:使用 params_type
my_tool = define_tool(
name="my_custom_search",
description="在特定数据源中执行搜索",
params_type=MyToolParams, # 显式传递参数模型以生成正确的 JSON Schema
)(my_custom_search)
```
#### 关键要点 (Key Requirements)
1. **params_type**: 必须在 `define_tool` 中使用此参数。这是防止大模型幻觉认为工具“无参数”的唯一可靠方法。
2. **Field 描述**: 在 `BaseModel` 中使用 `Field(..., description="...")` 为每个参数提供详细的描述信息。
3. **Required vs Optional**: 明确标注必填项(无默认值)和可选项(带 `default`)。
--- ---
## ⚡ Action 插件规范 (Action Plugin Standards) ## ⚡ Action 插件规范 (Action Plugin Standards)
@@ -889,6 +943,9 @@ Filter 实例是**单例 (Singleton)**。
- [ ] 使用 logging 而非 print - [ ] 使用 logging 而非 print
- [ ] 测试双语界面 - [ ] 测试双语界面
- [ ] **一致性检查**: 确保文档、代码、README 同步 - [ ] **一致性检查**: 确保文档、代码、README 同步
- [ ] **README 结构**:
- **Key Capabilities** (英文) / **核心功能** (中文): 必须包含所有核心功能
- **What's New** (英文) / **最新更新** (中文): 仅包含最新版本的变更信息
### 2. 🔄 一致性维护 (Consistency Maintenance) ### 2. 🔄 一致性维护 (Consistency Maintenance)
@@ -925,10 +982,19 @@ Filter 实例是**单例 (Singleton)**。
- Update README/README_CN to include What's New section - Update README/README_CN to include What's New section
- Migration: default TITLE_SOURCE changed to chat_title - Migration: default TITLE_SOURCE changed to chat_title
### 4. 🤖 Git Operations (Agent Rules) #### 发布信息生成准则 (Release Summary Generation)
当准备提交时,必须向用户展示以下格式的“发布草案”:
1. **Commit Message**: 符合 Conventional Commits 的英文标题及摘要。
2. **变更列表 (Bilingual Changes)**:
- 英文: Clear descriptions of technical/functional changes.
- 中文: 清晰描述用户可见的功能改进或修复。
3. **核查状态 (Verification)**: 确认版本号已在相关 8+ 处位置同步更新。
- **允许**: 直接推送到 `main` 分支并发布。 ### 4. 🤖 Git 提交与推送规范 (Git Operations & Push Rules)
- **允许**: 创建功能分支 (`feature/xxx`),推送到功能分支。
- **核心原则**: 默认仅进行**本地文件准备**更新代码、READMEs、Docs、版本号**严禁**在未获用户明确许可的情况下自动执行 `git commit``git push`
- **允许 (需确认)**: 只有在用户明确表示“发布”、“Commit it”、“Release”或“提交”后才允许直接推送到 `main` 分支或创建 PR。
- **功能分支**: 推荐在进行大规模重构或实验性功能开发时,创建功能分支 (`feature/xxx`) 进行隔离。
### 5. 🤝 贡献者认可规范 (Contributor Recognition) ### 5. 🤝 贡献者认可规范 (Contributor Recognition)

View File

@@ -324,13 +324,13 @@ jobs:
- name: Generate release notes - name: Generate release notes
id: notes id: notes
env:
VERSION: ${{ steps.version.outputs.version }}
TITLE: ${{ github.event.inputs.release_title }}
NOTES: ${{ github.event.inputs.release_notes }}
DETECTED_CHANGES: ${{ needs.check-changes.outputs.release_notes }}
COMMITS: ${{ steps.commits.outputs.commits }}
run: | run: |
VERSION="${{ steps.version.outputs.version }}"
TITLE="${{ github.event.inputs.release_title }}"
NOTES="${{ github.event.inputs.release_notes }}"
DETECTED_CHANGES="${{ needs.check-changes.outputs.release_notes }}"
COMMITS="${{ steps.commits.outputs.commits }}"
echo "# ${VERSION} Release / 发布" > release_notes.md echo "# ${VERSION} Release / 发布" > release_notes.md
echo "" >> release_notes.md echo "" >> release_notes.md

View File

@@ -1,48 +1,72 @@
# OpenWebUI Extras # OpenWebUI Extras
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-) [![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END --> <!-- ALL-CONTRIBUTORS-BADGE:END -->
English | [中文](./README_CN.md)
A collection of enhancements, plugins, and prompts for [OpenWebUI](https://github.com/open-webui/open-webui), developed and curated for personal use to extend functionality and improve experience. A collection of enhancements, plugins, and prompts for [OpenWebUI](https://github.com/open-webui/open-webui), developed and curated for personal use to extend functionality and improve experience.
<!-- STATS_START --> <!-- STATS_START -->
## 📊 Community Stats ## 📊 Community Stats
> 🕐 Auto-updated: 2026-02-08 07:12 > 🕐 Auto-updated: 2026-02-10 12:51
| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |
|:---:|:---:|:---:|:---:| | :---: | :---: | :---: | :---: |
| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **205** | **258** | **42** | | [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **216** | **262** | **44** |
| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves | | 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |
|:---:|:---:|:---:|:---:|:---:| | :---: | :---: | :---: | :---: | :---: |
| **20** | **3779** | **44354** | **221** | **258** | | **21** | **4031** | **47177** | **224** | **267** |
### 🔥 Top 6 Popular Plugins ### 🔥 Top 6 Popular Plugins
> 🕐 Auto-updated: 2026-02-08 07:12 > 🕐 Auto-updated: 2026-02-10 12:51
| Rank | Plugin | Version | Downloads | Views | Updated | | Rank | Plugin | Version | Downloads | Views | Updated |
|:---:|------|:---:|:---:|:---:|:---:| | :---: | :--- | :---: | :---: | :---: | :---: |
| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 890 | 7901 | 2026-01-28 | | 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 935 | 8224 | 2026-01-28 |
| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 645 | 6010 | 2026-01-30 | | 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 678 | 6439 | 2026-01-30 |
| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 358 | 2766 | 2026-02-07 | | 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 374 | 2931 | 2026-02-07 |
| 4⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 336 | 3485 | 2026-01-28 | | 4⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 360 | 3689 | 2026-01-28 |
| 5⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 330 | 1541 | 2026-01-29 | | 5⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 340 | 1631 | 2026-02-09 |
| 6⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 298 | 4320 | 2026-01-29 | | 6⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 323 | 4559 | 2026-01-29 |
*See full stats in [Community Stats Report](./docs/community-stats.md)* *See full stats in [Community Stats Report](./docs/community-stats.md)*
<!-- STATS_END --> <!-- STATS_END -->
## 🌟 Star Features
### 1. [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4)
**The ultimate Agent for OpenWebUI.** Supports native code execution (Python/Pandas), raw file analysis, and interactive artifacts.
> [!TIP]
> **No GitHub Copilot subscription required!** Supports **BYOK (Bring Your Own Key)** mode using your own OpenAI/Anthropic API keys.
### 2. [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a)
**Experience interactive thinking.** Seamlessly transforms complex chat sessions into structured, clickable mind maps for better visual modeling and rapid idea extraction.
### 3. [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/smart_infographic_ad6f0c7f)
**Professional data storytelling.** Converts raw information into sleek, boardroom-ready infographics powered by AntV, perfect for summarizing long-form content instantly.
### 4. [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315)
**High-fidelity reporting.** Export conversation history into professionally formatted Word documents with preserved headers, code blocks, and math formulas.
### 5. [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/async_context_compression_b1655bc8)
**Maximize your context window.** Intelligently compresses chat history using LLM logic to save tokens and costs while maintaining a high-quality reasoning chain.
## 📦 Project Contents ## 📦 Project Contents
### 🧩 Plugins <!-- markdownlint-disable MD033 -->
<details>
<summary><b>🧩 Plugins (Actions, Filters, Pipes, Pipelines)</b></summary>
Located in the `plugins/` directory, containing Python-based enhancements: Located in the `plugins/` directory, containing Python-based enhancements:
#### Actions ### Actions
- **Smart Mind Map** (`smart-mind-map`): Generates interactive mind maps from text. - **Smart Mind Map** (`smart-mind-map`): Generates interactive mind maps from text.
- **Smart Infographic** (`infographic`): Transforms text into professional infographics using AntV. - **Smart Infographic** (`infographic`): Transforms text into professional infographics using AntV.
@@ -51,27 +75,36 @@ Located in the `plugins/` directory, containing Python-based enhancements:
- **Export to Excel** (`export_to_excel`): Exports chat history to Excel files. - **Export to Excel** (`export_to_excel`): Exports chat history to Excel files.
- **Export to Word** (`export_to_docx`): Exports chat history to Word documents. - **Export to Word** (`export_to_docx`): Exports chat history to Word documents.
#### Filters ### Filters
- **GitHub Copilot SDK Files Filter** (`github_copilot_sdk_files_filter`): Essential companion for Copilot SDK. Bypasses RAG to ensure full file accessibility for Agents.
- **Web Gemini Multimodal Filter** (`web_gemini_multimodel_filter`): Adds multimodal capabilities (PDF, Video, Office) to any model with intelligent routing.
- **Async Context Compression** (`async-context-compression`): Optimizes token usage via context compression. - **Async Context Compression** (`async-context-compression`): Optimizes token usage via context compression.
- **Context Enhancement** (`context_enhancement_filter`): Enhances chat context. - **Context Enhancement** (`context_enhancement_filter`): Enhances chat context.
- **Folder Memory** (`folder-memory`): Automatically extracts project rules from conversations and injects them into the folder's system prompt. - **Folder Memory** (`folder-memory`): Automatically extracts project rules from conversations and injects them into the folder's system prompt.
- **Markdown Normalizer** (`markdown_normalizer`): Fixes common Markdown formatting issues in LLM outputs. - **Markdown Normalizer** (`markdown_normalizer`): Fixes common Markdown formatting issues in LLM outputs.
#### Pipes ### Pipes
- **GitHub Copilot SDK** (`github-copilot-sdk`): Official GitHub Copilot SDK integration. Supports dynamic models, multi-turn conversation, streaming, multimodal input, and infinite sessions. - **GitHub Copilot SDK** (`github-copilot-sdk`): Official GitHub Copilot SDK integration. Supports dynamic models (GPT-4o, Claude 3.5, o1), multi-turn conversation, streaming, and infinite sessions.
#### Pipelines ### Pipelines
- **MoE Prompt Refiner** (`moe_prompt_refiner`): Refines prompts for Mixture of Experts (MoE) summary requests to generate high-quality comprehensive reports. - **MoE Prompt Refiner** (`moe_prompt_refiner`): Refines prompts for Mixture of Experts (MoE) summary requests to generate high-quality comprehensive reports.
### 🎯 Prompts </details>
<!-- markdownlint-enable MD033 -->
Located in the `prompts/` directory, containing fine-tuned System Prompts: <!-- markdownlint-disable MD033 -->
<details>
<summary><b>🎯 Prompts (System Prompts for various roles)</b></summary>
- **Coding**: Programming assistance prompts. System Prompts are managed in the `docs/prompts/` directory:
- **Marketing**: Marketing and copywriting prompts.
- **[Prompt Library](./docs/prompts/library.md)**: A curated collection of fine-tuned prompts for Coding, Marketing, and Analysis.
</details>
<!-- markdownlint-enable MD033 -->
## 🛠️ Extensions ## 🛠️ Extensions
@@ -135,6 +168,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<td align="center" valign="top" width="14.28%"><a href="https://trade.xyz/?ref=BZ1RJRXWO"><img src="https://avatars.githubusercontent.com/u/7317522?v=4?s=100" width="100px;" alt="Raxxoor"/><br /><sub><b>Raxxoor</b></sub></a><br /><a href="https://github.com/Fu-Jie/awesome-openwebui/issues?q=author%3Adhaern" title="Bug reports">🐛</a> <a href="#ideas-dhaern" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="14.28%"><a href="https://trade.xyz/?ref=BZ1RJRXWO"><img src="https://avatars.githubusercontent.com/u/7317522?v=4?s=100" width="100px;" alt="Raxxoor"/><br /><sub><b>Raxxoor</b></sub></a><br /><a href="https://github.com/Fu-Jie/awesome-openwebui/issues?q=author%3Adhaern" title="Bug reports">🐛</a> <a href="#ideas-dhaern" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/i-iooi-i"><img src="https://avatars.githubusercontent.com/u/1827701?v=4?s=100" width="100px;" alt="ZOLO"/><br /><sub><b>ZOLO</b></sub></a><br /><a href="https://github.com/Fu-Jie/awesome-openwebui/issues?q=author%3Ai-iooi-i" title="Bug reports">🐛</a> <a href="#ideas-i-iooi-i" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/i-iooi-i"><img src="https://avatars.githubusercontent.com/u/1827701?v=4?s=100" width="100px;" alt="ZOLO"/><br /><sub><b>ZOLO</b></sub></a><br /><a href="https://github.com/Fu-Jie/awesome-openwebui/issues?q=author%3Ai-iooi-i" title="Bug reports">🐛</a> <a href="#ideas-i-iooi-i" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://perso.crans.org/grande/"><img src="https://avatars.githubusercontent.com/u/469017?v=4?s=100" width="100px;" alt="Johan Grande"/><br /><sub><b>Johan Grande</b></sub></a><br /><a href="#ideas-nahoj" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="14.28%"><a href="https://perso.crans.org/grande/"><img src="https://avatars.githubusercontent.com/u/469017?v=4?s=100" width="100px;" alt="Johan Grande"/><br /><sub><b>Johan Grande</b></sub></a><br /><a href="#ideas-nahoj" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/abaroni"><img src="https://avatars.githubusercontent.com/u/21365486?v=4?s=100" width="100px;" alt="Alessandro Baroni"/><br /><sub><b>Alessandro Baroni</b></sub></a><br /><a href="#ideas-abaroni" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -7,39 +7,65 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词
<!-- STATS_START --> <!-- STATS_START -->
## 📊 社区统计 ## 📊 社区统计
> 🕐 自动更新于 2026-02-08 07:12 > 🕐 自动更新于 2026-02-10 12:51
| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |
|:---:|:---:|:---:|:---:| | :---: | :---: | :---: | :---: |
| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **205** | **258** | **42** | | [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **216** | **262** | **44** |
| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 | | 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |
|:---:|:---:|:---:|:---:|:---:| | :---: | :---: | :---: | :---: | :---: |
| **20** | **3779** | **44354** | **221** | **258** | | **21** | **4031** | **47177** | **224** | **267** |
### 🔥 热门插件 Top 6 ### 🔥 热门插件 Top 6
> 🕐 自动更新于 2026-02-08 07:12 > 🕐 自动更新于 2026-02-10 12:51
| 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 |
|:---:|------|:---:|:---:|:---:|:---:| | :---: | :--- | :---: | :---: | :---: | :---: |
| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 890 | 7901 | 2026-01-28 | | 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 935 | 8224 | 2026-01-28 |
| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 645 | 6010 | 2026-01-30 | | 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 678 | 6439 | 2026-01-30 |
| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 358 | 2766 | 2026-02-07 | | 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 374 | 2931 | 2026-02-07 |
| 4⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 336 | 3485 | 2026-01-28 | | 4⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 360 | 3689 | 2026-01-28 |
| 5⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 330 | 1541 | 2026-01-29 | | 5⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 340 | 1631 | 2026-02-09 |
| 6⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 298 | 4320 | 2026-01-29 | | 6⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 323 | 4559 | 2026-01-29 |
*完整统计请查看 [社区统计报告](./docs/community-stats.zh.md)* *完整统计请查看 [社区统计报告](./docs/community-stats.zh.md)*
<!-- STATS_END --> <!-- STATS_END -->
## 🌟 精选功能
### 1. [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4)
**OpenWebUI 终极 Agent 增强。** 支持原生代码执行Python/Pandas、原始文件直接分析以及交互式 Artifacts。
> [!TIP]
> **无需 GitHub Copilot 订阅!** 支持 **BYOK (Bring Your Own Key)** 模式,使用你自己的 OpenAI/Anthropic API Key。
### 2. [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a)
**体验浸入式思维。** 将复杂的对话瞬间转化为结构化、可点击的交互式思维导图,助力知识建模与逻辑提取。
### 3. [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/smart_infographic_ad6f0c7f)
**专业数据叙事。** 将零散信息转化为精美的信息图表(由 AntV 驱动),一键生成学术/汇报级的可视化总结。
### 4. [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315)
**高保真文档导出。** 将对话历史导出为格式完美的 Word 文档完美保留标题、代码块、LaTeX 公式及 Mermaid 流程图。
### 5. [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) [![Market](https://img.shields.io/badge/Get-Market-blue?style=flat-square&logo=openwebui)](https://openwebui.com/posts/async_context_compression_b1655bc8)
**挑战 Token 極限。** 采用多专家异步压缩逻辑,在保持高吞吐量推理链的同时,大幅降低 Token 消耗。
## 📦 项目内容 ## 📦 项目内容
### 🧩 插件 (Plugins) <!-- markdownlint-disable MD033 -->
<details>
<summary><b>🧩 插件 (Actions, Filters, Pipes, Pipelines)</b></summary>
位于 `plugins/` 目录,包含各类 Python 编写的功能增强插件: 位于 `plugins/` 目录,包含各类 Python 编写的功能增强插件:
#### Actions (交互增强) ### Actions (交互增强)
- **Smart Mind Map** (`smart-mind-map`): 智能分析文本并生成交互式思维导图。 - **Smart Mind Map** (`smart-mind-map`): 智能分析文本并生成交互式思维导图。
- **Smart Infographic** (`infographic`): 基于 AntV 的智能信息图生成工具。 - **Smart Infographic** (`infographic`): 基于 AntV 的智能信息图生成工具。
@@ -48,33 +74,36 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词
- **Export to Excel** (`export_to_excel`): 将对话内容导出为 Excel 文件。 - **Export to Excel** (`export_to_excel`): 将对话内容导出为 Excel 文件。
- **Export to Word** (`export_to_docx`): 将对话内容导出为 Word 文档。 - **Export to Word** (`export_to_docx`): 将对话内容导出为 Word 文档。
#### Filters (消息处理) ### Filters (消息处理)
- **GitHub Copilot SDK Files Filter** (`github_copilot_sdk_files_filter`): Copilot SDK 必备搭档。绕过 RAG确保 Agent 能真正看到你的每一个文件。
- **Web Gemini Multimodal Filter** (`web_gemini_multimodel_filter`): 为任意模型提供多模态能力PDF、Office、视频等支持智能路由。
- **Async Context Compression** (`async-context-compression`): 异步上下文压缩,优化 Token 使用。 - **Async Context Compression** (`async-context-compression`): 异步上下文压缩,优化 Token 使用。
- **Context Enhancement** (`context_enhancement_filter`): 上下文增强过滤器。 - **Context Enhancement** (`context_enhancement_filter`): 上下文增强过滤器。
- **Folder Memory** (`folder-memory`): 自动从对话中提取项目规则并注入到文件夹系统提示词中。 - **Folder Memory** (`folder-memory`): 自动从对话中提取项目规则并注入到文件夹系统提示词中。
- **Gemini Manifold Companion** (`gemini_manifold_companion`): Gemini Manifold 配套增强。
- **Gemini Multimodal Filter** (`web_gemini_multimodel_filter`): 为任意模型提供多模态能力PDF、Office、视频等支持智能路由和字幕精修。
- **Markdown Normalizer** (`markdown_normalizer`): 修复 LLM 输出中常见的 Markdown 格式问题。 - **Markdown Normalizer** (`markdown_normalizer`): 修复 LLM 输出中常见的 Markdown 格式问题。
- **Multi-Model Context Merger** (`multi_model_context_merger`): 自动合并并注入多模型回答的上下文。
#### Pipes (模型管道) ### Pipes (模型管道)
- **GitHub Copilot SDK** (`github-copilot-sdk`): GitHub Copilot SDK 官方集成。支持动态模型、多轮对话、流式输出、图片输入及无限会话。 - **GitHub Copilot SDK** (`github-copilot-sdk`): GitHub Copilot SDK 官方集成。支持动态模型、多轮对话、流式输出、图片输入及无限会话。
- **Gemini Manifold** (`gemini_mainfold`): 集成 Gemini 模型的管道。
#### Pipelines (工作流管道) ### Pipelines (工作流管道)
- **MoE Prompt Refiner** (`moe_prompt_refiner`): 优化多模型 (MoE) 汇总请求的提示词,生成高质量的综合报告。 - **MoE Prompt Refiner** (`moe_prompt_refiner`): 优化多模型 (MoE) 汇总请求的提示词,生成高质量的综合报告。
### 🎯 提示词 (Prompts) </details>
<!-- markdownlint-enable MD033 -->
位于 `prompts/` 目录,包含精心调优的 System Prompts <!-- markdownlint-disable MD033 -->
<details>
<summary><b>🎯 提示词 (Prompts - 多角色系统提示词)</b></summary>
- **Coding**: 编程辅助类提示词。 位于 `docs/prompts/` 目录,包含精心调优的提示词集合:
- **Marketing**: 营销文案类提示词。
每个提示词都独立保存为 Markdown 文件,可直接在 OpenWebUI 中使用 - **[Prompt Library](./docs/prompts/library.md)**: 编程、翻译、分析及营销等全领域提示词精选
</details>
<!-- markdownlint-enable MD033 -->
## 🛠️ 扩展 (Extensions) ## 🛠️ 扩展 (Extensions)
@@ -84,6 +113,10 @@ Open WebUI 的前端增强扩展:
## 📖 开发文档 ## 📖 开发文档
<!-- markdownlint-disable MD033 -->
<details>
<summary><b>📚 官方开发与运营指南</b></summary>
位于 `docs/zh/` 目录: 位于 `docs/zh/` 目录:
- **[插件开发权威指南](./docs/zh/plugin_development_guide.md)** - 整合了入门教程、核心 SDK 详解及最佳实践的系统化指南。 ⭐ - **[插件开发权威指南](./docs/zh/plugin_development_guide.md)** - 整合了入门教程、核心 SDK 详解及最佳实践的系统化指南。 ⭐
@@ -91,36 +124,11 @@ Open WebUI 的前端增强扩展:
更多示例请查看 `docs/examples/` 目录。 更多示例请查看 `docs/examples/` 目录。
</details>
<!-- markdownlint-enable MD033 -->
## 🚀 快速开始 ## 🚀 快速开始
本项目是一个资源集合,无需安装 Python 环境。你只需要下载对应的文件并导入到你的 OpenWebUI 实例中即可。 本项目是一个资源集合,无需安装 Python 环境。你只需要下载对应的文件并导入到你的 OpenWebUI 实例中即可。
### 使用提示词 (Prompts)
1.`/prompts` 目录中浏览并选择你感兴趣的提示词文件 (`.md`)。
2. 复制文件内容。
3. 在 OpenWebUI 聊天界面中,点击输入框上方的 "Prompt" 按钮。
4. 粘贴内容并保存。
### 使用插件 (Plugins)
1. **从 OpenWebUI 社区安装 (推荐)**:
- 访问我的主页: [Fu-Jie's Profile](https://openwebui.com/u/Fu-Jie)
- 浏览插件列表,选择你喜欢的插件。
- 点击 "Get" 按钮,将其直接导入到你的 OpenWebUI 实例中。
2. **手动安装**:
-`/plugins` 目录中浏览并下载你需要的插件文件 (`.py`)。
- 打开 OpenWebUI 的 **管理员面板 (Admin Panel)** -> **设置 (Settings)** -> **插件 (Plugins)**
- 点击上传按钮,选择刚才下载的 `.py` 文件。
- 上传成功后,刷新页面,你就可以在聊天设置或工具栏中启用该插件了。
### 贡献代码
如果你有优质的提示词或插件想要分享:
1. Fork 本仓库。
2. 将你的文件添加到对应的 `prompts/``plugins/` 目录。
3. 提交 Pull Request。
[贡献指南](./CONTRIBUTING_CN.md) | [更新日志](./CHANGELOG.md) [贡献指南](./CONTRIBUTING_CN.md) | [更新日志](./CHANGELOG.md)

View File

@@ -1,7 +1,7 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"label": "downloads", "label": "downloads",
"message": "3.8k", "message": "4.0k",
"color": "blue", "color": "blue",
"namedLogo": "openwebui" "namedLogo": "openwebui"
} }

View File

@@ -1,6 +1,6 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"label": "followers", "label": "followers",
"message": "205", "message": "216",
"color": "blue" "color": "blue"
} }

View File

@@ -1,6 +1,6 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"label": "plugins", "label": "plugins",
"message": "20", "message": "21",
"color": "green" "color": "green"
} }

View File

@@ -1,6 +1,6 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"label": "points", "label": "points",
"message": "258", "message": "262",
"color": "orange" "color": "orange"
} }

View File

@@ -1,6 +1,6 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"label": "upvotes", "label": "upvotes",
"message": "221", "message": "224",
"color": "brightgreen" "color": "brightgreen"
} }

View File

@@ -1,16 +1,15 @@
{ {
"total_posts": 20, "total_posts": 21,
"total_downloads": 3779, "total_downloads": 4031,
"total_views": 44354, "total_views": 47177,
"total_upvotes": 221, "total_upvotes": 224,
"total_downvotes": 2, "total_downvotes": 2,
"total_saves": 258, "total_saves": 267,
"total_comments": 49, "total_comments": 51,
"by_type": { "by_type": {
"action": 14, "action": 15,
"pipe": 1, "filter": 2,
"unknown": 4, "unknown": 4
"filter": 1
}, },
"posts": [ "posts": [
{ {
@@ -20,10 +19,10 @@
"version": "0.9.2", "version": "0.9.2",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.",
"downloads": 890, "downloads": 935,
"views": 7901, "views": 8224,
"upvotes": 22, "upvotes": 22,
"saves": 49, "saves": 50,
"comments": 13, "comments": 13,
"created_at": "2025-12-30", "created_at": "2025-12-30",
"updated_at": "2026-01-28", "updated_at": "2026-01-28",
@@ -36,10 +35,10 @@
"version": "1.5.0", "version": "1.5.0",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.",
"downloads": 645, "downloads": 678,
"views": 6010, "views": 6439,
"upvotes": 24, "upvotes": 24,
"saves": 33, "saves": 34,
"comments": 10, "comments": 10,
"created_at": "2025-12-28", "created_at": "2025-12-28",
"updated_at": "2026-01-30", "updated_at": "2026-01-30",
@@ -52,8 +51,8 @@
"version": "0.4.4", "version": "0.4.4",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "Export current conversation from Markdown to Word (.docx) with Mermaid diagrams rendered client-side (Mermaid.js, SVG+PNG), LaTeX math, real hyperlinks, improved tables, syntax highlighting, and blockquote support.", "description": "Export current conversation from Markdown to Word (.docx) with Mermaid diagrams rendered client-side (Mermaid.js, SVG+PNG), LaTeX math, real hyperlinks, improved tables, syntax highlighting, and blockquote support.",
"downloads": 358, "downloads": 374,
"views": 2766, "views": 2931,
"upvotes": 14, "upvotes": 14,
"saves": 26, "saves": 26,
"comments": 3, "comments": 3,
@@ -68,8 +67,8 @@
"version": "1.2.2", "version": "1.2.2",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.", "description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.",
"downloads": 336, "downloads": 360,
"views": 3485, "views": 3689,
"upvotes": 14, "upvotes": 14,
"saves": 33, "saves": 33,
"comments": 0, "comments": 0,
@@ -84,13 +83,13 @@
"version": "0.3.7", "version": "0.3.7",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "Extracts tables from chat messages and exports them to Excel (.xlsx) files with smart formatting.", "description": "Extracts tables from chat messages and exports them to Excel (.xlsx) files with smart formatting.",
"downloads": 330, "downloads": 340,
"views": 1541, "views": 1631,
"upvotes": 7, "upvotes": 7,
"saves": 6, "saves": 6,
"comments": 0, "comments": 0,
"created_at": "2025-05-30", "created_at": "2025-05-30",
"updated_at": "2026-01-29", "updated_at": "2026-02-09",
"url": "https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d" "url": "https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d"
}, },
{ {
@@ -100,10 +99,10 @@
"version": "1.2.4", "version": "1.2.4",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.", "description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.",
"downloads": 298, "downloads": 323,
"views": 4320, "views": 4559,
"upvotes": 17, "upvotes": 17,
"saves": 27, "saves": 28,
"comments": 5, "comments": 5,
"created_at": "2026-01-12", "created_at": "2026-01-12",
"updated_at": "2026-01-29", "updated_at": "2026-01-29",
@@ -116,8 +115,8 @@
"version": "0.2.4", "version": "0.2.4",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "Quickly generates beautiful flashcards from text, extracting key points and categories.", "description": "Quickly generates beautiful flashcards from text, extracting key points and categories.",
"downloads": 214, "downloads": 220,
"views": 3265, "views": 3342,
"upvotes": 13, "upvotes": 13,
"saves": 14, "saves": 14,
"comments": 2, "comments": 2,
@@ -132,10 +131,10 @@
"version": "", "version": "",
"author": "", "author": "",
"description": "", "description": "",
"downloads": 157, "downloads": 184,
"views": 2317, "views": 2608,
"upvotes": 8, "upvotes": 9,
"saves": 3, "saves": 5,
"comments": 0, "comments": 0,
"created_at": "2026-01-28", "created_at": "2026-01-28",
"updated_at": "2026-01-28", "updated_at": "2026-01-28",
@@ -148,8 +147,8 @@
"version": "1.0.0", "version": "1.0.0",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "A comprehensive thinking lens that dives deep into any content - from context to logic, insights, and action paths.", "description": "A comprehensive thinking lens that dives deep into any content - from context to logic, insights, and action paths.",
"downloads": 137, "downloads": 146,
"views": 1176, "views": 1237,
"upvotes": 6, "upvotes": 6,
"saves": 11, "saves": 11,
"comments": 0, "comments": 0,
@@ -164,10 +163,10 @@
"version": "0.4.4", "version": "0.4.4",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "将对话导出为 Word (.docx),支持 Mermaid 图表 (客户端渲染 SVG+PNG)、LaTeX 数学公式、真实超链接、增强表格格式、代码高亮和引用块。", "description": "将对话导出为 Word (.docx),支持 Mermaid 图表 (客户端渲染 SVG+PNG)、LaTeX 数学公式、真实超链接、增强表格格式、代码高亮和引用块。",
"downloads": 119, "downloads": 125,
"views": 2126, "views": 2187,
"upvotes": 13, "upvotes": 13,
"saves": 6, "saves": 7,
"comments": 4, "comments": 4,
"created_at": "2026-01-04", "created_at": "2026-01-04",
"updated_at": "2026-02-07", "updated_at": "2026-02-07",
@@ -176,19 +175,35 @@
{ {
"title": "GitHub Copilot Official SDK Pipe", "title": "GitHub Copilot Official SDK Pipe",
"slug": "github_copilot_official_sdk_pipe_ce96f7b4", "slug": "github_copilot_official_sdk_pipe_ce96f7b4",
"type": "pipe", "type": "action",
"version": "0.3.0", "version": "0.6.1",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.", "description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.",
"downloads": 65, "downloads": 95,
"views": 1963, "views": 2254,
"upvotes": 13, "upvotes": 13,
"saves": 6, "saves": 7,
"comments": 2, "comments": 4,
"created_at": "2026-01-26", "created_at": "2026-01-26",
"updated_at": "2026-02-07", "updated_at": "2026-02-09",
"url": "https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4" "url": "https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4"
}, },
{
"title": "📂 Folder Memory Auto-Evolving Project Context",
"slug": "folder_memory_auto_evolving_project_context_4a9875b2",
"type": "filter",
"version": "0.1.0",
"author": "Fu-Jie",
"description": "Automatically extracts project rules from conversations and injects them into the folder's system prompt.",
"downloads": 59,
"views": 1278,
"upvotes": 6,
"saves": 8,
"comments": 0,
"created_at": "2026-01-20",
"updated_at": "2026-01-20",
"url": "https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2"
},
{ {
"title": "智能信息图", "title": "智能信息图",
"slug": "智能信息图_e04a48ff", "slug": "智能信息图_e04a48ff",
@@ -197,7 +212,7 @@
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "基于 AntV Infographic 的智能信息图生成插件。支持多种专业模板,自动图标匹配,并提供 SVG/PNG 下载功能。", "description": "基于 AntV Infographic 的智能信息图生成插件。支持多种专业模板,自动图标匹配,并提供 SVG/PNG 下载功能。",
"downloads": 58, "downloads": 58,
"views": 1017, "views": 1048,
"upvotes": 10, "upvotes": 10,
"saves": 1, "saves": 1,
"comments": 0, "comments": 0,
@@ -205,22 +220,6 @@
"updated_at": "2026-01-29", "updated_at": "2026-01-29",
"url": "https://openwebui.com/posts/智能信息图_e04a48ff" "url": "https://openwebui.com/posts/智能信息图_e04a48ff"
}, },
{
"title": "📂 Folder Memory Auto-Evolving Project Context",
"slug": "folder_memory_auto_evolving_project_context_4a9875b2",
"type": "filter",
"version": "0.1.0",
"author": "Fu-Jie",
"description": "Automatically extracts project rules from conversations and injects them into the folder's system prompt.",
"downloads": 57,
"views": 1229,
"upvotes": 6,
"saves": 8,
"comments": 0,
"created_at": "2026-01-20",
"updated_at": "2026-01-20",
"url": "https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2"
},
{ {
"title": "思维导图", "title": "思维导图",
"slug": "智能生成交互式思维导图帮助用户可视化知识_8d4b097b", "slug": "智能生成交互式思维导图帮助用户可视化知识_8d4b097b",
@@ -229,7 +228,7 @@
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "智能分析文本内容,生成交互式思维导图,帮助用户结构化和可视化知识。", "description": "智能分析文本内容,生成交互式思维导图,帮助用户结构化和可视化知识。",
"downloads": 37, "downloads": 37,
"views": 565, "views": 579,
"upvotes": 6, "upvotes": 6,
"saves": 2, "saves": 2,
"comments": 0, "comments": 0,
@@ -244,10 +243,10 @@
"version": "1.2.2", "version": "1.2.2",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "通过智能摘要和消息压缩,降低长对话的 token 消耗,同时保持对话连贯性。", "description": "通过智能摘要和消息压缩,降低长对话的 token 消耗,同时保持对话连贯性。",
"downloads": 32, "downloads": 33,
"views": 632, "views": 656,
"upvotes": 7, "upvotes": 7,
"saves": 4, "saves": 5,
"comments": 0, "comments": 0,
"created_at": "2025-11-08", "created_at": "2025-11-08",
"updated_at": "2026-01-28", "updated_at": "2026-01-28",
@@ -261,7 +260,7 @@
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "快速将文本提炼为精美的学习记忆卡片,支持核心要点提取与分类。", "description": "快速将文本提炼为精美的学习记忆卡片,支持核心要点提取与分类。",
"downloads": 27, "downloads": 27,
"views": 666, "views": 680,
"upvotes": 8, "upvotes": 8,
"saves": 1, "saves": 1,
"comments": 0, "comments": 0,
@@ -276,8 +275,8 @@
"version": "1.0.0", "version": "1.0.0",
"author": "Fu-Jie", "author": "Fu-Jie",
"description": "全方位的思维透镜 —— 从背景全景到逻辑脉络,从深度洞察到行动路径。", "description": "全方位的思维透镜 —— 从背景全景到逻辑脉络,从深度洞察到行动路径。",
"downloads": 19, "downloads": 24,
"views": 407, "views": 425,
"upvotes": 5, "upvotes": 5,
"saves": 1, "saves": 1,
"comments": 0, "comments": 0,
@@ -285,6 +284,22 @@
"updated_at": "2026-01-08", "updated_at": "2026-01-08",
"url": "https://openwebui.com/posts/精读_99830b0f" "url": "https://openwebui.com/posts/精读_99830b0f"
}, },
{
"title": "GitHub Copilot SDK Files Filter",
"slug": "github_copilot_sdk_files_filter_403a62ee",
"type": "filter",
"version": "0.1.2",
"author": "Fu-Jie",
"description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.",
"downloads": 13,
"views": 370,
"upvotes": 2,
"saves": 0,
"comments": 0,
"created_at": "2026-02-09",
"updated_at": "2026-02-09",
"url": "https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee"
},
{ {
"title": "🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager", "title": "🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager",
"slug": "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e", "slug": "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e",
@@ -293,9 +308,9 @@
"author": "", "author": "",
"description": "", "description": "",
"downloads": 0, "downloads": 0,
"views": 1434, "views": 1481,
"upvotes": 12, "upvotes": 12,
"saves": 17, "saves": 18,
"comments": 8, "comments": 8,
"created_at": "2026-01-25", "created_at": "2026-01-25",
"updated_at": "2026-01-28", "updated_at": "2026-01-28",
@@ -309,7 +324,7 @@
"author": "", "author": "",
"description": "", "description": "",
"downloads": 0, "downloads": 0,
"views": 136, "views": 142,
"upvotes": 2, "upvotes": 2,
"saves": 0, "saves": 0,
"comments": 0, "comments": 0,
@@ -325,7 +340,7 @@
"author": "", "author": "",
"description": "", "description": "",
"downloads": 0, "downloads": 0,
"views": 1398, "views": 1417,
"upvotes": 14, "upvotes": 14,
"saves": 10, "saves": 10,
"comments": 2, "comments": 2,
@@ -339,11 +354,11 @@
"name": "Fu-Jie", "name": "Fu-Jie",
"profile_url": "https://openwebui.com/u/Fu-Jie", "profile_url": "https://openwebui.com/u/Fu-Jie",
"profile_image": "https://community.s3.openwebui.com/uploads/users/b15d1348-4347-42b4-b815-e053342d6cb0/profile_d9510745-4bd4-4f8f-a997-4a21847d9300.webp", "profile_image": "https://community.s3.openwebui.com/uploads/users/b15d1348-4347-42b4-b815-e053342d6cb0/profile_d9510745-4bd4-4f8f-a997-4a21847d9300.webp",
"followers": 205, "followers": 216,
"following": 4, "following": 4,
"total_points": 258, "total_points": 262,
"post_points": 219, "post_points": 222,
"comment_points": 39, "comment_points": 40,
"contributions": 42 "contributions": 44
} }
} }

View File

@@ -1,46 +1,46 @@
# 📊 OpenWebUI Community Stats Report # 📊 OpenWebUI Community Stats Report
> 📅 Updated: 2026-02-08 07:12 > 📅 Updated: 2026-02-10 12:51
## 📈 Overview ## 📈 Overview
| Metric | Value | | Metric | Value |
|------|------| |------|------|
| 📝 Total Posts | 20 | | 📝 Total Posts | 21 |
| ⬇️ Total Downloads | 3779 | | ⬇️ Total Downloads | 4031 |
| 👁️ Total Views | 44354 | | 👁️ Total Views | 47177 |
| 👍 Total Upvotes | 221 | | 👍 Total Upvotes | 224 |
| 💾 Total Saves | 258 | | 💾 Total Saves | 267 |
| 💬 Total Comments | 49 | | 💬 Total Comments | 51 |
## 📂 By Type ## 📂 By Type
- **action**: 14 - **action**: 15
- **pipe**: 1 - **filter**: 2
- **unknown**: 4 - **unknown**: 4
- **filter**: 1
## 📋 Posts List ## 📋 Posts List
| Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated | | Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated |
|:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 890 | 7901 | 22 | 49 | 2026-01-28 | | 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 935 | 8224 | 22 | 50 | 2026-01-28 |
| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 645 | 6010 | 24 | 33 | 2026-01-30 | | 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 678 | 6439 | 24 | 34 | 2026-01-30 |
| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 358 | 2766 | 14 | 26 | 2026-02-07 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 374 | 2931 | 14 | 26 | 2026-02-07 |
| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | action | 1.2.2 | 336 | 3485 | 14 | 33 | 2026-01-28 | | 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | action | 1.2.2 | 360 | 3689 | 14 | 33 | 2026-01-28 |
| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 330 | 1541 | 7 | 6 | 2026-01-29 | | 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 340 | 1631 | 7 | 6 | 2026-02-09 |
| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | action | 1.2.4 | 298 | 4320 | 17 | 27 | 2026-01-29 | | 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | action | 1.2.4 | 323 | 4559 | 17 | 28 | 2026-01-29 |
| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 214 | 3265 | 13 | 14 | 2026-01-28 | | 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 220 | 3342 | 13 | 14 | 2026-01-28 |
| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | unknown | | 157 | 2317 | 8 | 3 | 2026-01-28 | | 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | unknown | | 184 | 2608 | 9 | 5 | 2026-01-28 |
| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 137 | 1176 | 6 | 11 | 2026-01-08 | | 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 146 | 1237 | 6 | 11 | 2026-01-08 |
| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 119 | 2126 | 13 | 6 | 2026-02-07 | | 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 125 | 2187 | 13 | 7 | 2026-02-07 |
| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.3.0 | 65 | 1963 | 13 | 6 | 2026-02-07 | | 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | action | 0.6.1 | 95 | 2254 | 13 | 7 | 2026-02-09 |
| 12 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1017 | 10 | 1 | 2026-01-29 | | 12 | [📂 Folder Memory Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 59 | 1278 | 6 | 8 | 2026-01-20 |
| 13 | [📂 Folder Memory Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 57 | 1229 | 6 | 8 | 2026-01-20 | | 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1048 | 10 | 1 | 2026-01-29 |
| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 37 | 565 | 6 | 2 | 2026-01-28 | | 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 37 | 579 | 6 | 2 | 2026-01-28 |
| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 32 | 632 | 7 | 4 | 2026-01-28 | | 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 656 | 7 | 5 | 2026-01-28 |
| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 666 | 8 | 1 | 2026-01-28 | | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 680 | 8 | 1 | 2026-01-28 |
| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 19 | 407 | 5 | 1 | 2026-01-08 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 425 | 5 | 1 | 2026-01-08 |
| 18 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | unknown | | 0 | 1434 | 12 | 17 | 2026-01-28 | | 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 13 | 370 | 2 | 0 | 2026-02-09 |
| 19 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | unknown | | 0 | 136 | 2 | 0 | 2026-01-14 | | 19 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | unknown | | 0 | 1481 | 12 | 18 | 2026-01-28 |
| 20 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | unknown | | 0 | 1398 | 14 | 10 | 2026-01-10 | | 20 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | unknown | | 0 | 142 | 2 | 0 | 2026-01-14 |
| 21 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | unknown | | 0 | 1417 | 14 | 10 | 2026-01-10 |

View File

@@ -1,46 +1,46 @@
# 📊 OpenWebUI 社区统计报告 # 📊 OpenWebUI 社区统计报告
> 📅 更新时间: 2026-02-08 07:12 > 📅 更新时间: 2026-02-10 12:51
## 📈 总览 ## 📈 总览
| 指标 | 数值 | | 指标 | 数值 |
|------|------| |------|------|
| 📝 发布数量 | 20 | | 📝 发布数量 | 21 |
| ⬇️ 总下载量 | 3779 | | ⬇️ 总下载量 | 4031 |
| 👁️ 总浏览量 | 44354 | | 👁️ 总浏览量 | 47177 |
| 👍 总点赞数 | 221 | | 👍 总点赞数 | 224 |
| 💾 总收藏数 | 258 | | 💾 总收藏数 | 267 |
| 💬 总评论数 | 49 | | 💬 总评论数 | 51 |
## 📂 按类型分类 ## 📂 按类型分类
- **action**: 14 - **action**: 15
- **pipe**: 1 - **filter**: 2
- **unknown**: 4 - **unknown**: 4
- **filter**: 1
## 📋 发布列表 ## 📋 发布列表
| 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 | | 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 |
|:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 890 | 7901 | 22 | 49 | 2026-01-28 | | 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 935 | 8224 | 22 | 50 | 2026-01-28 |
| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 645 | 6010 | 24 | 33 | 2026-01-30 | | 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 678 | 6439 | 24 | 34 | 2026-01-30 |
| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 358 | 2766 | 14 | 26 | 2026-02-07 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 374 | 2931 | 14 | 26 | 2026-02-07 |
| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | action | 1.2.2 | 336 | 3485 | 14 | 33 | 2026-01-28 | | 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | action | 1.2.2 | 360 | 3689 | 14 | 33 | 2026-01-28 |
| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 330 | 1541 | 7 | 6 | 2026-01-29 | | 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 340 | 1631 | 7 | 6 | 2026-02-09 |
| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | action | 1.2.4 | 298 | 4320 | 17 | 27 | 2026-01-29 | | 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | action | 1.2.4 | 323 | 4559 | 17 | 28 | 2026-01-29 |
| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 214 | 3265 | 13 | 14 | 2026-01-28 | | 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 220 | 3342 | 13 | 14 | 2026-01-28 |
| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | unknown | | 157 | 2317 | 8 | 3 | 2026-01-28 | | 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | unknown | | 184 | 2608 | 9 | 5 | 2026-01-28 |
| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 137 | 1176 | 6 | 11 | 2026-01-08 | | 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 146 | 1237 | 6 | 11 | 2026-01-08 |
| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 119 | 2126 | 13 | 6 | 2026-02-07 | | 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 125 | 2187 | 13 | 7 | 2026-02-07 |
| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.3.0 | 65 | 1963 | 13 | 6 | 2026-02-07 | | 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | action | 0.6.1 | 95 | 2254 | 13 | 7 | 2026-02-09 |
| 12 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1017 | 10 | 1 | 2026-01-29 | | 12 | [📂 Folder Memory Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 59 | 1278 | 6 | 8 | 2026-01-20 |
| 13 | [📂 Folder Memory Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 57 | 1229 | 6 | 8 | 2026-01-20 | | 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1048 | 10 | 1 | 2026-01-29 |
| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 37 | 565 | 6 | 2 | 2026-01-28 | | 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 37 | 579 | 6 | 2 | 2026-01-28 |
| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 32 | 632 | 7 | 4 | 2026-01-28 | | 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 656 | 7 | 5 | 2026-01-28 |
| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 666 | 8 | 1 | 2026-01-28 | | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 680 | 8 | 1 | 2026-01-28 |
| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 19 | 407 | 5 | 1 | 2026-01-08 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 425 | 5 | 1 | 2026-01-08 |
| 18 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | unknown | | 0 | 1434 | 12 | 17 | 2026-01-28 | | 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 13 | 370 | 2 | 0 | 2026-02-09 |
| 19 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | unknown | | 0 | 136 | 2 | 0 | 2026-01-14 | | 19 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | unknown | | 0 | 1481 | 12 | 18 | 2026-01-28 |
| 20 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | unknown | | 0 | 1398 | 14 | 10 | 2026-01-10 | | 20 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | unknown | | 0 | 142 | 2 | 0 | 2026-01-14 |
| 21 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | unknown | | 0 | 1417 | 14 | 10 | 2026-01-10 |

View File

@@ -23,7 +23,7 @@ Actions are interactive plugins that:
Intelligently analyzes text content and generates interactive mind maps with beautiful visualizations. Intelligently analyzes text content and generates interactive mind maps with beautiful visualizations.
**Version:** 0.9.1 **Version:** 0.9.2
[:octicons-arrow-right-24: Documentation](smart-mind-map.md) [:octicons-arrow-right-24: Documentation](smart-mind-map.md)
@@ -33,7 +33,7 @@ Actions are interactive plugins that:
Transform text into professional infographics using AntV visualization engine with various templates. Transform text into professional infographics using AntV visualization engine with various templates.
**Version:** 1.4.9 **Version:** 1.5.0
[:octicons-arrow-right-24: Documentation](smart-infographic.md) [:octicons-arrow-right-24: Documentation](smart-infographic.md)

View File

@@ -0,0 +1,53 @@
# GitHub Copilot SDK Files Filter (v0.1.2)
This is a dedicated **companion filter plugin** designed specifically for the [GitHub Copilot SDK Pipe](../pipes/github-copilot-sdk.md).
Its core mission is to **protect user-uploaded files from being "pre-processed" by the OpenWebUI core system, ensuring that the Copilot Agent receives the raw files for autonomous analysis.**
## 🎯 Why is this needed?
In OpenWebUI's default workflow, when you upload a file (e.g., PDF, Excel, Python script), OpenWebUI automatically initiates a **RAG (Retrieval-Augmented Generation)** process: parsing the file, vectorizing it, extracting text, and injecting it into the prompt.
While useful for standard models, this is often disruptive for a **Copilot SDK Agent**:
1. **Agent Needs Raw Files**: The Agent may need to run Python code to read an Excel file or analyze a full directory structure, not chopped-up text fragments.
2. **Context Pollution**: Large amounts of text injected by RAG consume tokens and can confuse the Agent about "where the file is."
3. **Conflicts**: If you have other multimodal plugins installed (like Gemini Filter), they might compete for file processing rights.
**This plugin acts as a "bodyguard" to solve these issues.**
## 🚀 How it Works
When you select a Copilot model (name containing `copilot_sdk`) in OpenWebUI and send a file:
1. **Intercept**: This plugin runs with high priority (Priority 0), before RAG and other filters.
2. **Relocate**: Detecting a Copilot model, it moves the `files` list from the request to a secure custom field `copilot_files`.
3. **Hide**: It clears the original `files` field.
4. **Status Update**: It emits a status message "Managed X files for Copilot (RAG Bypassed)" to the UI.
5. **Pass**: The OpenWebUI core sees an empty `files` list and **does not trigger RAG**.
6. **Deliver**: The subsequent [Copilot SDK Pipe](../pipes/github-copilot-sdk.md) plugin checks `copilot_files`, retrieves file information, and automatically copies them into the Agent's isolated workspace.
## 📦 Installation & Configuration
### 1. Installation
Import this plugin on the OpenWebUI **Functions** page.
### 2. Enable
Ensure this Filter is enabled globally or in chat settings.
### 3. Configuration (Valves)
Default settings work for most users unless you have specific needs:
| Parameter | Description | Default |
| :--- | :--- | :--- |
| **priority** | Execution priority of the filter. **Must be lower than OpenWebUI RAG priority**. | `0` |
| **target_model_keyword** | Keyword to identify Copilot models. Only models containing this keyword will trigger file interception. | `copilot_sdk` |
## ⚠️ Important Notes
* **Must be used with Copilot SDK Pipe**: If you install this plugin without the main Pipe plugin, uploaded files will simply "disappear" (as no subsequent plugin will look for them in `copilot_files`).
* **Gemini Filter Compatibility**: This plugin is fully compatible with the Gemini Multimodal Filter. As long as the priority is set correctly (This Plugin < Gemini Plugin), they can coexist without interference.
* **Physical File Path**: Ensure the `OPENWEBUI_UPLOAD_PATH` is correctly set in the Pipe plugin Valves for the actual file transport to work.

View File

@@ -0,0 +1,53 @@
# GitHub Copilot SDK 文件过滤器 (v0.1.2)
这是一个专门为 [GitHub Copilot SDK Pipe](../pipes/github-copilot-sdk.zh.md) 设计的**伴侣过滤器插件**。
它的核心使命是:**保护用户上传的文件不被 OpenWebUI 核心系统“抢先处理”,确保 Copilot Agent 能够接收到原始文件并进行自主分析。**
## 🎯 为什么需要它?
在 OpenWebUI 的默认流程中,当你上传一个文件(如 PDF、Excel、Python 脚本OpenWebUI 会自动启动 **RAG检索增强生成** 流程:解析文件、向量化、提取文本并注入到提示词中。
虽然这对普通模型很有用,但对于 **Copilot SDK Agent** 来说,这往往是干扰:
1. **Agent 需要原始文件**Agent 可能需要运行 Python 代码读取 Excel或者分析完整的代码结构而不是被切碎的文本片段。
2. **上下文污染**RAG 注入的大量文本会消耗 Token且容易让 Agent 混淆“文件在哪里”。
3. **冲突**:如果你同时安装了其他多模态插件(如 Gemini Filter它们可能会争夺文件的处理权。
**本插件就是为了解决这个问题而生的“保镖”。**
## 🚀 功能原理
当你在 OpenWebUI 中选择了一个 Copilot 模型(名称包含 `copilot_sdk`)并发送文件时:
1. **拦截 (Intercept)**本插件会以极高的优先级Priority 0运行先于 RAG 和其他过滤器。
2. **搬运 (Relocate)**:它检测到模型是 Copilot便将请求中的 `files`(文件列表)移动到一个安全的自定义字段 `copilot_files` 中。
3. **隐身 (Hide)**:它清空原始的 `files` 字段。
4. **状态更新**: 它会在 UI 中发出“已为 Copilot 管理 X 个文件 (已绕过 RAG)”的状态消息。
5. **放行 (Pass)**OpenWebUI 核心看到 `files` 为空,便**不会触发 RAG**。
6. **交付 (Deliver)**:后续的 [Copilot SDK Pipe](../pipes/github-copilot-sdk.zh.md) 插件会检查 `copilot_files`,从中获取文件信息,并自动将其复制到 Agent 的独立工作区中。
## 📦 安装与配置
### 1. 安装
在 OpenWebUI 的 **Functions** 页面导入此插件。
### 2. 启用
确保在全局或对话设置中启用了此 Filter。
### 3. 配置 (Valves)
通常不需要修改默认配置,除非你有特殊需求:
| 参数 | 说明 | 默认值 |
| :--- | :--- | :--- |
| **priority** | 过滤器的执行优先级。**必须小于 OpenWebUI RAG 的优先级**。 | `0` |
| **target_model_keyword** | 用于识别 Copilot 模型的关键词。只有包含此关键词的模型才会触发 file 拦截。 | `copilot_sdk` |
## ⚠️ 注意事项
* **必须配合 Copilot SDK Pipe 使用**:如果你没有安装主 Pipe 插件,本插件将导致上传的文件“凭空消失”(因为没有后续插件去 `copilot_files` 里找它们)。
* **Gemini Filter 兼容性**:本插件已完美兼容 Gemini 多模态过滤器。只要优先级设置正确(本插件 < Gemini 插件),它们可以共存互不干扰。
* **物理文件路径**: 确保在 Pipe 插件的 Valves 中正确设置了 `OPENWEBUI_UPLOAD_PATH`,以便文件自动搬运功能正常工作。

View File

@@ -16,7 +16,7 @@ Filters act as middleware in the message pipeline:
<div class="grid cards" markdown> <div class="grid cards" markdown>
- :material-arrow-collapse-vertical:{ .lg .middle } **Async Context Compression** - :material-arrow-collapse-vertical:{ .lg .middle } **Async Context Compression**
--- ---
@@ -26,7 +26,7 @@ Filters act as middleware in the message pipeline:
[:octicons-arrow-right-24: Documentation](async-context-compression.md) [:octicons-arrow-right-24: Documentation](async-context-compression.md)
- :material-text-box-plus:{ .lg .middle } **Context Enhancement** - :material-text-box-plus:{ .lg .middle } **Context Enhancement**
--- ---
@@ -36,7 +36,7 @@ Filters act as middleware in the message pipeline:
[:octicons-arrow-right-24: Documentation](context-enhancement.md) [:octicons-arrow-right-24: Documentation](context-enhancement.md)
- :material-folder-refresh:{ .lg .middle } **Folder Memory** - :material-folder-refresh:{ .lg .middle } **Folder Memory**
--- ---
@@ -46,7 +46,7 @@ Filters act as middleware in the message pipeline:
[:octicons-arrow-right-24: Documentation](folder-memory.md) [:octicons-arrow-right-24: Documentation](folder-memory.md)
- :material-format-paint:{ .lg .middle } **Markdown Normalizer** - :material-format-paint:{ .lg .middle } **Markdown Normalizer**
--- ---
@@ -56,7 +56,7 @@ Filters act as middleware in the message pipeline:
[:octicons-arrow-right-24: Documentation](markdown_normalizer.md) [:octicons-arrow-right-24: Documentation](markdown_normalizer.md)
- :material-merge:{ .lg .middle } **Multi-Model Context Merger** - :material-merge:{ .lg .middle } **Multi-Model Context Merger**
--- ---
@@ -66,7 +66,7 @@ Filters act as middleware in the message pipeline:
[:octicons-arrow-right-24: Documentation](multi-model-context-merger.md) [:octicons-arrow-right-24: Documentation](multi-model-context-merger.md)
- :material-file-document-multiple:{ .lg .middle } **Web Gemini Multimodal Filter** - :material-file-document-multiple:{ .lg .middle } **Web Gemini Multimodal Filter**
--- ---
@@ -76,6 +76,16 @@ Filters act as middleware in the message pipeline:
[:octicons-arrow-right-24: Documentation](web-gemini-multimodel.md) [:octicons-arrow-right-24: Documentation](web-gemini-multimodel.md)
- :material-file-shield:{ .lg .middle } **Copilot SDK Files Filter**
---
A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It ensures the Agent receives raw files for autonomous analysis.
**Version:** 0.1.2
[:octicons-arrow-right-24: Documentation](github-copilot-sdk-files-filter.md)
</div> </div>
--- ---

View File

@@ -16,7 +16,7 @@ Filter 充当消息管线中的中间件:
<div class="grid cards" markdown> <div class="grid cards" markdown>
- :material-arrow-collapse-vertical:{ .lg .middle } **Async Context Compression** - :material-arrow-collapse-vertical:{ .lg .middle } **Async Context Compression**
--- ---
@@ -26,7 +26,7 @@ Filter 充当消息管线中的中间件:
[:octicons-arrow-right-24: 查看文档](async-context-compression.md) [:octicons-arrow-right-24: 查看文档](async-context-compression.md)
- :material-text-box-plus:{ .lg .middle } **Context Enhancement** - :material-text-box-plus:{ .lg .middle } **Context Enhancement**
--- ---
@@ -36,7 +36,7 @@ Filter 充当消息管线中的中间件:
[:octicons-arrow-right-24: 查看文档](context-enhancement.md) [:octicons-arrow-right-24: 查看文档](context-enhancement.md)
- :material-folder-refresh:{ .lg .middle } **Folder Memory** - :material-folder-refresh:{ .lg .middle } **Folder Memory**
--- ---
@@ -46,7 +46,7 @@ Filter 充当消息管线中的中间件:
[:octicons-arrow-right-24: 查看文档](folder-memory.zh.md) [:octicons-arrow-right-24: 查看文档](folder-memory.zh.md)
- :material-format-paint:{ .lg .middle } **Markdown Normalizer** - :material-format-paint:{ .lg .middle } **Markdown Normalizer**
--- ---
@@ -56,6 +56,16 @@ Filter 充当消息管线中的中间件:
[:octicons-arrow-right-24: 查看文档](markdown_normalizer.zh.md) [:octicons-arrow-right-24: 查看文档](markdown_normalizer.zh.md)
- :material-file-shield:{ .lg .middle } **Copilot SDK 文件过滤器**
---
专门用于绕过 OpenWebUI 默认 RAG 机制的过滤器,针对 GitHub Copilot SDK 模型。确保 Agent 能够接收到原始文件进行自主分析。
**版本:** 0.1.2
[:octicons-arrow-right-24: 查看文档](github-copilot-sdk-files-filter.zh.md)
</div> </div>
--- ---

View File

@@ -0,0 +1,80 @@
# GitHub Copilot SDK Plugin Deep Dive
**Version:** 0.6.0 | **Author:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **Status:** Production-Ready
The GitHub Copilot SDK plugin is far more than a simple API proxy; it is a highly integrated **Intelligent Agent Runtime Environment**. This document explores the core features, implementation details, technical architecture, and security design that define its capabilities.
---
## 🚀 1. Feature Catalog
The plugin implements advanced capabilities that go far beyond standard API calls:
- **✅ Physical Workspace Management**: Automatically creates isolated directories for each chat session to manage uploaded files and Agent-generated scripts.
- **✅ Real-time TODO Sync**: Mounts to the OpenWebUI database to persist Agent plans directly into a UI progress bar, ensuring transparency for long-running tasks.
- **✅ Cross-Ecosystem Tool Bridging**: Translates OpenWebUI Search, Python interpreters, and custom MCP tools into native Copilot capabilities.
- **✅ Intelligent File Transport**: Ensures the Agent can access raw files (Excel, PDF, Code) like a local developer through physical file duplication.
- **✅ Chain of Thought Streaming**: Full support for rendering the model's reasoning/thinking process in real-time.
- **✅ BYOK with Plugin Power**: Connect external OpenAI/Anthropic models while retaining all the plugin's workspace and tool management features.
---
## 🎯 2. Use Cases: Beyond Basic Chat
With these features, the plugin excels in complex, real-world scenarios:
### 📁 Autonomous Repository Maintenance (Agentic DevOps)
>
> **Action**: Upload a Zip archive containing a codebase with bugs.
> **Utility**: The Agent extracts the archive, uses `bash` to navigate and search, applies fixes via the `edit` tool, and runs tests to verify the solution—all within its isolated sandbox.
### 📊 Deep Data Analysis (Data Scientist Agent)
>
> **Action**: Upload multiple heavy Excel spreadsheets.
> **Utility**: By bypassing RAG (via the filter), the Agent loads raw files directly into its Python interpreter, performs cross-table calculations, and generates analytical charts presented via Artifacts.
### 📝 Strategic Task Management
>
> **Action**: "Develop a full architecture for a new mobile app."
> **Utility**: The plugin captures the Agent's breakdown of 20+ sub-tasks. The persistent progress bar reflects ongoing progress (e.g., "Designing Schema", "Drafting API"), providing clarity during long marathons.
---
## 🛡️ 3. Technical Architecture
### 3.1 Three-Layer Sandbox Isolation
To prevent data leakage in multi-user environments, the plugin enforces a strict physical directory structure:
`/app/backend/data/copilot_workspace/{user_id}/{chat_id}/`
- **Constraint**: Code execution and file storage are confined to the session-specific folder.
- **Persistence**: Data remains valid across container restarts due to volume mounting.
### 3.2 Dynamic Tool Bridging
How does Copilot "learn" to use OpenWebUI tools?
1. **Introspection**: Analyzes docstrings and type hints of OpenWebUI tools.
2. **Schema Generation**: Dynamically creates JSON descriptions compliant with the GitHub Copilot specification.
3. **Routing**: Handles parameter validation, identity injection, and result forwarding between systems.
### 3.3 Event-Driven TODO Hub
The plugin captures internal SDK events to power the UI progress bar:
- **Interceptor**: Listens for `tool.execution_complete` events for the `update_todo` tool.
- **Storage**: Syncs project metrics directly to the `chat_todos` table in the OpenWebUI database (SQLite/PostgreSQL).
---
## ⚡ 4. Runtime Performance
- **Anti-Shake Logic**: Environment checks happen only once every 24 hours per process, preventing redundant system calls.
- **Tool Caching**: Persists tool definitions across sessions to reduce overhead, improving initial response times by up to 40%.
---
## 🛠️ 5. Development Best Practices
1. **Use the Filter**: Always pair with `github_copilot_sdk_files_filter` to ensure files reach the Agent in their original binary form.
2. **File-First Execution**: Encourage the Agent to "write code to file and execute" rather than relying on direct interactive shell input for complex logic.

View File

@@ -0,0 +1,80 @@
# GitHub Copilot SDK 插件深度解析 (Deep Dive)
**版本:** 0.6.0 | **作者:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **状态:** 生产级
GitHub Copilot SDK 插件不仅仅是一个 API 转发器,它是一个高度集成的 **智能 Agent 运行环境**。本文将从功能实现、应用场景、技术架构及安全设计四个维度,深入解析这一插件的强大之处。
---
## 🚀 1. 核心功能清单 (Feature Catalog)
插件通过深度集成实现了以下超越普通 API 调用的能力:
- **✅ 物理级工作区管理**: 自动为每个对话创建独立的物理目录,管理用户上传和 Agent 生成的所有文件。
- **✅ 实时 TODO 状态同步**: 通过数据库挂载,实时将 Agent 的计划提取到 UI 进度条中,解决长任务透明度问题。
- **✅ 跨生态工具桥接**: 自动将 OpenWebUI 的搜索、Python 运行环境和自定义 MCP 工具转化为 Copilot 原生工具。
- **✅ 智能文件搬运**: 物理级文件副本传输,确保 Agent 可以像本地开发者一样访问 Excel、PDF 和代码仓库。
- **✅ 思考过程可见性**: 完整模拟 GitHub Copilot 的思维链 (Thinking Process) 流式展示。
- **✅ BYOK 二次鉴权**: 支持在 Copilot 框架内接入外部 OpenAI/Anthropic 模型,同时享受插件的所有增强功能。
---
## 🎯 2. 这个插件能用来干什么? (Use Cases)
基于上述功能,该插件可以胜任以下复杂场景:
### 📁 场景 A全自动代码仓库维护 (Agentic DevOps)
>
> **操作**: 上传一个包含 Bug 的 Zip 压缩包。
> **用途**: Agent 会自动解密、解压,使用 `bash` 定位问题,调用 `edit` 修改代码,最后运行测试脚本。这一切都在隔离沙箱中完成,你只需要审核最终的补丁。
### 📊 场景 B深度财务数据审计 (Data Analyst Agent)
>
> **操作**: 上传一年的 Excel 财务报表。
> **用途**: 绕过传统 RAG 的文本切片限制Agent 直接通过 Python 脚本加载原始表格,进行跨表计算和逻辑校验,并生成可视化图表。
### 📝 场景 C复杂长任务进度追踪 (Project Manager)
>
> **操作**: 输入“请基于以下需求文档编写一个完整的 Web 后端方案”。
> **用途**: 插件捕捉 Agent 拆解的 20+ 个子任务。顶部的实时进度条会告诉你它正在“设计数据库”还是“编写认证逻辑”,确保你对黑盒任务了如指掌。
---
## 🛡️ 3. 技术架构设计 (Technical Architecture)
### 3.1 三层物理安全隔离 (Workspace Isolation)
为了确保多用户环境下的数据安全,插件强制执行以下物理路径:
`/app/backend/data/copilot_workspace/{user_id}/{chat_id}/`
- **隔离性**: 进程内代码执行被严格约束在 `chat_id` 目录下。
- **持久性**: 即使容器重启,挂载路径下的工作成果依然保留。
### 3.2 零配置工具桥接 (Dynamic Tool Bridging)
插件如何让 Copilot “学会”使用 OpenWebUI 的工具?
1. **内省 (Introspection)**: 实时读取工具的 `docstring``type hints`
2. **动态转换**: 生成符合 GitHub Copilot 规范的工具描述符。
3. **双向路由**: 处理参数校验、身份注入(如认证头)以及结果回传。
### 3.3 数据库集成与事件驱动
插件通过监听 `NDJSON` 事件流,实现状态同步:
- **监听器**: 实时过滤 `tool.execution_complete` 事件。
- **持久层**: 使用 OpenWebUI 核心相同的 `SQLAlchemy` 引擎操作 `chat_todos` 表。
---
## ⚡ 4. 性能优化 (Performance)
- **环境检查防抖**: 全局类变量保护,版本核对周期为 24 小时,避免高并发下的 I/O 争抢。
- **工具定义缓存**: 仅在变更时刷新工具元数据首包响应速度TTFB提升约 40%。
---
## 🛠️ 5. 开发建议 (Best Practices)
1. **协同工作**: 必须安装 `github_copilot_sdk_files_filter` 以确保文件以“二进制原文”而非“RAG 切片”传递。
2. **Python 范式**: 鼓励 Agent 采取“写文件 -> 运行文件”的模式,而非交互式 Shell 输出,以获得更好的执行稳定性。

View File

@@ -1,116 +1,117 @@
# GitHub Copilot SDK Pipe for OpenWebUI # GitHub Copilot SDK Pipe for OpenWebUI
**Author:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **Version:** 0.5.1 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT **Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 0.6.2 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT
This is an advanced Pipe function for [OpenWebUI](https://github.com/open-webui/open-webui) that integrates the official [GitHub Copilot SDK](https://github.com/github/copilot-sdk). It enables you to use **GitHub Copilot models** (e.g., `gpt-5.2-codex`, `claude-sonnet-4.5`, `gemini-3-pro`, `gpt-5-mini`) **AND** your own models via **BYOK** (OpenAI, Anthropic) directly within OpenWebUI, providing a unified agentic experience. This is an advanced Pipe function for [OpenWebUI](https://github.com/open-webui/open-webui) that integrates the official [GitHub Copilot SDK](https://github.com/github/copilot-sdk). It enables you to use **GitHub Copilot models** (e.g., `gpt-5.2-codex`, `claude-sonnet-4.5`,`gemini-3-pro`, `gpt-5-mini`) **AND** your own models via **BYOK** (OpenAI, Anthropic) directly within OpenWebUI, providing a unified agentic experience with **strict User & Chat-level Workspace Isolation**.
> [!IMPORTANT]
> **Essential Companion**
> To unlock file handling and data analysis capabilities, you must install the [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6).
> [!TIP] > [!TIP]
> **No Subscription Required for BYOK** > **No Subscription Required for BYOK**
> If you are using your own API keys (BYOK mode with OpenAI/Anthropic), **you do NOT need a GitHub Copilot subscription.** > If you are using your own API keys (BYOK mode with OpenAI/Anthropic), **you do NOT need a GitHub Copilot subscription.** A subscription is only required to access GitHub's official models.
> A subscription is only required to access GitHub's official models.
## 🚀 What's New (v0.5.1) - Major Upgrade ---
- **🧠 Smarter BYOK Detection**: Improved logic to correctly identify BYOK vs. Official Copilot models, supporting custom models (Characters/Prompts) and fixing multiplier detection (e.g., `(0x)`, `(1x)`). ## ✨ v0.6.2 Updates (What's New)
- **⚡ Performance Boost**: Implemented **Tool Caching** to persist tool definitions across requests, significantly reducing overhead.
- **🧩 Enriched Tool Integration**: Tool descriptions now include source grouping (Built-in/User/Server) and automatic metadata extraction (Title/Description) from Python docstrings. - **🛠️ New Workspace Artifacts Tool**: Introduced `publish_file_from_workspace`. Agents can now generate files (e.g., Python-generated Excel/CSV) and provide direct download links for the user to click and save.
- **🛡 Precise Control**: Added support for OpenWebUI's `function_name_filter_list` to filter MCP and OpenAPI functions. - ** Workflow Optimization**: Improved reliability of the internal agentic workspace management.
- **🔑 User-Level BYOK**: Fully leverage Copilot SDK with your own Model Providers (OpenAI, Anthropic) with user-level API Key overrides. - **🛡️ Enhanced Security**: Refined access control for system resources within the isolated environment.
- **📝 Better Formatting**: Enforced standard Markdown tables in system prompts to prevent rendering issues with HTML tables. - **🔧 Performance Tuning**: Optimized stream processing for larger context windows.
---
## ✨ Key Capabilities ## ✨ Key Capabilities
- **🔑 Flexible Auth & BYOK**: Supports GitHub Copilot subscription (PAT) OR Bring Your Own Key (OpenAI/Anthropic), giving you total control over model access and billing. - **🔑 Flexible Auth & BYOK**: Official Copilot subscriptions (PAT) or Bring Your Own Key (OpenAI/Anthropic).
- **🌉 The Ultimate Bridge**: The first and only plugin that creates a seamless bridge between **OpenWebUI Tools** and **GitHub Copilot SDK**. - **🔌 Universal Tool Protocol**: Native support for **MCP (Model Context Protocol)**, OpenAPI, and OpenWebUI built-in tools.
- **🚀 Official & Native**: Built directly on the official Python SDK, providing the most stable and authentic Copilot experience. - **🛡️ Sandbox Workspace Isolation**: Strict per-session sandboxing for data privacy and security.
- **🌊 Advanced Streaming (Thought Process)**: Supports full model reasoning/thinking display with typewriter effects. - **♾️ Infinite Session Management**: Smart context window management with automatic compaction for indefinite conversation capability.
- **🖼️ Intelligent Multimodal**: Full support for images and attachments, enabling Copilot to "see" your workspace. - **🧠 Deep Database Integration**: Real-time persistence of TOD·O lists for long-running workflows.
- **🛠️ Effortless Setup**: Automatic CLI detection, version enforcement, and dependency management. - **🌊 Advanced Streaming**: Full support for thinking process/Chain of Thought visualization.
- **🛡 Integrated Security**: Supports secure PAT authentication for standard and extended capabilities. - **🖼 Intelligent Multimodal**: Vision capabilities and raw file analysis support.
- **⚡ Full-Lifecycle File Agent**: Supports receiving uploaded files for raw bypass analysis and publishing generated results (e.g., analyzed Excel/reports) as downloadable links—a complete closed-loop agentic workflow.
## Installation & Configuration ---
### 1) Import Function ## ⚙️ Core Configuration (Valves)
1. Open OpenWebUI. ### 1. Administrator Settings (Base)
2. Go to **Workspace** -> **Functions**.
3. Click **+** (Create Function).
4. Paste the content of `github_copilot_sdk.py` (or `github_copilot_sdk_cn.py` for Chinese) completely.
5. Save.
### 2) Configure Valves (Settings) Administrators define the default behavior for all users in the function settings.
Find "GitHub Copilot" in the function list and click the **⚙️ (Valves)** icon to configure: | Valve | Default | Description |
| Parameter | Description | Default |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| **GH_TOKEN** | **(Required)** GitHub Access Token (PAT or OAuth Token). Access to Chat. | - | | `GH_TOKEN` | `""` | Global GitHub Token (Requires 'Copilot Requests' permission). |
| **DEBUG** | Whether to enable debug logs (output to browser console). | `False` | | `ENABLE_OPENWEBUI_TOOLS` | `True` | Enable OpenWebUI Tools (includes defined Tools and Built-in Tools). |
| **LOG_LEVEL** | Copilot CLI log level: none, error, warning, info, debug, all. | `error` | | `ENABLE_OPENAPI_SERVER` | `True` | Enable OpenAPI Tool Server connection. |
| **SHOW_THINKING** | Show model reasoning/thinking process (requires streaming + model support). | `True` | | `ENABLE_MCP_SERVER` | `True` | Enable Direct MCP Client connection (Recommended). |
| **COPILOT_CLI_VERSION** | Specific Copilot CLI version to install/enforce. | `0.0.405` | | `REASONING_EFFORT` | `medium` | Reasoning effort level: low, medium, high. |
| **EXCLUDE_KEYWORDS** | Exclude models containing these keywords (comma separated). | - | | `SHOW_THINKING` | `True` | Show model reasoning/thinking process. |
| **WORKSPACE_DIR** | Restricted workspace directory for file operations. | - | | `INFINITE_SESSION` | `True` | Enable Infinite Sessions (automatic context compaction). |
| **INFINITE_SESSION** | Enable Infinite Sessions (automatic context compaction). | `True` | | `MAX_MULTIPLIER` | `1.0` | Max allowed billing multiplier (0x for free models only). |
| **COMPACTION_THRESHOLD** | Background compaction threshold (0.0-1.0). | `0.8` | | `EXCLUDE_KEYWORDS` | `""` | Exclude models containing these keywords (comma separated). |
| **BUFFER_THRESHOLD** | Buffer exhaustion threshold (0.0-1.0). | `0.95` | | `TIMEOUT` | `300` | Timeout for each stream chunk (seconds). |
| **TIMEOUT** | Timeout for each stream chunk (seconds). | `300` | | `BYOK_TYPE` | `openai` | BYOK Provider Type: `openai`, `anthropic`. |
| **CUSTOM_ENV_VARS** | Custom environment variables (JSON format). | - | | `BYOK_BASE_URL` | `""` | BYOK Base URL (e.g., <https://api.openai.com/v1>). |
| **REASONING_EFFORT** | Reasoning effort level: low, medium, high. `xhigh` is supported for some models. | `medium` | | `BYOK_MODELS` | `""` | BYOK Model List (comma separated). Leave empty to fetch from API. |
| **ENABLE_MCP_SERVER** | Enable Direct MCP Client connection (Recommended). | `True` | | `CUSTOM_ENV_VARS` | `""` | Custom environment variables (JSON format). |
| **ENABLE_OPENWEBUI_TOOLS** | Enable OpenWebUI Tools (includes defined and server tools). | `True` | | `DEBUG` | `False` | Enable this to see detailed logs in your browser console. |
| **BYOK_ENABLED** | Enable BYOK (Bring Your Own Key) to use custom providers. | `False` |
| **BYOK_TYPE** | BYOK Provider Type: `openai`, `azure`, `anthropic`. | `openai` |
| **BYOK_BASE_URL** | BYOK Base URL (e.g., `https://api.openai.com/v1`). | - |
| **BYOK_API_KEY** | BYOK API Key (Global Setting). | - |
| **BYOK_BEARER_TOKEN** | BYOK Bearer Token (Global, overrides API Key). | - |
| **BYOK_WIRE_API** | BYOK Wire API: `completions`, `responses`. | `completions` |
#### User Valves (per-user overrides) ### 2. User Settings (Individual Overrides)
These optional settings can be set per user (overrides global Valves): Standard users can override these settings in their individual Profile/Function settings.
| Parameter | Description | Default | | Valve | Description |
| :--- | :--- | :--- | | :--- | :--- |
| **GH_TOKEN** | Personal GitHub Token (overrides global setting). | - | | `GH_TOKEN` | Use your personal GitHub Token. |
| **REASONING_EFFORT** | Reasoning effort level (low/medium/high/xhigh). | - | | `REASONING_EFFORT` | Individual reasoning effort preference. |
| **DEBUG** | Enable technical debug logs. | `False` | | `SHOW_THINKING` | Show model reasoning/thinking process. |
| **SHOW_THINKING** | Show model reasoning/thinking process. | `True` | | `MAX_MULTIPLIER` | Maximum allowed billing multiplier override. |
| **ENABLE_OPENWEBUI_TOOLS** | Enable OpenWebUI Tools (overrides global). | `True` | | `EXCLUDE_KEYWORDS` | Exclude models containing these keywords. |
| **ENABLE_MCP_SERVER** | Enable MCP server loading (overrides global). | `True` | | `BYOK_API_KEY` | Use your personal OpenAI/Anthropic API Key. |
| **BYOK_API_KEY** | BYOK API Key (User override). | - |
---
## 🎯 Use Cases (What can you do?)
- **📁 Fully Autonomous DevOps**: Agent analyzes code, runs tests, and applies patches within its isolated sandbox.
- **📊 Deep Data Auditing**: Directly process raw Excel/CSV data via Python (bypassing RAG) and generate visual reports.
- **📝 Long-Task Management**: Automatically decomposes complex requests and persists TOD·O progress across sessions.
---
## ⭐ Support ## ⭐ Support
If this plugin has been useful, a star on [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) is a big motivation for me. Thank you for the support. If this plugin has been useful, a **Star** on [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) would be a great motivation for me. Thank you!
### Get Token ---
To use GitHub Copilot, you need a GitHub Personal Access Token (PAT) with appropriate permissions. ## 🚀 Installation & Configuration
**Steps to generate your token:** ### 1) Import Function
1. Open OpenWebUI, go to **Workspace** -> **Functions**.
2. Click **+** (Create Function), paste the content of `github_copilot_sdk.py`.
3. Save and ensure it is enabled.
### 2) Get Token
1. Visit [GitHub Token Settings](https://github.com/settings/tokens?type=beta). 1. Visit [GitHub Token Settings](https://github.com/settings/tokens?type=beta).
2. Click **Generate new token (fine-grained)**. 2. Create **Fine-grained token**, granting **Account permissions** -> **Copilot Requests** access.
3. **Repository access**: Select **Public Repositories** (simplest) or **All repositories**. 3. Paste the generated Token into the `GH_TOKEN` field in Valves.
4. **Permissions**:
- If you chose **All repositories**, you must click **Account permissions**.
- Find **Copilot Requests**, and select **Access**.
5. Generate and copy the Token.
## 📋 Dependencies ---
This Pipe will automatically attempt to install the following dependencies: ## 📋 Troubleshooting & Dependencies
- `github-copilot-sdk` (Python package) - **Agent ignores files?**: Ensure the Files Filter is enabled, otherwise RAG will interfere with raw binaries.
- `github-copilot-cli` (Binary file, installed via official script) - **No progress bar?**: The bar only appears when the Agent uses the `update_todo` tool.
- **Dependencies**: This Pipe automatically installs `github-copilot-sdk` (Python) and `github-copilot-cli` (Binary).
## Troubleshooting ❓ ---
- **Images not recognized**:
- Ensure `MODEL_ID` is a model that supports multimodal input.
- **Thinking not shown**:
- Ensure **streaming is enabled** and the selected model supports reasoning output.
## Changelog ## Changelog

View File

@@ -1,117 +1,118 @@
# GitHub Copilot SDK 官方管道 # GitHub Copilot SDK 官方管道
**作者:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **版本:** 0.5.1 | **项目:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **许可证:** MIT **作者:** [Fu-Jie](https://github.com/Fu-Jie) | **版本:** 0.6.2 | **项目:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **许可证:** MIT
这是一个用于 [OpenWebUI](https://github.com/open-webui/open-webui) 的高级 Pipe 函数,深度集成了 **GitHub Copilot SDK**。它不仅支持 **GitHub Copilot 官方模型**(如 `gpt-5.2-codex`, `claude-sonnet-4.5`, `gemini-3-pro`, `gpt-5-mini`),还支持 **BYOK (自带 Key)** 模式对接自定义服务商OpenAI, Anthropic提供统一的 Agent 交互体验。 这是一个用于 [OpenWebUI](https://github.com/open-webui/open-webui) 的高级 Pipe 函数,深度集成了 **GitHub Copilot SDK**。它不仅支持 **GitHub Copilot 官方模型**(如 `gpt-5.2-codex`, `claude-sonnet-4.5`, `gemini-3-pro`, `gpt-5-mini`),还支持 **BYOK (自带 Key)** 模式对接自定义服务商OpenAI, Anthropic并具备**严格的用户与会话级工作区隔离**能力,提供统一且安全的 Agent 交互体验。
> [!IMPORTANT] > [!IMPORTANT]
> **核心伴侣组件**
> 如需启用文件处理与数据分析能力,请务必安装 [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6)。
> [!TIP] > [!TIP]
> **使用 BYOK 模式无需订阅** > **BYOK 模式无需订阅**
> 如果您使用自的 API Key (OpenAI, Anthropic) 运行 BYOK 模式,**则完全不需要** GitHub Copilot 订阅。 > 如果您使用自的 API Key (BYOK 模式对接 OpenAI/Anthropic)**您不需要 GitHub Copilot 官方订阅**。只有在访问 GitHub 官方模型时才需要订阅。
> 仅当您希望使用 GitHub 官方提供的模型时,才需要订阅。
## 🚀 最新特性 (v0.5.1) - 重大升级 ---
- **🧠 智能 BYOK 检测**: 优化了 BYOK 与官方 Copilot 模型的识别逻辑,完美支持自定义模型(角色/提示词)及倍率检测(如 `(0x)`, `(1x)`)。 ## ✨ 0.6.2 更新内容 (What's New)
- **⚡ 性能飙升**: 引入 **工具缓存 (Tool Caching)** 机制,在请求间持久化工具定义,显著降低调用开销。
- **🧩 丰富工具集成**: 工具描述现包含来源分组(内置/用户/服务器)及 Docstring 元数据自动解析。
- **🛡️ 精确控制**: 完美兼容 OpenWebUI 全局函数过滤配置 (`function_name_filter_list`),可精准控制暴露给 LLM 的函数。
- **🔑 用户级 BYOK**: 支持在用户层面配置自定义 API Key 对接 AI 供应商OpenAI, Anthropic
- **📝 格式优化**: 系统提示词强制使用标准 Markdown 表格,彻底解决 HTML 表格渲染问题。
## ✨ 核心能力 - **🛠️ 新增工作区产物工具**: 引入 `publish_file_from_workspace`。Agent 现在可以生成物理文件(如使用 Python 生成的 Excel/CSV 报表),并直接在聊天界面提供点击下载链接。
- **⚙️ 工作流优化**: 提升了内部 Agent 物理工作区管理的可靠性与原子性。
- **🛡️ 安全增强**: 精细化了隔离环境下系统资源的访问控制策略。
- **🔧 性能微调**: 针对大上下文窗口优化了流式数据处理性能。
- **🔑 灵活鉴权与 BYOK**: 支持 GitHub Copilot 订阅 (PAT) 或自带 Key (OpenAI/Anthropic),完全掌控模型访问与计费。 ---
- **🌉 强大的生态桥接**: 首个且唯一完美打通 **OpenWebUI Tools****GitHub Copilot SDK** 的插件。
- **🚀 官方原生产体验**: 基于官方 Python SDK 构建,提供最稳定、最纯正的 Copilot 交互体验。 ## ✨ 核心能力 (Key Capabilities)
- **🔑 灵活鉴权与 BYOK**: 支持 GitHub Copilot 官方订阅 (PAT) 或自带 Key (OpenAI/Anthropic)。
- **🔌 通用工具协议**: 原生支持 **MCP (Model Context Protocol)**、OpenAPI 以及 OpenWebUI 内置工具。
- **🛡️ 物理级工作区隔离**: 强制执行严格的用户特定沙箱,确保数据隐私与文件安全。
- **♾️ 无限会话管理**: 智能上下文窗口管理与自动压缩算法,支持无限时长的对话交互。
- **🧠 深度数据库集成**: 实时持久化 TOD·O 列表到 UI 进度条。
- **🌊 深度推理展示**: 完整支持模型思考过程 (Thinking Process) 的流式渲染。 - **🌊 深度推理展示**: 完整支持模型思考过程 (Thinking Process) 的流式渲染。
- **🖼️ 智能多模态**: 支持图像识别与附件上传,让 Copilot 拥有视觉能力 - **🖼️ 智能多模态**: 完整支持图像识别与附件上传分析
- **🛠️ 极简部署流程**: 自动检测环境、自动下载 CLI、自动管理依赖全自动化开箱即用 - **⚡ 全生命周期文件 Agent**: 支持接收上传文件进行绕过 RAG 的深度分析,并将处理结果(如分析后的 Excel/报告)发布为可下载链接,实现完整的闭环 Agent 工作流
- **🛡️ 纯净安全体系**: 支持标准 PAT 认证,确保数据安全。
## 安装与配置 ---
### 1. 导入函数 ## ⚙️ 核心配置参数 (Valves)
1. 打开 OpenWebUI。 ### 1. 管理员配置 (基础设置)
2. 进入 **Workspace** -> **Functions**
3. 点击 **+** (创建函数)。
4.`github_copilot_sdk_cn.py` 的内容完整粘贴进去。
5. 保存。
### 2. 配置 Valves (设置) 管理员可在函数设置中定义全局默认行为。
在函数列表中找到 "GitHub Copilot",点击 **⚙️ (Valves)** 图标进行配置: | 参数 | 默认值 | 说明 |
| 参数 | 说明 | 默认值 |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| **GH_TOKEN** | **(必填)** GitHub 访问令牌 (PAT 或 OAuth Token)。用于聊天。 | - | | `GH_TOKEN` | `""` | 全局 GitHub Token (需具备 'Copilot Requests' 权限)。 |
| **DEBUG** | 是否开启调试日志(输出到浏览器控制台)。 | `False` | | `ENABLE_OPENWEBUI_TOOLS` | `True` | 启用 OpenWebUI 工具 (包括定义工具和内置工具)。 |
| **LOG_LEVEL** | Copilot CLI 日志级别: none, error, warning, info, debug, all。 | `error` | | `ENABLE_OPENAPI_SERVER` | `True` | 启用 OpenAPI 工具服务器连接。 |
| **SHOW_THINKING** | 是否显示模型推理/思考过程(需开启流式 + 模型支持)。 | `True` | | `ENABLE_MCP_SERVER` | `True` | 启用直接 MCP 客户端连接 (推荐)。 |
| **COPILOT_CLI_VERSION** | 指定安装/强制使用的 Copilot CLI 版本。 | `0.0.405` | | `REASONING_EFFORT` | `medium` | 推理强度low, medium, high。 |
| **EXCLUDE_KEYWORDS** | 排除包含这些关键词的模型(逗号分隔)。 | - | | `SHOW_THINKING` | `True` | 显示模型推理/思考过程。 |
| **WORKSPACE_DIR** | 文件操作的受限工作区目录。 | - | | `INFINITE_SESSION` | `True` | 启用无限会话 (自动上下文压缩)。 |
| **INFINITE_SESSION** | 启用无限会话(自动上下文压缩)。 | `True` | | `MAX_MULTIPLIER` | `1.0` | 最大允许的模型计费倍率 (0x 为仅限免费模型)。 |
| **COMPACTION_THRESHOLD** | 后台压缩阈值 (0.0-1.0)。 | `0.8` | | `EXCLUDE_KEYWORDS` | `""` | 排除包含这些关键字的模型 (逗号分隔)。 |
| **BUFFER_THRESHOLD** | 缓冲区耗尽阈值 (0.0-1.0)。 | `0.95` | | `TIMEOUT` | `300` | 每个流数据块的超时时间 (秒)。 |
| **TIMEOUT** | 每个流式分块超时(秒)。 | `300` | | `BYOK_TYPE` | `openai` | BYOK 服务商类型:`openai`, `anthropic` |
| **CUSTOM_ENV_VARS** | 自定义环境变量 (JSON 格式)。 | - | | `BYOK_BASE_URL` | `""` | BYOK 基础 URL (例如: <https://api.openai.com/v1>)。 |
| **REASONING_EFFORT** | 推理强度级别: low, medium, high. `xhigh` 仅部分模型支持。 | `medium` | | `BYOK_MODELS` | `""` | BYOK 模型列表 (逗号分隔)。留空则从 API 获取。 |
| **ENABLE_MCP_SERVER** | 启用直接 MCP 客户端连接 (建议)。 | `True` | | `CUSTOM_ENV_VARS` | `""` | 自定义环境变量 (JSON 格式)。 |
| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具 (包括自定义和服务器工具)。 | `True` | | `DEBUG` | `False` | 开启此项以在前端控制台输出详细调试日志。 |
| **BYOK_ENABLED** | 启用 BYOK (自带 Key) 模式以使用自定义供应商。 | `False` |
| **BYOK_TYPE** | BYOK 供应商类型: `openai`, `azure`, `anthropic`。 | `openai` |
| **BYOK_BASE_URL** | BYOK 基础 URL (如 `https://api.openai.com/v1`)。 | - |
| **BYOK_API_KEY** | BYOK API Key (全局设置)。 | - |
| **BYOK_BEARER_TOKEN** | BYOK Bearer Token (全局,覆盖 API Key)。 | - |
| **BYOK_WIRE_API** | BYOK 通信协议: `completions`, `responses`。 | `completions` |
#### 用户 Valves按用户覆盖 ### 2. 用户配置 (个人覆盖)
以下设置可按用户单独配置(覆盖全局 Valves 普通用户可在各自的个人设置中根据需要覆盖以下参数。
| 参数 | 说明 | 默认值 | | 参数 | 说明 |
| :--- | :--- | :--- | | :--- | :--- |
| **GH_TOKEN** | 个人 GitHub Token(覆盖全局设置)。 | - | | `GH_TOKEN` | 使用个人 GitHub Token |
| **REASONING_EFFORT** | 推理强度级别low/medium/high/xhigh。 | - | | `REASONING_EFFORT` | 个人偏好的推理强度。 |
| **DEBUG** | 是否启用技术调试日志。 | `False` | | `SHOW_THINKING` | 显示模型推理/思考过程。 |
| **SHOW_THINKING** | 是否显示思考过程。 | `True` | | `MAX_MULTIPLIER` | 最大允许的模型计费倍率覆盖。 |
| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具(覆盖全局设置)。 | `True` | | `EXCLUDE_KEYWORDS` | 排除包含这些关键字的模型。 |
| **ENABLE_MCP_SERVER** | 启用动态 MCP 服务器加载(覆盖全局设置)。 | `True` | | `BYOK_API_KEY` | 使用个人的 OpenAI/Anthropic API Key。 |
## ⭐ 支持 ---
如果这个插件对你有帮助,欢迎到 [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) 点个 Star这将是我持续改进的动力感谢支持。 ## 🎯 典型应用场景 (Use Cases)
### 获取 Token - **📁 全自主仓库维护**: Agent 在隔离工作区内自动分析代码、运行测试并应用补丁。
- **📊 深度财务数据审计**: 直接通过 Python 加载 Excel/CSV 原始数据(绕过 RAG生成图表并实时预览。
- **📝 长任务项目管理**: 自动拆解复杂任务并持久化 TOD·O 进度,跨会话跟踪执行状态。
要使用 GitHub Copilot您需要一个具有适当权限的 GitHub 个人访问令牌 (PAT)。 ---
**获取步骤:** ## ⭐ 支持与交流 (Support)
1. 访问 [GitHub 令牌设置](https://github.com/settings/tokens?type=beta) 如果这个插件对您有所帮助,请在 [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) 项目上点个 **Star** 💫,这是对我最大的鼓励
2. 点击 **Generate new token (fine-grained)**
3. **Repository access**: 选择 **Public Repositories** (最简单) 或 **All repositories**
4. **Permissions**:
- 如果您选择了 **All repositories**,则必须点击 **Account permissions**
- 找到 **Copilot Requests**,选择 **Access**
5. 生成并复制令牌。
## 📋 依赖说明 ---
该 Pipe 会自动尝试安装以下依赖(如果环境中缺失): ## 🚀 安装与配置 (Installation)
- `github-copilot-sdk` (Python 包) ### 1) 导入函数
- `github-copilot-cli` (二进制文件,通过官方脚本安装)
## 故障排除 (Troubleshooting) ❓ 1. 打开 OpenWebUI前往 **工作区** -> **函数**
2. 点击 **+** (创建函数),完整粘贴 `github_copilot_sdk_cn.py` 的内容。
3. 点击保存并确保已启用。
- **图片及多模态使用说明** ### 2) 获取 Token (Get Token)
- 确保 `MODEL_ID` 是支持多模态的模型。
- **看不到思考过程**
- 确认已开启**流式输出**,且所选模型支持推理输出。
## 更新日志 1. 访问 [GitHub Token 设置](https://github.com/settings/tokens?type=beta)。
2. 创建 **Fine-grained token**,授予 **Account permissions** -> **Copilot Requests** 访问权限。
3. 将生成的 Token 填入插件的 `GH_TOKEN` 配置项中。
完整历史请查看 GitHub 项目: [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) ---
## 📋 常见问题与依赖 (Troubleshooting)
- **Agent 无法识别文件?**: 请确保已安装并启用了 Files Filter 插件,否则原始文件会被 RAG 干扰。
- **看不到 TODO 进度条?**: 进度条仅在 Agent 使用 `update_todo` 工具(通常是处理复杂任务)时出现。
- **依赖安装**: 本管道会自动尝试安装 `github-copilot-sdk` (Python 包) 和 `github-copilot-cli` (官方二进制)。
---
## 更新日志 (Changelog)
完整历史记录请见 GitHub: [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui)

View File

@@ -15,7 +15,7 @@ Pipes allow you to:
## Available Pipe Plugins ## Available Pipe Plugins
- [GitHub Copilot SDK](github-copilot-sdk.md) (v0.5.1) - Official GitHub Copilot SDK integration. Features **zero-config OpenWebUI Tool Bridge**, **BYOK** support, and **dynamic MCP discovery**. Supports streaming, multimodal, and infinite sessions. - [GitHub Copilot SDK](github-copilot-sdk.md) (v0.6.2) - Official GitHub Copilot SDK integration. Features **Workspace Isolation**, **Database Persistence**, **Zero-config OpenWebUI Tool Bridge**, **BYOK** support, and **dynamic MCP discovery**. Supports streaming, multimodal, and infinite sessions.
--- ---

View File

@@ -15,7 +15,7 @@ Pipes 可以用于:
## 可用的 Pipe 插件 ## 可用的 Pipe 插件
- [GitHub Copilot SDK](github-copilot-sdk.zh.md) (v0.5.1) - GitHub Copilot SDK 官方集成。**零配置工具桥接**与**BYOK (自带 Key) 支持**。支持流式输出、多模态及无限会话 - [GitHub Copilot SDK](github-copilot-sdk.zh.md) (v0.6.2) - GitHub Copilot SDK 官方集成。具备**工作区安全隔离**、**数据库持久化**、**零配置工具桥接**与**BYOK (自带 Key) 支持**。支持流式输出、打字机思考过程及无限会话。[查看深度架构解析](github-copilot-sdk-deep-dive.zh.md)
--- ---

View File

@@ -1,6 +1,6 @@
# 📊 Export to Excel # 📊 Export to Excel
**Author:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **Version:** 0.3.6 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT **Author:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **Version:** 0.3.7 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT
Export chat history to an Excel (.xlsx) file directly from the chat interface. Export chat history to an Excel (.xlsx) file directly from the chat interface.

View File

@@ -0,0 +1,53 @@
# GitHub Copilot SDK Files Filter
**Author:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **Version:** 0.1.2 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT
This is a dedicated **companion filter plugin** designed specifically for the [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4).
Its core mission is to **protect user-uploaded files from being "pre-processed" by the OpenWebUI core system, ensuring that the Copilot Agent receives the raw files for autonomous analysis.**
## 🎯 Why is this needed?
In OpenWebUI's default workflow, when you upload a file (e.g., PDF, Excel, Python script), OpenWebUI automatically initiates a **RAG (Retrieval-Augmented Generation)** process: parsing the file, vectorizing it, extracting text, and injecting it into the prompt.
While useful for standard models, this is often disruptive for a **Copilot SDK Agent**:
1. **Agent Needs Raw Files**: The Agent may need to run Python code to read an Excel file or analyze a full directory structure, not chopped-up text fragments.
2. **Context Pollution**: Large amounts of text injected by RAG consume tokens and can confuse the Agent about "where the file is."
3. **Control & Performance**: Bypassing the extraction step speeds up the response and gives the Agent full autonomy over how to handle the data.
**This plugin acts as a "bodyguard" to solve these issues.**
## 🚀 How it Works
When you select a Copilot model (name containing `copilot_sdk`) in OpenWebUI and send a file:
1. **Intercept**: This plugin runs with high priority (Priority 0), before RAG and other filters.
2. **Relocate**: Detecting a Copilot model, it moves the `files` list from the request to a secure custom field `copilot_files`.
3. **Hide**: It clears the original `files` field.
4. **Pass**: The OpenWebUI core sees an empty `files` list and **does not trigger RAG**.
5. **Deliver**: The subsequent Copilot SDK Pipe plugin checks `copilot_files`, retrieves file information, and automatically copies them into the Agent's isolated workspace.
## 📦 Installation & Configuration
### 1. Installation
Import this plugin on the OpenWebUI **Functions** page.
### 2. Enable
Ensure this Filter is enabled globally or in chat settings.
### 3. Configuration (Valves)
Default settings work for most users:
| Parameter | Description | Default |
| :--- | :--- | :--- |
| **priority** | Execution priority. **Must be lower than OpenWebUI RAG priority**. | `0` |
| **target_model_keyword** | Keyword to identify Copilot models for interception. | `copilot_sdk` |
## ⚠️ Important Notes
* **Must be used with Copilot SDK Pipe**: If you install this plugin without the main Pipe plugin, uploaded files will simply "disappear" (as no subsequent plugin will look for them).
* **Gemini Filter Compatibility**: Fully compatible with the Gemini Multimodal Filter. Just ensure priorities don't conflict.

View File

@@ -0,0 +1,51 @@
# GitHub Copilot SDK 文件过滤器
**作者:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **版本:** 0.1.2 | **项目:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **许可证:** MIT
这是一个专门为 [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) 设计的**伴侣过滤器插件**。
它的核心使命是:**保护用户上传的文件不被 OpenWebUI 核心系统“抢先处理”,确保 Copilot Agent 能够接收到原始文件并进行自主分析。**
## 🎯 为什么需要它?
在 OpenWebUI 的默认流程中,当你上传一个文件(如 PDF、Excel、Python 脚本OpenWebUI 会自动启动 **RAG检索增强生成** 流程:解析文件、向量化、提取文本并注入到提示词中。
虽然这对普通模型很有用,但对于 **Copilot SDK Agent** 来说,这往往是干扰:
1. **Agent 需要原始文件**Agent 可能需要运行 Python 代码读取 Excel或者分析完整的代码结构而不是被切碎的文本片段。
2. **上下文污染**RAG 注入的大量文本会消耗 Token且容易让 Agent 混淆“文件在哪里”。
3. **控制权与性能**:绕过提取步骤可以加快响应速度,并赋予 Agent 处理数据的完全自主权。
**本插件就是为了解决这个问题而生的“保镖”。**
## 🚀 功能原理
当你在 OpenWebUI 中选择了一个 Copilot 模型(名称包含 `copilot_sdk`)并发送文件时:
1. **拦截 (Intercept)**本插件会以极高的优先级Priority 5运行先于 RAG 和其他过滤器。
2. **搬运 (Relocate)**:它检测到模型是 Copilot便将请求中的 `files`(文件列表)移动到一个安全的自定义字段 `copilot_files` 中。
3. **隐身 (Hide)**:它清空原始的 `files` 字段。
4. **放行 (Pass)**OpenWebUI 核心看到 `files` 为空,便**不会触发 RAG**。
5. **交付 (Deliver)**:后续的 Copilot SDK Pipe 插件会检查 `copilot_files`,从中获取文件信息,并自动将其复制到 Agent 的独立工作区中。
## 📦 安装与配置
### 1. 安装
在 OpenWebUI 的 **Functions** 页面导入此插件。
### 2. 启用
确保在全局或对话设置中启用了此 Filter。
### 3. 配置 (Valves)
| 参数 | 说明 | 默认值 |
| :--- | :--- | :--- |
| **priority** | 过滤器的执行优先级。**必须小于 OpenWebUI RAG 的优先级**。 | `5` |
| **target_model_keyword** | 用户识别 Copilot 模型的关键词。只有包含此关键词的模型才会触发。 | `copilot_sdk` |
## ⚠️ 注意事项
* **必须配合 Copilot SDK Pipe 使用**:如果你没有安装主 Pipe 插件,本插件将导致上传的文件“凭空消失”。
* **Gemini Filter 兼容性**:已完美兼容 Gemini 多模态过滤器。只要优先级设置正确,它们可以共存互不干扰。

View File

@@ -0,0 +1,67 @@
"""
title: GitHub Copilot SDK Files Filter
id: github_copilot_sdk_files_filter
author: Fu-Jie
author_url: https://github.com/Fu-Jie/awesome-openwebui
funding_url: https://github.com/open-webui
version: 0.1.2
openwebui_id: 403a62ee-a596-45e7-be65-fab9cc249dd6
description: A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.
"""
from pydantic import BaseModel, Field
from typing import Optional, Callable, Awaitable
class Filter:
class Valves(BaseModel):
priority: int = Field(
default=0,
description="Priority level. Must be lower than RAG processors to intercept files effectively.",
)
target_model_keyword: str = Field(
default="copilot_sdk",
description="Keyword to identify Copilot models (e.g., 'copilot_sdk').",
)
def __init__(self):
self.valves = self.Valves()
async def inlet(
self,
body: dict,
__user__: Optional[dict] = None,
__model__: Optional[dict] = None,
__metadata__: Optional[dict] = None,
__event_emitter__: Callable[[dict], Awaitable[None]] = None,
) -> dict:
# Determine the actual model ID
base_model_id = None
if __model__:
if "openai" in __model__:
base_model_id = __model__["openai"].get("id")
else:
base_model_id = __model__.get("info", {}).get("base_model_id")
current_model = base_model_id if base_model_id else body.get("model", "")
# Check if it's a Copilot model
if self.valves.target_model_keyword.lower() in current_model.lower():
# If files exist, move them to 'copilot_files' and clear 'files'
# This prevents OpenWebUI from triggering RAG on these files
if "files" in body and body["files"]:
file_count = len(body["files"])
if __event_emitter__:
await __event_emitter__(
{
"type": "status",
"data": {
"description": f"Managed {file_count} files for Copilot (RAG Bypassed)",
"done": True,
},
}
)
body["copilot_files"] = body["files"]
body["files"] = []
return body

View File

@@ -0,0 +1,66 @@
"""
title: GitHub Copilot SDK 文件过滤器(GitHub Copilot SDK Files Filter)
id: github_copilot_sdk_files_filter
author: Fu-Jie
author_url: https://github.com/Fu-Jie/awesome-openwebui
funding_url: https://github.com/open-webui
version: 0.1.2
description: 一个专门的过滤器,用于绕过 OpenWebUI 默认的 RAG 机制,针对 GitHub Copilot SDK 模型。它将上传的文件移动到安全位置 ('copilot_files'),以便 Copilot Pipe 可以原生处理它们而不受干扰。
"""
from pydantic import BaseModel, Field
from typing import Optional, Callable, Awaitable
class Filter:
class Valves(BaseModel):
priority: int = Field(
default=0,
description="优先级。必须低于 RAG 处理器的优先级,以便有效拦截文件。",
)
target_model_keyword: str = Field(
default="copilot_sdk",
description="用于识别 Copilot 模型的关键词(例如 'copilot_sdk')。",
)
def __init__(self):
self.valves = self.Valves()
async def inlet(
self,
body: dict,
__user__: Optional[dict] = None,
__model__: Optional[dict] = None,
__metadata__: Optional[dict] = None,
__event_emitter__: Callable[[dict], Awaitable[None]] = None,
) -> dict:
# Determine the actual model ID
base_model_id = None
if __model__:
if "openai" in __model__:
base_model_id = __model__["openai"].get("id")
else:
base_model_id = __model__.get("info", {}).get("base_model_id")
current_model = base_model_id if base_model_id else body.get("model", "")
# Check if it's a Copilot model
if self.valves.target_model_keyword.lower() in current_model.lower():
# If files exist, move them to 'copilot_files' and clear 'files'
# This prevents OpenWebUI from triggering RAG on these files
if "files" in body and body["files"]:
file_count = len(body["files"])
if __event_emitter__:
await __event_emitter__(
{
"type": "status",
"data": {
"description": f"已为 Copilot 管理 {file_count} 个文件 (已绕过 RAG)",
"done": True,
},
}
)
body["copilot_files"] = body["files"]
body["files"] = []
return body

View File

@@ -3,6 +3,7 @@ title: Gemini 多模态过滤器(含字幕增强)
author: Gemini Adapter author: Gemini Adapter
author_url: https://github.com/Fu-Jie author_url: https://github.com/Fu-Jie
funding_url: https://github.com/Fu-Jie/awesome-openwebui funding_url: https://github.com/Fu-Jie/awesome-openwebui
version: 0.3.2 version: 0.3.2
description: > description: >
一个强大的过滤器,为 OpenWebUI 中的任何模型提供多模态能力PDF、Office、图片、音频、视频等。 一个强大的过滤器,为 OpenWebUI 中的任何模型提供多模态能力PDF、Office、图片、音频、视频等。
@@ -492,6 +493,13 @@ class Filter:
print( print(
f"🤖 Checking model: {current_model} (Target: {self.valves.target_model_keyword})" f"🤖 Checking model: {current_model} (Target: {self.valves.target_model_keyword})"
) )
# 0. SKIP COPILOT MODELS
# If the model is a Copilot Pipe model, we must NOT process files here.
# Copilot Pipe has its own file handling logic (copy to workspace).
if "copilot_sdk" in current_model.lower():
print(f"⏩ Skipping Gemini Filter for Copilot model: {current_model}")
return body
# Check if model matches target keyword # Check if model matches target keyword
is_target_model = ( is_target_model = (

View File

@@ -0,0 +1,73 @@
# GitHub Copilot SDK Pipe - Internal Architecture & Knowledge
This document details the core runtime mechanisms, file layout, and deep integration logic of the GitHub Copilot SDK plugin within the OpenWebUI environment.
## 1. Core Environmental Context
### 1.1 Filesystem Layout
| Path | Description | Permissions |
| :--- | :--- | :--- |
| `/app/backend` | OpenWebUI backend Python source code | Read-Only |
| `/app/build` | OpenWebUI frontend assets (Artifacts renderer location) | Read-Only |
| `/root/.copilot/` | SDK core configuration and state storage | **Full Control** |
| `/app/backend/data/copilot_workspace/` | Plugin-specific persistent workspace | **Read/Write** |
### 1.2 Identity Mapping Mechanism
* **Session ID Binding**: The plugin strictly maps OpenWebUI's `Chat ID` to the Copilot SDK's `Session ID`.
* **Outcome**: Every chat session has its own isolated physical directory: `/root/.copilot/session-state/{chat_id}/`.
## 2. TODO List Persistence (TODO Intelligence)
### 2.1 Data Source
TODO data is **not** stored in a standalone database table for basic operations but is captured from the session event stream via the `update_todo` tool:
* **Storage File**: `/root/.copilot/session-state/{chat_id}/events.jsonl`
* **Detection**: Scans for the latest `tool.execution_complete` event where `toolName` is `update_todo`.
### 2.2 Data Format (NDJSON)
```json
{
"type": "tool.execution_complete",
"data": {
"toolName": "update_todo",
"result": {
"detailedContent": "TODO List content...",
"toolTelemetry": { "metrics": { "total_items": 3 } }
}
}
}
```
## 3. Toolchain Integration
The plugin harmonizes three distinct tool systems:
1. **Copilot Native**: Built-in capabilities like `bash`, `edit`, and `task`.
2. **OpenWebUI Ecosystem**: Dynamically mounts local Python tools and built-in `Web Search` via `get_tools`.
3. **MCP (Model Context Protocol)**: External capability extensions via servers like `GDMap` or `Pandoc`.
## 4. Security & Permissions
### 4.1 Admin Mode (God Mode)
When `__user__['role'] == 'admin'`:
* `ADMIN_EXTENSIONS` are enabled.
* Access to `DATABASE_URL` via environment variables is permitted.
* `bash` can be used to diagnose internal state within `/root/.copilot/`.
### 4.2 Regular User Mode
* `USER_RESTRICTIONS` are strictly enforced.
* Probing environment variables or database credentials is prohibited.
* `bash` activity is strictly confined to the isolated workspace.
## 5. Common Maintenance
* **Reset Session**: Delete the `/root/.copilot/session-state/{chat_id}` directory.
* **Clear Cache**: Disable `ENABLE_TOOL_CACHE` in Valves.
* **View Logs**: Check latest logs under `/root/.copilot/logs/`.

View File

@@ -0,0 +1,70 @@
# GitHub Copilot SDK Pipe - 内部架构与通用知识 (Internal Knowledge)
本文档记录了 GitHub Copilot SDK 插件在 OpenWebUI 环境下的核心运行机制、文件布局及深度集成逻辑。
## 1. 核心环境上下文 (Environment)
### 1.1 文件系统布局
| 路径 | 说明 | 权限 |
| :--- | :--- | :--- |
| `/app/backend` | OpenWebUI 后端 Python 源码 | 只读 |
| `/app/build` | OpenWebUI 前端静态资源 (Artifacts 渲染器位置) | 只读 |
| `/root/.copilot/` | SDK 核心配置与状态存储 | **完全控制** |
| `/app/backend/data/copilot_workspace/` | 插件指定的持久化工作区 | **读写自如** |
### 1.2 身份映射机制
* **Session ID 绑定**: 插件强制将 OpenWebUI 的 `Chat ID` 映射为 Copilot SDK 的 `Session ID`
* **结果**: 每个对话窗口都有独立的物理存储目录:`/root/.copilot/session-state/{chat_id}/`
## 2. TODO List 存储机制 (TODO Intelligence)
### 2.1 数据源
TODO 数据**并不**仅存储在独立数据库,而是通过 `update_todo` 工具写入会话事件流:
* **文件**: `/root/.copilot/session-state/{chat_id}/events.jsonl`
* **识别**: 查找类型为 `tool.execution_complete``toolName``update_todo` 的最新 JSON 行。
### 2.2 数据格式 (NDJSON)
```json
{
"type": "tool.execution_complete",
"data": {
"toolName": "update_todo",
"result": { "detailedContent": "TODO List内容...", "toolTelemetry": { "metrics": { "total_items": 39 } } }
}
}
```
## 3. 工具体系 (Toolchain)
插件整合了三套工具系统:
1. **Copilot Native**: SDK 内置的 `bash`, `edit`, `task` 等。
2. **OpenWebUI Ecosystem**: 通过 `get_tools` 挂载的本地 Python 脚本和内置 `Web Search`
3. **MCP (Model Context Protocol)**: 通过 `GDMap`, `Pandoc` 等服务器扩展的外部能力。
## 4. 安全与权限 (Security)
### 4.1 管理员模式 (God Mode)
`__user__['role'] == 'admin'` 时:
* 启用 `ADMIN_EXTENSIONS`
* 允许通过环境变量获取 `DATABASE_URL`
* 允许使用 `bash` 诊断 `/root/.copilot/` 内部状态。
### 4.2 普通用户模式
* 启用 `USER_RESTRICTIONS`
* 严禁探测环境变量和数据库。
* 限制 `bash` 只能在工作区内活动。
## 5. 常见维护操作
* **重置会话**: 删除 `/root/.copilot/session-state/{chat_id}` 目录。
* **清理缓存**: 在 Valves 中关闭 `ENABLE_TOOL_CACHE`
* **查看日志**: 检查 `/root/.copilot/logs/` 下的最新日志。

View File

@@ -1,118 +1,117 @@
# GitHub Copilot SDK Pipe for OpenWebUI # GitHub Copilot SDK Pipe for OpenWebUI
**Author:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **Version:** 0.5.1 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT **Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 0.6.2 | **Project:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **License:** MIT
This is an advanced Pipe function for [OpenWebUI](https://github.com/open-webui/open-webui) that integrates the official [GitHub Copilot SDK](https://github.com/github/copilot-sdk). It enables you to use **GitHub Copilot models** (e.g., `gpt-5.2-codex`, `claude-sonnet-4.5`,`gemini-3-pro`, `gpt-5-mini`) **AND** your own models via **BYOK** (OpenAI, Anthropic) directly within OpenWebUI, providing a unified agentic experience. This is an advanced Pipe function for [OpenWebUI](https://github.com/open-webui/open-webui) that integrates the official [GitHub Copilot SDK](https://github.com/github/copilot-sdk). It enables you to use **GitHub Copilot models** (e.g., `gpt-5.2-codex`, `claude-sonnet-4.5`,`gemini-3-pro`, `gpt-5-mini`) **AND** your own models via **BYOK** (OpenAI, Anthropic) directly within OpenWebUI, providing a unified agentic experience with **strict User & Chat-level Workspace Isolation**.
> [!IMPORTANT]
> **Essential Companion**
> To unlock file handling and data analysis capabilities, you must install the [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6).
> [!TIP] > [!TIP]
> **No Subscription Required for BYOK** > **No Subscription Required for BYOK**
> If you are using your own API keys (BYOK mode with OpenAI/Anthropic), **you do NOT need a GitHub Copilot subscription.** > If you are using your own API keys (BYOK mode with OpenAI/Anthropic), **you do NOT need a GitHub Copilot subscription.** A subscription is only required to access GitHub's official models.
> A subscription is only required to access GitHub's official models.
## 🚀 What's New (v0.5.1) - Major Upgrade ---
- **🧠 Smarter BYOK Detection**: Improved logic to correctly identify BYOK vs. Official Copilot models, supporting custom models (Characters/Prompts) and fixing multiplier detection (e.g., `(0x)`, `(1x)`). ## ✨ v0.6.2 Updates (What's New)
- **⚡ Performance Boost**: Implemented **Tool Caching** to persist tool definitions across requests, significantly reducing overhead.
- **🧩 Enriched Tool Integration**: Tool descriptions now include source grouping (Built-in/User/Server) and automatic metadata extraction (Title/Description) from Python docstrings. - **🛠️ New Workspace Artifacts Tool**: Introduced `publish_file_from_workspace`. Agents can now generate files (e.g., Python-generated Excel/CSV) and provide direct download links for the user to click and save.
- **🛡 Precise Control**: Added support for OpenWebUI's `function_name_filter_list` to filter MCP and OpenAPI functions. - ** Workflow Optimization**: Improved reliability of the internal agentic workspace management.
- **🔑 User-Level BYOK**: Fully leverage Copilot SDK with your own Model Providers (OpenAI, Anthropic) with user-level API Key overrides. - **🛡️ Enhanced Security**: Refined access control for system resources within the isolated environment.
- **📝 Better Formatting**: Enforced standard Markdown tables in system prompts to prevent rendering issues with HTML tables. - **🔧 Performance Tuning**: Optimized stream processing for larger context windows.
---
## ✨ Key Capabilities ## ✨ Key Capabilities
- **🔑 Flexible Auth & BYOK**: Supports GitHub Copilot subscription (PAT) OR Bring Your Own Key (OpenAI/Anthropic), giving you total control over model access and billing. - **🔑 Flexible Auth & BYOK**: Official Copilot subscriptions (PAT) or Bring Your Own Key (OpenAI/Anthropic).
- **🌉 The Ultimate Bridge**: The first and only plugin that creates a seamless bridge between **OpenWebUI Tools** and **GitHub Copilot SDK**. - **🔌 Universal Tool Protocol**: Native support for **MCP (Model Context Protocol)**, OpenAPI, and OpenWebUI built-in tools.
- **🚀 Official & Native**: Built directly on the official Python SDK, providing the most stable and authentic Copilot experience. - **🛡️ Sandbox Workspace Isolation**: Strict per-session sandboxing for data privacy and security.
- **🌊 Advanced Streaming (Thought Process)**: Supports full model reasoning/thinking display with typewriter effects. - **♾️ Infinite Session Management**: Smart context window management with automatic compaction for indefinite conversation capability.
- **🖼️ Intelligent Multimodal**: Full support for images and attachments, enabling Copilot to "see" your workspace. - **🧠 Deep Database Integration**: Real-time persistence of TOD·O lists for long-running workflows.
- **🛠️ Effortless Setup**: Automatic CLI detection, version enforcement, and dependency management. - **🌊 Advanced Streaming**: Full support for thinking process/Chain of Thought visualization.
- **🛡 Integrated Security**: Supports secure PAT authentication for standard and extended capabilities. - **🖼 Intelligent Multimodal**: Vision capabilities and raw file analysis support.
- **⚡ Full-Lifecycle File Agent**: Supports receiving uploaded files for raw bypass analysis and publishing generated results (e.g., analyzed Excel/reports) as downloadable links—a complete closed-loop agentic workflow.
## Installation & Configuration ---
### 1) Import Function ## ⚙️ Core Configuration (Valves)
1. Open OpenWebUI. ### 1. Administrator Settings (Base)
2. Go to **Workspace** -> **Functions**.
3. Click **+** (Create Function).
4. Paste the content of `github_copilot_sdk.py` (or `github_copilot_sdk_cn.py` for Chinese) completely.
5. Save.
### 2) Configure Valves (Settings) Administrators define the default behavior for all users in the function settings.
Find "GitHub Copilot" in the function list and click the **⚙️ (Valves)** icon to configure: | Valve | Default | Description |
| Parameter | Description | Default |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| **GH_TOKEN** | **(Required)** GitHub Access Token (PAT or OAuth Token). Access to Chat. | - | | `GH_TOKEN` | `""` | Global GitHub Token (Requires 'Copilot Requests' permission). |
| **DEBUG** | Whether to enable debug logs (output to browser console). | `False` | | `ENABLE_OPENWEBUI_TOOLS` | `True` | Enable OpenWebUI Tools (includes defined Tools and Built-in Tools). |
| **LOG_LEVEL** | Copilot CLI log level: none, error, warning, info, debug, all. | `error` | | `ENABLE_OPENAPI_SERVER` | `True` | Enable OpenAPI Tool Server connection. |
| **SHOW_THINKING** | Show model reasoning/thinking process (requires streaming + model support). | `True` | | `ENABLE_MCP_SERVER` | `True` | Enable Direct MCP Client connection (Recommended). |
| **COPILOT_CLI_VERSION** | Specific Copilot CLI version to install/enforce. | `0.0.405` | | `REASONING_EFFORT` | `medium` | Reasoning effort level: low, medium, high. |
| **EXCLUDE_KEYWORDS** | Exclude models containing these keywords (comma separated). | - | | `SHOW_THINKING` | `True` | Show model reasoning/thinking process. |
| **WORKSPACE_DIR** | Restricted workspace directory for file operations. | - | | `INFINITE_SESSION` | `True` | Enable Infinite Sessions (automatic context compaction). |
| **INFINITE_SESSION** | Enable Infinite Sessions (automatic context compaction). | `True` | | `MAX_MULTIPLIER` | `1.0` | Max allowed billing multiplier (0x for free models only). |
| **COMPACTION_THRESHOLD** | Background compaction threshold (0.0-1.0). | `0.8` | | `EXCLUDE_KEYWORDS` | `""` | Exclude models containing these keywords (comma separated). |
| **BUFFER_THRESHOLD** | Buffer exhaustion threshold (0.0-1.0). | `0.95` | | `TIMEOUT` | `300` | Timeout for each stream chunk (seconds). |
| **TIMEOUT** | Timeout for each stream chunk (seconds). | `300` | | `BYOK_TYPE` | `openai` | BYOK Provider Type: `openai`, `anthropic`. |
| **CUSTOM_ENV_VARS** | Custom environment variables (JSON format). | - | | `BYOK_BASE_URL` | `""` | BYOK Base URL (e.g., <https://api.openai.com/v1>). |
| **REASONING_EFFORT** | Reasoning effort level: low, medium, high. `xhigh` is supported for some models. | `medium` | | `BYOK_MODELS` | `""` | BYOK Model List (comma separated). Leave empty to fetch from API. |
| `CUSTOM_ENV_VARS` | `""` | Custom environment variables (JSON format). |
| `DEBUG` | `False` | Enable this to see detailed logs in your browser console. |
| **ENABLE_MCP_SERVER** | Enable Direct MCP Client connection (Recommended). | `True` | ### 2. User Settings (Individual Overrides)
| **ENABLE_OPENWEBUI_TOOLS** | Enable OpenWebUI Tools (includes defined and server tools). | `True` |
| **BYOK_ENABLED** | Enable BYOK (Bring Your Own Key) to use custom providers. | `False` |
| **BYOK_TYPE** | BYOK Provider Type: `openai`, `azure`, `anthropic`. | `openai` |
| **BYOK_BASE_URL** | BYOK Base URL (e.g., `https://api.openai.com/v1`). | - |
| **BYOK_API_KEY** | BYOK API Key (Global Setting). | - |
| **BYOK_BEARER_TOKEN** | BYOK Bearer Token (Global, overrides API Key). | - |
| **BYOK_WIRE_API** | BYOK Wire API: `completions`, `responses`. | `completions` |
#### User Valves (per-user overrides) Standard users can override these settings in their individual Profile/Function settings.
These optional settings can be set per user (overrides global Valves): | Valve | Description |
| :--- | :--- |
| `GH_TOKEN` | Use your personal GitHub Token. |
| `REASONING_EFFORT` | Individual reasoning effort preference. |
| `SHOW_THINKING` | Show model reasoning/thinking process. |
| `MAX_MULTIPLIER` | Maximum allowed billing multiplier override. |
| `EXCLUDE_KEYWORDS` | Exclude models containing these keywords. |
| `BYOK_API_KEY` | Use your personal OpenAI/Anthropic API Key. |
| Parameter | Description | Default | ---
| :--- | :--- | :--- |
| **GH_TOKEN** | Personal GitHub Token (overrides global setting). | - |
| **REASONING_EFFORT** | Reasoning effort level (low/medium/high/xhigh). | - |
| **DEBUG** | Enable technical debug logs. | `False` |
| **SHOW_THINKING** | Show model reasoning/thinking process. | `True` |
| **ENABLE_OPENWEBUI_TOOLS** | Enable OpenWebUI Tools (overrides global). | `True` |
| **ENABLE_MCP_SERVER** | Enable MCP server loading (overrides global). | `True` |
| **BYOK_API_KEY** | BYOK API Key (User override). | - | ## 🎯 Use Cases (What can you do?)
- **📁 Fully Autonomous DevOps**: Agent analyzes code, runs tests, and applies patches within its isolated sandbox.
- **📊 Deep Data Auditing**: Directly process raw Excel/CSV data via Python (bypassing RAG) and generate visual reports.
- **📝 Long-Task Management**: Automatically decomposes complex requests and persists TOD·O progress across sessions.
---
## ⭐ Support ## ⭐ Support
If this plugin has been useful, a star on [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) is a big motivation for me. Thank you for the support. If this plugin has been useful, a **Star** on [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) would be a great motivation for me. Thank you!
### Get Token ---
To use GitHub Copilot, you need a GitHub Personal Access Token (PAT) with appropriate permissions. ## 🚀 Installation & Configuration
**Steps to generate your token:** ### 1) Import Function
1. Open OpenWebUI, go to **Workspace** -> **Functions**.
2. Click **+** (Create Function), paste the content of `github_copilot_sdk.py`.
3. Save and ensure it is enabled.
### 2) Get Token
1. Visit [GitHub Token Settings](https://github.com/settings/tokens?type=beta). 1. Visit [GitHub Token Settings](https://github.com/settings/tokens?type=beta).
2. Click **Generate new token (fine-grained)**. 2. Create **Fine-grained token**, granting **Account permissions** -> **Copilot Requests** access.
3. **Repository access**: Select **Public Repositories** (simplest) or **All repositories**. 3. Paste the generated Token into the `GH_TOKEN` field in Valves.
4. **Permissions**:
- If you chose **All repositories**, you must click **Account permissions**.
- Find **Copilot Requests**, and select **Access**.
5. Generate and copy the Token.
## 📋 Dependencies ---
This Pipe will automatically attempt to install the following dependencies: ## 📋 Troubleshooting & Dependencies
- `github-copilot-sdk` (Python package) - **Agent ignores files?**: Ensure the Files Filter is enabled, otherwise RAG will interfere with raw binaries.
- `github-copilot-cli` (Binary file, installed via official script) - **No progress bar?**: The bar only appears when the Agent uses the `update_todo` tool.
- **Dependencies**: This Pipe automatically installs `github-copilot-sdk` (Python) and `github-copilot-cli` (Binary).
## Troubleshooting ❓ ---
- **Images not recognized**:
- Ensure `MODEL_ID` is a model that supports multimodal input.
- **Thinking not shown**:
- Ensure **streaming is enabled** and the selected model supports reasoning output.
## Changelog ## Changelog

View File

@@ -1,117 +1,122 @@
# GitHub Copilot SDK 官方管道 # GitHub Copilot SDK 官方管道
**作者:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **版本:** 0.5.1 | **项目:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **许可证:** MIT **作者:** [Fu-Jie](https://github.com/Fu-Jie/awesome-openwebui) | **版本:** 0.6.2 | **项目:** [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) | **许可证:** MIT
这是一个用于 [OpenWebUI](https://github.com/open-webui/open-webui) 的高级 Pipe 函数,深度集成了 **GitHub Copilot SDK**。它不仅支持 **GitHub Copilot 官方模型**(如 `gpt-5.2-codex`, `claude-sonnet-4.5`, `gemini-3-pro`, `gpt-5-mini`),还支持 **BYOK (自带 Key)** 模式对接自定义服务商OpenAI, Anthropic提供统一的 Agent 交互体验。 这是一个用于 [OpenWebUI](https://github.com/open-webui/open-webui) 的高级 Pipe 函数,深度集成了 **GitHub Copilot SDK**。它不仅支持 **GitHub Copilot 官方模型**(如 `gpt-5.2-codex`, `claude-sonnet-4.5`, `gemini-3-pro`, `gpt-5-mini`),还支持 **BYOK (自带 Key)** 模式对接自定义服务商OpenAI, Anthropic并具备**严格的用户与会话级工作区隔离**能力,提供统一且安全的 Agent 交互体验。
> [!IMPORTANT] > [!IMPORTANT]
> **核心伴侣组件**
> 如需启用文件处理与数据分析能力,请务必安装 [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6)。
> [!TIP] > [!TIP]
> **使用 BYOK 模式无需订阅** > **BYOK 模式无需订阅**
> 如果您使用自的 API Key (OpenAI, Anthropic) 运行 BYOK 模式,**则完全不需要** GitHub Copilot 订阅。 > 如果您使用自的 API Key (BYOK 模式对接 OpenAI/Anthropic)**您不需要 GitHub Copilot 官方订阅**。只有在访问 GitHub 官方模型时才需要订阅。
> 仅当您希望使用 GitHub 官方提供的模型时,才需要订阅。
## 🚀 最新特性 (v0.5.1) - 重大升级 ---
- **🧠 智能 BYOK 检测**: 优化了 BYOK 与官方 Copilot 模型的识别逻辑,完美支持自定义模型(角色/提示词)及倍率检测(如 `(0x)`, `(1x)`)。 ## ✨ 0.6.2 更新内容 (What's New)
- **⚡ 性能飙升**: 引入 **工具缓存 (Tool Caching)** 机制,在请求间持久化工具定义,显著降低调用开销。
- **🧩 丰富工具集成**: 工具描述现包含来源分组(内置/用户/服务器)及 Docstring 元数据自动解析。
- **🛡️ 精确控制**: 完美兼容 OpenWebUI 全局函数过滤配置 (`function_name_filter_list`),可精准控制暴露给 LLM 的函数。
- **🔑 用户级 BYOK**: 支持在用户层面配置自定义 API Key 对接 AI 供应商OpenAI, Anthropic
- **📝 格式优化**: 系统提示词强制使用标准 Markdown 表格,彻底解决 HTML 表格渲染问题。
## ✨ 核心能力 - **🛠️ 新增工作区产物工具**: 引入 `publish_file_from_workspace`。Agent 现在可以生成物理文件(如使用 Python 生成的 Excel/CSV 报表),并直接在聊天界面提供点击下载链接。
- **⚙️ 工作流优化**: 提升了内部 Agent 物理工作区管理的可靠性与原子性。
- **🛡️ 安全增强**: 精细化了隔离环境下系统资源的访问控制策略。
- **🔧 性能微调**: 针对大上下文窗口优化了流式数据处理性能。
- **🔑 灵活鉴权与 BYOK**: 支持 GitHub Copilot 订阅 (PAT) 或自带 Key (OpenAI/Anthropic),完全掌控模型访问与计费。 ---
- **🌉 强大的生态桥接**: 首个且唯一完美打通 **OpenWebUI Tools****GitHub Copilot SDK** 的插件。
- **🚀 官方原生产体验**: 基于官方 Python SDK 构建,提供最稳定、最纯正的 Copilot 交互体验。 ## ✨ 核心能力 (Key Capabilities)
- **🔑 灵活鉴权与 BYOK**: 支持 GitHub Copilot 官方订阅 (PAT) 或自带 Key (OpenAI/Anthropic)。
- **🔌 通用工具协议**: 原生支持 **MCP (Model Context Protocol)**、OpenAPI 以及 OpenWebUI 内置工具。
- **🛡️ 物理级工作区隔离**: 强制执行严格的用户特定沙箱,确保数据隐私与文件安全。
- **♾️ 无限会话管理**: 智能上下文窗口管理与自动压缩算法,支持无限时长的对话交互。
- **🧠 深度数据库集成**: 实时持久化 TOD·O 列表到 UI 进度条。
- **🌊 深度推理展示**: 完整支持模型思考过程 (Thinking Process) 的流式渲染。 - **🌊 深度推理展示**: 完整支持模型思考过程 (Thinking Process) 的流式渲染。
- **🖼️ 智能多模态**: 支持图像识别与附件上传,让 Copilot 拥有视觉能力 - **🖼️ 智能多模态**: 完整支持图像识别与附件上传分析
- **🛠️ 极简部署流程**: 自动检测环境、自动下载 CLI、自动管理依赖全自动化开箱即用 - **⚡ 全生命周期文件 Agent**: 支持接收上传文件进行绕过 RAG 的深度分析,并将处理结果(如分析后的 Excel/报告)发布为可下载链接,实现完整的闭环 Agent 工作流
- **🛡️ 纯净安全体系**: 支持标准 PAT 认证,确保数据安全。
## 安装与配置 ---
### 1. 导入函数 ## ⚙️ 核心配置参数 (Valves)
1. 打开 OpenWebUI。 ### 1. 管理员配置 (基础设置)
2. 进入 **Workspace** -> **Functions**
3. 点击 **+** (创建函数)。
4.`github_copilot_sdk_cn.py` 的内容完整粘贴进去。
5. 保存。
### 2. 配置 Valves (设置) 管理员可在函数设置中定义全局默认行为。
在函数列表中找到 "GitHub Copilot",点击 **⚙️ (Valves)** 图标进行配置: | 参数 | 默认值 | 说明 |
| 参数 | 说明 | 默认值 |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| **GH_TOKEN** | **(必填)** GitHub 访问令牌 (PAT 或 OAuth Token)。用于聊天。 | - | | `GH_TOKEN` | `""` | 全局 GitHub Token (需具备 'Copilot Requests' 权限)。 |
| **DEBUG** | 是否开启调试日志(输出到浏览器控制台)。 | `False` | | `ENABLE_OPENWEBUI_TOOLS` | `True` | 启用 OpenWebUI 工具 (包括定义工具和内置工具)。 |
| **LOG_LEVEL** | Copilot CLI 日志级别: none, error, warning, info, debug, all。 | `error` | | `ENABLE_OPENAPI_SERVER` | `True` | 启用 OpenAPI 工具服务器连接。 |
| **SHOW_THINKING** | 是否显示模型推理/思考过程(需开启流式 + 模型支持)。 | `True` | | `ENABLE_MCP_SERVER` | `True` | 启用直接 MCP 客户端连接 (推荐)。 |
| **COPILOT_CLI_VERSION** | 指定安装/强制使用的 Copilot CLI 版本。 | `0.0.405` | | `REASONING_EFFORT` | `medium` | 推理强度low, medium, high。 |
| **EXCLUDE_KEYWORDS** | 排除包含这些关键词的模型(逗号分隔)。 | - | | `SHOW_THINKING` | `True` | 显示模型推理/思考过程。 |
| **WORKSPACE_DIR** | 文件操作的受限工作区目录。 | - | | `INFINITE_SESSION` | `True` | 启用无限会话 (自动上下文压缩)。 |
| **INFINITE_SESSION** | 启用无限会话(自动上下文压缩)。 | `True` | | `MAX_MULTIPLIER` | `1.0` | 最大允许的模型计费倍率 (0x 为仅限免费模型)。 |
| **COMPACTION_THRESHOLD** | 后台压缩阈值 (0.0-1.0)。 | `0.8` | | `EXCLUDE_KEYWORDS` | `""` | 排除包含这些关键字的模型 (逗号分隔)。 |
| **BUFFER_THRESHOLD** | 缓冲区耗尽阈值 (0.0-1.0)。 | `0.95` | | `TIMEOUT` | `300` | 每个流数据块的超时时间 (秒)。 |
| **TIMEOUT** | 每个流式分块超时(秒)。 | `300` | | `BYOK_TYPE` | `openai` | BYOK 服务商类型:`openai`, `anthropic` |
| **CUSTOM_ENV_VARS** | 自定义环境变量 (JSON 格式)。 | - | | `BYOK_BASE_URL` | `""` | BYOK 基础 URL (例如: <https://api.openai.com/v1)。> |
| **REASONING_EFFORT** | 推理强度级别: low, medium, high. `xhigh` 仅部分模型支持。 | `medium` | | `BYOK_MODELS` | `""` | BYOK 模型列表 (逗号分隔)。留空则从 API 获取。 |
| **ENABLE_MCP_SERVER** | 启用直接 MCP 客户端连接 (建议)。 | `True` | | `CUSTOM_ENV_VARS` | `""` | 自定义环境变量 (JSON 格式)。 |
| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具 (包括自定义和服务器工具)。 | `True` | | `DEBUG` | `False` | 开启此项以在前端控制台输出详细调试日志。 |
| **BYOK_ENABLED** | 启用 BYOK (自带 Key) 模式以使用自定义供应商。 | `False` |
| **BYOK_TYPE** | BYOK 供应商类型: `openai`, `azure`, `anthropic`。 | `openai` |
| **BYOK_BASE_URL** | BYOK 基础 URL (如 `https://api.openai.com/v1`)。 | - |
| **BYOK_API_KEY** | BYOK API Key (全局设置)。 | - |
| **BYOK_BEARER_TOKEN** | BYOK Bearer Token (全局,覆盖 API Key)。 | - |
| **BYOK_WIRE_API** | BYOK 通信协议: `completions`, `responses`。 | `completions` |
#### 用户 Valves按用户覆盖 ### 2. 用户配置 (个人覆盖)
以下设置可按用户单独配置(覆盖全局 Valves 普通用户可在各自的个人设置中根据需要覆盖以下参数。
| 参数 | 说明 | 默认值 | | 参数 | 说明 |
| :--- | :--- | :--- | | :--- | :--- |
| **GH_TOKEN** | 个人 GitHub Token(覆盖全局设置)。 | - | | `GH_TOKEN` | 使用个人 GitHub Token |
| **REASONING_EFFORT** | 推理强度级别low/medium/high/xhigh。 | - | | `REASONING_EFFORT`| 个人偏好的推理强度。 |
| **DEBUG** | 是否启用技术调试日志。 | `False` | | `SHOW_THINKING` | 显示模型推理/思考过程。 |
| **SHOW_THINKING** | 是否显示思考过程。 | `True` | | `MAX_MULTIPLIER` | 最大允许的模型计费倍率覆盖。 |
| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具(覆盖全局设置)。 | `True` | | `EXCLUDE_KEYWORDS` | 排除包含这些关键字的模型。 |
| **ENABLE_MCP_SERVER** | 启用动态 MCP 服务器加载(覆盖全局设置)。 | `True` | | `BYOK_API_KEY` | 使用个人的 OpenAI/Anthropic API Key。 |
## ⭐ 支持 ---
如果这个插件对你有帮助,欢迎到 [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) 点个 Star这将是我持续改进的动力感谢支持。 ## 🎯 典型应用场景 (Use Cases)
### 获取 Token - **📁 全自主仓库维护**: Agent 在隔离工作区内自动分析代码、运行测试并应用补丁。
- **📊 深度财务数据审计**: 直接通过 Python 加载 Excel/CSV 原始数据(绕过 RAG生成图表并实时预览。
- **📝 长任务项目管理**: 自动拆解复杂任务并持久化 TOD·O 进度,跨会话跟踪执行状态。
要使用 GitHub Copilot您需要一个具有适当权限的 GitHub 个人访问令牌 (PAT)。 ---
**获取步骤:** ## ⭐ 支持与交流 (Support)
1. 访问 [GitHub 令牌设置](https://github.com/settings/tokens?type=beta) 如果这个插件对您有所帮助,请在 [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) 项目上点个 **Star** 💫,这是对我最大的鼓励
2. 点击 **Generate new token (fine-grained)**
3. **Repository access**: 选择 **Public Repositories** (最简单) 或 **All repositories**
4. **Permissions**:
- 如果您选择了 **All repositories**,则必须点击 **Account permissions**
- 找到 **Copilot Requests**,选择 **Access**
5. 生成并复制令牌。
## 📋 依赖说明 ---
该 Pipe 会自动尝试安装以下依赖(如果环境中缺失): ## 🚀 安装与配置 (Installation)
- `github-copilot-sdk` (Python 包) ### 1) 导入函数
- `github-copilot-cli` (二进制文件,通过官方脚本安装)
## 故障排除 (Troubleshooting) ❓ 1. 打开 OpenWebUI前往 **工作区** -> **函数**
2. 点击 **+** (创建函数),完整粘贴 `github_copilot_sdk_cn.py` 的内容。
3. 点击保存并确保已启用。
- **图片及多模态使用说明** ### 2) 获取 Token (Get Token)
- 确保 `MODEL_ID` 是支持多模态的模型。
- **看不到思考过程**
- 确认已开启**流式输出**,且所选模型支持推理输出。
## 更新日志 1. 访问 [GitHub Token 设置](https://github.com/settings/tokens?type=beta)。
2. 创建 **Fine-grained token**,授予 **Account permissions** -> **Copilot Requests** 访问权限。
3. 将生成的 Token 填入插件的 `GH_TOKEN` 配置项中。
完整历史请查看 GitHub 项目: [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) ### 3) 配套插件 (强烈推荐)
为了获得最佳的文件处理体验,请安装 [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6)。
---
## 📋 常见问题与依赖 (Troubleshooting)
- **Agent 无法识别文件?**: 请确保已安装并启用了 Files Filter 插件,否则原始文件会被 RAG 干扰。
- **看不到 TODO 进度条?**: 进度条仅在 Agent 使用 `update_todo` 工具(通常是处理复杂任务)时出现。
- **依赖安装**: 本管道会自动尝试安装 `github-copilot-sdk` (Python 包) 和 `github-copilot-cli` (官方二进制)。
---
## 更新日志 (Changelog)
完整历史记录请见 GitHub: [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,103 @@
import os
import sys
import json
import asyncio
from typing import List, Dict
# 1. 尝试导入 OpenWebUI 环境
try:
from open_webui.models.models import Models, ModelForm, ModelMeta, ModelParams
from open_webui.internal.db import get_session
except ImportError:
print("❌ 错误: 无法导入 OpenWebUI 模块。请确保在 OpenWebUI 环境(如 conda ai中运行此脚本。")
sys.exit(1)
# 2. 导入 Copilot SDK
try:
from copilot import CopilotClient
except ImportError:
print("❌ 错误: 无法导入 copilot SDK。请运行: pip install github-copilot-sdk==0.1.23")
sys.exit(1)
async def fetch_real_models() -> List[Dict]:
gh_token = os.environ.get("GH_TOKEN")
if not gh_token:
print("❌ 错误: 未设置 GH_TOKEN 环境变量。")
return []
client = CopilotClient()
try:
await client.start()
raw_models = await client.list_models()
processed = []
for m in raw_models:
m_id = getattr(m, "id", str(m))
# 提取倍率
billing = getattr(m, "billing", {})
if not isinstance(billing, dict): billing = vars(billing)
multiplier = billing.get("multiplier", 1)
# 提取能力
cap = getattr(m, "capabilities", None)
vision = False
reasoning = False
if cap:
supports = getattr(cap, "supports", {})
if not isinstance(supports, dict): supports = vars(supports)
vision = supports.get("vision", False)
reasoning = supports.get("reasoning_effort", False)
processed.append({
"id": m_id,
"name": f"GitHub Copilot ({m_id})",
"vision": vision,
"reasoning": reasoning,
"multiplier": multiplier
})
return processed
except Exception as e:
print(f"❌ 获取模型失败: {e}")
return []
finally:
await client.stop()
async def sync_to_db():
models = await fetch_real_models()
if not models: return
print(f"🔄 发现 {len(models)} 个 Copilot 模型,正在同步到工作区...")
# 默认管理员 ID
admin_user_id = "00000000-0000-0000-0000-000000000000"
for m in models:
# 对应插件中的 ID 格式
full_id = f"copilot-{m['id']}"
existing = Models.get_model_by_id(full_id)
if existing:
print(f"⚠️ 跳过: {full_id} (已存在)")
continue
form_data = ModelForm(
id=full_id,
base_model_id=None,
name=m['name'],
meta=ModelMeta(
description=f"GitHub Copilot 官方模型。倍率: {m['multiplier']}x。支持推理: {m['reasoning']}",
capabilities={
"vision": m['vision'],
"reasoning": m['reasoning']
}
),
params=ModelParams()
)
try:
if Models.insert_new_model(form_data, admin_user_id):
print(f"✅ 成功同步: {m['name']}")
except Exception as e:
print(f"❌ 同步 {m['id']} 失败: {e}")
if __name__ == "__main__":
asyncio.run(sync_to_db())

View File

@@ -0,0 +1,111 @@
import asyncio
import os
import json
import time
from typing import Any
from datetime import datetime
from copilot import CopilotClient
# 自定义 JSON 编码器,处理 datetime 等对象
class SDKEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
if hasattr(obj, "to_dict"):
return obj.to_dict()
try:
return super().default(obj)
except TypeError:
return str(obj)
async def run_debug_test(client, model_id, effort, prompt):
print(f"\n" + "🔍" * 15)
print(f"DEBUGGING: {model_id} | {effort.upper()}")
print("🔍" * 15)
session_config = {
"model": model_id,
"reasoning_effort": effort
}
queue = asyncio.Queue()
done = asyncio.Event()
SENTINEL = object()
def handler(event):
try:
etype = getattr(event, "type", "unknown")
if hasattr(etype, "value"): etype = etype.value
raw_data = {}
# 优先尝试 SDK 自带的 to_dict
if hasattr(event, "to_dict"):
raw_data = event.to_dict()
elif hasattr(event, "data"):
data_obj = event.data
if isinstance(data_obj, dict):
raw_data = data_obj
elif hasattr(data_obj, "to_dict"):
raw_data = data_obj.to_dict()
else:
raw_data = {k: v for k, v in vars(data_obj).items() if not k.startswith('_')}
else:
raw_data = {k: v for k, v in vars(event).items() if not k.startswith('_')}
queue.put_nowait((etype, raw_data))
if etype in ["session.idle", "session.error"]:
done.set()
queue.put_nowait(SENTINEL)
except Exception as e:
print(f"Handler Error: {e}")
try:
session = await client.create_session(config=session_config)
unsubscribe = session.on(handler)
print(f"Sending prompt...")
asyncio.create_task(session.send({"prompt": prompt, "mode": "immediate"}))
event_count = 0
while True:
try:
item = await asyncio.wait_for(queue.get(), timeout=180)
if item is SENTINEL: break
etype, data = item
event_count += 1
# 打印所有事件,不进行过滤,这样我们可以看到完整的生命周期
print(f"\n[#{event_count} EVENT: {etype}]")
print(json.dumps(data, indent=2, ensure_ascii=False, cls=SDKEncoder))
except asyncio.TimeoutError:
print("\n⚠️ Timeout: No events for 180s")
break
unsubscribe()
await session.destroy()
except Exception as e:
print(f"❌ Session Failed: {e}")
async def main():
gh_token = os.environ.get("GH_TOKEN")
if not gh_token:
print("❌ Error: GH_TOKEN not set")
return
client = CopilotClient()
await client.start()
# 使用一个简单但需要思考的问题
prompt = "123 * 456 等于多少?请给出思考过程。"
target_model = "gpt-5-mini"
await run_debug_test(client, target_model, "high", prompt)
await client.stop()
if __name__ == "__main__":
asyncio.run(main())

View File

@@ -445,7 +445,7 @@ class OpenWebUIStats:
username = user.get("username", "") username = user.get("username", "")
profile_url = user.get("profile_url", "") profile_url = user.get("profile_url", "")
lines.append(t["author_header"]) lines.append(t["author_header"])
lines.append("|:---:|:---:|:---:|:---:|") lines.append("| :---: | :---: | :---: | :---: |")
lines.append( lines.append(
f"| [{username}]({profile_url}) | **{user.get('followers', 0)}** | " f"| [{username}]({profile_url}) | **{user.get('followers', 0)}** | "
f"**{user.get('total_points', 0)}** | **{user.get('contributions', 0)}** |" f"**{user.get('total_points', 0)}** | **{user.get('contributions', 0)}** |"
@@ -454,7 +454,7 @@ class OpenWebUIStats:
# 统计徽章表格 # 统计徽章表格
lines.append(t["header"]) lines.append(t["header"])
lines.append("|:---:|:---:|:---:|:---:|:---:|") lines.append("| :---: | :---: | :---: | :---: | :---: |")
lines.append( lines.append(
f"| **{stats['total_posts']}** | **{stats['total_downloads']}** | " f"| **{stats['total_posts']}** | **{stats['total_downloads']}** | "
f"**{stats['total_views']}** | **{stats['total_upvotes']}** | **{stats['total_saves']}** |" f"**{stats['total_views']}** | **{stats['total_upvotes']}** | **{stats['total_saves']}** |"
@@ -467,7 +467,7 @@ class OpenWebUIStats:
lines.append(t["top6_updated"]) lines.append(t["top6_updated"])
lines.append("") lines.append("")
lines.append(t["top6_header"]) lines.append(t["top6_header"])
lines.append("|:---:|------|:---:|:---:|:---:|:---:|") lines.append("| :---: | :--- | :---: | :---: | :---: | :---: |")
medals = ["🥇", "🥈", "🥉", "4", "5", "6"] medals = ["🥇", "🥈", "🥉", "4", "5", "6"]
for i, post in enumerate(top_plugins): for i, post in enumerate(top_plugins):