[开源] 给微信 Bot 做了个 App Store:装一个查股票,装一个生成图片,装一个 AI 聊天,全程不写代码

3 月 27 日
 0x01Dev

背景

3 月 22 号微信正式开放了 ClawBot 插件,底层叫 iLink 协议(ilinkai.weixin.qq.com)。这是微信第一次官方允许用程序收发个人号消息,不用逆向、不怕封号,算是个里程碑。

我第一时间就开始对接了。说实话,iLink 协议本身的设计不复杂——标准 HTTP/JSON ,长轮询收消息,POST 发回复。但实际用下来,坑比想象中多很多。

用 iLink 遇到的几个大坑

1. 没有官方文档

腾讯到现在没有公开 iLink 的 API 文档。现在社区里流传的协议规范全是逆向出来的,光端点说明就有 1200 多行。哪天腾讯调一下接口,所有第三方实现可能瞬间挂掉。

2. context_token 管理复杂

这是 iLink 最反直觉的设计。跟其他 Bot 平台不同(比如 Slack 你知道 channel_id 就能发消息),iLink 里光知道 user_id 不够,你必须拿到这条消息附带的 context_token 才能回复。token 是动态的、24 小时过期的,你得自己做缓存和刷新逻辑。我一开始没处理好这块,消息发出去微信端根本收不到,debug 了一整天。

3. 24 小时窗口过期

iLink 有个硬性限制:如果 24 小时内没有新的用户消息,之前的 context_token 全部失效,Bot 等于掉线了。对于需要持久运行的 Bot (比如定时提醒、消息转发),这个限制很致命。

4. 发媒体消息的门槛离谱

想让 Bot 发张图片?流程是这样的:

  1. getuploadurl 拿到腾讯 CDN 的预签名上传地址
  2. 用 AES-128-ECB 加密图片数据
  3. 上传到 CDN
  4. 拿到 CDN URL 后再调 sendmessage

语音消息更惨,还要处理 Silk 编码格式。这套流程每种语言都得自己实现一遍。

5. 没有管理界面

想同时管多个微信号的 Bot ?想看消息有没有送达?想知道哪个环节出了问题?只能自己写日志慢慢翻。

所以我做了 OpeniLink Hub

花了几周时间,把上面这些问题全解决了,做成一个完整的开源平台。

一行命令安装:

curl -fsSL https://raw.githubusercontent.com/openilink/openilink-hub/main/install.sh | sh
oih

内置 SQLite ,零配置启动。打开 http://localhost:9800,第一个注册用户自动当管理员,扫码绑定微信号就可以用了。

最大的亮点:应用市场

这是和其他 iLink 项目最大的区别。GitHub 上已经有不少 iLink 的 SDK 和 Agent 桥接工具了,但它们都需要你写代码才能用。

Hub 有一个应用市场,扫码绑定 Bot 之后,在引导页面直接点「安装」就能给 Bot 加新功能:

Command Service ( 20+ 命令)

Bridge (消息转发) 把微信收到的消息自动转发到飞书、Slack 、或者你自己的 HTTP 服务。不用写代码,配一下转发地址就行。

OpenClaw ( AI Agent ) 如果你在用 OpenClaw ,装这个 App 你的 Agent 就能直接通过微信聊天了。

Echo (开发模板) 想自己开发 App ?从 Echo 开始,3 个命令的最简示例,看懂了就能写自己的。

整个流程就是:扫码绑定 → 打开应用市场 → 点安装 → Bot 立刻获得新能力。App 之间互不影响,想装就装想卸就卸。

其他功能

自动续期 — 24 小时窗口快到期了,Hub 自动续约,Bot 不会莫名其妙掉线。这个功能可以设置提前多久续期(比如提前 1 小时)。

消息追踪 — 每条消息从收到、存储、投递到 App 、App 回复、发送回微信,完整的时间线。哪一步成功了、哪一步耗时多少、哪一步出错了,打开追踪页面一眼就能看到。Debug 体验比自己翻日志好 10 倍。

多 Bot 管理 — 可以同时绑定多个微信号,统一面板管理。每个 Bot 独立安装不同的 App 、独立配置。

三通道并行 — WebSocket 实时推送 + Webhook HTTP 回调 + AI 自动回复,三个通道可以同时开。你可以一边让 AI 自动回复用户,一边通过 WebSocket 实时收消息做自己的处理。

7 种语言 SDK — Go 、Node.js 、Python 、PHP 、Java 、C#、Lua 。如果你想写代码对接而不是用应用市场,SDK 已经帮你封装好了 context_token 管理、CDN 加密、媒体发送这些脏活。

