Open WebUI 在国内的标签几乎是固定的——"Ollama 的漂亮前端":界面好看、能传文件、本地跑模型,仅此而已。但这是它不到 10% 的能力。本期挖出 8 个 90% 用户从没点开过的隐藏开关,每一个都能让本地大模型从"聊天框"质变成真正会调工具、会定时干活、能动手改你代码的 Agent。最值钱的一条认知差是:官方已经给旧的工具调用模式判了"死刑",却仍有大量部署在用它,切一个设置就能白捡 30+ 个系统工具。今天就能照着配。
主角工具:Open WebUI(github.com/open-webui/open-webui,Star 8 万+,开源、自托管、可纯离线)。官网文档 docs.openwebui.com。
这是信息差最大的一条。Open WebUI 有两种工具调用模式:
官方原话:Default Mode 已不再支持,留在 UI 里只是为迁移过渡。
怎么一次配好所有模型(不用一个个改):
Admin Panel → Settings → Models,点右上角的 ⚙️ 按钮打开全局模型参数,把 Function Calling 设为 Native,保存。之后所有现存和新增模型默认继承。yaml
DEFAULT_MODEL_PARAMS: '{"function_calling": "native"}'DEFAULT_MODEL_METADATA 统一设全局能力默认(vision / web_search / file_context / code_interpreter / builtin_tools),冲突时单模型覆盖优先。切到 Native Mode 后,模型立刻获得这批内置系统工具(无需装任何插件):search_web、fetch_url、generate_image/edit_image、execute_code(代码解释器)、Memory 系列(search_memories/add_memory…)、Notes 系列、Knowledge Base 系列、Chat History 搜索、Channels、Task Management(create_tasks/update_task)、Automations、Calendar、Skills、Time Tools。这等于白嫖一个"个人 AI 助手全家桶"。
很多人不知道 Open WebUI 能"捏模型"。Workspace → Models → + New Model,挑一个底模(GPT-4o / Claude / Llama 3 / 国产模型均可),往上绑系统提示、知识库、工具、技能、参数覆盖,就得到一个专用 Agent。底模权重不变,只是套了层壳。
三个被忽视的点:
{{ USER_NAME }}、{{ CURRENT_DATE }}、{{ USER_GROUPS }}。其中 {{ USER_GROUPS }} 会按调用者的 RBAC 分组服务端渲染——同一个共享模型,工程组能看到内部路线图,销售组看不到,靠这一行变量实现。聊天中还能中途换模型不丢上下文,最多同时选两个模型并排对比回答。
默认的 RAG 是向量检索,对"精确匹配"和"代码/规范文档"问答并不友好。打开开关:
ENABLE_KB_EXEC: "True"
知识库立刻变成一个类 Unix 文件系统,模型可以直接调用 kb_exec 执行:ls、tree、cat -n、head -N、tail -N、sed -n '10,20p'、grep(支持正则)、find、wc、stat,还支持管道,例如 grep "auth" | head -5,文件用路径引用(docs/api/auth.md)。
这对中文场景特别实用:拿一份 3GPP 规范或公司内部代码库做知识库,模型能用 grep 精确定位到某行,而不是靠向量相似度"猜"。配合 query_knowledge_files(开启 ENABLE_RAG_HYBRID_SEARCH 后是混合检索+rerank)效果最佳。
Tools 是"模型在推理时调用的能力",而 Functions 是改造 Open WebUI 平台本身的 Python 插件,按类名自动识别三种类型:
| 类型 | 类名 | 作用 | 用户看到 |
|---|---|---|---|
| Pipe | class Pipe |
注册成一个新"模型",可不依赖任何 LLM 后端 | 侧栏可选模型 |
| Filter | class Filter |
拦截每条消息(中间件) | 对现有模型透明生效 |
| Action | class Action |
在消息上加可点按钮 | 消息工具栏按钮 |
实战价值:
pipes() 方法暴露多个模型(manifold)。inlet()(请求前:加上下文、脱敏、语种检测、限流、估算 token 成本)、stream()(实时拦截流式块:审查、替换、统计)、outlet()(响应后:写 Langfuse、加引用、追加免责声明、缓存)。两个加分项:Valves(管理员配置)+ UserValves(用户自配) 两级配置,用 Pydantic 定义;frontmatter 里写 requirements: requests, beautifulsoup4,首次加载时自动 pip 安装依赖。
⚠️ 安全:Functions = 服务器 shell 权限。仅管理员可创建,从 openwebui.com 社区库导入前必须审代码。
Settings → Connections → OpenAI API,改 Base URL 和 Key,就能接任何 OpenAI 兼容端点——包括 GLM、Kimi、Qwen、DeepSeek、OpenRouter、Groq。但有个花钱也买不到的坑:
DeepSeek V3.2 做工具调用会崩。
官方文档明确点名:DeepSeek V3.2 训练时用的是私有 DSML(DeepSeek Markup Language) 格式,在 Native Mode 下经常吐出 <functionInvoke name="fetch_url"> 这种 XML 而非合法 JSON;多轮对话(6-8 轮+)会直接停止调用函数,复杂工作流(15-30 次调用)出现 schema drift。这不是 Open WebUI 的锅,是 DeepSeek 用了非标准格式,推理厂商的翻译层在高并发/流式/多轮下不可靠。
Agentic 任务更稳的选择:文档反复推荐的可靠模型是 MiniMax M2.5(国产、便宜)、Claude 4.5 Sonnet、GPT-5、Gemini 3 Flash。另外,30B 以下的本地小模型在 Native Mode 下也容易吐坏 JSON——正确做法是工具任务 offload 到云端强模型,而不是退回 Default Mode。
一句话信息差:你以为 DeepSeek 又强又便宜,但拿它做 Agent 最不稳;国产里做工具调用,MiniMax M2.5 才是隐藏首选。
Open WebUI 还内置一个独立的隔离 Docker 容器叫 Open Terminal,给模型一个真实的 shell 和文件系统,暴露 run_command、read_file、write_file、grep_search、glob_search、进程管理等工具。它和 per-message 的 execute_code 沙箱不同——后者是临时执行一段代码,Open Terminal 是持久 shell + 文件系统,模型能跨轮次地改你的项目、跑测试、调试。
一行起:
docker run -d --name open-terminal --restart unless-stopped \
-p 8000:8000 -v open-terminal:/home/user \
-e OPEN_TERMINAL_API_KEY=your-secret-key \
ghcr.io/open-webui/open-terminal
也可以裸机 uvx open-terminal run --host 0.0.0.0 --port 8000(⚠️ 此模式下 AI 拥有你账户的全部能力,含删改文件,谨慎)。Docker Compose 里和 Open WebUI 同网络时,连接地址用服务名 http://open-terminal:8000。连上后,你的本地模型终于能"动手"而不只是"动嘴"。
Native Mode 下,你可以在聊天里一句话创建定时任务。模型调用 create_automation,参数是 name、prompt、rrule(标准日历重复规则)。配合 Calendar 系统工具(search_calendar_events/create_calendar_event…),就能做日程型 Agent。
需要开启 ENABLE_AUTOMATIONS 并授予 features.automations 权限。典型场景:每天早上总结今日日历、每周整理笔记、定时监控某网页变化并写入 Notes。本质上是把会话式 AI 变成了后台 cron——这是绝大多数人完全没意识到的能力。
Native Mode 下,强模型能进入"思考 → 行动 → 思考 → 行动"的交错循环:分析意图、调 query_knowledge_files 或 search_web/fetch_url、读结果、再调 view_knowledge_file 深读、直到给出有依据的最终答案。配合 create_tasks 先铺好计划、update_task 逐步标记完成,就是一个自托管的"深度研究"流程。
要求强模型(GPT-5 / Claude 4.5+ / Gemini 3+ / MiniMax M2.5)。价值在于:不需要再订阅 Perplexity,你自己的 GLM/云端强模型 + 本地知识库就能跑 Deep Research,数据全程不出你的服务器。
| 维度 | 大多数人的认知 | 信息差真相 |
|---|---|---|
| 产品定位 | Ollama 的漂亮前端 | 本地大模型 Agent 平台 |
| 工具调用 | 默认 prompt 注入(其实已废弃) | Native Mode 一次配置解锁 30+ 系统工具 |
| 知识库 | 只能向量检索 | kb_exec 开关后用 ls/grep/cat 操作 |
| 扩展性 | 装社区插件 | Pipe/Filter/Action 三件套用 Python 改造一切 |
| 国产模型 | DeepSeek 最值 | V3.2 做 Agent 会崩,MiniMax M2.5 更稳 |
| 执行力 | 只会出主意 | Open Terminal 给模型一个真 shell 改代码 |
| 调度 | 一次性对话 | Automations + RRULE 定时无人值守 |
| 研究能力 | 得靠 Perplexity | Interleaved Thinking 自托管深度研究 |
flowchart TD
U[💬 用户提问] --> IN["🧩 Filter.inlet<br/>翻译·PII脱敏·限流·Token计费"]
IN --> NM{"⚙️ Native Mode<br/>结构化工具调用·KV-cache 友好"}
NM -->|"系统工具"| BT["📚 内置工具池 30+<br/>Memory·Notes·KB·Calendar<br/>Automations·Code·Web·Task"]
NM -->|"自定义"| WS["🐍 Workspace Tools<br/>你写的 Python"]
NM -->|"外部"| MCP["🔌 MCP / OpenAPI<br/>外部服务"]
BT --> KB["🔎 kb_exec<br/>ls/grep/cat 操作知识库"]
NM --> IT["🧠 Interleaved Thinking<br/>思考→行动→思考 循环"]
IT --> OUT["🧩 Filter.outlet<br/>Langfuse 日志·缓存·格式化"]
OUT --> ACT["⚡ Action 按钮<br/>导出·CI/CD·Slack"]
ACT --> R[📨 最终回复]
style NM fill:#fef3c7,stroke:#d97706,stroke-width:2px
style BT fill:#dbeafe,stroke:#2563eb
style KB fill:#dcfce7,stroke:#16a34a
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main(带 Ollama 用 :ollama 标签)。Admin Panel → Settings → Models → 右上角⚙️ → Function Calling = Native,或设 DEFAULT_MODEL_PARAMS。ENABLE_KB_EXEC、ENABLE_CODE_INTERPRETER、ENABLE_AUTOMATIONS。本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
