WailsChat:一个轻量级 LLM 可定制桌面客户端

一、为什么又造一个轮子? #
结论先放最前:我不是要造轮子,是要极致简约、轻量、灵活。
作为一名 Go 语言的重度使用者,我一直在找一个顺手的 LLM 桌面客户端。但现实很骨感:
- Electron 应用太重了 —— 随便一个聊天工具,安装包动辄上百 MB,内存里常驻一个 Chromium,风扇狂转、操作卡顿,我的轻薄本表示扛不住。
- 定制能力受限 —— 市面上的开源客户端大多停留在"主题换色"级别的可定制。我想要的是自定义背景图片、自定义 CSS 这种极客级审美,几乎找不到现成的。
于是我决定自己动手:用 Go + Wails v2 + Vue 3,打造一款真正轻量、真正可定制的 LLM 桌面客户端。这就是 WailsChat。

二、技术栈:Go 扛后端,Vue 管界面 #
Wails 的核心理念是"用系统原生 WebView 渲染前端,用 Go 写后端逻辑"——不内嵌浏览器,体积和内存天然就小。
| 层 | 技术 |
|---|---|
| 后端 | Go 1.21+ · Wails v2 · modernc.org/sqlite(纯 Go,无 CGO) |
| 前端 | Vue 3 · TypeScript · Tailwind CSS · Pinia |
| 协议 | MCP(JSON-RPC 2.0,stdio / HTTP) |
| 渲染 | KaTeX(公式)· Mermaid.js(图表)· highlight.js(代码高亮) |
| 构建 | Vite · wails build |
Windows 安装包仅 19.4 MB,冷启动几乎秒开,常驻内存远低于同类的 Electron 应用。同类软件不是功能不够,而是功能太多太重——功能过剩带来的不是安全感,是迟钝感。
三、Vibe Coding:一次开发模式的探索 #
WailsChat 不只是一个软件,更是一次人机协作开发模式的实践。整个项目我采用 Vibe Coding 模式推进:
- 奠基期:前期借助 Claude Code + GLM 5.1 快速搭建整体架构,把脚手架和核心数据流一气呵成。
- 打磨期:后期靠自用反馈 + 国产主流模型轮番迭代,哪里别扭改哪里,把真实使用痛点一个个啃掉。
这种"我提需求、AI 写码、我审效果"的循环,让我深刻体会到了 AI 辅助编程的乐趣——也直接体现在下面这份越迭代越厚的功能清单里。
四、核心亮点(v1.7.0) #
下面是当前最新版 WailsChat 的主要亮点,按能力维度合并呈现:
🔌 多模型支持 —— OpenAI、Claude、DeepSeek,以及任意 OpenAI 兼容 API,一个客户端通吃;并完整展示 DeepSeek V4 等模型的思考过程(reasoning)。
⚡ 实时流式响应 —— 基于 SSE 逐字输出,几乎零延迟的对话手感;流式分块批量发射 + 前端帧级聚合,长文也不卡。
🗂️ 多会话 + 多提示词 —— 会话支持拖拽排序,每个会话可绑定独立系统提示词,工作流自由切分。
🖼️ 多模态交互 —— 图片输入支持点击选择、剪贴板 Ctrl+V 粘贴、多图同发、拖拽入聊天,完美对接 GPT-5.5 等支持视觉模型。
🔧 MCP 工具调用 —— 通过 Model Context Protocol 接入外部工具;支持本地 stdio 与远程 HTTP 服务器,自动发现工具、实时连接状态、指数退避重连,单次响应最多 10 轮迭代调用。
🛠️ 内置工具(read/write/execute) —— AI 可直接读本地文件、写文件、执行 shell 命令。默认关闭,需手动开启,并带路径校验、危险扩展名拦截、命令黑名单、超时控制等安全门控。此外还有 provide_selection 工具,让 AI 能向你呈现交互式单选/多选。
📐 LaTeX + Mermaid + 代码高亮 —— KaTeX 渲染数学公式;Mermaid 绘制流程图/时序图/类图/状态图/ER 图;highlight.js 覆盖 35+ 语言。HTML/SVG 代码块还能一键导出为 .html / .svg 文件。
💾 本地数据存储 —— 所有聊天记录、设置、提示词都存在本地 SQLite,数据完全自主,不上云、不出本机。
🎨 高度可定制 —— 亮/暗主题、自定义 CSS(最高优先级全量覆盖)、字体、聊天宽度、可拖拽侧边栏(200–500px)、窗口状态持久化,连背景图片都能换。
说到可定制,下面这张设置面板是 WailsChat 区别于同类产品的灵魂:

霞鹜文楷字体、自定义背景透明度、内置工具开关——这些只是冰山一角,CSS 入口对前端审美党更友好。
五、性能执念:从 2MB 到 300KB 的倔强 #
做桌面端,启动速度和内存是命门。为了把启动体验压到极致,我做了一轮"瘦身":
- 懒加载重型依赖:Mermaid(约 1MB)、KaTeX(约 300KB)、35 个 highlight.js 语言定义全部改为按需加载。
- 效果立竿见影:首屏初始 JS 负载从 2MB+ 直接砍到约 300KB,配合 Vite 代码分割,冷启动只预载入口 + CSS。
- 流式渲染优化:流式分块改为批量发射(约 50ms 间隔)、前端用
requestAnimationFrame聚合更新,大幅降低 Go↔JS 的 IPC 开销;侧边栏拖拽、消息渲染也都做了帧级优化。 - 收尾打磨:修掉了 Mermaid 懒加载被分包配置误伤、偶发图表不渲染的隐患,启动预载彻底回到"入口 + CSS"的极简状态。
对性能有洁癖的开发者,这一节应该会心一笑。
六、怎么拿到它? #
最简单:去 GitHub Releases 下载 Windows 安装包(v1.7.0,约 19.4 MB),双击即用。
想折腾源码 / 其他平台:
| |
编译环境要求:Go 1.21+、Node.js、Wails v2 CLI。
七、写在最后 #
WailsChat 是我用百余小时、在 Vibe Coding 里一点点磨出来的作品。它不一定功能最全,但一定最轻、最顺手、最听你话。
项目已完全开源,欢迎 Star、提 Issue、提 PR,也欢迎在评论区聊聊你对 LLM 桌面端的期待——下一步我打算做些什么,很大程度上取决于你们的声音。
🔗 项目地址:https://github.com/jacksalad/wailschat