Files
NeoBot/docs/core-concepts/architecture.md
K2cr2O1 7868fb2b41 docs: 更新性能优化文档并修复命令管理器帮助输出
更新性能优化相关文档,详细说明 Python 3.14 JIT 编译器的使用方法和原理,补充与 Mypyc 的互补策略。同时修复命令管理器中帮助信息的输出方式,移除图片发送仅保留文本输出。

调整部署文档结构,明确两种性能优化方案(AOT 和 JIT)的配置方法和适用场景。完善架构文档中关于 JIT 的原理和启用方式说明。
2026-01-13 10:18:48 +08:00

1.8 KiB
Raw Blame History

骨架

Neobot是面向内部开发者的我会开源但是写的很烂。。。

1. 动力核心

Python 3.14 + JIT

镀铬酸钾创项目的时候用的 Python 3.14 3.14兼容JIT那就这样吧

  • 何原理: 运行时把热点代码编译成机器码Just-In-Time
  • 何用途: 密集CPU运算能提升一些尤其是插件里的循环和函数调用
  • 怎么开: 启动时加 -X jit 参数

Mypyc 编译 (AOT)

光 JIT 还不够。。核心模块(core/ws.py, core/managers/*.py我编译成了C扩展

  • 何原理: 因为这个项目有很多类型提示然后我就编译成C库了。。。
  • 何用途: WS和manager下边的模块都是机器码运行或许会快一些。。。

异步 IO 模型

  • Linux: uvloop
  • Windows:IOCP
    • : winloop 死了,会和面具打架。。。

2. 连接模式

正向 WebSocket 模式

这是一种简单直接的模式

  • 主动出击 (Client): Bot 是个客户端
    • 好处: 你电脑能上网就行实际上是因为没公网ip哈。。。
graph LR
    subgraph Local [你的电脑/服务器]
        Bot[NEO Bot]
        Browser[Playwright 页面池]
    end
    
    subgraph Remote [外部]
        NapCat[NapCatQQ]
    end

    Bot -- "WebSocket (主动连接)" --> NapCat
    Bot -- "内部调用" --> Browser

3. 资源管理

单例管理器

所有东西(指令、权限、浏览器、图片)都是全局独一份的。

  • 随叫随到: 在哪都能直接 import
  • 绝对权威: 全局就一份数据

资源池化

别几把开多个实例。。。

  • Browser Pool: 浏览器页面提前开好,用完洗干净放回去
  • Connection Pool: Redis 和 HTTP 请求都用连接池