Files
wechatauto-replica/skills/wechatauto-replica-install/SKILL.md
T

127 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: wechatauto-replica-install
description: 客户自助安装 wechatauto-replica(微信 4.x Windows 客户端自动化,公司 Gitea 公开仓库)。覆盖:环境检查、git clone、venv、依赖安装、ai_config.json 配置、AI 客服引擎启动、发消息验证、常见坑。触发词:安装微信自动化、微信机器人安装、wechatauto 安装、客户安装微信、微信自动回复部署。
---
# wechatauto-replica 客户自助安装
让客户在一台全新的 Windows 机器上自己装好微信自动化项目(发消息 + AI 自动回复),不用找我们远程。
## 前置条件(先检查,缺哪个补哪个)
1. Windows 10/1164 位)
2. 微信 4.x 桌面版(4.1.12+)已登录、窗口可见(发消息/回复走 GUI)
3. Python 3.9+3.12 实测可用)。检查:`python --version`;没有就去 python.org 装,勾选 Add to PATH
4. git。检查:`git --version`;没有去 git-scm.com 装
5. 管理员权限跑安装/启动(从 Weixin.exe 内存提 SQLCipher 密钥要管理员)
## 安装步骤(三条路任选)
### 路 A:一键脚本(推荐,Windows PowerShell
```powershell
# 管理员 PowerShell 里执行
irm https://gite.aiyuntuan.com/xiaoxiao_unai/wechatauto-replica/raw/branch/main/install.ps1 | iex
```
或本地有脚本:`.\install.ps1`。脚本自动完成:clone → venv → pip install -e . → 装 winsdk pypinyin → 生成 ai_config.json 模板 → 自检 import。
### 路 B:手动装(不想跑脚本时)
```bash
# 1. 拉代码(公开仓库,无需账号密码)
git clone https://gite.aiyuntuan.com/xiaoxiao_unai/wechatauto-replica.git
cd wechatauto-replica
# 2. 建虚拟环境
python -m venv .venv
# Windows:
.venv\Scripts\activate
# 3. 装依赖(核心 + 发消息 OCR 路径)
pip install -e .
pip install winsdk pypinyin
# 4. 验证
python -c "from wechatauto import WeChatDB; print('OK')"
```
### 路 C:pip 直装(只要库,不要项目文件)
```bash
pip install wechatauto-replica
pip install winsdk pypinyin
```
## 配置 AI 客服(ai_config.json
首次安装后项目根目录会自动生成 ai_config.json 模板(或手动复制 ai_config.example.json → ai_config.json)。必改两项:
1. **llm.api_key**:填客户的 DeepSeek API Keyhttps://platform.deepseek.com 申请,base_url=https://api.deepseek.com/v1model=deepseek-chat
2. **reply.allowlist / only_prefix**:决定回复范围
- 灰度期只回指定好友:`"allowlist": ["wxid_xxx"]`
- 全量回所有 wxid 好友:`"only_prefix": ["wxid_"]` 且 allowlist 留空
- 注意:自定义微信号好友(非 wxid_ 开头)不会被 only_prefix 命中,想全回就加进 allowlist
其他可选项:
- `persona.system_prompt`:说话人设(默认已去 AI 味:短句口语、禁客服套话、禁 emoji、不硬推销、没把握的信息回「我确认下」)
- `knowledge.vault_dir`:知识库目录(放 .md 资料,回复时检索注入;目录不存在则空载)
## 启动 AI 客服引擎
```bash
.venv\Scripts\python.exe wechat_ai_reply.py
# 或双击 start_ai_reply.bat(已指向 .venv python
```
启动成功标志:日志第一行显示回复范围(所有好友 / 仅以下好友: xxx),随后每收到好友消息自动回复。停止:Ctrl+C(或杀进程)。单实例锁 engine.lock 防止重复启动。
## 发消息验证(不用 AI 引擎也能测)
```python
from wechatauto import WeChatDB
from wechatauto.guia import quick_send
db = WeChatDB() # 自动探测账号与数据目录(微信需已登录)
me = db.get_self_info() # 当前账号
sessions = db.get_sessions(limit=10)
for s in sessions:
print(db.get_nickname(s["username"]), s["unread"])
# 发消息:who 用 usernamewxid_xxx 或自定义微信号)
quick_send("你好", "filehelper", verify=True)
```
## 读消息 / 监听(开发者用)
```python
from wechatauto import WeChatDB
from wechatauto.db import Listener
db = WeChatDB()
lst = Listener(db, interval=1.0)
lst.add_listener("filehelper", lambda msg, lst: print("new:", msg["content"]))
lst.start()
# ...
lst.stop()
```
## 常见坑(客户最容易卡住的)
1. **发消息/回复没反应**:微信没登录、或窗口最小化/锁屏。发消息走 GUI,必须微信窗口可见、桌面未锁屏。
2. **提示权限不足/找不到 Weixin.exe 内存**:必须管理员权限跑。右键终端「以管理员身份运行」。
3. **首次解密慢(约 6 秒)**:正常。解密缓存到 %TEMP%\wechatauto_db,之后秒开。
4. **报 database disk image is malformed**:八成是开了两个引擎进程并发读写缓存。解决:杀光所有 python 里的 wechat_ai_reply 进程 → 删 %TEMP%\wechatauto_db 整个目录 → 删 engine.lock → 重启单实例。
5. **改了 ai_config.json 不生效**:杀旧引擎进程再重启(旧进程内存里是旧配置)。
6. **verify=True 报「未确认」**:消息已发出但落库有异步延迟,用 get_messages 读回确认即可,不是真失败。
7. **OCR 找不到按钮**:微信 4.x 自绘界面,靠 OCR + 像素定位。拿不准就先用 ScreenOCR 扫描聊天面板底部工具栏定位话筒/发送按钮,再点击,别依赖硬编码坐标。
8. **发语音条**:不是「按住说话」,是三步:点「发语音」按钮 → 微信开始录音 → 点「发送语音」。需要虚拟声卡(VB-Cable)把 TTS 音频桥进微信录音,本机默认已装(录音=CABLE Output,播放=CABLE Input)。
9. **启动 bat 路径错误**:仓库自带 start_ai_reply.bat 里若写的旧路径(C:\Users\Administrator\...),改成本机实际项目路径,或直接命令行跑 .venv python。
10. **多账号**`WeChatDB(account=...)` + `list_accounts()` 支持多微信账号,默认探测当前登录账号。
## 安全提示
- Gitea 仓库是公开只读的,clone 不需要账号;写操作(推代码)才要凭证。
- ai_config.json 里有客户自己的 API Key,别提交到仓库、别外发截图。
- 数据库解密密钥只从本机 Weixin.exe 进程内存读取,数据不出本机。