V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
0x01Dev
V2EX  ›  程序员

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

  •  5
     
  •   0x01Dev · 1 天前 · 2325 次点击

    背景

    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+ 命令)

    • /s 600519 — 查贵州茅台实时股价
    • /ss — 查上证指数
    • /sus — 查美股指数(标普、纳斯达克、道琼斯)
    • /shk — 查港股指数
    • /b btc — 查数字货币价格
    • /gi 赛博朋克城市夜景 — AI 生成图片,Bot 直接发回微信
    • /a 帮我写一封请假邮件 — AI 对话,调大模型回答问题
    • /dp — 查大盘市场信息
    • 还有更多...

    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 支持一下。

    43 条回复    2026-03-28 19:09:37 +08:00
    dubyfans
        1
    dubyfans  
       1 天前
    来学习
    colorcat
        2
    colorcat  
       1 天前
    看起来非常好的项目,我来试用试用
    whhjdi
        3
    whhjdi  
       1 天前
    自动续期好啊,还能白嫖 bot
    idoubi
        4
    idoubi  
       1 天前
    有意思。WeClaw 的 Hub 功能也在做了😄
    awsl2333
        5
    awsl2333  
       1 天前 via iPhone
    学习了,这个好
    IceHe
        6
    IceHe  
       1 天前
    666 ,下周试试看
    HaoC12
        7
    HaoC12  
       1 天前
    好玩,好玩,不过这个不会导致微信泄露信息吧,up 科普下
    liril
        8
    liril  
       1 天前
    好玩好玩
    soouu
        9
    soouu  
       1 天前
    支持一下 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
        10
    0x01Dev  
    OP
       1 天前
    @HaoC12 Hub 是自部署的,数据全在你自己机器上(默认 SQLite 本地文件),消息走的是微信官方 iLink 协议( ilinkai.weixin.qq.com ),不经过任何第三方。除非你自己配了转发,否则消息不会发到外面去。源码
    MIT 开源,https://github.com/openilink/openilink-hub
    0x01Dev
        11
    0x01Dev  
    OP
       1 天前
    @soouu 不好意思,刚刚发布的新版本已经修复
    xibusangna
        12
    xibusangna  
       1 天前
    看着不错,下载试试
    zuoyou
        13
    zuoyou  
       1 天前
    必须得先安装 OpenClaw ,才能安装使用 OpeniLink Hub 嘛
    0x01Dev
        14
    0x01Dev  
    OP
       1 天前
    @zuoyou 不需要,OpeniLink Hub 是完全独立的项目,跟 OpenClaw 没有任何依赖关系。

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

    OpenClaw 在 Hub 里的角色是应用市场中的一个内置 App 。如果你恰好在用 OpenClaw 做 AI Agent ,可以在 Hub 的应用市场里一键安装 OpenClaw App ,这样你的 Agent 就能直接通过微信收发消息了。不用的话完全忽略就行,不影响 Hub 的任何其他功能。
    bhwa233
        15
    bhwa233  
       1 天前
    boycem
        16
    boycem  
       1 天前
    openclaw plugins install openclaw-channel-openilink fetch failed
    0x01Dev
        17
    0x01Dev  
    OP
       1 天前
    @boycem 稍等几分钟,我们正更新哈
    szqh97
        18
    szqh97  
       1 天前
    支持支持
    saveload
        19
    saveload  
       1 天前
    来学习一下。
    ronyin
        20
    ronyin  
       1 天前
    给楼主 star 。刚试了一下,有些命令好像没有返回消息。另外实在不知道这个玩意的使用场景是啥,除了玩一下?
    cense
        21
    cense  
       1 天前 via Android
    可以主动推送信息吗?
    Codingxiaoshi
        22
    Codingxiaoshi  
       1 天前
    学习学习
    tkwl
        23
    tkwl  
       1 天前
    就说一个能主动推送消息吗?读协议说是必须客户端来了消息才能返回一个消息
    另外一个是能独立做一个 Bot 连接 PC 端吗?
    0x01Dev
        24
    0x01Dev  
    OP
       1 天前
    @ronyin
    感谢 star !命令没返回的问题方便说下是哪个命令吗?可以提个 issue 我看下。

    使用场景的话,举几个实际在用的:

    - AI 回复:接 GPT/Claude/DeepSeek ,微信来消息自动回复,7×24 无人值守
    - 消息通知:业务告警、订单提醒、审批通知推到微信
    - 消息同步:微信消息自动转发到飞书/Slack/你自己的服务器
    - 数据查询:装个 App ,微信里直接查股价、查大盘、AI 对话、生成图片
    - 对接 OpenClaw 等:应用市场装个 OpenClaw App ,你的 AI Agent 就能通过微信对话了——理论上 OpenClaw 能干的事(写代码、操作文件、甚至远程控制电脑),都可以通过微信触发

    本质上 iLink 是微信第一次官方开放个人号 Bot API ,Hub 就是把这个 API 包装成了一个可用的平台。个人用装几个 App 也挺实用,企业用可以做助理、通知、数据助手这些。
    0x01Dev
        25
    0x01Dev  
    OP
       1 天前
    @cense 可以主动推送,不过 iLink 协议有个限制:用户需要先给 Bot 发一条消息,Bot 拿到 token 后就能在 24 小时内主动推送了。Hub 有自动续期功能,到期前自动续约,只要续上了就能一直推。
    0x01Dev
        26
    0x01Dev  
    OP
       1 天前
    @tkwl 关于主动推送: 目前 iLink 协议确实需要用户先发一条消息,Bot 拿到 context_token 后才能主动推。不过 Hub 有自动续期功能,token 到期前自动续约,只要保持住就能持续主动推送消息给用户。

    关于 PC 端独立 Bot: 目前 iLink 协议绑定的是微信账号,不是独立 Bot 账号,所以还做不到像企业微信那样创建一个独立的 Bot 。现在的方式是用一个微信号扫码绑定作为 Bot 使用。但是 pc 也是可以用的。
    hging
        27
    hging  
       1 天前
    牛批,过来支持。
    可惜 Wechat 不能用。
    超级烦。
    jianqiao031313
        28
    jianqiao031313  
       1 天前
    支持支持
    tkwl
        29
    tkwl  
       1 天前
    @0x01Dev 已 star
    关于第二条不太理解,这个 bot 和 clawbot 不一样吧,因为目前 clawbot 只能绑定一个微信账号并且只在手机端可以访问
    0x01Dev
        30
    0x01Dev  
    OP
       1 天前
    @tkwl #29 对,这两个不是一回事:

    - ClawBot 是微信里的插件,只能绑一个 OpenClaw 实例。
    - OpeniLink Hub 是独立的服务端平台,跑在你的电脑/服务器上,通过 iLink 协议和微信通信。它不受 ClawBot 插件的限制——可以同时绑定多个微信号,而且在任何有浏览器的设备上都能管理( PC 、Mac 、手机都行)

    简单说:ClawBot 是微信端的入口,Hub 是你自己这边的管理平台。
    lttplusgoole
        31
    lttplusgoole  
       1 天前
    学习一下
    csgo2
        32
    csgo2  
       1 天前
    前来学习
    xibusangna
        33
    xibusangna  
       1 天前
    可以接入 claude 么?
    furiatimarcos569
        34
    furiatimarcos569  
       1 天前 via Android
    学习
    0x01Dev
        35
    0x01Dev  
    OP
       1 天前
    @xibusangna #33 可以的
    superares
        36
    superares  
       1 天前
    官方这里有源码,有接口说明:
    https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin
    testboy
        37
    testboy  
       1 天前
    支持机器人通过语音气泡的形式给我回复或主动发送语音消息?
    onedge
        38
    onedge  
       1 天前
    逢开源就 star ,一会来看看场景
    p7e4
        39
    p7e4  
       17 小时 19 分钟前
    有点奇怪,24 小时内没有新的用户消息就失效,那定时任务的消息不是也发不出来了玛
    Dogergo
        40
    Dogergo  
       17 小时 9 分钟前
    @p7e4 不是说了会自动续期吗,就是自动发一条消息进行续期
    simo
        41
    simo  
       14 小时 36 分钟前


    进入/dashboard/accounts/id ,页面渲染不出来,控制台看报错了。docker compose 跑的,扫码登录什么都没问题
    0x01Dev
        42
    0x01Dev  
    OP
       8 小时 6 分钟前
    @simo 我们排查一下,谢谢
    xibusangna
        43
    xibusangna  
       8 小时 5 分钟前
    用了下还不错
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 19:15 · PVG 03:15 · LAX 12:15 · JFK 15:15
    ♥ Do have faith in what you're doing.