核心概念

这一页先解释 iamai 的词汇。理解这些概念后,再读教程和 API 会更顺。

Runtime —

Runtime 是运行时容器。它负责读取配置、创建适配器、加载插件、管理状态、调度事件、 处理热重载,并向插件提供依赖注入。

Adapter

Adapter 是协议边界。它把外部系统的消息转换成统一的 Event,也负责把 Message 发回外部系统。

适配器应该处理网络、鉴权、协议格式和限流等边界问题;业务逻辑不应该依赖某个平台的 原始 payload。

Event

Event 是框架内部的统一事件模型。插件通常读取这些字段:

  • event.type

  • event.detail_type

  • event.user_id

  • event.channel_id

  • event.text

  • event.raw

raw 仍然保留平台原始数据,但应当作为补充信息,而不是插件的主要依赖。

Message

Message 是协议无关的消息链容器。插件可以从纯文本开始,也可以构造更复杂的 segment。 适配器在发送时再转换成目标协议格式。

Plugin

Plugin 是业务模块。一个插件可以声明:

  • 命令 handler;

  • 普通消息 handler;

  • 事件 handler;

  • middleware;

  • Pydantic 配置模型;

  • 持久化状态。

Context

Context 是一次 handler 执行的上下文。它把 runtimeadapterpluginevent、匹配结果和快捷方法放在一起。

Rule 与 Permission

Rule 负责判断事件是否应该进入某个 handler。Permission 负责判断调用者是否有资格 执行该 handler。

Rule 可以组合文本规则、事件字段规则、原始 payload 字段规则和命名 Ruleset。规则成功时 可以返回 payload,这些值会进入 ctx.matches 并参与依赖注入。Permission 只看“谁能做”, 不要和消息形态判断混在一起。

把这两层拆开会让业务代码更清晰,也让管理命令、群聊权限和平台限制更容易审计。规则细节见 规则参考

State 与 Session

state 用于保存插件状态。SessionManager 用于等待同一会话里的下一条消息。 当前 session key 默认由 adapter:channel:user 组成,避免群聊中不同用户互相串会话。