openclaw/wacli

GitHub: openclaw/wacli

基于 whatsmeow 的可脚本化 WhatsApp 命令行客户端,将消息同步到本地 SQLite 并提供离线搜索、发送及聊天管理能力。

Stars: 2538 | Forks: 304

# 🗃️ wacli — WhatsApp CLI:同步、搜索、发送 一个基于 [`whatsmeow`](https://github.com/tulir/whatsmeow) 构建的可脚本化 WhatsApp 客户端。它作为已连接的 WhatsApp Web 设备进行配对,将你的消息镜像到本地 SQLite 存储中,并允许你通过命令行进行离线搜索、发送以及聊天/群组/联系人管理。 完整文档:**** ## 功能特性 - **认证 + 同步** — QR 码配对、一次性或跟随模式同步、可选媒体下载、可选签名 webhook 分发。 - **离线消息存储** — 使用带有 FTS5 搜索的 SQLite(LIKE 降级回退),支持按聊天、发送者、方向、时间和媒体类型进行过滤。 - **发送** — 支持提及/回复/链接预览的文本,文件(图片/视频/音频/文档,≤100 MiB),贴纸,语音消息,表情回应;具备快速发送防护和接收回执重试宽限期。 - **历史记录回填** — 尽最大努力向你的主设备发起按聊天请求,以获取更早的消息。 - **联系人 / 聊天 / 群组 / 频道** — 搜索、别名、标签、归档、置顶、静音、标记已读、重命名、清理、管理参与者和邀请链接、发送至频道。 - **诊断与安全** — `doctor` 诊断、只读模式、带有所有者报告的存储锁、panic 恢复、有界媒体队列、仅限所有者的 DB 权限。 - **可脚本化** — 全面支持 `--json`,`--events` NDJSON 生命周期流,确定性的退出代码。 ## 安装 ### Homebrew(推荐) ``` brew install steipete/tap/wacli ``` 如果在 Linux 上安装时报告 `Binary was compiled with 'CGO_ENABLED=0'`,请运行 `brew update && brew reinstall steipete/tap/wacli`。 ### 从源码构建 `wacli` 使用了 `go-sqlite3`,因此需要 cgo 和 C 编译器。 - macOS:Xcode Command Line Tools。 - Debian/Ubuntu:`sudo apt install build-essential`。 ``` CGO_ENABLED=1 CGO_CFLAGS="-Wno-error=missing-braces" \ go install -tags sqlite_fts5 github.com/openclaw/wacli/cmd/wacli@latest ``` 用于本地开发: ``` git clone https://github.com/openclaw/wacli.git cd wacli CGO_ENABLED=1 CGO_CFLAGS="-Wno-error=missing-braces" \ go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli ./dist/wacli --help ``` ## 快速开始 ``` # 配对(显示二维码),然后 bootstrap 同步 wacli auth # 在后台保持同步(无二维码;需要事先 auth) wacli sync --follow # 搜索 wacli messages search "meeting" # 发送 wacli send text --to 1234567890 --message "hello" wacli send file --to mom --file ./pic.jpg --caption "hi" # Diagnostics wacli doctor ``` 收件人接受 JID、电话号码(E.164 或格式化后的号码)、频道 JID 或已同步的联系人/群组/聊天名称。如果名称存在歧义,会在 TTY 中提示选择;在脚本中可传递 `--pick N` 进行指定。 更多用法示例 —— 回复、提及、贴纸、语音、表情回应、频道、历史记录回填、聊天管理 —— 都在[文档](https://wacli.sh)中。 ## 文档 | 领域 | 页面 | | --- | --- | | **设置** | [概述](docs/overview.md) · [认证](docs/auth.md) · [账户](docs/accounts.md) · [同步](docs/sync.md) · [诊断](docs/doctor.md) | | **消息** | [消息](docs/messages.md) · [发送](docs/send.md) · [媒体](docs/media.md) · [在线状态](docs/presence.md) | | **通讯录** | [联系人](docs/contacts.md) · [聊天](docs/chats.md) · [群组](docs/groups.md) · [频道](docs/channels.md) | | **历史记录** | [历史记录覆盖率 / 填充 / 回填](docs/history.md) | | **本地存储** | [存储](docs/store.md) · [配套集成](docs/integrations.md) | | **杂项** | [个人资料](docs/profile.md) · [版本](docs/version.md) · [补全](docs/completion.md) · [发布](docs/release.md) | ## 配置 默认存储路径:Linux 上为 `~/.local/state/wacli`,其他平台为 `~/.wacli`。Linux 上已有的 `~/.wacli` 目录将继续有效。使用 `wacli accounts add NAME` 和 `--account NAME` 可实现一等多的多账户存储管理。 **全局标志:** `--store DIR`、`--account NAME`、`--json`、`--events`、`--full`、`--timeout DUR`、`--lock-wait DUR`、`--read-only`。 **环境变量覆盖:** | 变量 | 作用 | | --- | --- | | `WACLI_STORE_DIR` | 默认存储目录。 | | `WACLI_READONLY` | 设置为 `1`/`true`/`yes`/`on` 可启用只读模式。 | | `WACLI_DEVICE_LABEL` | 在 WhatsApp 中显示的已配对设备标签。默认为 `wacli - ()`。 | | `WACLI_DEVICE_PLATFORM` | 已配对设备的平台。默认为 `DESKTOP`;无效值将降级回退到 `CHROME`。 | | `WACLI_SYNC_MAX_MESSAGES` | 当本地消息总数超过此数量时停止同步。 | | `WACLI_SYNC_MAX_DB_SIZE` | 当 `wacli.db` 及附属文件达到指定大小(如 `500MB` 或 `2GB`)时停止同步。 | ## 回填更早的历史记录 `wacli sync` 仅存储 WhatsApp Web 顺带发送的内容。要获取*更早的*消息,`wacli` 会向你的**主设备**(你的手机)发起按需的历史记录请求,且主设备必须在线。 - 尽力而为:WhatsApp 可能不会返回完整的历史记录。 - 每次请求会以该聊天中**本地存储的最旧消息**为锚点 —— 请先运行 `sync`。 - 建议每次请求使用 `--count 50`(最大 500)。每次运行最大 `--requests 100`。 - `history coverage` 可显示哪些聊天符合条件。`history fill --dry-run` 可在不连接的情况下进行规划。 ``` wacli history coverage --include-blocked wacli history fill --dry-run --kind group --limit 20 wacli history backfill --chat 1234567890@s.whatsapp.net --requests 10 --count 50 ``` 遍历每个已知聊天: ``` wacli --json chats list --limit 100000 \ | jq -r '.data[].JID' \ | while read -r jid; do wacli history backfill --chat "$jid" --requests 3 --count 50 done ``` ## 致谢 深受 Vicente Reig 的 [`whatsapp-cli`](https://github.com/vicentereig/whatsapp-cli) 启发。 ## 维护者 - 由 [@steipete](https://github.com/steipete) 创建 - 目前由 [@dinakars777](https://github.com/dinakars777) 维护 ## 许可证 查看 [`LICENSE`](LICENSE)。
标签:CGO, CLI, EVTX分析, FTS5, Go, Homebrew, Ruby工具, SEO检索词, SQLite, Webhook, WhatsApp, whatsmeow, WiFi技术, 个人效率工具, 二维码配对, 力导向图, 即时通讯, 媒体下载, 开源, 数据备份, 日志审计, 本地存储, 消息发送, 消息搜索, 离线搜索, 网络调试, 群组管理, 聊天记录同步, 联系人管理, 脚本集成, 自动化, 自动化控制, 频道管理