darshjme/whatsapp-rs
GitHub: darshjme/whatsapp-rs
该项目是 Rust 实现的 WhatsApp 多设备协议库,旨在成为首个同时覆盖消息和端到端加密语音通话的开源实现,并提供开箱即用的 AI agent runtime。
Stars: 1 | Forks: 0
# whatsapp-rs
WhatsApp 的桌面端/移动端应用通过一套自定义协议栈与 Meta 的服务器进行通信:**Noise** 握手、**二进制 XMPP** stanza 流、用于端到端加密的 **Signal** 协议,以及用于通话的 **`wa-voip`** 媒体引擎。现有的开源生态系统(Go 语言的 whatsmeow,JS 语言的 Baileys)重新实现了消息部分——但**没有任何项目实现了语音通话的媒体层**。`whatsapp-rs` 旨在将两者结合在一个统一的 Rust workspace 中,并公开一个清晰的 agent 层,让你只需**扫描一次 QR 码**,就能构建一个 **AI 聊天机器人和一个 AI 语音通话 agent**。
这反映了官方客户端的实际构建方式——它自身的安全和媒体核心都是用 Rust 编写的(`xplat/wa-voip/rust/call_control`、`WhatsAppRust.dll`)。
## 为什么做这个项目
- **语音是目前的空白。** 真正的、端到端加密的 WhatsApp 通话音频(基于 SRTP 的 Opus)目前没有任何 FOSS 实现。这正是本项目所瞄准的前沿领域。
- **全面使用 Rust。** 使用一种语言来完成通信编解码、加密、SRTP/Opus 媒体层以及 agent runtime——内存安全,且性能足以应对实时音频。
- **Agent 优先。** 最终目标是打造一个开箱即用的 WhatsApp AI:接收消息 → LLM → 回复,以及呼入/呼出 **通话 → 实时 STT → LLM → TTS → 抢话**,这与 Meta 为 Meta AI 通话提供的循环如出一辙。
## Workspace 布局(规划中)
| crate | 职责 | 状态 |
|-------|----------------|--------|
| **`wabin`** | binary-XMPP 节点编解码器(传输格式) | ✅ 已实现并测试 |
| `wanoise` | Noise `XX` 握手 + 到 `g.whatsapp.net` 的帧传输 | 🔜 |
| `wasignal` | Signal 协议:身份、prekeys、会话、sender keys | 🔜 |
| `waproto` | protobuf 消息 schema(`Message`、`WebMessageInfo`、`ClientPayload`、…) | 🔜 |
| `waclient` | 会话、QR 码配对(配对设备)、发送/接收、应用状态同步 | 🔜 |
| `wavoip` | `wa-voip` 媒体层:通话信令 stanza、ICE/SRTP、Opus | 🔬 研究中 |
| `waagent` | 聊天机器人 + 语音 agent runtime(STT → LLM → TTS、抢话/压低音量) | 🔜 |
## 状态
早期阶段。基础的通信编解码器(`wabin`)已完成并通过了往返测试。有关本项目所基于的协议图谱,请参阅 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
```
cargo test -p wabin
```
## 法律与安全提示
本项目仅用于互操作性研究,以及在**你本人控制的账号上**构建自动化工具。请尊重 WhatsApp 的服务条款。在开发期间请使用备用号码,并逐步对新号码进行预热——新号码如果突然大量发送信息会被封号。
## 许可证
采用 **MIT OR Apache-2.0** 双重许可。
标签:AI智能体, Rust, WhatsApp协议, 即时通讯, 可视化界面, 实时音视频, 端到端加密, 网络流量审计, 通知系统