ollama-gui
为 Ollama 打造的现代 Web 界面,让本地 LLM 对话变得简单优雅
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为 Ollama 打造的现代 Web 界面,让本地 LLM 对话变得简单优雅
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Ollama GUI 项目封面,展示了现代化的深色主题对话界面
本地大语言模型(LLM)的普及让「隐私优先」的 AI 对话成为可能。Ollama 作为最受欢迎的本地 LLM 运行时之一,让用户无需云端 API 即可在本地运行 GPT-4 级别的模型——然而它的默认交互方式是纯命令行。对于非技术用户,或者希望像 ChatGPT 那样用图形界面流畅对话的开发者来说,这是一道不低的门槛。
Ollama GUI 正是为解决这个问题而生:它为 Ollama 提供了一套现代化的 Web 前端,让用户只需打开浏览器就能与本地 LLM 对话,无需记忆 API 调用方式,不必折腾 JSON 请求体,一切交互都像使用在线 AI 聊天工具那样自然。
作者 Helge Sverre 是一位来自挪威的全栈开发者,该项目目前已在 GitHub 获得超过 1200 颗星,吸引了全球隐私意识强的用户群体。其 Vercel 托管的在线 Demo 让任何人都可以在不安装任何东西的情况下体验——只需确保本地 Ollama 服务开启了正确的 CORS 跨域配置。
项目实现了完整的会话管理功能,支持:
不同于单一模型的聊天工具,Ollama GUI 支持在对话中动态切换不同的本地模型。通过 API 调用 Ollama 的 /api/tags 端点实时获取已安装模型列表,用户只需在下拉菜单中选择即可切换。支持的模型范围覆盖 Ollama 模型库中所有模型,包括 Llama 3、Phi-3、Mistral、Gemma、DeepSeek-R1 等主流开源模型。
LLM 的输出天然以 Markdown 为主,项目内置了对消息的完整 Markdown 渲染支持:
这一功能解决了纯命令行无法优雅展示 Markdown 回复的问题,也让开发者能更方便地分享 AI 生成的代码片段。
支持为每个对话设置系统级提示词(System Prompt),用于设定 AI 的角色定位、回答风格或约束条件。这一功能在需要 AI 以特定身份(如「资深代码审查员」「产品经理」)工作时尤为重要。
内置深色/浅色主题切换,基于 Tailwind CSS 的 dark: 模式实现,符合现代 Web 应用的视觉习惯。
项目采用标准的 Vue 3 + Vite + TypeScript 技术栈,是典型的前端单页应用(SPA)。架构层次分明:

