feat(github-copilot-sdk): bump version to v0.11.0 for performance & stability

- Fixed shared client pool bug to eliminate TTFT latency.
- Added pure BYOK-only mode support.
- Improved cross-user environment isolation for concurrency.
- Resolved RichUI infinite vertical sizing loop.
- Integrated client.ping() into stall detection.
- Automatically hide TODO List widget after completion.
- Synced all documentation and release notes.
This commit is contained in:
fujie
2026-03-20 03:26:43 +08:00
parent bf3ba97b9a
commit 6f8c871658
17 changed files with 2862 additions and 123 deletions

View File

@@ -1,6 +1,6 @@
# GitHub Copilot SDK Pipe for OpenWebUI
| By [Fu-Jie](https://github.com/Fu-Jie) · v0.10.1 | [⭐ Star this repo](https://github.com/Fu-Jie/openwebui-extensions) |
| By [Fu-Jie](https://github.com/Fu-Jie) · v0.11.0 | [⭐ Star this repo](https://github.com/Fu-Jie/openwebui-extensions) |
| :--- | ---: |
| ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&label=%F0%9F%91%A5&style=flat) | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&label=%E2%AD%90&style=flat) | ![top](https://img.shields.io/badge/%F0%9F%8F%86-Top%20%3C1%25-10b981?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_contributions.json&label=%F0%9F%93%A6&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&label=%E2%AC%87%EF%B8%8F&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&label=%F0%9F%92%BE&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&label=%F0%9F%91%81%EF%B8%8F&style=flat) |
@@ -39,11 +39,14 @@ When the selection dialog opens, search for this plugin, check it, and continue.
> [!IMPORTANT]
> If the official OpenWebUI Community version is already installed, remove it first. After that, Batch Install Plugins can keep this plugin updated in future runs.
## ✨ v0.10.1: RichUI Default & Improved HTML Display
## ✨ v0.11.0: High-Speed Pool Fix, BYOK-only Mode & Stable RichUI
- **🎨 RichUI Default HTML Display**: Changed default HTML embed type from 'artifacts' to 'richui' for direct, seamless rendering in OpenWebUI chat interface
- **📝 Enhanced System Prompt**: Updated guidance to recommend RichUI mode for HTML presentation by default, with artifacts only when explicitly requested by users
- **⚡ Smoother Workflow**: Eliminates unnecessary modal interactions, allowing agents to display interactive components directly in conversation
- **🚀 Shared Client Pool Fix**: Resolved a critical bug where the shared singleton pool was incorrectly stopped, restoring instant response speeds for subsequent turns.
- **🔑 BYOK-only Mode**: You can now use the plugin with only BYOK settings (OpenAI/Anthropic keys) without requiring a `GH_TOKEN`.
- **🛡️ Environment Isolation**: Improved security by isolating user-specific environment variables, preventing token pollution in concurrent requests.
- **📏 RichUI Height Stability**: Fixed the infinite sizing loop bug in embedded components, ensuring precise auto-height calculation.
- **🩺 Smart Stall Detection**: Integrated `client.ping()` to rescue slow but alive processes from being prematurely aborted during heavy tasks.
- **🧹 Smart TODO Visibility**: Automatically hides the TODO widget in subsequent chats once all tasks are completed to keep the interface clean.
---
@@ -58,6 +61,59 @@ When the selection dialog opens, search for this plugin, check it, and continue.
---
## 🚀 Quick Start (Read This First)
If you only want to know how to use this plugin, read these sections in order:
1. **Quick Start**
2. **How to Use**
3. **Core Configuration**
Everything else is optional or advanced.
1. **Install the Pipe**
- **Recommended**: Use **Batch Install Plugins** and select this plugin.
- **Manual**: OpenWebUI -> **Workspace** -> **Functions** -> create a new function -> paste `github_copilot_sdk.py`.
2. **Install the Companion Files Filter** if you want uploaded files to reach the Pipe as raw files.
3. **Configure one credential path**
- `GH_TOKEN` for official GitHub Copilot models
- or `BYOK_API_KEY` for OpenAI / Anthropic
4. **Start a new chat and use it normally**
- Select this Pipe's model
- Ask your task in plain language
- Upload files when needed
## 🧭 How to Use
You usually **do not** need to mention tools, skills, internal parameters, or RichUI syntax. Just describe the task naturally.
| Scenario | What you do | Example |
| :--- | :--- | :--- |
| Daily coding / debugging | Ask normally in chat | `Fix the failing tests and explain the root cause.` |
| File analysis | Upload files and ask normally | `Summarize this Excel file and chart the monthly trend.` |
| Long tasks | Ask for the outcome; the Pipe handles planning, status, and TODO tracking automatically | `Refactor this plugin and keep the docs in sync.` |
| HTML reports / dashboards | Ask the agent to generate a report or dashboard | `Create an interactive architecture overview for this repo.` |
> [!TIP]
> Ordinary users only need to remember one rule: if you ask for an interactive HTML result, the Pipe will usually use **RichUI** automatically. Only mention **artifacts** when you explicitly want artifacts-style output.
## 💡 What RichUI actually means
**RichUI = the generated HTML page is rendered directly inside the chat window.**
You can think of it as **a small interactive page inside the conversation**.
- If the agent generates a dashboard, report, timeline, architecture page, or explainer page, you may see RichUI.
- If you are just asking normal coding questions, debugging, writing, or file analysis tasks, you can ignore RichUI completely.
- You do **not** need to write XML, HTML tags, or special RichUI attributes. Just describe the result you want.
| What you ask for | What happens |
| :--- | :--- |
| `Fix this failing test` | Normal chat response. RichUI is not important here. |
| `Create an interactive dashboard for this repo` | RichUI is used by default. |
| `Generate this as artifacts` | Artifacts mode is used instead of RichUI. |
| `Build a project summary page if that helps explain it better` | The agent decides whether a page is useful. |
## ✨ Key Capabilities
- **🔑 Unified Intelligence (Official + BYOK)**: Seamlessly switch between official GitHub Copilot models and your own models (OpenAI, Anthropic, DeepSeek, xAI) via **Bring Your Own Key** mode.
@@ -81,6 +137,25 @@ When the selection dialog opens, search for this plugin, check it, and continue.
> "Install this skill: <https://github.com/nicobailon/visual-explainer>".
> This skill is specifically optimized for generating high-quality visual components and integrates perfectly with this Pipe.
### 🎛️ How RichUI works in normal use
For normal users, the rule is simple:
1. Ask for the result you want.
2. The AI decides whether a normal chat reply is enough.
3. If a page or dashboard would explain things better, the AI creates it automatically and shows it in chat.
You do **not** need to write XML tags, HTML snippets, or RichUI attributes yourself.
Examples:
- `Explain this repository structure.`
- `If useful, present this as an interactive architecture page.`
- `Turn this CSV into a simple dashboard.`
> [!TIP]
> Only mention **artifacts** when you explicitly want artifacts-style output. Otherwise, let the AI choose the best presentation automatically.
---
## 🧩 Companion Files Filter (Required for raw files)
@@ -140,17 +215,27 @@ Standard users can override these settings in their individual Profile/Function
---
### 📤 Enhanced Publishing & Interactive Components
### 📤 HTML result behavior (advanced)
The `publish_file_from_workspace` tool now uses a clearer delivery contract for production use:
You can skip this section unless you are directly using `publish_file_from_workspace(...)`.
- **Artifacts mode (`artifacts`, default)**: Agent returns `[Preview]` + `[Download]` and may output `html_embed` in a ```html block for direct chat rendering.
- **Rich UI mode (`richui`)**: Agent returns `[Preview]` + `[Download]` only; integrated preview is rendered automatically via emitter (no iframe block in message).
- **📄 PDF delivery safety rule**: Always output Markdown links only (`[Preview]` + `[Download]` when available). **Do not embed PDF via iframe/html blocks.**
- **⚡ Stable dual-channel publishing**: Keeps interactive viewing and persistent file download aligned across local/object-storage backends.
- **✅ Status integration**: Emits real-time publishing progress and completion feedback to the OpenWebUI status bar.
In plain language:
- `richui` = show the generated HTML directly inside the chat
- `artifacts` = use artifacts-style HTML delivery when you explicitly want that style
Internally, this behavior is controlled by the `embed_type` parameter of `publish_file_from_workspace(...)`.
- **Rich UI mode (`richui`, default for HTML)**: The agent returns `[Preview]` + `[Download]` only. OpenWebUI renders the interactive preview automatically after the message.
- **Artifacts mode (`artifacts`)**: Use this only when you explicitly want artifacts-style HTML delivery.
- **📄 PDF safety rule**: Always return Markdown links only (`[Preview]` / `[Download]` when available). Do not embed PDFs with iframe or HTML blocks.
- **⚡ Stable dual-channel publishing**: Keeps interactive viewing and persistent file download aligned across local and object-storage backends.
- **✅ Status integration**: Emits publishing progress and completion feedback to the OpenWebUI status bar.
- **📘 Publishing Tool Guide (GitHub)**: [publish_file_from_workspace Guide](https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/pipes/github-copilot-sdk/PUBLISH_FILE_FROM_WORKSPACE.md)
> [!TIP]
> Most users do not need to set `embed_type` manually. Ask for a report or dashboard normally. Only say `use artifacts` when you specifically want artifacts-style presentation. If you are not calling `publish_file_from_workspace(...)` yourself, you can usually ignore this parameter.
---
### 🧩 OpenWebUI Skills Bridge & `manage_skills` Tool

View File

@@ -1,6 +1,6 @@
# GitHub Copilot Official SDK Pipe
| 作者:[Fu-Jie](https://github.com/Fu-Jie) · v0.10.1 | [⭐ 点个 Star 支持项目](https://github.com/Fu-Jie/openwebui-extensions) |
| 作者:[Fu-Jie](https://github.com/Fu-Jie) · v0.11.0 | [⭐ 点个 Star 支持项目](https://github.com/Fu-Jie/openwebui-extensions) |
| :--- | ---: |
| ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&label=%F0%9F%91%A5&style=flat) | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&label=%E2%AD%90&style=flat) | ![top](https://img.shields.io/badge/%F0%9F%8F%86-Top%20%3C1%25-10b981?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_contributions.json&label=%F0%9F%93%A6&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&label=%E2%AC%87%EF%B8%8F&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&label=%F0%9F%92%BE&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&label=%F0%9F%91%81%EF%B8%8F&style=flat) |
@@ -40,11 +40,14 @@
> [!IMPORTANT]
> 如果你已经安装了 OpenWebUI 官方社区里的同名版本请先删除旧版本否则重新安装时可能报错。删除后Batch Install Plugins 后续就可以继续负责更新这个插件。
## ✨ v0.10.1RichUI 默认展示与 HTML 渲染改进
## ✨ v0.11.0:单例进程池修复、纯 BYOK 模式与 RichUI 高度稳定性
- **🎨 RichUI 默认 HTML 显示**:将默认 HTML 嵌入类型从 'artifacts' 改为 'richui',在 OpenWebUI 聊天界面中实现直观无缝的渲染效果
- **📝 增强系统提示词**:更新系统提示词指导,默认推荐 RichUI 模式展示 HTML 内容,仅当用户显式请求时使用 artifacts 模式
- **⚡ 更顺畅的工作流**:消除不必要的弹窗交互,让 Agent 能直接在对话中展示交互式组件
- **🚀 共享进程池修复**:修复了 `stream_response` 误停止单例客户端的重大 Bug显著提升多轮对话响应速度。
- **🔑 支持纯 BYOK 模式**现在支持仅配置自带密钥BYOK而不提供 `GH_TOKEN` 的运行模式
- **🛡️ 并发环境隔离**:重构环境变量注入逻辑,实现用户级 Token 隔离,杜绝高并发下的信息污染。
- **📏 RichUI 稳定性增强**:彻底解决了嵌入式组件高度计算循环导致的页面无限变高问题。
- **🩺 智能防挂死检测**:引入 `client.ping()` 探测机制,有效减少复杂任务(如长时间运行的脚本)被误杀的概率。
- **🧹 智能 TODO 显隐**:当 TODO 任务全部完成后,下一次对话将自动隐藏 UI保持界面整洁。
---
@@ -59,6 +62,59 @@
---
## 🚀 最短上手路径(先看这里)
如果你现在最关心的是“这个插件到底怎么用”,建议按这个顺序阅读:
1. **最短上手路径**
2. **日常怎么用**
3. **核心配置**
其他章节都属于补充说明或进阶内容。
1. **安装 Pipe**
- **推荐**:使用 **Batch Install Plugins** 安装并勾选当前插件。
- **手动**OpenWebUI -> **Workspace** -> **Functions** -> 新建 Function -> 粘贴 `github_copilot_sdk.py`
2. **如果你要处理上传文件**,再安装配套的 `GitHub Copilot SDK Files Filter`
3. **至少配置一种凭据**
- `GH_TOKEN`:使用 GitHub 官方 Copilot 模型
- `BYOK_API_KEY`:使用 OpenAI / Anthropic 自带 Key
4. **新建对话后直接正常提需求**
- 选择当前 Pipe 的模型
- 像平时一样描述任务
- 需要时上传文件
## 🧭 日常怎么用
大多数情况下,你**不需要**主动提 tools、skills、内部参数或 RichUI 语法,直接自然描述任务即可。
| 场景 | 你怎么做 | 示例 |
| :--- | :--- | :--- |
| 日常编码 / 排错 | 直接在聊天里提需求 | `修复失败的测试,并解释根因。` |
| 文件分析 | 上传文件后直接提需求 | `总结这个 Excel并画出每月趋势图。` |
| 长任务 | 只要说出目标即可Pipe 会自动处理规划、状态提示和 TODO 跟踪 | `重构这个插件,并同步更新文档。` |
| HTML 报告 / 看板 | 直接让 Agent 生成交互式报告或看板 | `帮我生成这个仓库的交互式架构总览。` |
> [!TIP]
> 普通用户只要记住一条:如果你让 Agent 生成交互式 HTML 结果,这个 Pipe 通常会自动使用 **RichUI**。只有当你明确想要 artifacts 风格时,才需要特别说明。
## 💡 RichUI 到底是什么意思?
**RichUI = Agent 生成的 HTML 页面,会直接显示在聊天窗口里。**
你可以把它理解为:**对话里面直接出现一个可交互的小网页 / 小看板**。
- 如果 Agent 生成的是看板、报告、时间线、架构图页面或说明型页面,你就可能会看到 RichUI。
- 如果你只是正常问代码问题、调试、写文档、分析文件,其实可以完全忽略 RichUI。
- 你**不需要**自己写 XML、HTML 标签或任何特殊 RichUI 属性,直接描述你想要的结果即可。
| 你怎么说 | 系统会怎么做 |
| :--- | :--- |
| `修复这个失败测试` | 正常聊天回复,这时 RichUI 基本不重要。 |
| `帮我生成一个交互式仓库看板` | 默认使用 RichUI。 |
| `请用 artifacts 形式生成` | 改用 artifacts而不是 RichUI。 |
| `如果做成页面更清楚,就帮我做成页面` | AI 会自己判断页面是否更合适。 |
## ✨ 核心能力 (Key Capabilities)
- **🔑 统一智能体验 (官方 + BYOK)**: 自由切换官方模型与自定义服务商OpenAI, Anthropic, DeepSeek, xAI支持 **BYOK (自带 Key)** 模式。
@@ -82,6 +138,25 @@
> “请安装此技能:<https://github.com/nicobailon/visual-explainer”。>
> 该技能专为生成高质量可视化组件而设计,能够与本 Pipe 完美协作。
### 🎛️ RichUI 在日常使用里怎么理解
对普通用户来说,规则很简单:
1. 直接说出你想要的结果。
2. AI 会自己判断普通聊天回复是否已经足够。
3. 如果做成页面、看板或可视化会更清楚AI 会自动生成并直接显示在聊天里。
你**不需要**自己写 XML 标签、HTML 片段或 RichUI 属性。
例如:
- `请解释这个仓库的结构。`
- `如果用交互式架构页更清楚,就做成页面。`
- `把这个 CSV 做成一个简单看板。`
> [!TIP]
> 只有当你明确想要 **artifacts 风格** 时,才需要特别说明。其他情况下,直接让 AI 自动选择最合适的展示方式即可。
---
## 🧩 配套 Files Filter原始文件必备
@@ -89,7 +164,7 @@
`GitHub Copilot SDK Files Filter` 是本 Pipe 的配套插件,用于阻止 OpenWebUI 默认 RAG 在 Pipe 接手前抢先处理上传文件。
- **作用**: 将上传文件移动到 `copilot_files`,让 Pipe 能直接读取原始二进制。
- **必要性**: 若未安装,文件可能被提前解析/向量化Agent 到原始文件。
- **必要性**: 若未安装,文件可能被提前解析/向量化Agent 可能拿不到原始文件。
- **v0.1.3 重点**:
- 修复 BYOK 模型 ID 识别(支持 `github_copilot_official_sdk_pipe.xxx` 前缀匹配)。
- 新增双通道调试日志(`show_debug_log`):后端 logger + 浏览器控制台。
@@ -174,6 +249,28 @@
---
## 📤 HTML 结果展示方式(进阶)
如果你没有直接使用 `publish_file_from_workspace(...)`,这一节可以跳过。
先用一句人话解释:
- `richui` = 生成的 HTML 直接显示在聊天里
- `artifacts` = 你明确想要 artifacts 风格时使用的另一种 HTML 交付方式
在内部实现上,这个行为由 `publish_file_from_workspace(..., embed_type=...)` 控制。
- **RichUI 模式(`richui`HTML 默认)**Agent 只返回 `[Preview]` + `[Download]`,聊天结束后由 OpenWebUI 自动渲染交互预览。
- **Artifacts 模式(`artifacts`**:只有在你明确想要 artifacts 风格展示时再使用。
- **PDF 安全规则**PDF 只返回 Markdown 链接,不要用 iframe / HTML block 嵌入。
- **双通道发布**:同时兼顾对话内查看与持久下载。
- **状态提示**:发布过程会同步显示在 OpenWebUI 状态栏。
> [!TIP]
> 如果你只是日常使用这个 Pipe通常不需要手动提 `embed_type`。直接说“生成一个交互式报告 / 看板”即可;只有你明确想要 artifacts 风格时再特别说明。如果你并没有直接调用 `publish_file_from_workspace(...)`,那通常可以忽略这个参数。
---
## 🤝 支持 (Support)
如果这个插件对你有帮助,欢迎到 [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) 点个 Star这将是我持续改进的动力感谢支持。

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
[![](https://img.shields.io/badge/OpenWebUI%20Community-Get%20Plugin-blue?style=for-the-badge)](https://openwebui.com/posts/ce96f7b4-12fc-4ac3-9a01-875713e69359)
## Overview
This release brings significant performance optimizations and stability enhancements. We fixed a critical bug in the client management logic, eliminating the 1-2s process startup latency between turns and significantly improving Time to First Token (TTFT). Additionally, the plugin now supports a pure BYOK mode and features improved environment isolation for concurrent user requests.
[**View Plugin Source & Documentation**](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/pipes/github-copilot-sdk)
## New Features
- **🔑 Pure BYOK Mode**: Allows the plugin to operate without a `GH_TOKEN` by using custom API keys (OpenAI/Anthropic) via BYOK Valves.
- **🩺 Smart Stall Detection**: Integrated `client.ping()` into the timeout logic. The system now "pokes" the underlying process before aborting, preventing the termination of slow but healthy long-running tasks.
- **🧹 Smart TODO Visibility**: The TODO List widget is now automatically hidden in subsequent chats once all tasks are marked as completed, keeping the UI clean.
## Bug Fixes
- **🚀 Major Performance Optimization**: Fixed a regression where the shared singleton client pool was incorrectly terminated after each response. Restored 1-2s startup speed for all follow-up messages.
- **🛡️ Cross-user Isolation**: Redesigned environment variable injection to prevent token pollution during concurrent requests from different users.
- **📏 RichUI Height Stability**: Fixed the infamous infinite vertical growth bug in embedded HTML components by refining the height measurement and breaking the ResizeObserver feedback loop.
## Migration Notes
- If you previously relied on `GH_TOKEN` for standard Copilot models but want to switch to a pure BYOK setup, you can now safely clear the `GH_TOKEN` Valve and only configure `BYOK_BASE_URL` and `BYOK_API_KEY`.

View File

@@ -0,0 +1,23 @@
[![](https://img.shields.io/badge/OpenWebUI%20%E7%A4%BE%E5%8C%BA-%E8%8E%B7%E5%8F%96%E6%8F%92%E4%BB%B6-blue?style=for-the-badge)](https://openwebui.com/posts/ce96f7b4-12fc-4ac3-9a01-875713e69359)
## Overview
本次更新带来了重大的性能优化与稳定性提升。我们修复了客户端管理逻辑中的关键 Bug消除了多轮对话中由于进程频繁重启导致的 1-2 秒冷启动延迟显著优化了首字响应速度TTFT。此外插件现在支持纯 BYOK 运行模式,并针对多用户并发请求强化了环境隔离机制。
[**查看插件源码与文档**](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/pipes/github-copilot-sdk)
## 新功能
- **🔑 纯 BYOK 模式支持**:解除对 `GH_TOKEN` 的强制依赖。现在您可以仅通过配置 BYOK 选项(如 OpenAI/Anthropic 密钥)来完整运行插件。
- **🩺 智能防挂死探测**:在超时逻辑中集成了 `client.ping()`。系统会在强行中断前先探测底层进程存活状态,有效避免误杀正在处理复杂长任务的健康进程。
- **🧹 智能 TODO 显隐**:优化了 TODO List 小组件显示策略。当所有子任务标记为完成后,下一次聊天将自动隐藏该组件,保持界面清爽。
## 问题修复
- **🚀 核心性能修复**:修复了一个导致共享单例客户端池在每次响应后被误停止的 Bug。恢复了后续对话中 1-2 秒的极速启动能力。
- **🛡️ 增强并发安全性**:重构了环境变量注入逻辑,实现了严格的用户级环境隔离,彻底杜绝了高并发场景下多用户 Token 互相污染的风险。
- **📏 RichUI 稳定性增强**:通过改进高度测量算法并打破 ResizeObserver 递归反馈链,彻底解决了嵌入式 HTML 组件高度无限增长的问题。
## 迁移指南
- 如果您之前为了兼容性同时配置了 `GH_TOKEN` 和 BYOK现在您可以安全地移除 `GH_TOKEN`,仅保留 BYOK 相关配置。