微信接入 AI Agent 的难点

微信不像飞书和钉钉那样提供官方的机器人 API,所以接入方式比较曲折。2026 年主流的 5 种方案各有优劣:

方案 原理 稳定性 难度 推荐场景
企业微信 API 官方 API,合规 ★★★★★ 低 企业内部使用
微信公众号 官方 API,被动回复 ★★★★★ 低 面向粉丝/用户
WeChatFerry (wcf) Hook 微信客户端 ★★★☆☆ 中 个人号机器人
OpenClaw + 微信桥接 开源框架 + 协议适配 ★★★★☆ 中 通用场景
企业微信 + 微信互通 企微应用被微信用户触达 ★★★★★ 低 对外服务

我们的建议:

  • 企业内部用 → 企业微信 API(最稳定、最合规)
  • 面向外部用户 → 微信公众号 或 企业微信互通
  • 个人折腾/小范围使用 → WeChatFerry

下面分别讲解三种最常用的方案。


方案一:企业微信 API(推荐企业用户)

优势

  • 官方 API,零封号风险
  • 支持 Webhook、应用消息、群机器人
  • 可与微信用户互通(企微应用能被微信联系人使用)

操作步骤

1. 注册企业微信

前往 企业微信官网 注册,完成企业认证。

2. 创建自建应用

管理后台 → 应用管理 → 自建 → 创建应用:

  • 应用名称:AI 助手
  • 可见范围:选择需要使用 AI 的部门/人员
  • 记录 AgentId、CorpId、Secret

3. 配置接收消息

应用详情 → 「接收消息」 → 设置 API 接收:

  • URL:https://你的域名/webhook/wechat-work
  • Token:自定义字符串
  • EncodingAESKey:点击「随机获取」

4. 部署 Agent 服务

git clone https://github.com/nicepkg/openclaw.git
cd openclaw && npm install

# 配置 .env
cat > .env << 'EOF'
# 企业微信配置
WECHAT_WORK_CORP_ID=wwxxxxxxxxxxxxxx
WECHAT_WORK_AGENT_ID=1000002
WECHAT_WORK_SECRET=xxxxxxxxxxxxxxxx
WECHAT_WORK_TOKEN=your_callback_token
WECHAT_WORK_AES_KEY=your_encoding_aes_key

# AI 模型
LLM_API_KEY=sk-xxxxxxxx
LLM_MODEL=gpt-4o
EOF

# 启动
pm2 start dist/index.js --name wechat-agent

5. 测试

在企业微信中找到你的应用,发一条消息测试。


方案二:微信公众号(推荐面向用户)

优势

  • 官方支持,完全合规
  • 用户关注后即可使用
  • 支持文本、图片、图文消息

限制

  • 只能被动回复(用户发消息后 5 秒内回复)
  • 订阅号每天只能群发 1 次
  • 无法主动推送

操作步骤

1. 注册公众号

前往 微信公众平台,注册服务号(需要营业执照)或订阅号(个人可注册)。

2. 配置服务器

公众号后台 → 开发 → 基本配置:

  • 服务器地址:https://你的域名/webhook/wechat-mp
  • 令牌:自定义
  • 消息加解密方式:明文模式(开发阶段)

3. 部署 Agent

# 微信公众号 Agent 示例(Python + Flask)
# 注意:先安装 defusedxml 防止 XML 注入攻击
# pip install flask defusedxml
from flask import Flask, request
import hashlib
import defusedxml.ElementTree as ET

app = Flask(__name__)

TOKEN = "your_token"

def verify_signature(signature, timestamp, nonce):
    items = sorted([TOKEN, timestamp, nonce])
    return hashlib.sha1("".join(items).encode()).hexdigest() == signature

@app.route("/webhook/wechat-mp", methods=["GET", "POST"])
def wechat():
    if request.method == "GET":
        # 验证服务器
        signature = request.args.get("signature")
        timestamp = request.args.get("timestamp")
        nonce = request.args.get("nonce")
        echostr = request.args.get("echostr")
        if verify_signature(signature, timestamp, nonce):
            return echostr
        return "验证失败"
    
    # 处理消息
    xml_data = request.data
    root = ET.fromstring(xml_data)
    msg_type = root.find("MsgType").text
    content = root.find("Content").text if root.find("Content") is not None else ""
    from_user = root.find("FromUserName").text
    to_user = root.find("ToUserName").text
    
    # 调用 AI 生成回复
    reply = call_ai(content)
    
    # 构造回复 XML
    reply_xml = f"""<xml>
    <ToUserName><![CDATA[{from_user}]]></ToUserName>
    <FromUserName><![CDATA[{to_user}]]></FromUserName>
    <CreateTime>{int(__import__('time').time())}</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[{reply}]]></Content>
    </xml>"""
    return reply_xml

