Files
abot/README.MD

235 lines
7.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.
# ABOT
ABOT 是一个面向长期维护的微信机器人项目包含消息接入、插件体系、管理后台、MySQL / Redis 存储、定时任务以及 AI 扩展能力。
当前仓库已经完成一轮面向开源发布的工程整理,适合用于二次开发、私有部署和多版本 `wechat_ipad server` 接入演进。
## 项目特点
- 插件化机器人主链路,便于按业务拆分能力
- 自带 Dashboard 管理后台,支持状态查看、插件管理、消息与联系人相关页面
- 支持 `legacy_855``server_864` 两类 `wechat_ipad server` 适配入口
- 配置统一走 `.env + config.yaml`,登录态运行时状态落到 provider 独立目录
- 提供 Docker / Docker Compose 基础部署骨架,便于快速上线验证
## 当前能力范围
- 微信消息接入与实时处理
- 插件加载、启停、热更新治理
- MySQL + Redis 数据存储
- 联系人、群信息、消息归档、统计与部分运营分析页面
- AI 自动回复、消息总结、成员画像、内容推送等扩展能力
## 快速开始
### 方式一Docker Compose
适合第一次快速跑通完整部署骨架。
1. 复制 Docker 环境变量模板
```bash
cp .env.docker.example .env
```
Windows PowerShell
```powershell
Copy-Item .env.docker.example .env
```
2. 至少修改以下变量
- `ABOT_DB_PASSWORD`
- `WECHAT_SERVER_URL`
- `WECHAT_SERVER_IP`
- `WECHAT_SERVER_PORT`
- `WECHAT_SERVER_TYPE`
- `WECHAT_SERVER_KEY`:仅 `server_864` 必填
- `ABOT_DASHBOARD_PASSWORD`
- `ABOT_DASHBOARD_SECRET_KEY`
3. 启动服务
```bash
docker compose up -d --build
```
4. 访问 Dashboard
- 默认地址:`http://127.0.0.1:8888`
- 默认用户名:`admin`
- 默认密码以你的 `.env``ABOT_DASHBOARD_PASSWORD` 为准
更完整的上线说明见 [docs/Docker部署说明.md](/d:/learn/abot/docs/Docker部署说明.md:1)。
### 方式二:本地直跑
1. 准备 Python 3.10+
2. 准备 MySQL、Redis
3. 复制配置模板
```bash
cp config.example.yaml config.yaml
cp .env.example .env
```
Windows PowerShell
```powershell
Copy-Item config.example.yaml config.yaml
Copy-Item .env.example .env
```
4. 安装依赖
```bash
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
pip install pysilk-mod
```
5. 启动项目
```bash
python main.py
```
## 配置约定
### 静态配置
推荐只维护以下两类文件:
- `.env`
- `config.yaml`
`config.yaml` 支持 `${ENV_NAME}` / `${ENV_NAME:default}` 占位符,因此更推荐把敏感配置写进 `.env`,把结构与默认值保留在 YAML 模板里。
### wechat_ipad 配置
当前 `wechat_ipad` 的静态连接配置统一走环境变量:
- `WECHAT_SERVER_URL`
- `WECHAT_SERVER_IP`
- `WECHAT_SERVER_PORT`
- `WECHAT_SERVER_TYPE`
- `WECHAT_SERVER_KEY`:仅 `server_864` 必填
- `WECHAT_LOGIN_QR_API``server_864` 登录二维码接口选择,默认 `new_x`
- `WECHAT_LOGIN_WAY``server_864` 使用 `GetLoginQrCodeNewX` 时的终端形态,默认 `mac`
运行时状态不再要求人工维护,会自动写到:
- `wechat_ipad/providers/<server_type>/runtime_state.toml`
这意味着:
- 每个 provider 的登录态彼此隔离
- 切换 `855 / 864` 不会默认串用同一份状态
- 开源仓库不需要再长期维护多份分散配置文件
### 864 登录补充说明
`server_864` 现默认优先调用 `POST /login/GetLoginQrCodeNewX` 获取二维码;若目标 server 不支持,再自动回退到旧的 `GetLoginQrCodeNew`
部分 864 版本在扫码后不会立刻登录成功,而是会在 `CheckLoginStatus` 中返回 `VerificationUrl`。当前 Dashboard 已支持直接展示并打开这个链接,方便你在新环境完成微信安全验证。
## Docker 交付说明
当前仓库已经提供以下开源友好交付物:
- [Dockerfile](/d:/learn/abot/Dockerfile:1)
- [docker-compose.yml](/d:/learn/abot/docker-compose.yml:1)
- [docker-entrypoint.sh](/d:/learn/abot/docker-entrypoint.sh:1)
- [.env.docker.example](/d:/learn/abot/.env.docker.example:1)
容器化方案的边界是:
- `abot``mariadb``redis` 已拆成独立服务
- `wechat_ipad server` 仍建议跑在宿主机或独立机器
- Dashboard 账号、密码、Session Secret、Webhook Token 都支持环境变量覆盖
## 目录结构
```text
abot/
├── admin/ # 管理后台
├── base/ # 插件基础接口与管理能力
├── db/ # 数据库访问层与 SQL 脚本
├── docs/ # 部署、设计与路线图文档
├── plugins/ # 业务插件
├── utils/ # 通用工具与服务
├── wechat_ipad/ # 微信接入与 provider 适配层
├── Dockerfile
├── docker-compose.yml
├── config.example.yaml
├── .env.example
└── main.py
```
## Dashboard 与默认安全项
Dashboard 默认配置文件位于 [admin/dashboard/config.toml](/d:/learn/abot/admin/dashboard/config.toml:1)。
为了适配公开仓库,这一层已经做了两件事:
- 仓库中的默认密码已不再使用弱口令 `admin123`
- Docker / 环境变量可以直接覆盖后台账号、密码和 webhook token
正式部署前仍建议你明确设置:
- `ABOT_DASHBOARD_USERNAME`
- `ABOT_DASHBOARD_PASSWORD`
- `ABOT_DASHBOARD_SECRET_KEY`
- `ABOT_TRENDRADAR_WEBHOOK_TOKEN`
## License 与开源边界
### 主许可证
当前仓库主代码采用 [MIT License](/d:/learn/abot/LICENSE:1)。
一般情况下,不需要为了“把仓库开源”额外改成别的许可证;但你仍需要确认两件事:
1. `LICENSE` 中的版权主体是否就是你希望公开使用的名字
2. 仓库里的第三方资源、字体、二进制是否都允许再分发
相关说明见 [THIRD_PARTY_LICENSES.md](/d:/learn/abot/THIRD_PARTY_LICENSES.md:1)。
### 不建议直接公开提交的内容
- `.env`
- `config.yaml`
- `wechat_ipad/providers/*/runtime_state.toml`
- 真实数据库密码、LLM API Key、Webhook Token
- 未确认授权来源的字体、二进制与业务素材
## 已知仍需你自行确认的事项
以下内容我已经在文档中标出来,但不适合由我直接替你做法律判断:
- `LICENSE` 版权主体是否需要改成你当前对外公开的名称
- `fonts/` 下字体文件的再分发许可
- `wechat_ipad/ipad859go` 的来源与授权
- `resource/` 目录中的业务资料是否适合公开仓库传播
## 路线图
当前更值得优先推进的方向:
- 继续完善 `864 provider` 真机联调与高频接口覆盖
- 补齐 Docker / 部署回归清单
- 插件治理、任务中心、可观测性增强
- 开源资产合规清点
已整理的工程规划文档:
- [docs/工程优化与Feature清单.md](/d:/learn/abot/docs/工程优化与Feature清单.md:1)
- [docs/wechat_ipad多版本Server适配路线图.md](/d:/learn/abot/docs/wechat_ipad多版本Server适配路线图.md:1)
## 使用与贡献说明
- 欢迎按自己的场景二次开发
- 提交代码前请确认未误带本地私有配置、日志和登录态
- 涉及内容抓取、自动推送、第三方平台接口的能力,请自行评估合规与风控要求