ByteNoteByteNote

字节笔记本

2026年5月1日

微信 ClawBot:首个官方个人号 Bot API iLink 协议拆解与实战

API中转
¥120

2026 年,腾讯终于为微信个人号提供了官方合法的 Bot API —— iLink(智联)协议。这是微信个人号机器人开发从"猫鼠游戏"走向正规化的历史性一步。

十年等待,一朝开放

微信个人号的机器人开发历程堪称一部"猫鼠游戏"史:

时期方案原理结局
2015-2017itchat / wxpy微信 Web 协议2017 年微信封禁 Web 端登录
2017-2019Xposed HookAndroid 端 hook 微信进程2019 年大规模封杀
2019-2025iPad 协议模拟 iPad 端微信灰色地带,服务商被起诉
2019-至今PC Hook(WeChatFerry 等)注入 PC 端微信进程逆向注入,随时封号
2026iLink(官方)纯 HTTP/JSON 协议官方合法,稳定可用

iLink 协议全景

iLink 是一套纯 HTTP/JSON 协议,接入域名 ilinkai.weixin.qq.com,不需要 WebSocket。

核心 API 端点

端点方法用途超时
/ilink/bot/get_bot_qrcodeGET获取登录二维码-
/ilink/bot/get_qrcode_statusGET轮询扫码状态35s
/ilink/bot/getupdatesPOST长轮询收消息35s
/ilink/bot/sendmessagePOST发送消息15s
/ilink/bot/getconfigPOST获取 bot 配置10s
/ilink/bot/sendtypingPOST发送"正在输入"状态10s
/ilink/bot/getuploadurlPOST获取 CDN 预签名上传地址15s

鉴权机制

  • 扫码登录获取 bot_token
  • 每个请求带 Authorization: Bearer {token}
  • X-WECHAT-UIN:每次请求随机生成 uint32 → base64,防重放攻击

消息机制

  • 长轮询(35s hold)+ 游标推进,类似 Telegram Bot API
  • 回复必须带 context_token,关联到正确的对话窗口
  • 不能主动推送,必须由用户先发消息触发

与 OpenClaw 的集成

@tencent-weixin/openclaw-weixin 是微信渠道的官方 Channel Plugin,基于 iLink 协议做了大量增强:

能力说明
Session Guard检测到错误码 -14(会话过期)时,自动暂停该账号 60 分钟
Config Cachetyping_ticket 按用户缓存 24 小时,失败时指数退避重试
Markdown → 纯文本AI 返回的 markdown 自动转为微信友好的纯文本
SILK 语音转码使用 silk-wasm 将微信 SILK 音频解码为 WAV
CDN 媒体加解密AES-128-ECB 加密上传、下载解密
引用消息识别读取 ref_msg 字段,格式化为 [引用: xxx]
Pairing 配对扫码用户自动注册到 allowFrom 授权列表
Debug 全链路追踪发送 /toggle-debug 开启耗时分解报告

iLink 提供协议,OpenClaw 提供框架,SDK 在两者之间做桥接和增强。但 iLink 协议本身是独立的 HTTP/JSON API,完全可以脱离 OpenClaw 直接调用。

独立 Bot 实战

以下是用 Node.js 直接调用 iLink 协议构建微信机器人的核心代码:

扫码登录

javascript
const ILINK_BASE = "https://ilinkai.weixin.qq.com";

async function login() {
  const qrRes = await fetch(
    `${ILINK_BASE}/ilink/bot/get_bot_qrcode?bot_type=3`,
    { headers: makeHeaders() }
  );
  const qrData = await qrRes.json();
  const qrcodeUrl = qrData.qrcode_img_content;
  const qrcodeKey = qrData.qrcode;
  qrterm.generate(qrcodeUrl, { small: true });

  while (true) {
    await sleep(2000);
    const statusRes = await fetch(
      `${ILINK_BASE}/ilink/bot/get_qrcode_status?qrcode=${qrcodeKey}`,
      { headers: makeHeaders() }
    );
    const statusData = await statusRes.json();
    if (statusData.bot_token) {
      return {
        bot_token: statusData.bot_token,
        baseurl: statusData.baseurl || ILINK_BASE,
      };
    }
  }
}

长轮询收消息

javascript
async function pollLoop(tokenData, onMessage) {
  let cursor = "";
  while (true) {
    try {
      const data = await apiPost(
        tokenData.baseurl,
        "ilink/bot/getupdates",
        { get_updates_buf: cursor, base_info: { channel_version: "1.0.2" } },
        tokenData.bot_token,
        40_000
      );
      if (data.get_updates_buf) cursor = data.get_updates_buf;
      for (const msg of (data.msgs || [])) {
        if (msg.message_type === 2) continue; // 跳过 bot 自己的消息
        const text = msg.item_list
          ?.filter(i => i.type === 1 && i.text_item)
          .map(i => i.text_item.text)
          .join("");
        await onMessage(msg, text);
      }
    } catch (err) {
      if (err.name === "AbortError") continue;
      await sleep(3000);
    }
  }
}

发送回复 + typing 状态

javascript
async function sendText(baseUrl, token, to, contextToken, text) {
  return apiPost(baseUrl, "ilink/bot/sendmessage", {
    msg: {
      from_user_id: "",
      to_user_id: to,
      client_id: `demo-${crypto.randomUUID()}`,
      message_type: 2,    // BOT 发送
      message_state: 2,    // FINISH
      context_token: contextToken,
      item_list: [{ type: 1, text_item: { text } }],
    },
    base_info: { channel_version: "1.0.2" },
  }, token);
}

能力边界与展望

当前能力

  • 文本、图片、语音、文件、视频的收发
  • "正在输入" typing 状态
  • 引用消息识别(只读)
  • 语音消息自动转文字

当前限制

  • 不能主动推送消息 — 必须用户先发消息
  • 不能发送引用消息 — ref_msg 是只读字段
  • 媒体需自行加解密 — CDN 文件使用 AES-128-ECB
  • 腾讯保留管控权 — 可随时限速、拦截、终止服务

应用场景

  • AI 助手 — 接入 Claude / GPT,在微信里直接和 AI 对话
  • 客服机器人 — 自动回复常见问题
  • 告警通知 — 当用户主动询问时返回系统状态
  • 工作流自动化 — 通过微信发指令触发自动化任务

与历史方案的根本区别

这不是又一个"破解微信协议"的项目。iLink 是腾讯主动设计并开放的:有专用域名、有正式服务条款、有明确的能力边界。开发者不再需要在"功能"和"安全"之间做取舍。

微信个人号生态的 AI 化,可能才刚刚开始。

分享: