Aeria
GitHub
改 · 3.9

插件能用什么

最后核对 2026-10-08对应提交 db60e96依据 plugins.py · plugin_discord.py · plugin_qq.py · config.py · PLUGIN_PERMISSIONS.md

插件启用时拿到一个 context:它只带这个插件被允许用的那几样接口。能力分三层——这台机器允许什么、插件要什么、装的人确认了什么——三层都放行才拿得到。

本页 5 节
  1. 三层
  2. context 上有什么
  3. 能力表
  4. 钩子
  5. 没做到的

三层

  1. 这台机器允许插件申请哪些:人格配置 [plugins].allowed_capabilities(3.21)。上限之外的,插件写了也启用不了。
  2. 插件要哪些:plugin.json 的 permissions、optional_permissions(3.8)。
  3. 装的人确认了哪些:必需的装时一次确认,可选的在插件设置里一项一项开。确认记录在宿主自己的目录里(data/plugin_host/grants.json),不在插件能写的地方。插件更新后要了新的必需能力,旧的确认作废。

context 上有什么

能力表

每一项宿主怎么守(限流、只能删自己发的、会话最长多久……)写在仓库的 docs/PLUGIN_PERMISSIONS.md。

钩子

入口对象上实现了这几个方法的,宿主在对应的时候调用:

只发这几个;不在表里的钩子名,宿主一律不发(名单和要的能力:src/aeria/plugins.py 的 HOOK_PERMISSIONS;改回复计划那一个走 invoke_generation_plan)。每个钩子最多等 2 秒([plugins].hook_timeout_seconds),超时当没回;钩子里抛错只记日志,不影响人格。

没做到的