FlyAI 是一个面向 Windows 微信 4.x 的本地群聊管理、数据分析与 AI 助手项目。它可以采集你选择监控的群聊消息,在网页端查看活跃度、发言排行、潜水成员、热点和排行榜,并通过兼容 OpenAI API 的模型完成群聊问答。
项目地址:https://github.com/loks666/FlyAI
项目只读取本机已登录微信的数据,并通过 Windows UI Automation 发送文本消息,不注入 DLL。微信并未为这些能力提供官方接口,使用前请充分了解风险并遵守相关平台规则。
- 群聊数据分析:消息数量、发言排行、消息类型、活跃率等统计。
- 潜水成员识别:按统计周期和阈值生成低活跃成员报告;短名单直接发群消息,名单过长或文本发送失败时自动改发 TXT,附件包含群昵称、微信昵称、微信号和 wxid。
- 群聊排行榜:汇总群聊活跃情况和成员表现。
- 热点推送:定时获取热点内容,并按群独立配置推送策略。
- AI 群聊助手:支持 OpenAI 兼容接口,可配置 API Key、Base URL、模型和群聊人设。
- 群主命令:绑定管理员后,可在群聊中触发排行榜、潜水报告和热点等操作。
- 联系人管理:同步好友和群聊,在网页端查看联系人并发送文本消息。
- 安全回填:桥接器重启后可回填本周遗漏消息;回填只修复数据,不触发 AI 或自动回复。
- 网页控制台:集中配置监控群、定时任务、AI、端口和功能开关。
- Windows 一键启动:一个
start.bat自动准备便携环境、启动 MySQL、微信桥接器和管理服务。
已登录的 Windows 微信 4.x
│
▼
Python 本地桥接器 ──读取本机数据库 / UIA 发送文本
│ 127.0.0.1:19099
▼
FlyAI Go 服务 ─────消息处理、统计、任务与 AI
│
├── MySQL(Docker)
└── Web 控制台 http://127.0.0.1:9527
所有服务默认只监听本机地址。只有在你主动启用 AI 时,相关消息内容才会发送给所配置的 AI 服务商。
- Windows 10/11 x64
- 已安装并启动 Docker Desktop
- 已登录的 Windows 微信 4.x(建议 4.1.12 或更高版本)
- 首次启动时可连接互联网,用于下载便携式 Go、Python 依赖和 Docker 镜像
git clone https://github.com/loks666/FlyAI.git
cd FlyAI
.\start.bat也可以下载源码后直接双击 start.bat。首次启动将自动:
- 从
.env.example生成仅保存在本地的.env; - 在
.runtime中准备便携式 Go 和 Python 环境; - 使用 Docker Compose 启动 MySQL;
- 启动微信桥接器和 FlyAI 服务;
- 打开
http://127.0.0.1:9527。
首次创建 data/mysql 时,MySQL 会自动执行 database/schema.sql,一次性创建项目使用的全部数据表和默认功能时间配置;已有数据库不会重复初始化或覆盖数据。
下载的运行环境全部放在项目目录中,不会覆盖系统已有的 Go 或 Python。首次配置微信桥接器的本机回环访问权限时,Windows 可能弹出一次管理员确认;规则只允许项目内 Python 通过 127.0.0.1 的桥接端口通信,不开放局域网或公网访问。
同一个脚本负责完整生命周期:
.\start.bat # 启动,并打开管理页面
.\start.bat status # 查看各组件状态
.\start.bat logs # 打开日志目录
.\start.bat restart # 重启 FlyAI
.\start.bat stop # 停止 FlyAI 及其 MySQL 容器
.\start.bat update # 更新便携依赖并重新构建- 确认微信客户端已经登录,并保持主窗口可用。
- 运行
start.bat,等待管理页面自动打开。 - 在联系人页面同步好友和群聊。
- 进入群聊管理,只为需要分析的群开启消息监控。
- 按需开启排行榜、潜水报告、热点推送或 AI 助手。
- 在设置页面检查定时任务和 AI 参数。
为避免首次接入时产生意外回复,建议先只开启监控,确认数据正常后再逐项启用自动化功能。
FlyAI 使用 OpenAI Chat Completions 兼容接口。复制环境变量示例后即可配置:
Copy-Item .env.example .env
notepad .env主要配置项:
AI_ENABLE=false
AI_API_KEY=
AI_BASE_URL=https://api.openai.com
AI_MODEL=gpt-4o-miniAI_ENABLE:是否启用全局 AI 能力。AI_API_KEY:模型服务商提供的密钥。AI_BASE_URL:OpenAI 兼容 API 地址,请按服务商文档填写。AI_MODEL:服务商支持的模型名称。
网页端还可以为不同群聊设置是否启用 AI、模型和角色设定。密钥保存在本地配置中;.env 和自动生成的 config.yaml 已被 Git 忽略,不会被提交。
完整示例见 .env.example。常用项目包括:
| 配置 | 默认值 | 说明 |
|---|---|---|
HUB_HTTP_PORT |
9527 |
管理页面端口 |
HUB_INGEST_PORT |
19099 |
Go 服务接收消息的端口 |
BRIDGE_HTTP_PORT |
19089 |
微信桥接器监听端口 |
WECHAT_HOST |
127.0.0.1:19089 |
Go 服务访问桥接器的地址 |
MYSQL_PORT |
3307 |
本地 MySQL 映射端口 |
MYSQL_USER |
wechat |
FlyAI 数据库用户 |
MYSQL_PASSWORD |
wechat |
FlyAI 数据库密码 |
MYSQL_DATABASE |
wechat |
数据库名 |
REDIS_PORT |
6379 |
Redis 本机端口 |
REDIS_PASSWORD |
flyai-redis |
Redis 本地密码 |
消息处理默认使用有界队列,避免消息集中到达时无限创建 goroutine:
| 配置 | 默认值 | 说明 |
|---|---|---|
RECEIVE_WORKERS |
4 |
TCP 消息接收工作器数量 |
RECEIVE_QUEUE_SIZE |
1000 |
待接收连接队列容量 |
PLUGIN_WORKERS |
4 |
插件工作器数量,同一群固定进入同一工作器 |
PLUGIN_QUEUE_SIZE |
500 |
插件待处理消息总容量 |
SEND_QUEUE_SIZE |
100 |
微信发送队列容量,发送工作器固定为 1 |
SYNC_QUEUE_SIZE |
100 |
联系人及群成员同步队列容量,同步工作器固定为 1 |
接收到的消息以单行 JSON 输出到日志,内容字段位于最前面,并附带发送者微信昵称、群内昵称、微信号和群聊名称。以上身份信息也会随消息保存到 MySQL;尚未同步到通讯录时使用 wxid 兜底,通讯录信息短期缓存 5 分钟以减少高频数据库查询。
“获取好友列表结果”和“同步好友列表完成”不会输出到消息控制台,而是单独追加到 logs/contact-sync.log;通讯录获取或入库失败等异常仍保留在控制台。
如果本机端口已占用,可以修改 .env 后执行 .\start.bat restart。
当前 Redis 用于非管理员 @机器人 的回复状态:只以发送者 wxid 为键,不包含群 ID,因此同一个人更换群聊也不会重新触发回复。第一次艾特从消息池随机回复;第二次艾特提示管理员昵称和微信号,并在发送成功后设置 1 小时静默 TTL;静默期间后续群艾特、私聊和私聊指令均直接忽略,普通群消息仍正常入库但不会回复。Redis 不可用时自动降级为当前进程内存,服务仍能继续工作。
通讯录采用“进程内存 → Redis → MySQL”三级读取。Redis 按联系人和群成员分别保存结构化记录,同时维护联系人索引及每群成员索引,默认 TTL 为 1 小时;项目启动时自动预热,同步通讯录或群成员成功后立即刷新对应缓存。群功能开关等业务配置仍直接读取 MySQL,避免缓存延迟影响管理操作。
Redis 还适合后续保存短期 AI 会话上下文、接口限流、幂等键、分布式任务锁、临时任务状态和高频统计缓存。不应使用 Redis 代替 MySQL 保存群聊历史、联系人、功能配置等需要长期可靠保留的数据。
非主人第一次艾特从中文回复池随机回复;一小时内第二次艾特时发送余额不足提示,随后发送微信“自定义表情”栏中的第一张收藏表情,并静默该 wxid 一小时。超过一小时未发生第二次艾特则重新从第一次开始。
在网页端绑定管理员后,可通过 @机器人 触发;群功能开关只控制定时投送,不限制管理员手动命令:
@机器人 /昨排
@机器人 /周排(/排行榜 固定使用周排)
@机器人 /月排
@机器人 /年排
@机器人 /潜水
@机器人 /热点
@机器人 给我骂他@昵称1 @昵称2
给我骂他@昵称1 @昵称2(主人可不艾特机器人)
给我骂他.@昵称1 @昵称2(从摩斯密码列表随机回复)
命令只对已绑定的管理员生效,避免普通群成员触发管理操作。
- 微信数据库只在本机读取,不会由 FlyAI 自动上传。
- 通讯录中的群聊消息仅在本机入库,用于随时生成手动报告;只有明确开启功能的群才会自动投送。
- AI 未启用时,不会向模型服务商发送群聊内容。
- AI 启用后,参与回答所需的内容会发送到你配置的 API 地址,请自行确认服务商的隐私政策。
- 默认 Web、桥接器和消息入口均绑定
127.0.0.1,不要在不清楚风险时暴露到公网。 .env、config.yaml、数据库和运行日志均已加入 Git 忽略规则。
如果已经自行安装 Go、Python 和 MySQL,也可以不使用一键脚本:
go mod download
go test ./...
go run .桥接器的安装、协议和独立运行方式见 bridge/README.md。
app/ Web 路由与页面接口
bridge/ 微信 4.x 本地数据库与 UIA 桥接器
config/ 配置定义与加载
plugin/ 消息处理、AI 和群主命令插件
service/ 群聊、联系人、功能设置等业务逻辑
tasks/ 排行榜、潜水报告、热点等定时任务
views/ Web 控制台页面与静态资源
doc/ 设计与后续规划文档
当前版本已经提供 AI 群聊回复能力。下一阶段计划将推送、排行榜、潜水分析、联系人查询等能力封装为受控工具,让 Agent 可以根据自然语言组合调用。设计边界和分阶段方案见 doc/agent-integration-plan.md。
- 目前只支持 Windows 微信 4.x。
- 当前发送能力以文本消息为主。
- UI Automation 会受微信界面或版本更新影响。
- 本项目不是微信官方产品,也不提供账号安全保证。
欢迎提交 Issue 和 Pull Request。报告问题时,请附上 Windows、微信版本、复现步骤和已脱敏的相关日志。
FlyAI 基于原项目历史代码继续维护,并保留 Git 提交历史以便追溯贡献。
本项目仅用于个人学习、研究与本地自动化。使用者应遵守所在地法律法规、微信服务条款及群成员隐私约定,并自行承担使用风险。