96SEO 2026-04-21 04:21 18
Ru果你Yi经在玩转 ChatGPT、Claude 或者本地部署的 Llama,却苦于找不到一个“入口”把它们搬进微信,这篇文章正是为你准备的。

进入监听循环:
希望本文Neng帮你打开一扇窗,让你在微信这个庞大的社交平台上,用自己的 AI Neng力创造geng多有趣的应用。动手试一试吧,你会发现过程比想象中简单许多!
这段文字或许听起来像是开场白,但它背后隐藏的是一次完整的技术闭环:登录 → 拉取消息 → 调用本地模型 → 回复用户。
二、准备工作:依赖、配置与安全小贴士先把项目的依赖装好,建议使用虚拟环境来隔离:
python -m venv venv
source venv/bin/activate # Windows 用 venv\Scripts\activate
pip install -r requirements.txt
其中 requirements.txt 至少需要以下几项:
requests
qrcode # 用来在终端渲染二维码
⚠️ 小心别把 token 文件泄露给别人,Zui好 chmod 600 限制读写权限。
1️⃣ 保存登录凭证的路径约定TOKEN_FILE = Path.parent / ".weixin_token.json"
BUF_FILE = Path.parent / ".weixin_buf.txt"
三、扫码登录:从二维码到 token 的完整流程
1. 拉取二维码 & 在终端显示
def fetchQRCode:
base = BASE_URL.rstrip + "/"
url = base + "ilink/bot/get_bot_qrcode?bot_type="
resp = _get # GET 请求
qrcode_raw = resp.get # 用于轮询状态
qrcode_url = resp.get
return qrcode_raw, qrcode_url
2. 打印 ASCII 二维码
def login -> dict:
"""扫码登录,返回 token、account_id 与 base_url"""
qrcode_raw, qrcode_url = fetchQRCode
if not qrcode_raw:
raise RuntimeError
print
try:
import qrcode
qr = qrcode.QRCode
qr.add_data
qr.make
qr.print_ascii # 终端直接显示
except ImportError:
print
print
return pollQRStatus
3. 轮询二维码状态直到「Yi确认」并拿到 token
def pollQRStatus:
base = BASE_URL.rstrip + "/"
poll_url = base + f"ilink/bot/get_qrcode_status?qrcode={urllib.parse.quote}"
deadline = time.time + 8 * 60 # Zui多等 8 分钟
while time.time
四、长轮询:实时捕获用户消息的核心循环
我们把「拉取消息」和「回复」这两件事塞进同一个 while 循环,让机器人保持“在线”。下面这段代码几乎Ke以直接拷贝跑通:
def run_monitor -> None:
"""长轮询监听循环"""
buf = BUF_FILE.read_text.strip if BUF_FILE.exists else ""
if buf:
print
print
fail_count = 0
while True:
try:
resp = getUpdates
except Exception as e:
fail_count += 1
print: {e}", flush=True)
if fail_count>= 5:
print
time.sleep
fail_count = 0
else:
time.sleep
continue
fail_count = 0
if resp.get != 0 or resp.get != 0:
print
time.sleep
continue
new_buf = resp.get
if new_buf:
buf = new_buf
BUF_FILE.write_text
for msg in resp.get or :
# 忽略机器人自己发出的回执消息,只处理用户发来的文本
if msg.get != 100: # 假设100是用户发来的普通文本
continue
from_user = msg.get
context_token = msg.get
# 提取文本内容
text = ""
for item in msg.get or :
if item.get == 100: # 同样假设100代表文本类型
text = or {}).get
break
if not text.strip:
continue # 空白信息直接跳过
# ---------- 到这里我们Yi经拿到了用户说的话 ----------
# 接下来交给本地 AI Agent ----------------------------------------------------
reply = askAgent # ← 核心业务函数
try:
sendMessage
print
except Exception as e:
print
五、让本地大模型成为「聊天后台」——askAgent 实现细节
每个用户dou应该拥有独立的对话历史,否则大家会抢着kan别人的记录。下面这段代码兼顾了多用户隔离与异常捕获:
# ── 导入本地 Agent ──
from agent import agent_loop, SYSTEM as AGENT_SYSTEM
_sessions: dict] = {}
def askAgent -> str:
"""
把用户的新消息喂给本地 LLM,返回生成的回答。
• 第一次对话时自动加上系统提示词。
• 每次调用dou会把 Assistant 的回复追加到历史中,实现连续对话。
• 若模型抛异常,会返回友好的错误提示。
"""
if user_id not in _sessions:
_sessions =
_sessions.append
try:
answer = agent_loop
return answer or ""
except Exception as exc:
return f" {exc}"
💡 小技巧:Ru果你的模型支持流式输出,Ke以 成异步生成,把每一段文字即时推送回微信,实现“打字机”效果。
六、把答案送回去——sendMessage 封装细节def sendMessage(token: str,
to_user_id: str,
text: str,
context_token: str) -> None:
"""向指定用户发送纯文本消息,context_token 必须原样回传"""
_post(
"ilink/bot/sendmessage",
token=token,
body={
"msg":{
"from_user_id":"", # bot 发出留空即可
"to_user_id":to_user_id,
"client_id":f"mini-{secrets.token_hex}",
"message_type":100, # 文本类型编号
"message_state":200, # Yi完成,不走流式模式
"item_list":,
"context_token":context_token,
},
"base_info":{"channel_version":"mini-bridge-"},
},
timeout=15,
)
这里我们硬编码了 message_type 与 message_state 的数值,只要保持一致即可;若以后官方改动,只需geng新这两个常量。
七、底层 HTTP 工具箱——统一请求头与通用 GET/POST 方法def _headers -> dict:
"""构造所有请求必须携带的 Header"""
h={"Content-Type":"application/json",
"AuthorizationType":"ilink_bot_token",
"X-WECHAT-UIN":base64.b64encode(
str)).encode
).decode}
if token:
h=f"Bearer {token}"
return h
def _get->dict:
req=urllib.request.Request(url,
method='GET',
headers=headers or {})
with urllib.request.urlopen as rsp:
return json.loads.decode)
def _post(path:str,
body:dict,
token:Optional=None,
timeout:int=15)->dict:
data=json.dumps.encode
req=urllib.request.Request,
data=data,
headers={**_headers,
'Content-Length':str)},
method='POST')
with urllib.request.urlopen as rsp:
return json.loads.decode)
def _url->str:
base=BASE_URL.rstrip+'/'
return base+path
八、主入口——一次启动搞定登录+监听全流程 🚀
def main:
"""程序入口,仅Zuo两件事:
· 登录
· 启动长轮询监听"""
creds=load_token
if not creds: # 没有缓存则走扫码流程
print
creds=login
save_token
print
token = creds
account_id = creds
base_url = creds.get
print
run_monitor
if __name__=="__main__":
main
九、收尾感言——从零实现一个「专属 AI 微信机器人」到底有多爽?
kan完上述代码,你可Neng会惊讶:仅仅几百行,就完成了一个Neng够在真实微信群里聊天、读取文件甚至调用自定义插件的智Neng体。相比市面上那些需要第三方 SaaS 平台搭桥的方案,这套方案Zui大亮点在于:
完全自托管:所有请求dou直达腾讯官方接口,没有额外代理层。
随时可调:只要换掉 agent_loop 的实现,就Neng切换不同的大模型。
持久化安全:Token 与游标分别存文件,一次登录后即可长期运行,无需频繁扫码。
Poor‑Man‑Scalability:即使只有单核机器,也Neng保持每分钟数十条对话不掉线,因为核心dou是阻塞 I/O + 简单重连逻辑。
💬 小结一句话:只要懂得调用 HTTP 接口和维护上下文,你就Ke以让任何「AI 大脑」跑进微信群,而不必受限于公众号或小程序的审查。
十、进阶玩法 & 常见坑点速查表
# 多模态输入:If you want images → You need to parse item.type==200 ,暂时不处理即可。
# 高并发场景:You can spawn a thread pool for askAgent,以免单个模型卡死导致整个机器人停摆。
# 游标丢失:If .weixin_buf.txt 被误删,只需要删掉 token 再重新扫码即可恢复。
# Token 泄露风险:Avoid committing .weixin_token.json to Git;使用 .gitignore 并设置文件权限。
# 官方文档消失风险:The official spec lives inside npm 包 @tencent-weixin/openclaw-weixin-cli – keep a copy locally.
# 长轮询超时调参:The server默认等待约30秒,你Ke以在 getUpdates 中将 timeout 参数调高一点防止误判。
十一、结束语 — 给未来留一点想象空间 🌟当你kan到自己的名字出现在微信群里「AI 小助理Yi上线」的提示弹出来那种成就感真的hen奇妙。也许明天你会让它帮忙排班;后天它可NengYi经变身为公司内部知识库检索工具。只要掌握了本文提供的底层框架,后面的创新几乎没有边界。 祝愿每位读者douNeng玩出属于自己的风格,也欢迎在评论区分享你的奇思妙想——一起让「AI+微信」geng好玩、geng实用!
©2026 Cobyte Tech · 本文所有代码遵循 MIT License · 如有侵权请联系删除作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback