大家好,我是何三,独立开发者

WhatsApp 全球 20 亿用户,但从来没有官方 CLI 工具。想用命令行搜条消息?想写个脚本自动发文件到群组?Meta 说:没门。

最近 Hacker News 上一个项目直接炸了——wacli,一天之内拿到 227 个 upvote、147 条评论,GitHub 星标冲到 1400 多。作者是 Peter Steinberger,PSPDFKit 创始人,GitHub 4.7 万 followers 的传奇人物,"退休后又复出搞 AI"的那个。他搞了个 wacli,用 Go 语言写了个 WhatsApp 命令行客户端,扫码登录、消息同步、离线搜索、群组管理,全在终端里搞定。

wacli终端演示

这东西解决的不是"有没有人做"的问题,而是"为什么之前没人做"的问题。

为什么 wacli 值得关注

先说结论:这是目前最像样的 WhatsApp CLI 方案,没有之一。

市面上 WhatsApp 的第三方库不少,比如 Baileys(Node.js)和 whatsmeow(Go)。但 wacli 不是简单的 API 封装,它是一个完整的终端体验——消息同步到本地 SQLite 数据库,支持 FTS5 全文搜索引擎,断网也能搜。

什么意思呢?

你手机没信号,但你想找一条上周同事发的合同文件链接。打开终端敲一行命令,结果就出来了。消息全部存在 ~/.wacli 目录下,你的数据你做主。

这点其实挺重要的。WhatsApp 的"已读回执"让人焦虑,"在线状态"暴露隐私,聊天记录想导出只能一个一个聊天手动备份。wacli 相当于在终端里给你开了一扇后门,Meta 不给你开放的东西,开源社区自己补上了。

背后的技术架构

架构图

wacli 底层用的是 whatsmeow,这个库大有来头。它是 Beeper 的 WhatsApp Bridge 核心组件,由 Beeper 的桥接架构师 Tulir Asokan 维护。

Beeper 是什么?就是把所有聊天 app(iMessage、Telegram、WhatsApp、Signal)打通成一个客户端的那个工具。被 Automattic(WordPress 母公司)收购了。所以 whatsmeow 的稳定性是有生产级背书的(他们家每天几万用户靠这个库收发 WhatsApp 消息)。

wacli 在 whatsmeow 上面包了一层 CLI 界面,然后加上了本地存储和全文搜索。Go 编译出来就是一个二进制文件,没有依赖,丢到服务器上就能跑。

说到 Go 二进制... 我上次看到 PSPDFKit 的代码仓库时还在想,Steinberger 这么多年一直在搞 PDF SDK,怎么突然跨界搞 WhatsApp 了?后来发现他"退休"后又出山搞了个叫 OpenClaw 的 AI 项目,wacli 可能是顺手做的。4.7 万 followers 的人搞开源,就是玩儿。

上手试试

安装方式很简单,macOS 用户一条命令:

brew install steipete/tap/wacli

Linux 和 Windows 需要自己编译,但也就能跑通:

go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli

登录:

wacli auth

终端会弹出一个 QR 码,用 WhatsApp 扫一下就完事了。扫码之后会自动同步一次消息,然后你就可以搜索了:

wacli messages search "合同"
wacli messages search "meeting"

发消息也是一行:

wacli send text --to 8613800138000 --message "老铁,合同收到了"

发文件:

wacli send file --to 8613800138000 --file ./contract.pdf --caption "这是Q2的合同"

还有个持续同步的功能,适合跑在服务器上:

wacli sync --follow

加了 --json 参数可以输出结构化数据,方便跟其他脚本对接。

装完了。没报错。神奇。

(我自己跑的时候唯一注意的是 Go 编译需要开启 SQLite FTS5 支持,记得加 -tags sqlite_fts5,不然搜索功能不可用。)

封号风险?HN 上吵翻了

这篇文章如果只讲功能不讲风险,那就不厚道了。

HN 上 147 条评论里,最热的讨论就是:用第三方客户端会不会被封号?

事实是这样的:wacli 通过 whatsmeow 模拟 WhatsApp Web 协议登录,跟你在电脑浏览器里打开 web.whatsapp.com 扫码本质上是同一件事。WhatsApp 允许"链接设备"(最多 4 台),wacli 就是其中一台"设备"。

但目前 WhatsApp 的服务条款里,确实没有官方明确允许这种用法。所以理论上存在被封号的风险——虽然目前社区反馈的实际封号案例非常少。

一位 HN 评论者提到,他们刚跟一个年营收 5000 万到 1 亿美元的公司聊过,对方内部通讯就是用的 Baileys(另一个 WhatsApp 第三方库)。风险是有的,但很多人觉得值。

我的建议是:拿个备用号玩,别拿主力号。

适合谁用?

说实话,如果你只是想跟朋友聊天,这玩意对你毫无用处。WhatsApp 原生客户端就够了。

wacli 的真正受众是这几类人:

  1. 自动化爱好者——想把 WhatsApp 集成到自己的工作流里,比如监控群消息、自动回复、定时发送提醒
  2. 数据囤积者——想备份全部聊天记录到本地,不被平台绑架(我算一个)
  3. 服务器运维——在无 GUI 的服务器上管理 WhatsApp 群组
  4. AI 开发者——把 WhatsApp 作为 AI Agent 的交互界面,HN 上有人在讨论这个方向

第四点挺有意思的。有评论说:

"即便有封号风险,很多公司还是选择这么做,因为对于大量低技能的兼职员工来说,WhatsApp 是最可靠的触达方式。这恰恰说明了一个趋势——AI 会去人们已经在用的平台上,而不是反过来。"

这话有点东西。

同类工具对比

工具 语言 特点 适合场景
wacli Go 完整 CLI + 本地搜索 终端用户、服务器部署
whatsmeow Go 底层库 需要自己写集成代码的开发者
Baileys Node.js 社区大、生态丰富 Node.js 生态的自动化项目
whatsapp-cli (Vicente Reig) Go wacli 的灵感来源 轻量使用

wacli 相比 Baileys 的优势在于:Go 单二进制部署简单、内存占用低、有内置的本地存储和搜索。劣势是生态没 Baileys 大,社区历史短。

怎么说呢

Meta 不开放 WhatsApp 的官方 API(商务 API 限制一堆还收费),但全球开发者对 WhatsApp CLI 的需求是真实存在的。wacli 不是第一个尝试,但它可能是目前最"像样"的一个——有靠谱的底层库(whatsmeow / Beeper 背书)、有清晰的设计文档、有 Homebrew 安装支持、还有一位 GitHub 4.7 万粉的大佬坐镇。

能不能长期存活取决于 Meta 的态度。但就目前来看,值得试用。

GitHub 地址:https://github.com/steipete/wacli

本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用