Files
wechatAiclaw/DEBUG.md
丹尼尔 b7ef2569c4 fix: bug
2026-03-11 18:19:30 +08:00

3.2 KiB
Raw Blame History

本地调试说明

1. 启动开发环境

./run-dev.sh

2. 账号 key 与消息接收

  • 登录页使用的 key 需要与后端「消息接收」使用同一 key否则收不到该账号消息。
  • .env 中设置 KEY=你的key(或 WECHAT_WS_KEY=你的keyWS_KEY=你的key),与登录时填的 key 一致即可。

3. 消息接收WS 与回调两种方式

不设 CALLBACK_BASE_URL默认适合本地

  • 不配置 CALLBACK_BASE_URL 时,后端用 WebSocket 连接 7006 的 GetSyncMsg 拉取消息。
  • 7006 若拒绝 WS日志会出现 WS disconnected ... server rejected WebSocket,消息可能收不到,但不影响登录、发消息、联系人等接口调试。

使用回调7006 主动 POST 到本机)

  • 7006 在公网,无法直接访问你本机的 localhost,需要先用 ngrok 把本机 8000 暴露到公网,再设回调。

一键用 ngrok 调通(推荐):

  1. 先配置 ngrok仅首次ngrok 需登录并配置 authtoken否则会报 ERR_NGROK_4018

  2. 终端 1:执行

    ./run-ngrok.sh
    

    脚本会启动 ngrok http 8000,并把得到的公网隧道地址自动写入 .envCALLBACK_BASE_URL(不会把 signup/dashboard 等链接误写成回调地址)。

  3. 终端 2:启动服务

    ./run-dev.sh
    

    后端启动时会读取 CALLBACK_BASE_URL 并向 7006 注册 SetCallback新消息会由 7006 POST 到你的 ngrok 地址。

  4. 打开 http://localhost:3000 登录,用同一 key 收发消息即可验证回调是否生效。

手动步骤(不用脚本时):

  1. 终端运行 ngrok http 8000,记下输出的 https 地址(如 https://xxxx.ngrok-free.app)。
  2. .env 中增加或修改:CALLBACK_BASE_URL=https://xxxx.ngrok-free.app
  3. 执行 ./run-dev.sh(若已在运行则重启)。之后新消息由 7006 POST 到 https://xxxx.ngrok-free.app/api/callback/wechat-message,不再走 WS。

4. 手动模拟回调(不暴露公网也可测接口)

不跑隧道时,可直接用 curl 测回调接口是否正常:

# 替换成你的 key
curl -X POST 'http://localhost:8000/api/callback/wechat-message?key=HBpEnbtj9BJZ' \
  -H 'Content-Type: application/json' \
  -d '{"MsgList":[{"FromUserName":"wxid_test","Content":"你好","MsgType":1}]}'

返回 {"ok":true} 且后端无报错即表示回调入口和 _on_ws_message 逻辑正常。

5. 查看日志

  • 后端:backend/data/logs/app.log(或控制台)
  • 搜索 SetCallbackcallback/wechat-messageWS disconnected 等便于排查消息接收问题。

6. 只调试后端 API

source .venv/bin/activate
cd "$(dirname "$0")"
uvicorn backend.main:app --host 0.0.0.0 --port 8000

再用浏览器或 Postman 访问 http://localhost:8000/docs 调试接口。