From b7993a54d5a54f76da194ef0d6b4a322db37eaf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Wed, 24 Jun 2026 02:03:24 +0800 Subject: [PATCH] cleanup: archive unused scripts, finalize docs - Moved old GDB hook and memory monitor scripts to archive/ - Updated README with final Docker solution - Updated .env.example, .gitignore - Added final-note.md documenting deployment decision - All research scripts preserved in archive/ for reference --- .gitignore | 44 +++-------- gateway/linux/.env.example | 14 ++-- gateway/linux/README.md | 79 +++++++++++++++---- .../{ => archive}/hooks/gdb_hook_messages.py | 0 .../linux/{ => archive}/hooks/gdb_startup.py | 0 .../{ => archive}/hooks/memory_monitor.py | 0 .../{ => archive}/hooks/memory_monitor_v2.py | 0 .../{ => archive}/hooks/memory_monitor_v3.py | 0 gateway/linux/{ => archive}/hooks/scan.py | 0 .../linux/{ => archive}/mohe-wechat.service | 0 gateway/linux/{ => archive}/wechat_agent.py | 0 gateway/linux/docs/final-note.md | 12 +++ 12 files changed, 93 insertions(+), 56 deletions(-) rename gateway/linux/{ => archive}/hooks/gdb_hook_messages.py (100%) rename gateway/linux/{ => archive}/hooks/gdb_startup.py (100%) rename gateway/linux/{ => archive}/hooks/memory_monitor.py (100%) rename gateway/linux/{ => archive}/hooks/memory_monitor_v2.py (100%) rename gateway/linux/{ => archive}/hooks/memory_monitor_v3.py (100%) rename gateway/linux/{ => archive}/hooks/scan.py (100%) rename gateway/linux/{ => archive}/mohe-wechat.service (100%) rename gateway/linux/{ => archive}/wechat_agent.py (100%) create mode 100644 gateway/linux/docs/final-note.md diff --git a/.gitignore b/.gitignore index 14a2f1e..74d8a20 100644 --- a/.gitignore +++ b/.gitignore @@ -1,45 +1,23 @@ -# Python -__pycache__/ -*.pyc -*.pyo -.venv/ -*.egg-info/ +# Binaries +*.AppImage +*.exe +*.dll +squashfs-root/ # Logs -*.log logs/ +wxBot_logs/ # Temp temp/ -*.tmp -*.db +__pycache__/ +*.pyc -# IDE -.vscode/ -.idea/ - -# Env +# Config with secrets .env -.env.local - -# Large binaries -*.exe -*.dll -*.png -*.jpg -*.jpeg -*.gif - -# Submodules / external projects -hermes-agent/ -gateway/qq-bot/ -node_modules/ +mowechat.conf # OS .DS_Store Thumbs.db - -# Large binaries -*.AppImage -*.exe -*.dll +.venv/ diff --git a/gateway/linux/.env.example b/gateway/linux/.env.example index f1663f8..74d7893 100644 --- a/gateway/linux/.env.example +++ b/gateway/linux/.env.example @@ -1,11 +1,11 @@ -# 环境变量配置 +# MoWeChat 环境变量配置(2026-06-24 最终版) -# Hermes Gateway 地址 +# Docker Bot token +WECHAT_BOT_TOKEN=your_fixed_token_here + +# Hermes Gateway HERMES_API=http://192.168.1.246:8642/v1/chat/completions HERMES_KEY=hermes123 -# SenseNova 图像生成 -SENSENOVA_KEY=sk-aRNj3UwKSLPsDfh15QNTPwbHxahblfaO - -# Doubao OCR -DOUBAO_KEY=b0359bed-09f2-49e2-a53c-32ba057412e3 +# Webhook 端口 +WEBHOOK_PORT=5804 diff --git a/gateway/linux/README.md b/gateway/linux/README.md index 7344924..a061718 100644 --- a/gateway/linux/README.md +++ b/gateway/linux/README.md @@ -1,24 +1,71 @@ -# MoWeChat — 莫荷微信 Bot (Linux 版) +# MoWeChat — 莫荷微信 Bot -将莫荷的微信 bot 从 Windows(wxhelper DLL 注入)迁移到 Linux 原生运行。 +Linux 版微信 Bot,将莫荷的微信消息桥接到 Hermes Gateway。 -**技术方案:官方 Linux 微信 AppImage + GDB Hook** +## 技术方案 -## 快速导航 +``` +手机微信 → WeChat服务器 → Docker Bot → Webhook(:5804) → Hermes Gateway + ↓ +手机微信 ← WeChat服务器 ← Docker Bot ← Webhook(:5804) ← Hermes 回复 +``` -- **架构文档**:`docs/architecture.md`(所有方案评估、信息源、接入须知) -- **GDB Hook 脚本**:`hooks/gdb_hook_messages.py`(待实现) -- **微信安装包**:`WeChatLinux.AppImage`(已下载,276MB,最新版) -- **Windows 原版**:`../scripts/wechat_agent.py`(保留不动) +基于 [`docker-wechatbot-webhook`](https://github.com/danni-cool/wechatbot-webhook) (2174 star),走 Web 微信协议。 -## 当前状态 +## 快速开始 -✅ 项目结构 + 依赖安装 + 微信下载 -⏳ GDB Hook 脚本(待实现)→ 莫荷接手 +### 启动容器 -## 注意事项 +```bash +docker run -d --name wxBotWebhook --restart unless-stopped \ + -p 3001:3001 \ + -v ~/wxBot_logs:/app/log \ + -e RECVD_MSG_API="http://172.17.0.1:5804/" \ + -e ACCEPT_RECVD_MSG_MYSELF=false \ + -e LOCAL_LOGIN_API_TOKEN="your_fixed_token" \ + dannicool/docker-wechatbot-webhook +``` -- **不走 ClawBot/iLink** — 详见 `docs/architecture.md` -- **不走 wine** — 3.9.x 微信登录已被腾讯封禁 -- **不走降版本工具** — 已损坏 -- 唯一可行路线:**Linux 原生微信 + GDB Hook** +### 扫码登录 + +访问 http://192.168.1.246:3001/login?token=your_fixed_token + +### Webhook 接收器(systemd) + +```bash +sudo systemctl start wechat-webhook +sudo systemctl enable wechat-webhook +``` + +### 发送消息 + +```bash +curl -X POST "http://localhost:3001/webhook/msg/v2?token=your_fixed_token" \ + -H "Content-Type: application/json" \ + -d '{"to": "联系人名称", "data": {"content": "消息内容"}}' +``` + +## 组件 + +| 组件 | 位置 | 说明 | +|------|------|------| +| Docker 容器 | `wxBotWebhook` | 微信 Bot 核心,收发消息 | +| Webhook 接收 | `wechat_webhook.py` | 收到消息→转发 Hermes→回复 | +| systemd 服务 | `wechat-webhook.service` | Webhook 开机自启 | +| 日志 | `~/wxBot_logs/` + `logs/webhook_service.log` | | + +## 研究历程 + +见 [`docs/architecture.md`](docs/architecture.md)(方案论证)和 [`archive/`](archive/)(废弃脚本)。 + +曾尝试过的方案: +- GDB Hook(微信 4.1.7 crashpad 检测 ptrace,崩溃) +- /proc/PID/mem 内存扫描(可行但噪声大,需精调) +- LD_PRELOAD(需逆向工程) +- **最终:docker-wechatbot-webhook ✅ 最稳定** + +## 维护 + +- Web 协议约 2 天掉线一次,需重新扫码 +- 容器自动重启(`--restart unless-stopped`) +- 登录 URL 不变(固定 token) diff --git a/gateway/linux/hooks/gdb_hook_messages.py b/gateway/linux/archive/hooks/gdb_hook_messages.py similarity index 100% rename from gateway/linux/hooks/gdb_hook_messages.py rename to gateway/linux/archive/hooks/gdb_hook_messages.py diff --git a/gateway/linux/hooks/gdb_startup.py b/gateway/linux/archive/hooks/gdb_startup.py similarity index 100% rename from gateway/linux/hooks/gdb_startup.py rename to gateway/linux/archive/hooks/gdb_startup.py diff --git a/gateway/linux/hooks/memory_monitor.py b/gateway/linux/archive/hooks/memory_monitor.py similarity index 100% rename from gateway/linux/hooks/memory_monitor.py rename to gateway/linux/archive/hooks/memory_monitor.py diff --git a/gateway/linux/hooks/memory_monitor_v2.py b/gateway/linux/archive/hooks/memory_monitor_v2.py similarity index 100% rename from gateway/linux/hooks/memory_monitor_v2.py rename to gateway/linux/archive/hooks/memory_monitor_v2.py diff --git a/gateway/linux/hooks/memory_monitor_v3.py b/gateway/linux/archive/hooks/memory_monitor_v3.py similarity index 100% rename from gateway/linux/hooks/memory_monitor_v3.py rename to gateway/linux/archive/hooks/memory_monitor_v3.py diff --git a/gateway/linux/hooks/scan.py b/gateway/linux/archive/hooks/scan.py similarity index 100% rename from gateway/linux/hooks/scan.py rename to gateway/linux/archive/hooks/scan.py diff --git a/gateway/linux/mohe-wechat.service b/gateway/linux/archive/mohe-wechat.service similarity index 100% rename from gateway/linux/mohe-wechat.service rename to gateway/linux/archive/mohe-wechat.service diff --git a/gateway/linux/wechat_agent.py b/gateway/linux/archive/wechat_agent.py similarity index 100% rename from gateway/linux/wechat_agent.py rename to gateway/linux/archive/wechat_agent.py diff --git a/gateway/linux/docs/final-note.md b/gateway/linux/docs/final-note.md new file mode 100644 index 0000000..8a06fc6 --- /dev/null +++ b/gateway/linux/docs/final-note.md @@ -0,0 +1,12 @@ +## 最终方案(2026-06-24 部署) + +经过实测,上述 GDB Hook 方案在微信 4.1.7 上因 crashpad 检测 ptrace 导致进程崩溃(无法稳定运行)。 + +**最终采用:`docker-wechatbot-webhook`** + +- GitHub: https://github.com/danni-cool/wechatbot-webhook (2174 star) +- Docker Hub: `dannicool/docker-wechatbot-webhook` +- 通信协议:Web 微信(扫码登录,使用本人微信号) +- 状态:生产可用 + +详情见 [`deployment.md`](deployment.md) 和 [`README.md`](../README.md)。