Files
weixin_ClawBot_Bridge/README.md
T

86 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# weixin_ClawBot_Bridge — 微信 ClawBot / iLink 协议开发参考文档
> 目的:把「微信 ClawBot 插件 + iLink Bot API」的公开技术资料整理成一套可直接用于开发的参考文档,供本机其他 AI 项目(不经过 OpenClaw)对接微信时查阅。
>
> 整理日期:2026-08-19。资料来源均为公开逆向分析与社区实现(见各文档末尾「参考资料」),**不是腾讯官方完整文档**。协议细节可能随版本变化,关键行为请以实测为准。
## 一句话结论
微信 ClawBot 底层是腾讯官方的 **iLink Bot API**(`https://ilinkai.weixin.qq.com`,纯 HTTP/JSON + 长轮询),协议本身与 OpenClaw 框架**无耦合**。任何能发 HTTP 请求的程序都可以直接对接,写一个几百行的「转接器 / Bridge」即可把微信消息接到任意 AI 后端。
## 文档导航
| 文档 | 内容 | 什么时候读 |
|---|---|---|
| [docs/01-overview.md](docs/01-overview.md) | 背景、ClawBot / iLink / OpenClaw 三者关系、合规性、能力边界总览 | 先读这份,建立全局认识 |
| [docs/02-ilink-protocol.md](docs/02-ilink-protocol.md) | iLink 协议完整参考:全部端点、鉴权、扫码登录、长轮询、消息结构、context_token、错误码与重试 | 写协议层代码时对照查 |
| [docs/03-messages-and-media.md](docs/03-messages-and-media.md) | 消息类型详解、媒体文件 CDN 上传/下载、AES-128-ECB 加解密、语音/图片/文件/视频处理 | 需要收发图片/语音/文件时读 |
| [docs/04-bridge-design.md](docs/04-bridge-design.md) | 转接器架构设计:模块划分、会话管理、状态持久化、与任意 AI 后端的对接模式、可靠性设计 | 动手设计自己的 Bridge 前读 |
| [docs/05-implementation-guide.md](docs/05-implementation-guide.md) | 最小可运行实现(伪代码 + Node.js / Python 骨架)、常见坑、参考项目清单 | 直接照着重型实现 |
| [docs/06-limits-and-faq.md](docs/06-limits-and-faq.md) | 平台限制、官方条款要点、未知/未证实事项、FAQ | 评估能不能做某功能、踩坑时查 |
## 速查卡片
- 接入域名:`https://ilinkai.weixin.qq.com`
- CDN 域名:`https://novac2c.cdn.weixin.qq.com/c2c`
- 核心端点:`get_bot_qrcode` / `get_qrcode_status`(登录)、`getupdates`(长轮询收)、`sendmessage`(发)、`getconfig` / `sendtyping`(输入中)、`getuploadurl`(媒体上传)
- 鉴权:`Authorization: Bearer <bot_token>`,token 由扫码登录获得,长期有效
- 三个最容易踩的坑:
1. `get_updates_buf` 游标必须持久化并每次更新,否则重复收消息
2. 回复必须带原消息的 `context_token`,否则关联不到对话
3. 媒体文件全部是 AES-128-ECB 加密传输,密钥处理方式见 03 文档
## 典型接入架构(Bridge 模式)
```
微信用户 ⇄ 微信客户端 ⇄ iLink 服务器 (ilinkai.weixin.qq.com)
⇕ HTTP 长轮询
┌──────────────────┐
│ 你的 Bridge │
│ - iLink 客户端 │
│ - 消息规范化 │
│ - 会话/游标管理 │
└────────┬─────────┘
⇕ 你项目自己的 API
┌──────────────────┐
│ 你的 AI 项目 │
│ (LLM/Agent/工作流)│
└──────────────────┘
```
## 多语言示例(examples/)
[examples/](examples/) 下提供 Python / Go / Java / C / C++ 五份**单文件、可独立运行**的最小示例,各自覆盖同一套完整流程:
```
扫码登录(get_bot_qrcode / get_qrcode_status) → 长轮询收消息(getupdates) → 回声回复(sendmessage)
```
每份示例都包含:`bot_token` / 游标持久化、`context_token` 透传、`errcode=-14` 过期处理、2s→30s 退避重试、长文本分片发送。接入你自己的 AI 项目只需替换示例中的 `askYourAI`(回声占位)一个函数。
| 语言 | 文件 | 依赖 | 运行 | 验证状态 |
|---|---|---|---|---|
| Python | [examples/python/ilink_bridge.py](examples/python/ilink_bridge.py) | `requests` | `python3 ilink_bridge.py` | ✅ 语法检查通过 |
| Go | [examples/go/main.go](examples/go/main.go) | 仅标准库 | `go run main.go` | ✅ `go build` 通过 |
| Java | [examples/java/IlinkBridge.java](examples/java/IlinkBridge.java) | JDK 11+ 零依赖 | `javac IlinkBridge.java && java IlinkBridge` | ✅ `javac` 通过 |
| C | [examples/c/ilink_client.c](examples/c/ilink_client.c) | libcurl | `gcc ilink_client.c -o ilink -lcurl && ./ilink` | ✅ 语法检查通过(本机无 curl 开发头,未做链接验证) |
| C++ | [examples/cpp/ilink_client.cpp](examples/cpp/ilink_client.cpp) | libcurl | `g++ -std=c++17 ilink_client.cpp -o ilink -lcurl && ./ilink` | ✅ 同上 |
使用注意:
- 首次运行会打印二维码链接,微信扫码确认后凭据写入同目录 `bridge-state.json`(权限 600,**勿提交 git**);之后重启免扫码
- Java / C / C++ 三份为保持零额外依赖,JSON 解析用的是朴素的字符串/正则提取,**仅适合演示**;正式项目请换 Jackson / cJSON / nlohmann-json,并按 `msgs[]` 完整解析
- 所有示例只实现了文本收发;图片/语音/文件的 AES-128-ECB + CDN 链路见 [docs/03-messages-and-media.md](docs/03-messages-and-media.md)
更多约定与省略说明见 [examples/README.md](examples/README.md)。
## 参考项目(可直接借鉴)
| 项目 | 语言 | 说明 |
|---|---|---|
| [hao-ji-xing/openclaw-weixin](https://github.com/hao-ji-xing/openclaw-weixin) | Node.js | 协议逆向分析 + 裸调 Demo(`demo.mjs`) |
| [hao-ji-xing/cc-weixin](https://github.com/hao-ji-xing/cc-weixin) | Node.js | 把 Claude Code Agent 接入微信的完整示例 |
| [openclaw-java/openclaw-weixin-sdk](https://github.com/openclaw-java/openclaw-weixin-sdk) | Java | 完整 SDK + CLI + Web Terminal,错误恢复策略写得很细 |
| [openakita/openakita](https://github.com/openakita/openakita) | Python | 多 IM 平台适配器架构,微信适配器直接调 iLink 原生 API |
| [@tencent-weixin/openclaw-weixin](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) | TypeScript | 腾讯官方协议实现包(41 个源文件,最权威的协议参考) |