issue: Chat Controls tab is shown empty when a user has chat.controls but not valves, system_prompt or params

当非管理员用户被授予 chat.controls 但未授予 chat.valves 、 chat.system_prompt 和 chat.params 时,聊天控制面板的 “Controls” 标签仍会显示,但内容为空;问题出在前端标签显示条件只检查了外层权限。优先排查并修正 ChatContro

快速结论:当非管理员用户被授予 chat.controls 但未授予 chat.valves、chat.system_prompt 和 chat.params 时,聊天控制面板的 “Controls” 标签仍会显示,但内容为空;问题出在前端标签显示条件只检查了外层权限。优先排查并修正 ChatControls.svelte 中 showControlsTab 的判定逻辑。

适用环境:Open WebUI v0.12.3(pip 安装);问题在 Issue 报告时已在 v0.12.3 上复现,dev 分支(079fb19e75)代码路径相同但未实际运行;操作系统为 macOS 26.7.1(Apple Silicon);与浏览器无关,属于前端权限逻辑问题;Ollama 版本 N/A。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的是提议补丁,并说明提交者已在构建文件上以本地补丁方式使用相同条件,但未合入、未由维护者验证,可优先尝试。

注意事项:该补丁只调整前端标签显示条件,不改变后端权限;权限默认值通过空值合并(?? true)处理,若你的配置依赖未设置权限时的默认行为,需要确认实际权限值。Issue 关闭时间为 2026-10-17,但讨论链中没有给出已合入的修复提交,因此升级后仍需回归验证。

问题场景

使用 Open WebUI(v0.12.3,pip 安装)时,管理员在 Admin Panel → Users → Default permissions 中开启 Chat Controls,但关闭 Valves、System Prompt 和 Advanced Parameters。普通用户开启代码解释器(Pyodide)后打开聊天控制面板,会看到 “Controls” 和 “Files” 两个标签,其中 “Controls” 标签内容为空。由于 Files 标签依赖该面板,不能简单地把 chat.controls 关掉。

报错原文

issue: Chat Controls tab is shown empty when a user has chat.controls but not valves, system_prompt or params

原因分析

最可能的原因是前后端权限判定层级不一致。src/lib/components/chat/ChatControls.svelte 仅用外层权限决定是否显示 Controls 标签:

$: showControlsTab = $user?.role === 'admin' || ($user?.permissions?.chat?.controls ?? true);

而 src/lib/components/chat/Controls/Controls.svelte 中的每个区块又各自依据 chat.valves、chat.system_prompt、chat.params 单独渲染,聊天文件列表也只在 chatFiles.length > 0 时出现。当上述三项权限均关闭且没有聊天文件时,Controls 标签虽然存在,但没有任何可渲染内容,于是显示为空页。

环境排查

  • 确认 Open WebUI 版本:Issue 在 v0.12.3 上复现;dev 分支(079fb19e75)代码路径相同但未实际运行。
  • 确认安装方式:pip 安装。
  • 确认操作系统:macOS 26.7.1(Apple Silicon)。
  • 确认浏览器差异:Issue 明确说明与浏览器无关,问题属于前端权限逻辑。
  • 确认用户权限组合:chat.controls 为开启,chat.valves、chat.system_prompt、chat.params 为关闭。
  • 确认是否启用代码解释器(Pyodide)以及当前聊天是否存在可下载文件。
  • 确认相关前端文件:src/lib/components/chat/ChatControls.svelte 与 src/lib/components/chat/Controls/Controls.svelte。

解决步骤

  1. 按 Issue 复现路径确认现象:在默认权限中只开启 Chat Controls,关闭 Valves、System Prompt、Advanced Parameters;以普通用户身份打开启用代码解释器的聊天,再打开聊天控制面板。
  2. 检查 ChatControls.svelte 中 showControlsTab 的当前逻辑,确认它是否只判断 chat.controls。
  3. 可优先尝试将 showControlsTab 改为同时考虑聊天文件和各子权限,Issue 给出的参考写法为:
    $: showControlsTab =
    	$user?.role === 'admin' ||
    	(($user?.permissions?.chat?.controls ?? true) &&
    		(chatFiles.length > 0 ||
    			($user?.permissions?.chat?.valves ?? true) ||
    			($user?.permissions?.chat?.system_prompt ?? true) ||
    			($user?.permissions?.chat?.params ?? true)));
  4. 如果无法修改源码,可参考 Issue 提交者的做法,将相同条件作为本地补丁应用到构建文件,但需自行承担维护成本。
  5. 无需修改 Controls/Controls.svelte 中的各区块权限判断;Issue 说明现有响应式逻辑会在 Controls 标签被隐藏时切换到 Files 标签或关闭面板。

验证方法

以同时满足以下条件的普通用户身份重新打开聊天控制面板:chat.controls 开启,chat.valves、chat.system_prompt、chat.params 关闭,且存在聊天文件。预期不再出现空的 “Controls” 标签,面板应直接显示在 Files 标签;若没有聊天文件,Controls 标签应被隐藏或面板按现有逻辑关闭。

参考来源

open-webui/open-webui #32637

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29354

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注