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),双击即用。

想折腾源码 / 其他平台

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 克隆
git clone https://github.com/jacksalad/wailschat
cd wailschat

# 依赖
go mod tidy
cd frontend && npm install && cd ..

# 开发模式(带热重载)
wails dev

# 生产构建
wails build

编译环境要求:Go 1.21+、Node.js、Wails v2 CLI。


七、写在最后 #

WailsChat 是我用百余小时、在 Vibe Coding 里一点点磨出来的作品。它不一定功能最全,但一定最轻、最顺手、最听你话

项目已完全开源,欢迎 Star、提 Issue、提 PR,也欢迎在评论区聊聊你对 LLM 桌面端的期待——下一步我打算做些什么,很大程度上取决于你们的声音。

🔗 项目地址:https://github.com/jacksalad/wailschat