YianBot
1、立项背景和目标
立项背景:我此前写过多个 Python 后端项目(机器人、接口服务等),每开一个新项目都要重复搭一遍脚手架:路由注册、参数校验、依赖管理、配置读取、数据库连接、鉴权、异常处理……业务代码量还不到脚手架的一半;而当多个业务服务要跑在同一台服务器上时,端口占用和路由冲突又成了新问题。写机器人时还有一类特殊痛点:QQ 协议事件类型多、回调无序,业务逻辑散落成一堆 if/else,新增一个功能要到处找入口。
项目目标:分两层——① 自研一个"多应用微内核"后端框架 YianCloud,用"约定优于配置"把路由、依赖注入、中间件、生命周期、多数据源全部自动化,一次搭建、按应用隔离扩展、单入口按域名分发;② 在框架之上落地一个完整的 AI 社交机器人应用"小逸安"作为框架的能力验证与业务载体,覆盖 LLM 对话、实时 WebSocket、小游戏、自动化审批等典型场景。
2、软件功能、核心功能模块的介绍
① 框架内核(core / bootstrap / infrastructure):
- 全项目扫描与自动装配:启动时递归扫描所有 .py 文件,把类注册进自研 DI 容器,按基类自动区分控制器/中间件/生命周期并完成装配,业务代码零注册、零布线;
- 自动路由:控制器的包路径 + 类名自动转换为 REST 路径(如 ChatController → /api/chat),方法名即 HTTP 动词(get/post/put/delete/patch,支持 ws),每个子应用自带独立 Swagger 文档;
- 依赖注入容器:单例缓存 + 构造函数类型注解递归注入 + 循环依赖检测;
- 洋葱模型中间件(自研纯 ASGI 桥接):App-Key 接口鉴权、文档与 WS 路径白名单、本机免验;
- 统一全局异常处理与统一响应体;
- 就近配置系统:代码就近向上查找 configs/*.json、根目录兜底,密钥配置不进 Git;
- 域名网关:单入口按 Host 把不同子应用分发到各自路由与中间件链,互不冲突、可横向拆分。
② bot 应用——QQ 群机器人"小逸安"(OneBot v11 / NapCat 反向 WebSocket):
- AI 群聊/私聊:被 @ 或私聊时拉取最近 10 条聊天记录,转成大模型上下文,由 DeepSeek 按 LangGPT 人格化提示词生成 1~3 段"拟人化"回复,随机延迟 2~3 秒逐条回发,模拟真人聊天节奏;
- "球球大作战"小游戏:群指令把 QQ 用户投进 800×800 的 agar.io 式世界,AI 自动寻食/猎杀/分裂/碰撞,世界状态经 WebSocket 实时广播到前端;
- 每日运势:群指令触发,按用户当日缓存的随机幸运指数 + 毒舌文案 + 当日最高榜,固定窗口限流防刷;
- 好友/入
社交