凌晨两点四十七分。
手机屏幕在床头柜上亮起来。WhatsApp 的绿色气泡,一条接一条。
“Hi, do you have this model in stock?” “Can you ship to Rotterdam before Friday?” “Price list please.”
做外贸、跨境、独立站的人,对这一幕再熟悉不过。客户不讲时区,只讲"秒回=靠谱"。你回慢了,单子就是隔壁工厂的。
以前你只能自己扛。现在,有人把这条 7×24 小时的战线,交给了 AI。
这就是 wacli 在做的事。它是 2026 年 ClawHub 榜单上最常被推荐的通信类 Skill 之一——parallel.ai、KDnuggets、solvea.cx 等多家独立评测都把它放进 Top 榜单;同时它也是 OpenClaw 官方仓库里开箱即用的内置技能。装好它,你的 AI Agent 就多了一双能发 WhatsApp 的"手"。
这篇文章,从"能干什么"到"背后怎么想",把 wacli 拆给你看。
一、先分清两个名字:wacli CLI 和 wacli Skill
很多教程把两者混着说,其实它们是两层。
wacli CLI,是一台"车"。一个用 Go 写的 WhatsApp 命令行客户端。GitHub 开源,作者 Peter Steinberger(steipete),构建在 whatsmeow 库之上——whatsmeow 是 Go 社区对 WhatsApp Web 协议的非官方实现。它能让你的终端像一台"额外链接的设备"一样接入 WhatsApp:同步消息、本地搜索、发消息发文件。
wacli Skill,是"驾照+交规"。一份放在 OpenClaw 仓库 skills/wacli 目录下的 SKILL.md 文件。里面没有一行产品代码,只有给 AI 看的"操作手册":什么时候能用、什么时候坚决不能用、命令怎么拼、发消息前必须确认什么。
Skill 不生产魔法,它只是让 Agent 学会正确驾驭 CLI。这个"Skill 包装 CLI"的模式,正是 2026 年 ClawHub 高分技能的主流形态。之前拆过的 Sonoscli 出自同一位作者,也是这个套路——先有一个好的命令行工具,再写一份好的说明书,Agent 的能力就齐了。
二、wacli 能干什么
直接看命令,比看十段介绍都直观:
| 场景 | 命令 |
|---|---|
| 扫码登录 + 初始同步 | wacli auth |
| 后台持续同步 | wacli sync --follow |
| 搜聊天记录(FTS5 全文检索,支持时间窗/会话过滤) | wacli messages search "invoice" --after 2025-01-01 |
| 列出会话 / 群组 | wacli chats list/wacli groups list |
| 发文本(个人) | wacli send text --to "+8613800000000" --message "hello" |
| 发群消息 | wacli send text --to "1234567890-123456789@g.us" --message "..." |
| 发文件带说明 | wacli send file --to ... --file ./报价单.pdf --caption "报价" |
| 回填更早的历史(best-effort) | wacli history backfill --chat <jid> --count 50 |
| 下载某条消息的媒体 | wacli media download --chat <jid> --id <msgid> |
| 健康检查 | wacli doctor |
面向 Agent 的场景几乎呼之欲出:
- “给所有 3 天没回消息的客户发跟进,先给我过目。”
- “把今天的询盘整理成表格,重点标出要 500 件以上的。”
- “这个群里的报价单,下个月到期前提醒我。”
发消息支持文本、引用回复、贴纸、语音、文件(≤100 MiB),还带表情回应与 @提及;收件人既可以是手机号,也可以是会话 JID 或已同步的联系人名字,模糊时终端会交互确认,脚本场景用--pick N指定。
三、背后三步棋:QR、SQLite、边界
拆开 wacli 的技术设计,有三个值得玩味的点。
第一步棋:用"链接设备"的身份进场
它不注册新号,不做服务器中转。wacli auth在终端打出一张二维码,你用手机 WhatsApp 的"设置 → 已链接的设备"扫一下,它就以一台 WhatsApp Web 设备的身份上线。整个会话密钥都留在本地,数据不出你自己的机器。
这也是它跟"营销机器人"的本质区别——它借用的是你现有账号的信任链,而不是重新发明一套协议。首次登录后的初始同步,根据消息量可能要跑 5~30 分钟,之后进入无头运行。
第二步棋:把聊天记录变成离线数据库
同步不是终点,检索才是。wacli 把所有消息落进本地 SQLite,启用 FTS5 全文索引(编译时-tags sqlite_fts5)。这意味着什么?
你在 WhatsApp 里搜"报价单",官方客户端的体验你也知道:慢、浅、翻不到。而 wacli 的搜索是 SQL 级的:按会话过滤、按时间窗过滤、按消息类型过滤,毫秒级返回带上下文片段的结果。它等于给你的聊天记录装了一台本地搜索引擎——这正是 Agent 最需要的"记忆"。
数据落库用 WAL(Write-Ahead Logging)模式,读写并发安全;messages / chats / contacts / groups / media 五张核心表各司其职。所有命令支持--json输出、--eventsNDJSON 生命周期流和确定性退出码,方便脚本和 Agent 解析。wacli doctor帮你体检数据目录。
第三步棋:给 Agent 划了三条不能越的线
这是 SKILL.md 里最精彩的部分,值得逐字读:
“只有当用户明确要求给第三方发 WhatsApp 消息,或要求同步/搜索历史时才使用 wacli。不要把它用于普通用户聊天——OpenClaw 会自动路由 WhatsApp 对话。”
什么意思?你正在 OpenClaw 里正常聊天,Agent 不该突然掏出 wacli 去翻你俩的聊天记录。wacli 的定位是"对外联络官",不是"监工"。
发送前还有硬性流程:必须拿到明确的收件人和消息文本;发送前向用户确认;有任何歧义就追问,不许猜。
这套"确认制"不是怂,是 Agent 工程里最贵的教训:一个会自作主张发消息的 Agent,比一个不会发消息的 Agent 危险一万倍。底层 CLI 还配了 rapid-send 护栏(连续发送过快会拦截)、只读模式、数据库 owner-only 权限、panic 恢复等安全设计,把"手滑"的空间压到最小。
四、和谁对比?为什么要它而不是别的
把 wacli 放进生态里看,它的生态位很清晰:
| 方案 | 方向 | 本质 |
|---|---|---|
| Telegram Skill(ClawHub 头部技能,14.5 万+ 安装) | 用户 → 遥控 Agent | 让你在手机上指挥 Agent |
| GOG / Google Workspace | Agent → 邮件/日历/文档 | 管 Gmail 的"信使" |
| wacli Skill | Agent → WhatsApp 第三方 | 对外即时消息触手 |
| 官方 WhatsApp Business Cloud API | 企业 → 客户 | 走 Meta 审核、模板消息、按条计费 |
| whatsapp-cli / whatsapp-web.js 系 | 同类底层方案 | wacli 的前辈与竞品 |
一句话:Telegram 是"你找 Agent",wacli 是"Agent 替你找人"。而相比官方 Business API 的审核与模板限制,wacli 走的是个人号 Web 协议,轻、快、免费——代价是风险(见下节)。
五、泼三盆冷水
第一盆:封号风险是真实存在的
wacli 的 man 手册写得毫不含糊:这是第三方工具,使用非官方协议,WhatsApp 会主动封禁使用第三方客户端的账号,而且常常是永久封禁、没有申诉通道。
所以正确姿势是:不要拿主号裸奔。开个小号、或者至少想清楚你的号能不能承受封禁成本。企业规模化营销请走官方 API,别拿个人号赌。
第二盆:同步是 best-effort,不是备份保险
历史回填(backfill)依赖你的手机在线响应,官方不保证全量返回;媒体文件能否下载还受 WhatsApp 内容保留策略影响。把它当"搜索工具"很香,当"合规归档方案"还差得远。
第三盆:生态里的水很深,装之前擦亮眼
ClawHub 上 wacli 的第三方变体一抓一把(@sieyer/whats-1-0-0、@prantikmedhi/wacli-whatsapp……)。有正经的,也有蹭名字的。还记得 ClawHavoc 事件吗?2026 年初那场针对技能市场的投毒攻击,一次性清掉 2400 多个恶意技能。安装前认准官方源:openclaw/openclaw 仓库的 skills/wacli,或clawhub install wacli;装完用wacli doctor体检,保持"100+ 下载、3+ 个月活跃"的基本判断。
另外,从源码构建 wacli 需要 cgo + C 编译器(go-sqlite3 依赖),推荐直接brew install steipete/tap/wacli,省心。
六、动起来
给你的 Agent 装 WhatsApp 触手,一共四步:
# 1. 装 CLI(预编译带 FTS5,最省心) brew install steipete/tap/wacli # 2. 扫码登录(终端显示二维码,手机 → 设置 → 已链接的设备) wacli auth # 3. 后台持续同步 wacli sync --follow # 4. 在 OpenClaw 里启用官方 Skill clawhub install wacli然后,试着对它说一句:
“把这两天所有问过价格但还没下单的客户找出来,每人草拟一条跟进消息,我先审再发。”
放心,它会先给你看草稿,等你点头。
毕竟,一个懂得在扣扳机前确认的 Agent,才配替你握着那部手机。
关键词:OpenClaw;wacli;WhatsApp CLI;AI Agent Skill;whatsmeow;FTS5 全文检索;消息自动化