def call_ai(message):
    # 替换为你的 AI API 调用
    import requests
    resp = requests.post(
        "https://api.openai.com/v1/chat/completions",
        headers={"Authorization": "Bearer sk-xxx"},
        json={
            "model": "gpt-4o",
            "messages": [
                {"role": "system", "content": "你是AI助手,回答简洁专业。"},
                {"role": "user", "content": message}
            ]
        }
    )
    return resp.json()["choices"][0]["message"]["content"]

if __name__ == "__main__":
    app.run(port=8080)

方案三:WeChatFerry(个人号机器人)

优势

  • 用你自己的微信号当机器人
  • 支持私聊和群聊
  • 功能最灵活

风险

  • 非官方方案,有封号风险
  • 需要 Windows 环境运行特定版本微信
  • 不建议用主号

操作步骤

1. 安装 WeChatFerry

# Windows 环境
pip install wechatferry

# 需要安装指定版本的微信客户端(WeChatFerry 文档中有下载链接)

2. 启动微信并 Hook

from wechatferry import WCF

wcf = WCF()

# 检查登录状态
print(wcf.is_login())

# 获取联系人列表
contacts = wcf.get_contacts()
for c in contacts:
    print(f"{c.name} ({c.wxid})")

3. 接入 AI Agent

from wechatferry import WCF
import requests

wcf = WCF()

def get_ai_reply(message):
    resp = requests.post(
        "https://api.openai.com/v1/chat/completions",
        headers={"Authorization": "Bearer sk-xxx"},
        json={
            "model": "gpt-4o",
            "messages": [
                {"role": "system", "content": "你是AI助手,回答简洁,不超过200字。"},
                {"role": "user", "content": message}
            ]
        }
    )
    return resp.json()["choices"][0]["message"]["content"]

# 监听消息
wcf.enable_receiving_msg()

while True:
    msg = wcf.get_msg()
    if msg and msg.content and not msg.self:
        reply = get_ai_reply(msg.content)
        wcf.send_text(reply, msg.sender)

安全提示:请使用小号测试,不要在主号上运行。封号风险虽然不高但确实存在。


方案对比总结

维度 企业微信 公众号 WeChatFerry
合规性 ★★★★★ ★★★★★ ★★☆☆☆
稳定性 ★★★★★ ★★★★★ ★★★☆☆
功能丰富度 ★★★★☆ ★★★☆☆ ★★★★★
接入难度 低 低 中
适用场景 企业内部 面向用户 个人/小群

给 AI Agent 的接入指令

复制以下指令给你的 Agent 框架,让它自动适配微信:

请将以下 Agent 接入微信(选择最适合的方案):

方案A(企业微信):
1. 在企业微信管理后台创建自建应用,获取 CorpId、AgentId、Secret
2. 配置接收消息的回调 URL 指向 Agent 的 /webhook/wechat-work 端点
3. 实现消息解密(AES)和消息处理逻辑
4. 通过企业微信 API 发送回复:POST https://qyapi.weixin.qq.com/cgi-bin/message/send

方案B(公众号):
1. 在微信公众平台配置服务器 URL
2. 实现签名验证(SHA1)
3. 解析 XML 消息,调用 LLM 生成回复
4. 构造 XML 回复返回(5秒内)

方案C(个人号 WeChatFerry):
1. 安装 wechatferry Python 包
2. 启动指定版本微信客户端并完成 Hook
3. 监听消息事件,调用 LLM 生成回复
4. 通过 WCF API 发送回复消息

原文出处:本教程基于 OpenClaw 接入微信完整教程 和 CSDN 5种方案对比 改写。

有问题?评论区见。


原文参考:OpenClaw 接入微信完整教程、2026最新5种方案