用 Go 写桌面应用,36,290 颗星背后 Wails 走到了哪一步
用 Go 写桌面应用,36,290 颗星背后 Wails 走到了哪一步
如果你是个 Go 开发者,想给手头的 CLI 工具加一个图形界面,通常的选择有两个:学一门 GUI 框架,或者打包成 Electron 硬上。前者门槛高,后者太重。Wails 给出了第三条路——用 Go 做后端,用你已经熟悉的 HTML/CSS/JS 做前端,打包成一个不到 15MB 的原生二进制文件。
这个思路不新,但 Wails 的实现方式让它在 2026 年的桌面开发选型中成了一个值得认真对待的选项。
36,290 颗星、1,857 个 Fork、320 个 open issues,GitHub 上个月刚发了 v2.16.0,一周后 v3.0.0-beta.24 也来了。这个项目现在到底什么状态?
项目边界:它解决什么问题
Wails 的核心逻辑很直接:操作系统本身已经有 WebView(Windows 的 WebView2、macOS 的 WKWebView、Linux 的 WebKitGTK),为什么每个 Electron 应用都要自带一份 Chromium?Wails 直接调用系统 WebView,把 Go 编译成原生二进制,前端用任意 web 技术栈,最后输出一个独立可执行文件。
根据官方数据,Wails 应用的二进制约 15MB,基线内存约 10MB,冷启动时间低于 0.5 秒。对比 Electron 常见的 150MB+ 打包体积和 100MB+ 基线内存,这个差距是架构级别的,不是优化能追平的。
它不是银弹。Wails 依赖系统 WebView 意味着渲染表现取决于各平台 WebView 的版本和能力。如果你的应用需要像素级一致的跨平台渲染,WebView 的平台差异是需要考量的因素。另外,Go 必须是你的主力后端语言——一个 Node.js 或 Python 背景的团队迁移过来收益有限。
谁适合用、谁该等
适合用 Wails 的场景:给现有 Go CLI 加 GUI、做内部工具或轻量级桌面应用、快速原型 MVP、需要系统原生集成(菜单、对话框、通知、剪贴板、快捷键)但又想要 web 前端灵活性的团队。
不太适合的场景:需要深度 macOS 原生 API(比如 ScreenCaptureKit)且不想写 Cgo/Objective-C 的场景;需要同时覆盖移动端(iOS/Android),这个能力 Wails v3 还在 experimental 阶段;团队完全没有 Go 经验,需要从零学起。
v2 稳定,v3 Beta 活跃——现在该用哪个
当前稳定版本是 v2.16.0(2026-09-14 发布),修复了 macOS 和 Linux 前端的一个内存泄漏问题,建议生产环境走 v2。
v3 的 beta 进度值得关注。v3.0.0-beta.24(2026-09-20)刚发布,带来了几个重要更新:
- 内置 MCP(Model Context Protocol)服务器,用
WAILS_MCP=1构建时自动启用,LLM Agent 可以直接控制运行中的 Wails 应用——窗口控制、DOM 检查、JS 执行、绑定方法调用、模拟鼠标键盘输入,全部通过 MCP 协议,不需要写任何用户代码。这个特性在 AI 编程助手和桌面工具结合的场景里很有想象空间。 - 全局快捷键现在即使应用没有焦点也会触发,实现了 per-platform 原生实现:macOS 用 Carbon Hot Keys,Windows 用 RegisterHotKey,X11 用 XGrabKey,Wayland 用 XDG Desktop Portal 接口。
- 改进了 Linux GTK4 菜单更新逻辑,修复了 macOS 多显示器场景下的崩溃问题。
v3 的目标平台包括 Windows(amd64/arm64 + WebView2 runtime)、macOS(Intel 和 Apple Silicon)、Linux(GTK4 + WebKitGTK 6.0),要求 Go 1.25+。如果想尝鲜 v3,目前通过 go install github.com/wailsapp/wails/v3/cmd/wails3@latest 安装。
开发体验:绑定生成是核心卖点
Wails 最有特色的工程细节是自动生成 TypeScript 绑定。你在 Go 里写一个结构体或方法,Wails 在开发模式下自动生成对应的 TypeScript 定义,IDE 能直接补全,前端可以直接调用,没有手动序列化、没有 REST、没有 gRPC 定义。
热重载也是亮点。wails dev 启动后,前端资源从磁盘直接加载(不需要打包进 embed.FS),Go 代码修改后自动重新编译并重启应用,前端刷新延迟很低。实际体验接近现代 web 开发的工作流。
支持主流前端框架:React、Vue、Svelte、Angular、Preact、Lit、Qwik、Solid,CLI 有模板可以直接 scaffold。TypeScript 现在是默认模板语言。
和竞品怎么选
2026 年桌面应用框架的竞争格局基本稳定:Electron 最成熟、生态最大,但体积最大;Tauri 用 Rust 做后端,生态在 Rust 社区快速扩张;Wails 用 Go,对 Go 团队最友好。
具体来说:如果团队写 Go、需要快速出活、热衷于自动绑定带来的开发体验,Wails 是首选。如果你能写 Rust、需要最小的二进制体积(3-15MB 有第三方验证数据)、需要移动端支持,Tauri 更合适。如果团队 100% JavaScript、依赖 npm 生态、需要确保渲染像素级一致,Electron 仍然是稳妥选择。
一个值得关注的趋势是 Wails v3 内置 MCP 这件事。它把「让 AI Agent 操作桌面应用」做成框架内置能力,而不是社区 hack。如果你的产品需要 AI Agent 能够操控桌面 UI,这个特性值得跟进。
可执行的下一步
如果你的团队用 Go 开发,想快速做一个桌面界面:
第一步,运行 wails doctor 诊断开发环境(需要 Go 1.21+ 和 npm),5 分钟知道是否就绪。
第二步,用官方模板快速 scaffold:wails init -t react-ts 或 wails init -t vue-ts,然后 wails dev 启动热重载开发模式。
第三步,如果需要 AI Agent 集成能力,关注 v3 的 MCP 功能,当前需要 WAILS_MCP=1 环境变量启用,文档在 https://v3.wails.io。
第四步,生产发布走 v2:go install github.com/wailsapp/wails/v2/cmd/wails@latest,然后 wails build。注意 macOS 发布需要处理签名和 notarization,Windows 需要 WebView2 bootstrapper,这些在官方文档有 CI/CD 指南。
项目地址:https://github.com/wailsapp/wails
文档:https://v2.wails.io(v2 稳定版)/ https://v3.wails.io(v3 Beta)
评论区
登录后可评论。