团队共享 · 上下文压缩 · v0.10.0 —— 自部署 AI 前端 Open WebUI 在本版首次引入文件夹级别的团队共享能力, 同时用自动上下文压缩解决了长对话的记忆溢出问题。
自部署 AI 平台的标杆
Open WebUI 是目前 GitHub 上最热门的自部署 AI 前端(143K+ stars), 基于 Python + Svelte 构建, 扮演面向 LLM 的操作系统级界面角色。 它不依赖特定模型后端——可以连接 Ollama、OpenAI 兼容 API、vLLM、LMStudio 等, 提供对话、RAG、知识库、插件系统、频道、日历和自动化等完整功能。 单容器即可部署,支持 SQLite / PostgreSQL 双数据库、 9 种向量数据库(Chroma、PGVector、Qdrant、Milvus 等)、 LDAP / OAuth 企业认证,以及 MCP 和 OpenAPI 插件体系。 v0.10.0 之前它更偏个人助手定位; v0.10.0 标志着向团队协作平台的关键跨越。
两个被长期忽视的痛点
自部署 AI 在团队中用起来,第一个缺口是对话无法跨成员流转。 每个人的对话都锁在个人文件夹树里。 想复用同事的模型调优过程、分享某个知识库的构建探索, 只能手动导出聊天再发文件,接收方再导入。 协作几乎等于没有。
权限管理也几乎空白。 管理员没法控制「谁能把对话分享给谁」, 更没法设定只读还是可写。 这在企业自部署场景中几乎不可接受。
第二个痛点是长对话的上下文窗口溢出。 跑代码调试、文档分析、多轮 agent 交互时, 对话量很容易触到模型的 32K / 128K token 上限。 旧版没有内置压缩手段, 用户只能截断对话或另开新会话, 丢失历史上下文。
v0.10.0 解决了什么
文件夹共享是本版最重磅的功能。 用户右键文件夹,选择与特定用户、用户组或全员共享, 并指定只读或读写权限。 被分享者会在侧栏看到共享文件夹, 非所有者以只读方式打开其中对话。
管理员通过新增的 "Folders Sharing" 权限 控制哪些人允许共享(默认关闭,需手动开启)。 这等于打通了团队内部的知识流转路径—— 实验记录、模型评测对话、知识库构建过程, 不再需要「导出->发送->导入」的离线流程。
自动上下文压缩直接解决「聊着聊着就失忆」的高频抱怨。 管理员启用后,当对话超过可配置的 token 阈值时, 系统自动将历史内容做摘要压缩,保持在模型上下文窗口内, 同时显示压缩通知。 阈值、摘要提示词、每条模型的压缩触发线都可调, 这意味着不同上下文窗口的模型可以有不同的压缩策略。
Open WebUI Computer agent 让聊天可以直接在用户自己的机器上运行完整 agent 会话—— 文件操作、终端命令、git 操作、Web 访问, 全部从聊天界面发起。 这相当于在对话中嵌入了一个可编程执行环境, 通过 OpenAI 兼容网关连接到独立的 computer 项目。
记忆系统重构将用户记忆拆分为长期个人信息和单轮上下文两类, 支持结构化的增、删、改流程。 模型不再靠每次对话从头推理你的偏好, 而是可靠地引用已保存的记忆。
事件系统与 Event 函数则是一个架构级增量。 系统现在会发射注册、配置变更、文件上传、角色变更等事件, 管理员可以配置 Webhook 转发, 或通过新增的 Event 函数类型编写 Python 钩子来响应。 从入职审批到权限变更审计,都能在 Open WebUI 内部完成, 不再需要额外写独立服务。
性能方面,pgvector 混合搜索从内存全量加载 改为数据库原生执行; 对话、文件、频道的查询全部改为批量请求; 流式渲染跳过未变更内容; 工具调用渲染改为增量解析。 对大规模部署来说,响应速度有直观提升。
v0.10.1 是同日发布的热修复, 只修正一个问题:打开共享文件夹时,资源级访问错误 被错误地触发了「会话过期」退出逻辑。 修复后,两类错误正确分流,共享用户不再被误登出。
从代码看能力来源
文件夹共享的实现依赖一套资源级访问授权模型。
Open WebUI 新增了 AccessGrants 模型,
管理用户 / 组与资源之间的权限映射。
共享文件夹时,系统创建一条 access_grant 记录,
标明资源 ID、被授权者、权限等级。
所有文件夹操作经过 filter_allowed_access_grants 中间件过滤,
安全决策完全在后端完成,不依赖前端判断。
这也是为什么 v0.10.1 修复了一个边界场景: 资源级访问错误和全局会话过期共享同一个错误出口, 共享文件夹的 403 被错误地路由到了退出逻辑。 修复后分流,各自触发正确的处理路径。
自动上下文压缩走的是摘要式衰减路线。 不是丢弃早期消息, 而是定期让模型对超出阈值的部分做摘要, 用压缩版本替换原始多轮对话。 压缩触发点按模型各自配置的 token 上限计算, 与模型调用管线解耦, 以非侵入方式在对话流中触发。
事件系统比传统插件架构更灵活。 此前 Pipe、Filter、Action 三类插件都运行在对话会话内, 只能处理聊天消息。 Event 函数是第一个钩入系统生命周期的插件类型—— 它在应用层面运行,响应系统事件而非聊天消息。 这使得外部集成(入职自动化、权限变更审计等) 可以直接在 Open WebUI 内部完成。
从 v0.9.4 到 v0.10.0 历时约 50 天, v0.10.0 提交了超过 100 项改动。 社区讨论中文件夹共享是呼声最高的功能之一, 上下文压缩也是长期悬而未决的诉求。 两个核心痛点的闭环, 让 Open WebUI 在自部署 AI 平台中 从「好用的个人界面」升级为「可用的团队基础设施」。
夜雨聆风