介绍
约 552 字大约 2 分钟
2026-09-15
兼容 TRSS-Yunzai 生态的机器人框架,内核用 TypeScript 编写。
- 旧插件零改动:云崽(Yunzai / TRSS-Yunzai)插件直接放进
plugins/就能用,不用改一行代码 - 改代码不用重启:
plugins/下的 js 变更约 2 秒自动重载(含index.js与apps/、lib/深层模块),重载时按插件清理它注册的Bot.express路由与 WebSocket 路径,自带面板的插件 反复重载也不会路由重复 - 内核 TypeScript:
src/全量 TS,编译到lib/core/,可tsc --noEmit类型检查 - 轻量:不带内置业务(游戏、攻略、AI 这些都不在框架里),开箱功能只有状态/帮助/主人/词条/重启这些基础件
- 可换适配器:协议端通过适配器插件接入,
Bot.adapter.push()是唯一契约
三层结构
| 层 | 位置 | 职责 |
|---|---|---|
| 内核 | src/ → lib/core/ | 事件总线、插件注册与分发、配置中心、存储、渲染协议、指标、日志 |
| 兼容层 | lib/**(手写 JS) | 复刻云崽契约的 shim:物理路径、全局变量、e 对象、Bot 语义 |
| 插件 | plugins/** | 云崽插件与 JiuLi 原生插件共用同一套注册表和分发流程 |
为什么兼容层必须物理存在:旧插件里写死的 ../../lib/plugins/plugin.js 这类相对路径无法重定向, 所以这些路径被原样保留,做成转发到内核的 shim。
兼容范围
- 插件基类
plugin:rule/task/handler/accept/init()/ 上下文会话 /renderImg - 事件对象
e的全部常用字段与方法面(e.group/e.friend/e.member/e.isMaster…) - 全局变量
Bot/logger/redis/segment/Renderer/plugin/start_type - 渲染模板约定(art-template +
pluResPath)、lib/puppeteer/puppeteer.js截图入口 - 消息计数 Redis 键(
Yz:count:*),旧插件可读 - 适配器契约
Bot.adapter.push、Bot.em逐级派发、Bot.express/Bot.wsf
详见 兼容性。
接下来
许可
AGPL-3.0,与 TRSS-Yunzai 保持一致。本项目是其重构版本,保留原作者(TimeRainStarSky、Yoimiya-Kokomi、Le-niao 等)的著作权声明。
