Files
NeoBot/docs/core-concepts/architecture.md
K2cr2O1 7880f0f928 docs: 更新文档内容并优化语言风格
重构所有文档内容,使用更简洁直接的语言风格
更新架构、插件开发、部署等核心文档
优化代码示例和图表说明
统一术语和格式规范
2026-01-13 04:09:13 +08:00

63 lines
2.6 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.
# 核心架构
别把 NEO Bot 当成那些写着玩的玩具。这玩意的设计目标就一个:**又快又稳**。
不搞虚头巴脑的,只上最实在的。
## 1. 运行时架构
### Python 3.14 + JIT
我们直接上了 Python 3.14,默认就开 JIT (即时编译)。
* **啥原理**: JIT 会在代码跑的时候,把那些一遍遍执行的热点代码直接编译成机器码,下次再跑就不用解释器了,快得飞起。
* **有啥用**: 正则匹配、数据处理这种吃 CPU 的活儿,效果特别明显。
### Mypyc 编译 (AOT)
光 JIT 还不够爽。核心模块(`core/ws.py`, `core/managers/*.py`)我们都用 Mypyc 编译成了 C 扩展。
* **啥原理**: Mypyc 直接把带类型提示的 Python 代码翻译成 C再编译成二进制文件。
* **有啥用**: 核心代码跑起来跟 C 差不多快,还能绕开 GIL。
### 异步 IO 模型
* **Linux**: 必须用 `uvloop`,这玩意儿是基于 libuvNode.js 同款)的,公认最快。
* **Windows**: 用的是系统自带的 IOCP虽然没 uvloop 猛,但在 Windows 上已经是最好的选择了。
* **: 我们把 `winloop` 禁了,因为它跟 Playwright 八字不合。
## 2. 网络架构
### 正向 WebSocket + FastAPI 混合模式
这套组合拳,既方便部署,又能随便扩展。
* **连接层 (Client)**: Bot 是个客户端,主动去连 OneBot (NapCat)。
* **好处**: 你电脑能上网就行,不用搞公网 IP不用内网穿透。
* **服务层 (Server)**: Bot 自己也带了个 FastAPI 服务。
* **好处**: 能对外提供 HTTP 接口,还能搞个 Web 控制台啥的。
```mermaid
graph LR
subgraph Local [你的电脑/服务器]
Bot[NEO Bot]
FastAPI[FastAPI Server]
Browser[Playwright Pool]
end
subgraph Remote [外部]
NapCat[NapCatQQ]
User["用户浏览器"]
end
Bot -- "WebSocket (主动连接)" --> NapCat
User -- "HTTP (访问网页)" --> FastAPI
Bot -- "内部调用" --> Browser
```
## 3. 资源管理架构
### 单例管理器 (Singleton Managers)
所有管事的(指令、权限、浏览器、图片)都是全局独一份。
* **随便用**: 在哪都能直接 `import`,不用传来传去。
* **数据统一**: 全局就一份数据,不会乱。
### 资源池化 (Pooling)
我们这没有“一次性”的说法,用完的东西都得回收。
* **Browser Pool**: 浏览器页面提前开好,用完洗干净放回去,谁也别想每次都等浏览器启动。
* **Connection Pool**: Redis 和 HTTP 请求都用连接池,省掉反复建连接的开销。