wxauto
微信自动化
通过 wxautox4 RESTful API 操作微信,支持消息收发、监听、好友管理等功能。API 服务必须运行在 Windows 设备上(wxautox4 仅支持 Windows),可通过本地或远程方式连接。
步骤 0:平台检测(最优先执行)
在做任何其他操作之前,先检测当前设备的操作系统:
import platform
print(platform.system()) # 返回 'Windows' / 'Darwin' / 'Linux'
根据结果走不同分支:
非 Windows 设备(macOS / Linux)
wxautox4 服务只能运行在 Windows 上,不要尝试在当前设备安装或启动服务。
直接询问用户远程服务信息(使用 AskUserQuestion 或等效工具):
问题1:请提供 wxauto-restful-api 服务地址(例如 http://192.168.1.100:8000)
问题2:请提供服务的 Bearer Token(见服务端 config.yaml 的 auth.token,默认为 token)
获取到地址和 token 后:
- 将配置写入环境变量或直接传入脚本参数
- 调用健康检查接口验证连通性:
GET /v1/wechat/status - 如果连接失败,提示用户检查:网络是否可达、服务是否已启动、token 是否正确
- 连接成功后直接执行用户操作,不需要任何本地安装步骤
Windows 设备
先检查本地服务是否已运行(读取 ~/.wxautox/service_status.json 并做健康检查):
- 本地服务已运行:自动连接,无需用户操作
- 本地服务未运行:询问用户选择方式(见下方「服务未运行时的处理」)
服务配置
- 认证:Bearer Token(见
config.yaml的auth.token,默认值为token) - 服务状态文件:
~/.wxautox/service_status.json(服务启动时自动生成,仅 Windows 本地部署时存在)
配置优先级(从高到低)
-
命令行参数
python scripts/wxapi.py --base-url "http://192.168.1.100:8000" --token "my-token" send "好友" "消息" -
环境变量
# 通用(macOS/Linux/Windows) export WXAPI_BASE_URL="http://192.168.1.100:8000" export WXAPI_TOKEN="my-token" # Windows PowerShell $env:WXAPI_BASE_URL = "http://192.168.1.100:8000" $env:WXAPI_TOKEN = "my-token" -
service_status.json - 自动检测(仅 Windows 本地部署时可用)
-
config.yaml - 服务目录下的配置文件(仅 Windows 本地部署时可用)
-
默认值 -
http://localhost:8000, token 为token
服务目录搜索顺序(仅 Windows)
WXAPI_SERVICE_DIR环境变量指定的路径~/.wxautox/service_status.json中记录的service_dir../wxauto-restful-api(相对于 skill 目录)~/wxauto-restful-api
启动服务(仅 Windows)
macOS / Linux 用户无需执行此节,直接使用远程服务地址即可。
前置要求:
-
安装 wxautox4:
pip install wxautox4需 Windows 系统,Python 3.9–3.12 64 位
-
激活 wxautox4:
wxautox4 -a your-activation-code -
部署并启动 API 服务:
# 进入服务目录 cd C:\path\to\wxauto-restful-api # 启动服务 python run.py或后台启动:
Start-Process python -ArgumentList "run.py" -WorkingDirectory "C:\path\to\wxauto-restful-api" -WindowStyle Hidden
脚本路径
调用脚本使用相对于 skill 目录根的相对路径:
python scripts/wxapi.py send "好友" "消息"
查看帮助:
python scripts/wxapi.py --help
可用命令
初始化和状态
# 初始化微信实例
python scripts/wxapi.py init
# 获取服务状态
python scripts/wxapi.py status
# 检查是否在线
python scripts/wxapi.py online
# 获取我的信息
python scripts/wxapi.py myinfo
发送消息
# 主窗口发送
python scripts/wxapi.py send "好友名" "消息内容"
# 精确匹配
python scripts/wxapi.py send "好友名" "消息内容" --exact
# @群成员
python scripts/wxapi.py send "群名" "开会了" --at "张三,李四"
# 子窗口发送
python scripts/wxapi.py send-chat "好友名" "消息内容"
读取消息
# 获取聊天记录(主窗口)
python scripts/wxapi.py getmsg "好友名"
# 获取聊天记录(子窗口)
python scripts/wxapi.py getmsg-chat "好友名"
# 获取历史消息
python scripts/wxapi.py history "好友名" --count 100
# 获取新消息(主窗口轮询)
python scripts/wxapi.py newmsg
# 获取新消息(子窗口)
python scripts/wxapi.py newmsg-chat "好友名"
监听管理
# 添加监听(打开子窗口)
python scripts/wxapi.py listen "好友名"
会话管理
# 获取会话列表
python scripts/wxapi.py session
# 获取所有子窗口
python scripts/wxapi.py windows
# 切换聊天窗口
python scripts/wxapi.py chatwith "好友名" --exact
获取列表
# 好友列表
python scripts/wxapi.py friends
# 群聊列表
python scripts/wxapi.py groups
页面控制
# 切换到聊天页面
python scripts/wxapi.py switch-chat
# 切换到联系人页面
python scripts/wxapi.py switch-contact
查看帮助
python scripts/wxapi.py --help
API 接口列表
根据 wxauto-restful-api 服务:
微信功能接口
| 接口 | 说明 |
|---|---|
POST /v1/wechat/initialize |
初始化微信实例 |
GET /v1/wechat/status |
获取微信状态 |
POST /v1/wechat/send |
发送消息 |
POST /v1/wechat/sendfile |
发送文件 |
POST /v1/wechat/sendurlcard |
发送 URL 卡片 |
POST /v1/wechat/getallmessage |
获取当前窗口消息 |
POST /v1/wechat/gethistorymessage |
获取历史消息 |
POST /v1/wechat/getnextnewmessage |
获取新消息 |
POST /v1/wechat/getsession |
获取会话列表 |
POST /v1/wechat/getsubwindow |
获取指定子窗口 |
POST /v1/wechat/getallsubwindow |
获取所有子窗口 |
POST /v1/wechat/chatwith |
切换聊天窗口 |
POST /v1/wechat/getfriends |
获取好友列表 |
POST /v1/wechat/getmyinfo |
获取我的信息 |
POST /v1/wechat/getrecentgroups |
获取群聊列表 |
POST /v1/wechat/switch/chat |
切换到聊天页面 |
POST /v1/wechat/switch/contact |
切换到联系人页面 |
POST /v1/wechat/isonline |
检查在线状态 |
聊天接口(子窗口)
| 接口 | 说明 |
|---|---|
POST /v1/chat/send |
子窗口发送消息 |
POST /v1/chat/getallmessage |
获取子窗口所有消息 |
POST /v1/chat/getnewmessage |
获取子窗口新消息 |
POST /v1/chat/msg/quote |
发送引用消息 |
POST /v1/chat/close |
关闭子窗口 |
直接 API 调用(备选)
如需直接调用 HTTP API,用 Python(不要用 PowerShell,有中文编码问题):
import requests
headers = {"Authorization": "Bearer token", "Content-Type": "application/json"}
body = {"who": "好友名", "msg": "消息内容"}
resp = requests.post("http://localhost:8000/v1/wechat/send", headers=headers, json=body)
print(resp.json())
响应格式
所有 API 返回统一格式:
{
"success": true,
"message": "操作成功",
"data": { ... }
}
服务未运行时的处理
非 Windows 设备
无法在本地启动服务。不要直接报错,使用询问工具询问用户:
提问内容:「当前设备(macOS/Linux)无法运行 wxautox4 服务,请提供运行在 Windows 设备上的远程服务信息」
需要用户提供:
- 服务地址(如
http://192.168.1.100:8000) - Bearer Token(服务端
config.yaml中auth.token的值,默认为token)
获取后做连通性验证,成功则继续执行用户原本的操作。
Windows 设备
当执行命令发现 wxauto-restful-api 服务未运行时,wxapi.py 会按以下顺序尝试自动恢复:
- 检查
~/.wxautox/service_status.json中的service_dir定位项目路径 - 搜索默认路径(见上方搜索顺序)
- 找到项目目录后自动启动服务
如果以上都无法定位到项目目录,不要直接报错,使用询问工具询问用户:
提问内容:「wxauto-restful-api 服务未运行,请选择处理方式」
选项:
- 自动部署并启动本地服务 - 从 GitHub 克隆项目,安装依赖,启动服务(启动后路径自动记录到
service_status.json) - 仅启动本地服务 - 服务目录已存在,只需启动(需用户提供路径)
- 连接远程服务 - 服务运行在其他 Windows 设备上,需提供服务地址和 Token
- 跳过 - 用户自行处理
如果用户选择「自动部署并启动本地服务」,执行以下步骤:
# 1. 克隆项目到用户目录
cd ~
git clone https://github.com/cluic/wxauto-restful-api.git
# 2. 创建虚拟环境
cd wxauto-restful-api
python -m venv .venv
# 3. 激活虚拟环境并安装依赖
.venv\Scripts\activate
pip install -r requirements.txt
# 4. 后台启动服务
python run.py
启动后验证服务是否正常运行(检查健康接口),然后继续执行用户原本的操作。
注意事项
- 微信客户端需要在运行服务的 Windows 设备上保持打开状态
- wxautox4 需要激活后才能使用(仅 Windows 端需要)
- 不要用 PowerShell 直接调用 API(中文编码问题),请使用 Python 脚本
- 修改服务端
config.yaml中的auth.token以增强安全性 - macOS / Linux 用户:跳过所有本地安装步骤,仅需提供远程服务地址和 Token 即可使用全部功能