基于 Vue 3 的 Ollama 客户端 Web UI,提供浏览器端的对话交互界面。支持主题切换、自定义颜色、代码块样式定制、对话导出等功能。
| 层 | 技术 | 说明 |
|---|---|---|
| 框架 | Vue 3 (Composition API) | 响应式 UI 框架 |
| 构建 | Vite 5 | 开发服务器(HMR) + 生产构建 |
| 状态管理 | Pinia ^2.1 | 集中管理对话/配置状态 |
| Markdown 渲染 | showdown ^2.1 | AI 回复的 Markdown→HTML 管线 |
| 数学公式 | KaTeX ^0.16 (CDN 加载) | LaTeX 公式渲染 |
| 数据持久化 | 浏览器 localStorage | Pinia store 自动同步 |
| 后端 | Ollama HTTP API | /api/tags + /api/generate |
Ollama-Web-UI/
├── index.html # Vite 入口 HTML(含 CSP 策略)
├── package.json # 依赖和脚本
├── vite.config.js # Vite 配置
├── vitest.config.js # Vitest 测试配置
├── playwright.config.js # E2E 测试配置
├── dist/ # 构建产物(部署此目录)
├── public/
│ └── pwa-*.svg # PWA 图标
├── e2e/ # E2E 测试
├── src/
│ ├── main.js # Vue 应用入口 + 全局错误捕获
│ ├── App.vue # 根组件(全局事件委托)
│ ├── constants.js # 常量定义 + 主题系统 + 五级日志工具
│ ├── assets/css/main.css # 全局样式(CSS 变量体系)
│ ├── components/
│ │ ├── Sidebar.vue # 侧栏(对话列表 + 搜索 + 置顶 + 统计)
│ │ ├── ChatHeader.vue # 头部(标题 + 导出/页面选项/配置入口)
│ │ ├── ConfigPanel.vue # 配置面板(基本/高级 Tab)
│ │ ├── ThemePanel.vue # 主题面板(预设主题 + 自定义颜色 + 代码块样式)
│ │ ├── ChatContainer.vue # 消息展示容器(骨架屏 + 分组)
│ │ ├── MessageItem.vue # 单条消息(Markdown/流式/气泡/引用)
│ │ ├── MessageInput.vue # 输入框(可收起/展开 + 引用预览)
│ │ ├── ContextMenu.vue # 右键上下文菜单
│ │ ├── ShortcutHint.vue # 快捷键提示
│ │ └── ToastNotification.vue # 通知提示(四色 Toast)
│ ├── composables/
│ │ └── useContextMenu.js # 右键菜单组合式函数
│ ├── stores/
│ │ └── chat.js # Pinia store(核心状态管理)
│ ├── __tests__/ # 单元测试
│ └── utils/
│ ├── markdown.js # 渲染管线 + 代码块增强 + 复制
│ ├── storage.js # localStorage 封装(增量写入)
│ └── helpers.js # 工具函数(ID 生成、模板等)
├── HELP.md # 帮助文档
└── README.md # 本文件
- 主题系统:6 种预设主题(默认蓝、翠绿、紫色、暖橙、绯红、暗色、极光、海洋、复古)+ 自定义主题色
- 代码块样式:独立自定义代码块背景色和文字颜色
- 对话管理:新建、搜索、置顶、标签筛选、删除对话
- 对话导出:导出当前对话(JSON/Markdown)或全部对话(JSON)
- 配置管理:多服务地址管理、模型选择、流式速度控制、上下文长度设置
- 消息引用:F7 引用上一条 AI 消息
- 统计面板:对话数、消息总数等统计信息
-
访问 Ollama 官网 下载 Ollama 客户端并安装

-
注册 Ollama 官网个人账号
-
启动 Ollama 客户端,登录账号,测试模型可用性
-
下载本仓库 Release 包,解压到合适目录后:
方式一(开发运行):
npm install npm run dev
然后在浏览器打开 http://localhost:5173
方式二(部署运行):
npm install npm run build
将
dist/目录部署到任意静态服务器(Nginx、IIS、PHPTS 等), 或用 VS Code Live Server 直接打开dist/index.html的上级目录。 -
选择合适的模型和配置参数,开始使用
| localStorage Key | 内容 |
|---|---|
Ollama-Web-UI-Conversations |
全部对话(含消息、角色、时间戳、置顶) |
Ollama-Web-UI-LastActiveChat |
当前活跃对话 ID |
Ollama-Web-UI-Config-* |
各项配置(模型、地址、速度等) |
存储读写统一通过
src/utils/storage.js封装,增量写入 + 节流。
| 命令 | 说明 |
|---|---|
npm run dev |
启动开发服务器(热更新) |
npm run build |
生产构建,输出 dist/ |
npm run preview |
本地预览构建产物 |
- 所有用户/AI 消息经
escapeHtml()+sanitizeHtml()双保险转义 - 链接强制
target="_blank" rel="noopener noreferrer" - CSP 策略已在
index.html中配置
项目已完成 Vue 3 重构,核心链路稳定。 项目结束原因为 API 配额耗尽,后续接手方需要:
- 更新
vite.config.js中的 Ollama API 端点配置(如需) - 测试与新版 Ollama API 的兼容性
- 下载 Web 服务器软件(如 Nginx、PHPTS)或使用 Windows IIS 服务,配置网站入口到
dist/目录 - 在同一局域网的其他设备上通过
http://Windows局域网IP:端口访问 - 正常使用
- 创建环境变量
OLLAMA_HOST=你自定义的地址(带端口号)后重启 Ollama 服务 - 如果需要允许外部访问,还需要设置
OLLAMA_ORIGINS=*
详见 HELP.md。