Passkey 登录 — 支持指纹、Face ID 、硬件密钥直接登录管理后台,也支持 GitHub / LinuxDo OAuth 。

和其他项目的区别

目前 GitHub 上 iLink 相关的开源项目不少,但大多是两类:

  1. 底层 SDK(比如 wechatbot 、weixin-bot ) — 帮你封装了协议调用,但你得自己写全部业务逻辑
  2. Agent 桥接器(比如 WeClaw ) — 专注于把微信消息转给 AI Agent ,但没有通用的消息管理能力

Hub 的定位不一样:它是一个完整的消息管理平台,带 Web 后台、应用市场、消息追踪、多通道分发。如果类比的话,SDK 相当于给你一堆砖头,Hub 相当于给你一栋装修好的房子,应用市场相当于家具城——你搬进去就能住,还能随时加家具。

OpeniLink Hub SDK 类 Agent 桥接类
Web 管理后台 无/简易
应用市场
消息追踪
多 Bot 管理 需自己实现 部分支持
不写代码也能用
SDK 数量 7 种语言 1~4 种

技术栈

后端 Go 1.25 ,前端 React 19 + Vite + Tailwind ,数据库默认 SQLite (可选 PostgreSQL ),认证 WebAuthn + OAuth 2.0 PKCE ,App 事件投递支持 WebSocket 和 Webhook ,部署方式单文件二进制 / Docker / Docker Compose 。

链接

MIT 开源,随便用,不限商用。


如果你也在折腾微信 iLink ,欢迎试用反馈。有问题可以在 GitHub 提 issue ,也欢迎 star 支持一下。

5183 次点击
所在节点    分享创造
47 条回复
dubyfans
3 月 27 日
来学习
colorcat
3 月 27 日
看起来非常好的项目,我来试用试用
whhjdi
3 月 27 日
自动续期好啊,还能白嫖 bot
idoubi
3 月 27 日
有意思。WeClaw 的 Hub 功能也在做了😄
awsl2333
3 月 27 日
学习了,这个好
IceHe
3 月 27 日
666 ,下周试试看
HaoC12
3 月 27 日
好玩,好玩,不过这个不会导致微信泄露信息吧,up 科普下
liril
3 月 27 日
好玩好玩
soouu
3 月 27 日
支持一下 up 这个软件把我这个问题解决了。感谢感谢 不给 curl 安装有问题
```
curl -fsSL https://raw.githubusercontent.com/openilink/openilink-hub/main/install.sh | sh
==> Detected: darwin/arm64
==> Fetching latest version...
==> Version: v0.0.8
==> Downloading https://github.com/openilink/openilink-hub/releases/download/v0.0.8/openilink-hub_0.0.8_darwin_arm64.tar.gz
error: Binary 'oih' not found in archive. Download may have failed.
```
0x01Dev
3 月 27 日
@HaoC12 Hub 是自部署的,数据全在你自己机器上(默认 SQLite 本地文件),消息走的是微信官方 iLink 协议( ilinkai.weixin.qq.com ),不经过任何第三方。除非你自己配了转发,否则消息不会发到外面去。源码
MIT 开源,https://github.com/openilink/openilink-hub
0x01Dev
3 月 27 日
@soouu 不好意思,刚刚发布的新版本已经修复
xibusangna
3 月 27 日
看着不错,下载试试
zuoyou
3 月 27 日
必须得先安装 OpenClaw ,才能安装使用 OpeniLink Hub 嘛
0x01Dev
3 月 27 日
@zuoyou 不需要,OpeniLink Hub 是完全独立的项目,跟 OpenClaw 没有任何依赖关系。

Hub 本身就是一个完整的微信 Bot 消息管理平台,自带 WebSocket 、Webhook 、AI 自动回复三个通道,还有应用市场可以一键装功能(查股票、生成图片、AI 对话等),这些都不需要 OpenClaw 。

OpenClaw 在 Hub 里的角色是应用市场中的一个内置 App 。如果你恰好在用 OpenClaw 做 AI Agent ,可以在 Hub 的应用市场里一键安装 OpenClaw App ,这样你的 Agent 就能直接通过微信收发消息了。不用的话完全忽略就行,不影响 Hub 的任何其他功能。
bhwa233
3 月 27 日
boycem
3 月 27 日
openclaw plugins install openclaw-channel-openilink fetch failed
0x01Dev
3 月 27 日
@boycem 稍等几分钟,我们正更新哈
szqh97
3 月 27 日
支持支持
saveload
3 月 27 日
来学习一下。
ronyin
3 月 27 日
给楼主 star 。刚试了一下,有些命令好像没有返回消息。另外实在不知道这个玩意的使用场景是啥,除了玩一下?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1201560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX