Openclaw(本地部署+个人微信)ClawBot插件【原理解析一】
本文介绍了OpenClaw微信插件的消息处理流程。主要涉及微信账号绑定、消息收发和媒体处理三个核心环节:1)通过扫码登录建立个人微信与上游服务的绑定关系;2)通过long-poll机制持续监听微信消息,并转换为OpenClaw标准会话格式;3)媒体文件采用AES加密上传CDN的特殊处理方式。插件作为微信消息与OpenClaw系统的适配器,实现了双向消息转换与传输功能,其中回复消息必须携带微信下发的
本篇
根据上一篇Openclaw(本地部署+个人微信)ClawBot插件【安装指南】
https://blog.csdn.net/i_k_o_x_s/article/details/159351489?spm=1001.2014.3001.5502
续写
一、目录
在 Openclaw 文件夹。主要关注
1. .OPENCLAW/extensions. (扩展文件夹)

2. .OPENCLAW/openclaw.json (文件)

二、原理
个人微信 -> 微信/iLink 上游服务 -> openclaw-weixin 插件 -> OpenClaw agent -> 插件 -> 上游服务 -> 微信
扫码登录这条链:

日常收发消息这条链:

媒体消息会多一层:

下面文件都在扩展文件夹中:如 channel.ts (line 283)
-
扫码登录
用户用个人微信扫二维码,插件调用上游接口 get_bot_qrcode / get_qrcode_status,等确认后拿到 bot_token、ilink_bot_id、ilink_user_id,然后存到本地状态目录。也就是说,“个人微信接入”这一步其实是你的微信账号和上游 bot/session 建立绑定。login-qr.ts (line 126) channel.ts (line 205) -
收消息
OpenClaw 启动这个账号后,会进入一个长期运行的 monitor,不断调用 ilink/bot/getupdates 做 long-poll。上游有新微信消息时,插件就收下来;还会把 get_updates_buf 持久化,避免重启后丢消息或重复拉取。channel.ts (line 283) monitor.ts (line 37) sync-buf.ts (line 49) -
转成 OpenClaw 会话
收到微信消息后,插件会把它转换成 OpenClaw 的标准上下文:谁发的、正文、媒体、本次会话 ID 等;然后走 OpenClaw 的鉴权、路由、session 记录,再交给 agent 处理。所以它本质上是“微信消息 -> OpenClaw 消息上下文”的适配器。inbound.ts (line 123) process-message.ts (line 64) -
回复消息
OpenClaw 产出回复后,插件调用 sendmessage 发回上游,再由上游送回微信。这里有个关键点:回复必须带上微信侧下发的 context_token,插件会在收到消息时先缓存它,回消息时再带回去。没有这个 token,代码里会直接拒绝发送。inbound.ts (line 10) send.ts (line 78) -
图片/文件
媒体不是简单传 URL。发送时,插件先向上游申请 getuploadurl,本地生成 AES key,把文件上传到微信 CDN,再把 encrypt_query_param + aes_key 放进消息体。接收时则反过来:从 CDN 下载、解密、落地,再交给 OpenClaw。upload.ts (line 49) media-download.ts (line 23)
更多推荐

所有评论(0)