Initial commit

This commit is contained in:
QwenPaw committed 2026-06-19 06:38:31 +00:00
commit f45881dc88
161 files changed
+21597

No files matched your search

+206
View File
@@ -0,0 +1,206 @@
# Qihu-AIFlow 频道功能:自研方案 vs OneBot 融合论证报告
> **日期**:2026-06-09
> **项目**:Qihu-AIFlow 智能自动化PaaS平台
> **目标**:论证频道功能的最优实现路径,服务平台核心宗旨
---
## 一、背景与核心宗旨
### 平台频道功能的核心价值
让用户**无需自建 openclaw、hermes agent、qwenpaw 等个人AI助理平台**,通过绑定多个**个人微信/飞书/钉钉账号**实现移动端使用。
### 商业模式
- **普通用户**:绑定 1 个账号(免费)
- **订阅会员**:绑定多个账号
### 当前现状
- 已实现微信频道二维码绑定流程
- 已有 unified_webhook 端点、消息组件系统、平台适配器注册、MessageSession、Pipeline管道、Redis事件总线
- 已重构清理旧版 `_handle_*_webhook` 函数(约330行冗余代码),统一通过适配器模式工作
---
## 二、三种方案对比
### 方案A:继续自研方案(当前方向)
**架构**:基于已有的适配器模式 + Webhook 端点 + MessageSession,逐个实现各平台的适配器
**优点**:
- 完全可控,定制化程度最高
- 现有代码架构良好
- 平台登录态完全自主管理,可精确实现会员分级
- 无需额外部署依赖服务
**缺点**:
- 每个平台需自行开发适配器,**工作量大**
- 各平台API可能变化,需持续维护
- 微信个号接入存在被封风险
**开发估算**:13-21天
---
### 方案B:接入 OneBot 标准(推荐)
**架构**:部署 `onebots` 作为统一服务端,Qihu-AIFlow 通过 OneBot 标准协议通信
**优点**:
- **开箱即用**:已支持 QQ、微信、钉钉、飞书、企微、Telegram、Slack、Discord 等 10+ 平台
- **社区维护**:平台适配器由社区维护
- **标准协议**:OneBot 生态丰富
- **会员分级容易实现**:在 OneBot 适配器层做连接数控制
- **微信个号**:已有基于 openclaw/gewechat 的适配
**缺点**:
- 需要额外部署 Node.js 服务
- 依赖第三方项目
**开发估算**:4-6天
---
### 方案C:接入 AstrBot 生态(备选)
**架构**:部署 AstrBot 作为消息中间层
**缺点**:功能大量重叠,会员分级难以嵌入,耦合度高
---
## 三、对比矩阵
| 维度 | 自研方案 (A) | OneBot融合 (B) | AstrBot接入 (C) |
|------|:----------:|:-------------:|:--------------:|
| **开发周期** | 13-21天 | **4-6天** | 7-10天 |
| **平台覆盖** | 需逐个开发 | **10+平台** | 4-5个 |
| **微信个号** | 需自研适配 | **已有社区适配** | 已有适配 |
| **维护成本** | 高 | **低** | 中 |
| **会员分级** | 精确控制 | 适配器层控制 | 困难 |
| **定制化** | **最高** | 中 | 低 |
| **稳定性** | 自行保障 | **社区保障** | 社区保障 |
---
## 四、推荐路径:方案B(OneBot 融合)
### 推荐理由
1. **开发效率最高**:节省约70%开发时间
2. **平台覆盖最广**:10+平台开箱即用
3. **维护成本最低**:社区维护平台适配
4. **符合平台宗旨**:统一协议、多平台绑定、会员分级
### 实施步骤
```
Phase 1: OneBot 适配器(2-3天)
├── 部署 onebots 服务(Docker容器)
├── 编写 OneBotAdapter(继承已有适配器接口)
├── 配置 onebots 对接微信个号(扫码登录)
└── 测试微信消息收发
Phase 2: 会员分级集成(1天)
├── 在 OneBotAdapter 中实现连接数限制
├── 用户管理页面增加频道绑定管理
└── 数据库增加 user_channel_bindings 表
Phase 3: 多平台扩展(每个平台1-2天)
├── 钉钉适配(onebots 原生支持)
├── 飞书适配(onebots 原生支持)
└── Telegram/Slack等
```
### 架构图
```
┌─────────────────────────────────────────┐
│ Qihu-AIFlow Docker │
│ │
│ Adapter Registry │
│ ├── WeChatAdapter (自研,备选) │
│ ├── OneBotAdapter (主要) ◄──┐ │
│ └── ...其他适配器 │ │
│ │ │
│ MessageSession + Pipeline │ │
│ + Redis 事件总线(已有架构) │ │
└───────────────────────────────┘ │
▲ │
OneBot V11/V12 │
| │
┌───────────────────────────────────┘─────┤
│ onebots 服务 (Docker 独立容器) │
│ Node.js,负责协议转换 │
│ │
│ 平台适配器: │
│ ├── 微信个号 (openclaw/gewechat) │
│ ├── 钉钉 (开放平台API) │
│ ├── 飞书 (开放平台API) │
│ └── Telegram/Discord/Slack... │
└──────────────────────────────────────────┘
```
---
## 五、OneBot 适配器实现要点
### 消息格式转换(OneBot → MessageSession)
```python
class OneBotAdapter(BaseAdapter):
async def handle_onebot_message(self, payload: dict) -> MessageSession:
platform = payload.get("platform", "unknown")
platform_type = payload.get("message_type", "private")
platform_id = str(payload.get("user_id", ""))
return MessageSession(
platform=platform,
session_id=f"{platform}_{platform_id}",
message=payload.get("message", ""),
user_info={"platform_id": platform_id, "platform": platform},
)
async def send_message(self, session: MessageSession, reply: str):
return await self._call_onebot_api("send_msg", {
"message_type": session.msg_type or "private",
"user_id": int(session.user_info["platform_id"]),
"message": reply,
})
```
### 会员分级控制
```python
async def validate_connection(self, platform: str, user_id: str) -> bool:
user = await self.db.get_user_by_platform(platform, user_id)
if not user:
return False
binding_count = await self.db.count_user_bindings(user.id)
if binding_count >= 1 and not user.is_subscribed:
return False # 免费用户只能绑定1个平台
return True
```
---
## 六、后续建议
### 短期(1-2周)
1. 部署 onebots 服务(Docker 容器)
2. 实现 OneBotAdapter(2-3天)
3. 配置微信个号接入并测试
4. 会员分级控制
### 中期(3-4周)
1. 接入钉钉、飞书
2. 用户管理页增加频道绑定管理
3. 优化微信扫码流程
### 长期
1. 跟踪 onebots 社区更新
2. 考虑公开 OneBot 接口
---
*报告完*