HelgeSverre/ollama-gui
A Web Interface for chatting with your local LLMs via the ollama API
Ollama GUI – 基于浏览器的本地运行 LLM 聊天前端
它是什么 – 一个单页 Web 应用,直接与 Ollama 推理服务器通信。你可以与已拉取到 Ollama 的任何模型聊天(例如 Llama 3.2、qwen3、deepseek-r1、gpt-oss、视觉模型如 llava),无需单独的后端。所有数据都存储在浏览器的 IndexedDB 中,因此除非你将应用指向远程 Ollama 实例,否则数据不会离开你的机器。
主要功能
| 功能 | 你获得的内容 |
|---|---|
| 聊天界面 | 流式响应、停止生成、重新生成、编辑。每次编辑/重新生成都会版本化,并可分支到新对话。 |
| 思考模型 | 对于暴露“推理”流的模型(qwen3、deepseek-r1、gpt-oss),中间思考过程显示在可折叠块中;你可以切换它们或调整 gpt-oss 的努力级别。 |
| 附件 | 为视觉模型(llava、gemma3)拖放图像,或附加文本/代码文件到消息。 |
| 模型管理 | 输入时搜索 Ollama 模型目录,选择大小,带进度条拉取,删除,检查能力,查看上下文长度,从内存卸载。 |
| 设置 | 全局或按模型/系统提示,生成参数(temperature、num_ctx、top_p、seed 等)。 |
| 历史记录 | 按日期分组的聊天,固定/归档,自动生成标题,全文搜索(⌘K),重命名。 |
| Markdown 渲染 | 语法高亮代码块,KaTeX 数学支持。 |
| 外观 | 浅色/深色主题,区域感知的日期和数字。 |
| 导入/导出 | 将所有聊天导出为 JSON 或单个聊天导出为 Markdown;导入相同格式。 |
| 键盘快捷键 | 快速操作如搜索(⌘/Ctrl K)、新聊天(⌘/Ctrl ⇧ O)、删除聊天(⌘/Ctrl ⇧ ⌫)、发送/换行、停止生成、编辑最后一条消息等。 |
如何运行
- 安装 Ollama 并让其默认端口 11434 提供服务。
- 安装 Bun(或任何较新的 Node 20)用于开发。
开发服务器将git clone https://github.com/HelgeSverre/ollama-gui.git cd ollama-gui bun install bun run dev # 打开 http://localhost:5173/api代理到本地 Ollama 实例,因此无需 CORS 调整。- 对于生产环境,运行
bun run build生成静态dist/文件夹,然后通过反向代理将/api转发到 Ollama,或使用提供的 Docker 镜像。
部署选项
- 托管演示 – https://ollama-gui.vercel.app(添加来源到
OLLAMA_ORIGINS后连接到你的本地 Ollama)。 - Docker – 两步镜像发布在 GitHub Container Registry。你可以单独运行 GUI(
docker run … ghcr.io/helgesverre/ollama-gui)并通过OLLAMA_URL环境变量指向本地或远程 Ollama,或使用提供的docker-compose.yml在端口 8080 上同时启动 Ollama 和 GUI。 - 静态构建 – 使用任何静态 Web 服务器(nginx、Apache、Vercel、Netlify 等)提供
dist/文件夹,并为/api配置反向代理。
开发与测试
- 使用 ESLint 进行代码检查(
bun run lint)。 - 通过 Vitest 进行单元/集成测试(
bun run test)。 - 使用 Playwright 进行端到端测试;默认使用模拟的 Ollama API,但你可以通过拉取几个模型并设置
OLLAMA_REAL=1来运行真实模型测试。 - 模型目录从公共 Ollama 库生成(
bun run catalog:update)。
技术栈 – Vue 3 + Vite 用于 SPA,Tailwind CSS 用于样式,VueUse 工具,Dexie 用于 IndexedDB 抽象,markdown-it + highlight.js + KaTeX 用于富消息渲染,Tabler Icons 用于 UI 图标。
许可证 – MIT(宽松,允许个人或商业使用)。
简而言之,Ollama GUI 是一个轻量级、隐私优先的 Web 客户端,将任何本地托管的 Ollama 模型转变为功能完整的聊天体验,包括历史记录、模型管理,以及对视觉和“思考”模型的支持。
相关
- 项目
- 项目
- 项目
- 项目
- 项目