Initial commit
This commit is contained in:
commit
f45881dc88
161 files changed
+21597
No files matched your search
@@ -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 接口
|
||||
|
||||
---
|
||||
|
||||
*报告完*
|
||||
Reference in new issue
Block a user