认识 Mioku
Mioku 是一个插件式的机器人框架,用 TypeScript 编写,运行于 Node.js(>= 22)上。它负责把「平台的消息」变成「插件能处理的事件」,再把「插件想做的事」变成「平台的动作」。至于机器人具体会做什么——聊天、查天气、管理群、看图说话——全部由插件决定。
机器人的构成
一个 Mioku 机器人由下面几部分组成:
- 适配器 (Adapter):负责对接具体平台。它把平台的原始消息转换成 Mioku 的通用事件,也把插件的操作翻译回平台能懂的指令。
- 能力 (Capability):适配器对外承诺的「我能做这件事」。发消息、禁言、查群成员……每个操作都是一项能力,由适配器注册,插件按需调用。
- 插件 (Plugin):机器人的功能本体。里面用
definePlugin声明自己,然后监听事件、调用能力、完成任务。 - 服务 (Service):跨插件复用的能力提供方,比如 AI 服务、配置服务、截图服务。插件通过服务名取用它们。
它们的关系画出来大概是这样的:
text
平台 (QQ / OneBot / 终端)
↓
适配器 Adapter ←── mioku-adapter-onebotv11 / icqq / stdin
↓
能力 Capability ←── 适配器注册「能做」的操作
↓
事件总线 EventBus
↓
┌─────────┴─────────┐
插件 Plugin 服务 Service
(功能实现) (能力提供)把「适配器」和「能力」合起来看会更清楚:适配器负责连接,能力负责操作。插件不用关心对面是 NapCat 还是 icqq,它只看到一群能力——sendGroupMsg、banMember、getGroupList——这些能力背后是谁实现的,插件不知道,也不想知道。
Agent 优先
Mioku 最核心的设计取向是「Agent 优先」:机器人不只是关键词触发回复,而是让 AI 去理解消息、调用工具、完成任务。为此框架内置了一整套 AI 服务契约——实例、提供商、模型、技能、工具、用量统计——插件注册一个技能(Skill),AI 就能在对话中调用它。chat 插件就是这套体系最大的使用者。