图2:项目 Logo,展示项目品牌标识
| 层级 | 技术选型 | 职责 |
|---|---|---|
| 框架 | Vue 3 (Composition API) | 视图层 + 响应式状态 |
| 构建 | Vite 5 | 开发服务器 + 生产打包 |
| 样式 | Tailwind CSS 3 | 原子化 CSS 样式系统 |
| 类型 | TypeScript 5 | 类型安全 |
| 状态 | Pinia-like 模块化 ref | 轻量状态管理(自实现) |
| 持久化 | Dexie (IndexedDB ORM) | 本地聊天历史存储 |
| Markdown | markdown-it + highlight.js | 内容渲染与代码高亮 |
| 图标 | @tabler/icons-vue | 统一的图标库 |
services/api.ts — API 抽象层
这是 Ollama GUI 与 Ollama 后端通信的核心模块。useApi() 函数封装了对 Ollama REST API 的所有调用,包括:
generateChat():流式对话请求,接收 SSE(Server-Sent Events)格式的流式响应,逐 token 实时渲染到界面listLocalModels():获取已安装模型列表pullModel() / deleteModel():模型管理(拉取/删除)关键设计:API URL 支持开发代理模式。在 vite.config.ts 中,开发服务器配置了 /api 到 localhost:11434 的代理,解决了浏览器跨域问题。生产环境则需要用户在 Ollama 服务端设置 OLLAMA_ORIGINS 环境变量来允许跨域访问。
services/chat.ts — 对话状态管理
useChats() 是整个应用的状态中枢,管理:
chats[]:所有会话列表activeChat:当前活动会话messages[]:当前会话的消息历史ongoingAiMessages:流式响应中的「进行中」AI 消息(用于实时更新)核心方法是 generate() 函数,它串联 useAI → useApi → Ollama API,将流式响应通过回调函数实时推送到 UI,同时维护消息历史。
services/database.ts — IndexedDB 持久化
使用 Dexie.js(IndexedDB 的 Promise 封装)实现本地存储。定义了三个表:
chats:会话元数据(名称、模型、创建时间)messages:消息记录(角色、内容、时间戳)config:全局配置版本 10 的 Schema 表明数据库结构经历了多次迭代迁移,Dexie 的 ++id 自增键确保每条记录唯一可寻。
services/appConfig.ts — 全局配置
存储用户偏好设置,包括:基础 URL(用于连接远程 Ollama)、历史消息长度限制、Markdown 开关、Gravatar 头像邮箱等。
Vue 组件按功能分为:
ChatMessages.vue + ChatMessage.vue:消息列表与单条消息渲染ChatInput.vue:用户输入区(含发送/清空操作)Sidebar.vue:会话列表侧边栏ModelSelector.vue:模型选择器SystemPrompt.vue:系统提示词编辑面板Settings.vue:设置面板History/:历史导入导出功能组件组件间通过 useChats() / useAI() / useApi() 三个组合式函数共享状态,符合 Vue 3 Composition API 的最佳实践。
Ollama API 的 /api/chat 端点支持 SSE 流式输出。客户端通过 fetch 发起请求,API 响应为 text/event-stream 格式,useApi.generateChat() 中的回调函数在每收到一个数据块时被调用,更新 UI 中的「正在输入」消息,从而实现类似打字机的实时输出效果。
项目提供了 compose.yml,同时启动 Ollama 服务和 Web UI:
services:
ollama:
image: ollama/ollama
ports:
- 11434:11434
volumes:
- ./ollama_data/:/root/.ollama
ollama-gui:
build: .
ports:
- 8080:80
优势在于:两个服务在同一 Docker 网络中,通过 docker-compose 的内部 DNS 互通,无需配置 CORS。访问地址为 http://localhost:8080。如需 GPU 加速,只需取消注释 compose.yml 中的 deploy.resources.reservations.devices 配置段。
git clone https://github.com/HelgeSverre/ollama-gui.git
cd ollama-gui
yarn install
yarn dev
适用于前端开发者本地调试 UI,或希望连接到远程 Ollama 实例的场景。开发服务器内置 Vite 代理,自动将 /api 请求转发到本地的 localhost:11434。
项目托管在 Vercel,可直接访问 ollama-gui.vercel.app 体验。前提是用户本地 Ollama 服务设置了 OLLAMA_ORIGINS=https://ollama-gui.vercel.app ollama serve。
| 维度 | 评分 | 说明 |
|---|---|---|
| 代码质量 | ★★★★☆ | Vue 3 Composition API + TypeScript 类型完备,结构清晰 |
| 测试覆盖 | ★★★☆☆ | 无测试套件,依赖手动验证 |
| 文档质量 | ★★★★☆ | README 完整,包含多种部署场景说明 |
| 架构设计 | ★★★★☆ | 模块化拆分合理,服务层与组件层解耦良好 |
| 安全性 | ★★★★★ | 纯本地工具,数据不离开设备 |
亮点:
不足:
无模型管理界面:当前版本无法在 GUI 内直接下载/删除模型,所有模型管理仍需通过 Ollama CLI(ollama pull、ollama rm)。对于希望「一站式」体验的非技术用户,仍需额外操作。
无移动端优化:项目在移动设备上的体验较差,界面布局不适合小屏操作。
对话上下文限制:Ollama 本身对上下文窗口大小有模型级限制,GUI 虽然可控制历史消息条数,但无法突破模型的原生上下文限制。
根据 GitHub 活动记录,项目最近更新(pushed_at)为 2025-08-05,距今已有一段时间(截至 2026-06)。但作为相对成熟的项目,其核心功能已经稳定,主要路线图项(对话历史、Markdown、模型切换)均已实现。
Ollama GUI 代表了一个重要趋势:本地 AI 工具的「民主化」。随着开源模型能力不断接近闭源大厂(如 Llama 3.1 405B、DeepSeek-R1),越来越多的用户开始追求:
Ollama GUI 的出现降低了这个生态的使用门槛——它不是第一个 Ollama 前端(如 Open WebUI 功能更全),但它的轻量与专注值得称道。对于只需要「和本地模型聊天」这一简单需求的用户,它比功能堆砌的替代品更易上手。
从增长曲线看,随着 Apple Silicon Mac、高端消费级 GPU 的普及,本地运行 70B+ 参数模型的体验正在快速改善。这类轻量 GUI 的价值将在未来 12-18 个月内显著提升。
报告生成时间:2026-06-14 | 数据来源:GitHub API + 项目源码分析 | 分析工具:Hermes Agent