diff --git a/.agent/workflows/plugin-development.md b/.agent/workflows/plugin-development.md
index 70281fc..a34704b 100644
--- a/.agent/workflows/plugin-development.md
+++ b/.agent/workflows/plugin-development.md
@@ -45,8 +45,12 @@ When adding or updating a plugin, you **MUST** update the following documentatio
### Plugin Directory
-- `README.md`: Update version, description, and usage. **Explicitly describe new features in a prominent position at the beginning.**
-- `README_CN.md`: Update version, description, and usage. **Explicitly describe new features in a prominent position at the beginning.**
+- `README.md`: Update version, description, and usage.
+ - **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/`)
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index fd18350..65469b2 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -889,6 +889,9 @@ Filter 实例是**单例 (Singleton)**。
- [ ] 使用 logging 而非 print
- [ ] 测试双语界面
- [ ] **一致性检查**: 确保文档、代码、README 同步
+- [ ] **README 结构**:
+ - **Key Capabilities** (英文) / **核心功能** (中文): 必须包含所有核心功能
+ - **What's New** (英文) / **最新更新** (中文): 仅包含最新版本的变更信息
### 2. 🔄 一致性维护 (Consistency Maintenance)
diff --git a/docs/plugins/filters/github-copilot-sdk-files-filter.md b/docs/plugins/filters/github-copilot-sdk-files-filter.md
new file mode 100644
index 0000000..12c2f84
--- /dev/null
+++ b/docs/plugins/filters/github-copilot-sdk-files-filter.md
@@ -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.
diff --git a/docs/plugins/filters/github-copilot-sdk-files-filter.zh.md b/docs/plugins/filters/github-copilot-sdk-files-filter.zh.md
new file mode 100644
index 0000000..615c50c
--- /dev/null
+++ b/docs/plugins/filters/github-copilot-sdk-files-filter.zh.md
@@ -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`,以便文件自动搬运功能正常工作。
diff --git a/docs/plugins/filters/index.md b/docs/plugins/filters/index.md
index deb8e52..cc0db66 100644
--- a/docs/plugins/filters/index.md
+++ b/docs/plugins/filters/index.md
@@ -16,7 +16,7 @@ Filters act as middleware in the message pipeline:
-- :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)
-- :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)
-- :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)
-- :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)
-- :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)
-- :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)
+- :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)
+
---
diff --git a/docs/plugins/filters/index.zh.md b/docs/plugins/filters/index.zh.md
index e565c9e..5e6eb56 100644
--- a/docs/plugins/filters/index.zh.md
+++ b/docs/plugins/filters/index.zh.md
@@ -16,7 +16,7 @@ Filter 充当消息管线中的中间件:
-- :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)
-- :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)
-- :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)
-- :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)
+- :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)
+
---
diff --git a/docs/plugins/pipes/github-copilot-sdk-deep-dive.md b/docs/plugins/pipes/github-copilot-sdk-deep-dive.md
new file mode 100644
index 0000000..a0de8a4
--- /dev/null
+++ b/docs/plugins/pipes/github-copilot-sdk-deep-dive.md
@@ -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.
diff --git a/docs/plugins/pipes/github-copilot-sdk-deep-dive.zh.md b/docs/plugins/pipes/github-copilot-sdk-deep-dive.zh.md
new file mode 100644
index 0000000..b8ccabe
--- /dev/null
+++ b/docs/plugins/pipes/github-copilot-sdk-deep-dive.zh.md
@@ -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 输出,以获得更好的执行稳定性。
diff --git a/docs/plugins/pipes/github-copilot-sdk.md b/docs/plugins/pipes/github-copilot-sdk.md
index fe4f928..9e8298d 100644
--- a/docs/plugins/pipes/github-copilot-sdk.md
+++ b/docs/plugins/pipes/github-copilot-sdk.md
@@ -1,116 +1,118 @@
# 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/awesome-openwebui) | **Version:** 0.6.0 | **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]
> **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.**
-> A subscription is only required to access GitHub's official models.
+> 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.
-## 🚀 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)`).
-- **⚡ 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.
-- **🛡️ Precise Control**: Added support for OpenWebUI's `function_name_filter_list` to filter MCP and OpenAPI functions.
-- **🔑 User-Level BYOK**: Fully leverage Copilot SDK with your own Model Providers (OpenAI, Anthropic) with user-level API Key overrides.
-- **📝 Better Formatting**: Enforced standard Markdown tables in system prompts to prevent rendering issues with HTML tables.
+## ✨ v0.6.0 Updates (What's New)
+
+- **👥 User & Chat Management**: Physical management architecture (`user_id/chat_id`) for absolute resource independence.
+- **🤖 Empowering Agent Autonomy**: Automatic synchronization of raw files to the workspace, enabling direct Python-based analysis of Excel/CSV.
+- **🔧 OpenAPI & External Tool Fixes**: Full support for tools mounted via OpenAPI servers.
+- **📊 Cost Control**: Enhanced **Billing Multiplier Limits** (`MAX_MULTIPLIER`, e.g., set to 0 for free models only) and **Model Keyword Filtering** (`EXCLUDE_KEYWORDS`) for precise cost management.
+- **🧠 Persistent TODO Lists**: Database-backed task tracking that persists across sessions.
+
+---
## ✨ 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.
-- **🌉 The Ultimate Bridge**: The first and only plugin that creates a seamless bridge between **OpenWebUI Tools** and **GitHub Copilot SDK**.
-- **🚀 Official & Native**: Built directly on the official Python SDK, providing the most stable and authentic Copilot experience.
-- **🌊 Advanced Streaming (Thought Process)**: Supports full model reasoning/thinking display with typewriter effects.
-- **🖼️ Intelligent Multimodal**: Full support for images and attachments, enabling Copilot to "see" your workspace.
-- **🛠️ Effortless Setup**: Automatic CLI detection, version enforcement, and dependency management.
-- **🛡️ Integrated Security**: Supports secure PAT authentication for standard and extended capabilities.
+- **🔑 Flexible Auth & BYOK**: Official Copilot subscriptions (PAT) or Bring Your Own Key (OpenAI/Anthropic).
+- **🔌 Universal Tool Protocol**: Native support for **MCP (Model Context Protocol)**, OpenAPI, and OpenWebUI built-in tools.
+- **🛡️ Sandbox Workspace Isolation**: Strict per-session sandboxing for data privacy and security.
+- **♾️ Infinite Session Management**: Smart context window management with automatic compaction for indefinite conversation capability.
+- **🧠 Deep Database Integration**: Real-time persistence of TOD·O lists for long-running workflows.
+- **🌊 Advanced Streaming**: Full support for thinking process/Chain of Thought visualization.
+- **🖼️ Intelligent Multimodal**: Vision capabilities and raw file analysis support.
+- **⚡ Interactive Artifacts**: Automatically renders HTML/JS apps generated by the agent directly in the chat interface.
-## Installation & Configuration
+---
-### 1) Import Function
+## ⚙️ Core Configuration (Valves)
-1. Open OpenWebUI.
-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.
+### 1. Administrator Settings (Base)
-### 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:
-
-| Parameter | Description | Default |
+| Valve | Default | Description |
| :--- | :--- | :--- |
-| **GH_TOKEN** | **(Required)** GitHub Access Token (PAT or OAuth Token). Access to Chat. | - |
-| **DEBUG** | Whether to enable debug logs (output to browser console). | `False` |
-| **LOG_LEVEL** | Copilot CLI log level: none, error, warning, info, debug, all. | `error` |
-| **SHOW_THINKING** | Show model reasoning/thinking process (requires streaming + model support). | `True` |
-| **COPILOT_CLI_VERSION** | Specific Copilot CLI version to install/enforce. | `0.0.405` |
-| **EXCLUDE_KEYWORDS** | Exclude models containing these keywords (comma separated). | - |
-| **WORKSPACE_DIR** | Restricted workspace directory for file operations. | - |
-| **INFINITE_SESSION** | Enable Infinite Sessions (automatic context compaction). | `True` |
-| **COMPACTION_THRESHOLD** | Background compaction threshold (0.0-1.0). | `0.8` |
-| **BUFFER_THRESHOLD** | Buffer exhaustion threshold (0.0-1.0). | `0.95` |
-| **TIMEOUT** | Timeout for each stream chunk (seconds). | `300` |
-| **CUSTOM_ENV_VARS** | Custom environment variables (JSON format). | - |
-| **REASONING_EFFORT** | Reasoning effort level: low, medium, high. `xhigh` is supported for some models. | `medium` |
-| **ENABLE_MCP_SERVER** | Enable Direct MCP Client connection (Recommended). | `True` |
-| **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` |
+| `GH_TOKEN` | `""` | Global GitHub Token (Requires 'Copilot Requests' permission). |
+| `ENABLE_OPENWEBUI_TOOLS` | `True` | Enable OpenWebUI Tools (includes defined Tools and Built-in Tools). |
+| `ENABLE_OPENAPI_SERVER` | `True` | Enable OpenAPI Tool Server connection. |
+| `ENABLE_MCP_SERVER` | `True` | Enable Direct MCP Client connection (Recommended). |
+| `REASONING_EFFORT` | `medium` | Reasoning effort level: low, medium, high. |
+| `SHOW_THINKING` | `True` | Show model reasoning/thinking process. |
+| `INFINITE_SESSION` | `True` | Enable Infinite Sessions (automatic context compaction). |
+| `MAX_MULTIPLIER` | `1.0` | Max allowed billing multiplier (0x for free models only). |
+| `EXCLUDE_KEYWORDS` | `""` | Exclude models containing these keywords (comma separated). |
+| `TIMEOUT` | `300` | Timeout for each stream chunk (seconds). |
+| `BYOK_TYPE` | `openai` | BYOK Provider Type: `openai`, `anthropic`. |
+| `BYOK_BASE_URL` | `""` | BYOK Base URL (e.g., ). |
+| `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. |
-#### 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 |
-| :--- | :--- | :--- |
-| **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). | - |
+| 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. |
+
+---
+
+## 🎯 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
-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).
-2. Click **Generate new token (fine-grained)**.
-3. **Repository access**: Select **Public Repositories** (simplest) or **All repositories**.
-4. **Permissions**:
- - If you chose **All repositories**, you must click **Account permissions**.
- - Find **Copilot Requests**, and select **Access**.
-5. Generate and copy the Token.
+2. Create **Fine-grained token**, granting **Account permissions** -> **Copilot Requests** access.
+3. Paste the generated Token into the `GH_TOKEN` field in Valves.
-## 📋 Dependencies
+---
-This Pipe will automatically attempt to install the following dependencies:
+## 📋 Troubleshooting & Dependencies
-- `github-copilot-sdk` (Python package)
-- `github-copilot-cli` (Binary file, installed via official script)
+- **Agent ignores files?**: Ensure the Files Filter is enabled, otherwise RAG will interfere with raw binaries.
+- **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
diff --git a/docs/plugins/pipes/github-copilot-sdk.zh.md b/docs/plugins/pipes/github-copilot-sdk.zh.md
index fb0d7ca..b8082d1 100644
--- a/docs/plugins/pipes/github-copilot-sdk.zh.md
+++ b/docs/plugins/pipes/github-copilot-sdk.zh.md
@@ -1,117 +1,119 @@
# 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.0 | **项目:** [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]
+> **核心伴侣组件**
+> 如需启用文件处理与数据分析能力,请务必安装 [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6)。
+
> [!TIP]
-> **使用 BYOK 模式无需订阅**
-> 如果您使用自己的 API Key (OpenAI, Anthropic) 运行 BYOK 模式,**则完全不需要** GitHub Copilot 订阅。
-> 仅当您希望使用 GitHub 官方提供的模型时,才需要订阅。
+> **BYOK 模式无需订阅**
+> 如果您使用自带的 API Key (BYOK 模式对接 OpenAI/Anthropic),**您不需要 GitHub Copilot 官方订阅**。只有在访问 GitHub 官方模型时才需要订阅。
-## 🚀 最新特性 (v0.5.1) - 重大升级
+---
-- **🧠 智能 BYOK 检测**: 优化了 BYOK 与官方 Copilot 模型的识别逻辑,完美支持自定义模型(角色/提示词)及倍率检测(如 `(0x)`, `(1x)`)。
-- **⚡ 性能飙升**: 引入 **工具缓存 (Tool Caching)** 机制,在请求间持久化工具定义,显著降低调用开销。
-- **🧩 丰富工具集成**: 工具描述现包含来源分组(内置/用户/服务器)及 Docstring 元数据自动解析。
-- **🛡️ 精确控制**: 完美兼容 OpenWebUI 全局函数过滤配置 (`function_name_filter_list`),可精准控制暴露给 LLM 的函数。
-- **🔑 用户级 BYOK**: 支持在用户层面配置自定义 API Key 对接 AI 供应商(OpenAI, Anthropic)。
-- **📝 格式优化**: 系统提示词强制使用标准 Markdown 表格,彻底解决 HTML 表格渲染问题。
+## ✨ 0.6.0 更新内容 (What's New)
-## ✨ 核心能力
+- **👥 多用户与会话管理**: 采用 `user_id/chat_id` 的物理隔离架构,确保资源独立与稳健管理。
+- **🤖 赋予 Agent 文件自主权**: 自动将上传的文件同步至物理工作区,支持 Python 直接分析 Excel/CSV。
+- **🔧 OpenAPI & 外部工具修复**: 完美支持通过 OpenAPI 服务器挂载的工具调用。
+- **📊 计费与成本控制**: 增强的**计费倍率限制** (`MAX_MULTIPLIER`,例如设为 0 即仅限免费模型) 和**模型关键词过滤** (`EXCLUDE_KEYWORDS`),实现更精准的成本管控。
+- **🧠 数据库持久化 TODO**: 任务进度跨会话保存,Agent 拥有更持久的任务 memory。
-- **🔑 灵活鉴权与 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) 的流式渲染。
-- **🖼️ 智能多模态**: 支持图像识别与附件上传,让 Copilot 拥有视觉能力。
-- **🛠️ 极简部署流程**: 自动检测环境、自动下载 CLI、自动管理依赖,全自动化开箱即用。
-- **🛡️ 纯净安全体系**: 支持标准 PAT 认证,确保数据安全。
+- **🖼️ 智能多模态**: 完整支持图像识别与附件上传分析。
+- **⚡ 交互式伪影 (Artifacts)**: 自动渲染 Agent 生成的 HTML/JS 应用程序,直接在聊天界面交互。
-## 安装与配置
+---
-### 1. 导入函数
+## ⚙️ 核心配置参数 (Valves)
-1. 打开 OpenWebUI。
-2. 进入 **Workspace** -> **Functions**。
-3. 点击 **+** (创建函数)。
-4. 将 `github_copilot_sdk_cn.py` 的内容完整粘贴进去。
-5. 保存。
+### 1. 管理员配置 (基础设置)
-### 2. 配置 Valves (设置)
+管理员可在函数设置中定义全局默认行为。
-在函数列表中找到 "GitHub Copilot",点击 **⚙️ (Valves)** 图标进行配置:
-
-| 参数 | 说明 | 默认值 |
+| 参数 | 默认值 | 说明 |
| :--- | :--- | :--- |
-| **GH_TOKEN** | **(必填)** GitHub 访问令牌 (PAT 或 OAuth Token)。用于聊天。 | - |
-| **DEBUG** | 是否开启调试日志(输出到浏览器控制台)。 | `False` |
-| **LOG_LEVEL** | Copilot CLI 日志级别: none, error, warning, info, debug, all。 | `error` |
-| **SHOW_THINKING** | 是否显示模型推理/思考过程(需开启流式 + 模型支持)。 | `True` |
-| **COPILOT_CLI_VERSION** | 指定安装/强制使用的 Copilot CLI 版本。 | `0.0.405` |
-| **EXCLUDE_KEYWORDS** | 排除包含这些关键词的模型(逗号分隔)。 | - |
-| **WORKSPACE_DIR** | 文件操作的受限工作区目录。 | - |
-| **INFINITE_SESSION** | 启用无限会话(自动上下文压缩)。 | `True` |
-| **COMPACTION_THRESHOLD** | 后台压缩阈值 (0.0-1.0)。 | `0.8` |
-| **BUFFER_THRESHOLD** | 缓冲区耗尽阈值 (0.0-1.0)。 | `0.95` |
-| **TIMEOUT** | 每个流式分块超时(秒)。 | `300` |
-| **CUSTOM_ENV_VARS** | 自定义环境变量 (JSON 格式)。 | - |
-| **REASONING_EFFORT** | 推理强度级别: low, medium, high. `xhigh` 仅部分模型支持。 | `medium` |
-| **ENABLE_MCP_SERVER** | 启用直接 MCP 客户端连接 (建议)。 | `True` |
-| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具 (包括自定义和服务器工具)。 | `True` |
-| **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` |
+| `GH_TOKEN` | `""` | 全局 GitHub Token (需具备 'Copilot Requests' 权限)。 |
+| `ENABLE_OPENWEBUI_TOOLS` | `True` | 启用 OpenWebUI 工具 (包括定义工具和内置工具)。 |
+| `ENABLE_OPENAPI_SERVER` | `True` | 启用 OpenAPI 工具服务器连接。 |
+| `ENABLE_MCP_SERVER` | `True` | 启用直接 MCP 客户端连接 (推荐)。 |
+| `REASONING_EFFORT` | `medium` | 推理强度:low, medium, high。 |
+| `SHOW_THINKING` | `True` | 显示模型推理/思考过程。 |
+| `INFINITE_SESSION` | `True` | 启用无限会话 (自动上下文压缩)。 |
+| `MAX_MULTIPLIER` | `1.0` | 最大允许的模型计费倍率 (0x 为仅限免费模型)。 |
+| `EXCLUDE_KEYWORDS` | `""` | 排除包含这些关键字的模型 (逗号分隔)。 |
+| `TIMEOUT` | `300` | 每个流数据块的超时时间 (秒)。 |
+| `BYOK_TYPE` | `openai` | BYOK 服务商类型:`openai`, `anthropic`。 |
+| `BYOK_BASE_URL` | `""` | BYOK 基础 URL (例如: )。 |
+| `BYOK_MODELS` | `""` | BYOK 模型列表 (逗号分隔)。留空则从 API 获取。 |
+| `CUSTOM_ENV_VARS` | `""` | 自定义环境变量 (JSON 格式)。 |
+| `DEBUG` | `False` | 开启此项以在前端控制台输出详细调试日志。 |
-#### 用户 Valves(按用户覆盖)
+### 2. 用户配置 (个人覆盖)
-以下设置可按用户单独配置(覆盖全局 Valves):
+普通用户可在各自的个人设置中根据需要覆盖以下参数。
-| 参数 | 说明 | 默认值 |
-| :--- | :--- | :--- |
-| **GH_TOKEN** | 个人 GitHub Token(覆盖全局设置)。 | - |
-| **REASONING_EFFORT** | 推理强度级别(low/medium/high/xhigh)。 | - |
-| **DEBUG** | 是否启用技术调试日志。 | `False` |
-| **SHOW_THINKING** | 是否显示思考过程。 | `True` |
-| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具(覆盖全局设置)。 | `True` |
-| **ENABLE_MCP_SERVER** | 启用动态 MCP 服务器加载(覆盖全局设置)。 | `True` |
+| 参数 | 说明 |
+| :--- | :--- |
+| `GH_TOKEN` | 使用个人的 GitHub Token。 |
+| `REASONING_EFFORT` | 个人偏好的推理强度。 |
+| `SHOW_THINKING` | 显示模型推理/思考过程。 |
+| `MAX_MULTIPLIER` | 最大允许的模型计费倍率覆盖。 |
+| `EXCLUDE_KEYWORDS` | 排除包含这些关键字的模型。 |
+| `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)。
-2. 点击 **Generate new token (fine-grained)**。
-3. **Repository access**: 选择 **Public Repositories** (最简单) 或 **All repositories**。
-4. **Permissions**:
- - 如果您选择了 **All repositories**,则必须点击 **Account permissions**。
- - 找到 **Copilot Requests**,选择 **Access**。
-5. 生成并复制令牌。
+如果这个插件对您有所帮助,请在 [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) 项目上点个 **Star** 💫,这是对我最大的鼓励。
-## 📋 依赖说明
+---
-该 Pipe 会自动尝试安装以下依赖(如果环境中缺失):
+## 🚀 安装与配置 (Installation)
-- `github-copilot-sdk` (Python 包)
-- `github-copilot-cli` (二进制文件,通过官方脚本安装)
+### 1) 导入函数
-## 故障排除 (Troubleshooting) ❓
+1. 打开 OpenWebUI,前往 **工作区** -> **函数**。
+2. 点击 **+** (创建函数),完整粘贴 `github_copilot_sdk_cn.py` 的内容。
+3. 点击保存并确保已启用。
-- **图片及多模态使用说明**:
- - 确保 `MODEL_ID` 是支持多模态的模型。
-- **看不到思考过程**:
- - 确认已开启**流式输出**,且所选模型支持推理输出。
+### 2) 获取 Token (Get Token)
-## 更新日志
+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)
diff --git a/docs/plugins/pipes/index.md b/docs/plugins/pipes/index.md
index 7e37fcb..87f1a2b 100644
--- a/docs/plugins/pipes/index.md
+++ b/docs/plugins/pipes/index.md
@@ -15,7 +15,7 @@ Pipes allow you to:
## 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.0) - 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.
---
diff --git a/docs/plugins/pipes/index.zh.md b/docs/plugins/pipes/index.zh.md
index 69030d2..6c5f14d 100644
--- a/docs/plugins/pipes/index.zh.md
+++ b/docs/plugins/pipes/index.zh.md
@@ -15,7 +15,7 @@ Pipes 可以用于:
## 可用的 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.0) - GitHub Copilot SDK 官方集成。具备**工作区安全隔离**、**数据库持久化**、**零配置工具桥接**与**BYOK (自带 Key) 支持**。支持流式输出、打字机思考过程及无限会话。[查看深度架构解析](github-copilot-sdk-deep-dive.zh.md)。
---
diff --git a/plugins/filters/github_copilot_sdk_files_filter/README.md b/plugins/filters/github_copilot_sdk_files_filter/README.md
new file mode 100644
index 0000000..002a52f
--- /dev/null
+++ b/plugins/filters/github_copilot_sdk_files_filter/README.md
@@ -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.
diff --git a/plugins/filters/github_copilot_sdk_files_filter/README_CN.md b/plugins/filters/github_copilot_sdk_files_filter/README_CN.md
new file mode 100644
index 0000000..fab4c17
--- /dev/null
+++ b/plugins/filters/github_copilot_sdk_files_filter/README_CN.md
@@ -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 多模态过滤器。只要优先级设置正确,它们可以共存互不干扰。
diff --git a/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py b/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py
new file mode 100644
index 0000000..672c34c
--- /dev/null
+++ b/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py
@@ -0,0 +1,66 @@
+"""
+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
+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
diff --git a/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter_cn.py b/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter_cn.py
new file mode 100644
index 0000000..caa29dd
--- /dev/null
+++ b/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter_cn.py
@@ -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
diff --git a/plugins/filters/web_gemini_multimodel_filter/web_gemini_multimodel.py b/plugins/filters/web_gemini_multimodel_filter/web_gemini_multimodel.py
index 5862a9d..f872c46 100644
--- a/plugins/filters/web_gemini_multimodel_filter/web_gemini_multimodel.py
+++ b/plugins/filters/web_gemini_multimodel_filter/web_gemini_multimodel.py
@@ -3,6 +3,7 @@ title: Gemini 多模态过滤器(含字幕增强)
author: Gemini Adapter
author_url: https://github.com/Fu-Jie
funding_url: https://github.com/Fu-Jie/awesome-openwebui
+
version: 0.3.2
description: >
一个强大的过滤器,为 OpenWebUI 中的任何模型提供多模态能力:PDF、Office、图片、音频、视频等。
@@ -492,6 +493,13 @@ class Filter:
print(
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
is_target_model = (
diff --git a/plugins/pipes/github-copilot-sdk/INTERNAL_KNOWLEDGE.md b/plugins/pipes/github-copilot-sdk/INTERNAL_KNOWLEDGE.md
new file mode 100644
index 0000000..877e0b3
--- /dev/null
+++ b/plugins/pipes/github-copilot-sdk/INTERNAL_KNOWLEDGE.md
@@ -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/`.
diff --git a/plugins/pipes/github-copilot-sdk/INTERNAL_KNOWLEDGE_CN.md b/plugins/pipes/github-copilot-sdk/INTERNAL_KNOWLEDGE_CN.md
new file mode 100644
index 0000000..9f654d7
--- /dev/null
+++ b/plugins/pipes/github-copilot-sdk/INTERNAL_KNOWLEDGE_CN.md
@@ -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/` 下的最新日志。
diff --git a/plugins/pipes/github-copilot-sdk/README.md b/plugins/pipes/github-copilot-sdk/README.md
index b4a5ce4..9e8298d 100644
--- a/plugins/pipes/github-copilot-sdk/README.md
+++ b/plugins/pipes/github-copilot-sdk/README.md
@@ -1,117 +1,118 @@
# 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/awesome-openwebui) | **Version:** 0.6.0 | **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]
> **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.**
-> A subscription is only required to access GitHub's official models.
+> 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.
-## 🚀 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)`).
-- **⚡ 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.
-- **🛡️ Precise Control**: Added support for OpenWebUI's `function_name_filter_list` to filter MCP and OpenAPI functions.
-- **🔑 User-Level BYOK**: Fully leverage Copilot SDK with your own Model Providers (OpenAI, Anthropic) with user-level API Key overrides.
-- **📝 Better Formatting**: Enforced standard Markdown tables in system prompts to prevent rendering issues with HTML tables.
+## ✨ v0.6.0 Updates (What's New)
+
+- **👥 User & Chat Management**: Physical management architecture (`user_id/chat_id`) for absolute resource independence.
+- **🤖 Empowering Agent Autonomy**: Automatic synchronization of raw files to the workspace, enabling direct Python-based analysis of Excel/CSV.
+- **🔧 OpenAPI & External Tool Fixes**: Full support for tools mounted via OpenAPI servers.
+- **📊 Cost Control**: Enhanced **Billing Multiplier Limits** (`MAX_MULTIPLIER`, e.g., set to 0 for free models only) and **Model Keyword Filtering** (`EXCLUDE_KEYWORDS`) for precise cost management.
+- **🧠 Persistent TODO Lists**: Database-backed task tracking that persists across sessions.
+
+---
## ✨ 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.
-- **🌉 The Ultimate Bridge**: The first and only plugin that creates a seamless bridge between **OpenWebUI Tools** and **GitHub Copilot SDK**.
-- **🚀 Official & Native**: Built directly on the official Python SDK, providing the most stable and authentic Copilot experience.
-- **🌊 Advanced Streaming (Thought Process)**: Supports full model reasoning/thinking display with typewriter effects.
-- **🖼️ Intelligent Multimodal**: Full support for images and attachments, enabling Copilot to "see" your workspace.
-- **🛠️ Effortless Setup**: Automatic CLI detection, version enforcement, and dependency management.
-- **🛡️ Integrated Security**: Supports secure PAT authentication for standard and extended capabilities.
+- **🔑 Flexible Auth & BYOK**: Official Copilot subscriptions (PAT) or Bring Your Own Key (OpenAI/Anthropic).
+- **🔌 Universal Tool Protocol**: Native support for **MCP (Model Context Protocol)**, OpenAPI, and OpenWebUI built-in tools.
+- **🛡️ Sandbox Workspace Isolation**: Strict per-session sandboxing for data privacy and security.
+- **♾️ Infinite Session Management**: Smart context window management with automatic compaction for indefinite conversation capability.
+- **🧠 Deep Database Integration**: Real-time persistence of TOD·O lists for long-running workflows.
+- **🌊 Advanced Streaming**: Full support for thinking process/Chain of Thought visualization.
+- **🖼️ Intelligent Multimodal**: Vision capabilities and raw file analysis support.
+- **⚡ Interactive Artifacts**: Automatically renders HTML/JS apps generated by the agent directly in the chat interface.
-## Installation & Configuration
+---
-### 1) Import Function
+## ⚙️ Core Configuration (Valves)
-1. Open OpenWebUI.
-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.
+### 1. Administrator Settings (Base)
-### 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:
-
-| Parameter | Description | Default |
+| Valve | Default | Description |
| :--- | :--- | :--- |
-| **GH_TOKEN** | **(Required)** GitHub Access Token (PAT or OAuth Token). Access to Chat. | - |
-| **DEBUG** | Whether to enable debug logs (output to browser console). | `False` |
-| **LOG_LEVEL** | Copilot CLI log level: none, error, warning, info, debug, all. | `error` |
-| **SHOW_THINKING** | Show model reasoning/thinking process (requires streaming + model support). | `True` |
-| **COPILOT_CLI_VERSION** | Specific Copilot CLI version to install/enforce. | `0.0.405` |
-| **EXCLUDE_KEYWORDS** | Exclude models containing these keywords (comma separated). | - |
-| **WORKSPACE_DIR** | Restricted workspace directory for file operations. | - |
-| **INFINITE_SESSION** | Enable Infinite Sessions (automatic context compaction). | `True` |
-| **COMPACTION_THRESHOLD** | Background compaction threshold (0.0-1.0). | `0.8` |
-| **BUFFER_THRESHOLD** | Buffer exhaustion threshold (0.0-1.0). | `0.95` |
-| **TIMEOUT** | Timeout for each stream chunk (seconds). | `300` |
-| **CUSTOM_ENV_VARS** | Custom environment variables (JSON format). | - |
-| **REASONING_EFFORT** | Reasoning effort level: low, medium, high. `xhigh` is supported for some models. | `medium` |
-| **ENABLE_MCP_SERVER** | Enable Direct MCP Client connection (Recommended). | `True` |
-| **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` |
+| `GH_TOKEN` | `""` | Global GitHub Token (Requires 'Copilot Requests' permission). |
+| `ENABLE_OPENWEBUI_TOOLS` | `True` | Enable OpenWebUI Tools (includes defined Tools and Built-in Tools). |
+| `ENABLE_OPENAPI_SERVER` | `True` | Enable OpenAPI Tool Server connection. |
+| `ENABLE_MCP_SERVER` | `True` | Enable Direct MCP Client connection (Recommended). |
+| `REASONING_EFFORT` | `medium` | Reasoning effort level: low, medium, high. |
+| `SHOW_THINKING` | `True` | Show model reasoning/thinking process. |
+| `INFINITE_SESSION` | `True` | Enable Infinite Sessions (automatic context compaction). |
+| `MAX_MULTIPLIER` | `1.0` | Max allowed billing multiplier (0x for free models only). |
+| `EXCLUDE_KEYWORDS` | `""` | Exclude models containing these keywords (comma separated). |
+| `TIMEOUT` | `300` | Timeout for each stream chunk (seconds). |
+| `BYOK_TYPE` | `openai` | BYOK Provider Type: `openai`, `anthropic`. |
+| `BYOK_BASE_URL` | `""` | BYOK Base URL (e.g., ). |
+| `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. |
-#### 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 |
-| :--- | :--- | :--- |
-| **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` |
+| 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. |
-| **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
-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).
-2. Click **Generate new token (fine-grained)**.
-3. **Repository access**: Select **Public Repositories** (simplest) or **All repositories**.
-4. **Permissions**:
- - If you chose **All repositories**, you must click **Account permissions**.
- - Find **Copilot Requests**, and select **Access**.
-5. Generate and copy the Token.
+2. Create **Fine-grained token**, granting **Account permissions** -> **Copilot Requests** access.
+3. Paste the generated Token into the `GH_TOKEN` field in Valves.
-## 📋 Dependencies
+---
-This Pipe will automatically attempt to install the following dependencies:
+## 📋 Troubleshooting & Dependencies
-- `github-copilot-sdk` (Python package)
-- `github-copilot-cli` (Binary file, installed via official script)
+- **Agent ignores files?**: Ensure the Files Filter is enabled, otherwise RAG will interfere with raw binaries.
+- **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
diff --git a/plugins/pipes/github-copilot-sdk/README_CN.md b/plugins/pipes/github-copilot-sdk/README_CN.md
index fb0d7ca..c008946 100644
--- a/plugins/pipes/github-copilot-sdk/README_CN.md
+++ b/plugins/pipes/github-copilot-sdk/README_CN.md
@@ -1,117 +1,123 @@
# 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.0 | **项目:** [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]
+> **核心伴侣组件**
+> 如需启用文件处理与数据分析能力,请务必安装 [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6)。
+
> [!TIP]
-> **使用 BYOK 模式无需订阅**
-> 如果您使用自己的 API Key (OpenAI, Anthropic) 运行 BYOK 模式,**则完全不需要** GitHub Copilot 订阅。
-> 仅当您希望使用 GitHub 官方提供的模型时,才需要订阅。
+> **BYOK 模式无需订阅**
+> 如果您使用自带的 API Key (BYOK 模式对接 OpenAI/Anthropic),**您不需要 GitHub Copilot 官方订阅**。只有在访问 GitHub 官方模型时才需要订阅。
-## 🚀 最新特性 (v0.5.1) - 重大升级
+---
-- **🧠 智能 BYOK 检测**: 优化了 BYOK 与官方 Copilot 模型的识别逻辑,完美支持自定义模型(角色/提示词)及倍率检测(如 `(0x)`, `(1x)`)。
-- **⚡ 性能飙升**: 引入 **工具缓存 (Tool Caching)** 机制,在请求间持久化工具定义,显著降低调用开销。
-- **🧩 丰富工具集成**: 工具描述现包含来源分组(内置/用户/服务器)及 Docstring 元数据自动解析。
-- **🛡️ 精确控制**: 完美兼容 OpenWebUI 全局函数过滤配置 (`function_name_filter_list`),可精准控制暴露给 LLM 的函数。
-- **🔑 用户级 BYOK**: 支持在用户层面配置自定义 API Key 对接 AI 供应商(OpenAI, Anthropic)。
-- **📝 格式优化**: 系统提示词强制使用标准 Markdown 表格,彻底解决 HTML 表格渲染问题。
+## ✨ 0.6.0 更新内容 (What's New)
-## ✨ 核心能力
+- **👥 多用户与会话管理**: 采用 `user_id/chat_id` 的物理隔离架构,确保资源独立与稳健管理。
+- **🤖 赋予 Agent 文件自主权**: 自动将上传的文件同步至物理工作区,支持 Python 直接分析 Excel/CSV。
+- **🔧 OpenAPI & 外部工具修复**: 完美支持通过 OpenAPI 服务器挂载的工具调用。
+- **📊 计费与成本控制**: 增强的**计费倍率限制** (`MAX_MULTIPLIER`,例如设为 0 即仅限免费模型) 和**模型关键词过滤** (`EXCLUDE_KEYWORDS`),实现更精准的成本管控。
+- **🧠 数据库持久化 TODO**: 任务进度跨会话保存,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) 的流式渲染。
-- **🖼️ 智能多模态**: 支持图像识别与附件上传,让 Copilot 拥有视觉能力。
-- **🛠️ 极简部署流程**: 自动检测环境、自动下载 CLI、自动管理依赖,全自动化开箱即用。
-- **🛡️ 纯净安全体系**: 支持标准 PAT 认证,确保数据安全。
+- **🖼️ 智能多模态**: 完整支持图像识别与附件上传分析。
+- **⚡ 交互式伪影 (Artifacts)**: 自动渲染 Agent 生成的 HTML/JS 应用程序,直接在聊天界面交互。
-## 安装与配置
+---
-### 1. 导入函数
+## ⚙️ 核心配置参数 (Valves)
-1. 打开 OpenWebUI。
-2. 进入 **Workspace** -> **Functions**。
-3. 点击 **+** (创建函数)。
-4. 将 `github_copilot_sdk_cn.py` 的内容完整粘贴进去。
-5. 保存。
+### 1. 管理员配置 (基础设置)
-### 2. 配置 Valves (设置)
+管理员可在函数设置中定义全局默认行为。
-在函数列表中找到 "GitHub Copilot",点击 **⚙️ (Valves)** 图标进行配置:
-
-| 参数 | 说明 | 默认值 |
+| 参数 | 默认值 | 说明 |
| :--- | :--- | :--- |
-| **GH_TOKEN** | **(必填)** GitHub 访问令牌 (PAT 或 OAuth Token)。用于聊天。 | - |
-| **DEBUG** | 是否开启调试日志(输出到浏览器控制台)。 | `False` |
-| **LOG_LEVEL** | Copilot CLI 日志级别: none, error, warning, info, debug, all。 | `error` |
-| **SHOW_THINKING** | 是否显示模型推理/思考过程(需开启流式 + 模型支持)。 | `True` |
-| **COPILOT_CLI_VERSION** | 指定安装/强制使用的 Copilot CLI 版本。 | `0.0.405` |
-| **EXCLUDE_KEYWORDS** | 排除包含这些关键词的模型(逗号分隔)。 | - |
-| **WORKSPACE_DIR** | 文件操作的受限工作区目录。 | - |
-| **INFINITE_SESSION** | 启用无限会话(自动上下文压缩)。 | `True` |
-| **COMPACTION_THRESHOLD** | 后台压缩阈值 (0.0-1.0)。 | `0.8` |
-| **BUFFER_THRESHOLD** | 缓冲区耗尽阈值 (0.0-1.0)。 | `0.95` |
-| **TIMEOUT** | 每个流式分块超时(秒)。 | `300` |
-| **CUSTOM_ENV_VARS** | 自定义环境变量 (JSON 格式)。 | - |
-| **REASONING_EFFORT** | 推理强度级别: low, medium, high. `xhigh` 仅部分模型支持。 | `medium` |
-| **ENABLE_MCP_SERVER** | 启用直接 MCP 客户端连接 (建议)。 | `True` |
-| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具 (包括自定义和服务器工具)。 | `True` |
-| **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` |
+| `GH_TOKEN` | `""` | 全局 GitHub Token (需具备 'Copilot Requests' 权限)。 |
+| `ENABLE_OPENWEBUI_TOOLS` | `True` | 启用 OpenWebUI 工具 (包括定义工具和内置工具)。 |
+| `ENABLE_OPENAPI_SERVER` | `True` | 启用 OpenAPI 工具服务器连接。 |
+| `ENABLE_MCP_SERVER` | `True` | 启用直接 MCP 客户端连接 (推荐)。 |
+| `REASONING_EFFORT` | `medium` | 推理强度:low, medium, high。 |
+| `SHOW_THINKING` | `True` | 显示模型推理/思考过程。 |
+| `INFINITE_SESSION` | `True` | 启用无限会话 (自动上下文压缩)。 |
+| `MAX_MULTIPLIER` | `1.0` | 最大允许的模型计费倍率 (0x 为仅限免费模型)。 |
+| `EXCLUDE_KEYWORDS` | `""` | 排除包含这些关键字的模型 (逗号分隔)。 |
+| `TIMEOUT` | `300` | 每个流数据块的超时时间 (秒)。 |
+| `BYOK_TYPE` | `openai` | BYOK 服务商类型:`openai`, `anthropic`。 |
+| `BYOK_BASE_URL` | `""` | BYOK 基础 URL (例如: |
+| `BYOK_MODELS` | `""` | BYOK 模型列表 (逗号分隔)。留空则从 API 获取。 |
+| `CUSTOM_ENV_VARS` | `""` | 自定义环境变量 (JSON 格式)。 |
+| `DEBUG` | `False` | 开启此项以在前端控制台输出详细调试日志。 |
-#### 用户 Valves(按用户覆盖)
+### 2. 用户配置 (个人覆盖)
-以下设置可按用户单独配置(覆盖全局 Valves):
+普通用户可在各自的个人设置中根据需要覆盖以下参数。
-| 参数 | 说明 | 默认值 |
-| :--- | :--- | :--- |
-| **GH_TOKEN** | 个人 GitHub Token(覆盖全局设置)。 | - |
-| **REASONING_EFFORT** | 推理强度级别(low/medium/high/xhigh)。 | - |
-| **DEBUG** | 是否启用技术调试日志。 | `False` |
-| **SHOW_THINKING** | 是否显示思考过程。 | `True` |
-| **ENABLE_OPENWEBUI_TOOLS** | 启用 OpenWebUI 工具(覆盖全局设置)。 | `True` |
-| **ENABLE_MCP_SERVER** | 启用动态 MCP 服务器加载(覆盖全局设置)。 | `True` |
+| 参数 | 说明 |
+| :--- | :--- |
+| `GH_TOKEN` | 使用个人的 GitHub Token。 |
+| `REASONING_EFFORT`| 个人偏好的推理强度。 |
+| `SHOW_THINKING` | 显示模型推理/思考过程。 |
+| `MAX_MULTIPLIER` | 最大允许的模型计费倍率覆盖。 |
+| `EXCLUDE_KEYWORDS` | 排除包含这些关键字的模型。 |
+| `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)。
-2. 点击 **Generate new token (fine-grained)**。
-3. **Repository access**: 选择 **Public Repositories** (最简单) 或 **All repositories**。
-4. **Permissions**:
- - 如果您选择了 **All repositories**,则必须点击 **Account permissions**。
- - 找到 **Copilot Requests**,选择 **Access**。
-5. 生成并复制令牌。
+如果这个插件对您有所帮助,请在 [Awesome OpenWebUI](https://github.com/Fu-Jie/awesome-openwebui) 项目上点个 **Star** 💫,这是对我最大的鼓励。
-## 📋 依赖说明
+---
-该 Pipe 会自动尝试安装以下依赖(如果环境中缺失):
+## 🚀 安装与配置 (Installation)
-- `github-copilot-sdk` (Python 包)
-- `github-copilot-cli` (二进制文件,通过官方脚本安装)
+### 1) 导入函数
-## 故障排除 (Troubleshooting) ❓
+1. 打开 OpenWebUI,前往 **工作区** -> **函数**。
+2. 点击 **+** (创建函数),完整粘贴 `github_copilot_sdk_cn.py` 的内容。
+3. 点击保存并确保已启用。
-- **图片及多模态使用说明**:
- - 确保 `MODEL_ID` 是支持多模态的模型。
-- **看不到思考过程**:
- - 确认已开启**流式输出**,且所选模型支持推理输出。
+### 2) 获取 Token (Get Token)
-## 更新日志
+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)
diff --git a/plugins/pipes/github-copilot-sdk/github_copilot_sdk.py b/plugins/pipes/github-copilot-sdk/github_copilot_sdk.py
index 5870523..77266a1 100644
--- a/plugins/pipes/github-copilot-sdk/github_copilot_sdk.py
+++ b/plugins/pipes/github-copilot-sdk/github_copilot_sdk.py
@@ -5,7 +5,7 @@ author_url: https://github.com/Fu-Jie/awesome-openwebui
funding_url: https://github.com/open-webui
openwebui_id: ce96f7b4-12fc-4ac3-9a01-875713e69359
description: Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.
-version: 0.5.1
+version: 0.6.0
requirements: github-copilot-sdk==0.1.23
"""
@@ -20,11 +20,19 @@ import shutil
import subprocess
import hashlib
import aiohttp
+import contextlib
+import traceback
from pathlib import Path
from typing import Optional, Union, AsyncGenerator, List, Any, Dict, Literal, Tuple
from types import SimpleNamespace
from pydantic import BaseModel, Field, create_model
+# Database imports
+from sqlalchemy import Column, String, Text, DateTime, Integer, JSON, inspect
+from sqlalchemy.orm import declarative_base, sessionmaker
+from sqlalchemy.engine import Engine
+from datetime import datetime, timezone
+
# Import copilot SDK modules
from copilot import CopilotClient, define_tool
@@ -37,47 +45,126 @@ from open_webui.utils.tools import get_tools as get_openwebui_tools, get_builtin
from open_webui.models.tools import Tools
from open_webui.models.users import Users
+# Open WebUI internal database (re-use shared connection)
+try:
+ from open_webui.internal import db as owui_db
+except ImportError:
+ owui_db = None
+
# Setup logger
logger = logging.getLogger(__name__)
-FORMATTING_GUIDELINES = (
+
+def _discover_owui_engine(db_module: Any) -> Optional[Engine]:
+ """Discover the Open WebUI SQLAlchemy engine via provided db module helpers."""
+ if db_module is None:
+ return None
+
+ db_context = getattr(db_module, "get_db_context", None) or getattr(
+ db_module, "get_db", None
+ )
+ if callable(db_context):
+ try:
+ with db_context() as session:
+ try:
+ return session.get_bind()
+ except AttributeError:
+ return getattr(session, "bind", None) or getattr(
+ session, "engine", None
+ )
+ except Exception as exc:
+ logger.error(f"[DB Discover] get_db_context failed: {exc}")
+
+ for attr in ("engine", "ENGINE", "bind", "BIND"):
+ candidate = getattr(db_module, attr, None)
+ if candidate is not None:
+ return candidate
+
+ return None
+
+
+owui_engine = _discover_owui_engine(owui_db)
+owui_Base = (
+ getattr(owui_db, "Base", None) if owui_db is not None else declarative_base()
+)
+
+
+class ChatTodo(owui_Base):
+ """Chat Todo Storage Table"""
+
+ __tablename__ = "chat_todos"
+ __table_args__ = {"extend_existing": True}
+
+ id = Column(Integer, primary_key=True, autoincrement=True)
+ chat_id = Column(String(255), unique=True, nullable=False, index=True)
+ content = Column(Text, nullable=False)
+ metrics = Column(JSON, nullable=True) # {"total": 39, "completed": 0, "percent": 0}
+ updated_at = Column(
+ DateTime,
+ default=lambda: datetime.now(timezone.utc),
+ onupdate=lambda: datetime.now(timezone.utc),
+ )
+
+
+# Base guidelines for all users
+BASE_GUIDELINES = (
"\n\n[Environment & Capabilities Context]\n"
- "You are an AI assistant operating within a specific, high-capability environment. Understanding your context is crucial for optimal decision-making.\n"
+ "You are an AI assistant operating within a high-capability Linux container environment (OpenWebUI).\n"
"\n"
- "**System Environment:**\n"
- "- **Platform**: You are running inside a Linux containerized environment hosted within **OpenWebUI**.\n"
- "- **Core Engine**: You are powered by the **GitHub Copilot SDK** and interact via the **GitHub Copilot CLI**.\n"
- "- **Access**: You have direct access to the **OpenWebUI source code**. You can read, analyze, and reference the internal implementation of the platform you are running on via file operations or tools.\n"
- "- **FileSystem Access**: You are running as **root**. You have **READ access to the entire container file system** (including system files). However, you should **ONLY WRITE** to your designated persistent workspace directory.\n"
- "- **Native Python Environment**: You are running in a **rich Python environment** that already includes all OpenWebUI dependencies. You can natively import and use these installed libraries (e.g., for data processing, utility functions) without installing anything new.\n"
- "- **Package Management**: Only if you need **additional** libraries, you should **create a virtual environment** within your workspace and install them there. Do NOT mess with the global pip.\n"
- "- **Network**: You have internet access and can interact with external APIs if provided with the necessary tools (e.g., Web Search, MCP Servers).\n"
- "\n"
- "**Interface Capabilities (OpenWebUI):**\n"
- "- **Rich Web UI**: You are NOT limited to a simple terminal or text-only responses. You are rendering in a modern web browser.\n"
- "- **Visual Rendering**: You can and should use advanced visual elements to explain concepts clearly.\n"
- "- **Interactive Scripting**: You can often run Python scripts directly to perform calculations, data analysis, or automate tasks if the environment supports it/tools are available.\n"
- "- **Built-in Tools Integration**: OpenWebUI provides native tools for direct interaction with its internal services. For example, tools like `create_note`, `get_notes`, or `manage_memories` interact directly with the platform's database. Use these tools to persistently manage user data and system state.\n"
+ "**System Environment & User Privileges:**\n"
+ "- **Output Environment**: You are rendering in the **OpenWebUI Chat Page**, a modern, interactive web interface. Optimize your output format to leverage Markdown for the best UI experience.\n"
+ "- **Root Access**: You are running as **root**. You have **READ access to the entire container file system** but you **MUST ONLY WRITE** to your designated persistent workspace directory (structured as `.../user_id/chat_id/`). All other system areas are strictly READ-ONLY.\n"
+ "- **STRICT FILE CREATION RULE**: You are **PROHIBITED** from creating or editing files outside of your specific workspace path. Never place files in `/root`, `/tmp`, or `/app` (unless specifically instructed for analysis, but writing is banned). Every file operation (`create`, `edit`, `bash`) MUST use the absolute path provided in your `Session Context` below.\n"
+ "- **Filesystem Layout (/app)**:\n"
+ " - `/app/backend`: Python backend source code. You can analyze core package logic here.\n"
+ " - `/app/build`: Compiled frontend assets (assets, static, pyodide, index.html).\n"
+ "- **Rich Python Environment**: You can natively import and use any installed OpenWebUI dependencies. You have access to a wealth of libraries (e.g., for data processing, utility functions). However, you **MUST NOT** install new packages in the global environment. If you need additional dependencies, you must create a virtual environment within your designated workspace directory.\n"
+ "- **Tool Availability**: You may have access to various tools (OpenWebUI Built-ins, Custom Tools, OpenAPI Servers, or MCP Servers) depending on the user's current configuration. If tools are visible in your session metadata, use them proactively to enhance your task execution.\n"
"\n"
"**Formatting & Presentation Directives:**\n"
- "1. **Markdown & Multimedia**:\n"
- " - Use **bold**, *italics*, lists, and **Markdown tables** (standard format, never use HTML tables) liberally to structure your answer.\n"
- " - **Mermaid Diagrams**: For flowcharts, sequence diagrams, or architecture logic, ALWAYS use the standard ```mermaid code block. Do NOT use other formats.\n"
- " - **LaTeX Math**: Use standard LaTeX formatting for mathematical expressions.\n"
- "\n"
- "2. **Images & Files**:\n"
- " - If a tool generated an image or file, you **MUST** embed it directly using ``.\n"
- " - Do NOT simply provide a text link unless explicitly asked.\n"
- "\n"
- "3. **Interactive HTML/JS**:\n"
- " - You can output standalone HTML/JS/CSS code blocks. OpenWebUI will render them as interactive widgets in an iframe.\n"
- " - **IMPORTANT**: Combine all HTML, CSS (in `