快速结论:当非管理员用户被授予 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。
解决步骤
- 按 Issue 复现路径确认现象:在默认权限中只开启 Chat Controls,关闭 Valves、System Prompt、Advanced Parameters;以普通用户身份打开启用代码解释器的聊天,再打开聊天控制面板。
- 检查
ChatControls.svelte中showControlsTab的当前逻辑,确认它是否只判断chat.controls。 - 可优先尝试将
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))); - 如果无法修改源码,可参考 Issue 提交者的做法,将相同条件作为本地补丁应用到构建文件,但需自行承担维护成本。
- 无需修改
Controls/Controls.svelte中的各区块权限判断;Issue 说明现有响应式逻辑会在 Controls 标签被隐藏时切换到 Files 标签或关闭面板。
验证方法
以同时满足以下条件的普通用户身份重新打开聊天控制面板:chat.controls 开启,chat.valves、chat.system_prompt、chat.params 关闭,且存在聊天文件。预期不再出现空的 “Controls” 标签,面板应直接显示在 Files 标签;若没有聊天文件,Controls 标签应被隐藏或面板按现有逻辑关闭。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug]: cuda_archs_loose_intersection drops plain "10.0" when TORCH_CUDA_ARCH_LIST also has "10.0a", producing sm_100a-only kernels that fail](https://www.chat-gpts.plus/wp-content/uploads/2026/10/56548-3c41a23b-768x403.jpg)
![[Bug]: The Deepseek v4 model compiles kenrel during the inference process](https://www.chat-gpts.plus/wp-content/uploads/2026/10/48809-e96fa9bb-768x403.jpg)