元数据

July 30, 2026 · View on GitHub

本页说明 PluginMetadata / extra 如何声明帮助、权限、冷却、热载与装包生效。平台按此消费;命令 ID 须全链路一致。

最小群命令插件可先看 写第一个插件。热载与装包正交细节见 Reload 与 Activation

必填面

字段消费者
name / description / usage帮助图、插件说明
extra.menu_data帮助结构化入口、治理展示
extra.help_tag帮助图总览分组(`core
extra.help_audience帮助可见性:superuser / maintainer 时整插件不进普通总览
extra.command_permissionsmatcher 权限、WebUI 覆盖、「何人可用」
extra.command_limits冷却默认与展示
extra.reload_policy热载分级
extra.activation_policy扩展装包生效(官方 / 社区注册)

usagemenu_data

字段职责
usage命令展示;用 usage_line + join_usage
menu_datafunc / trigger_* / brief_des / detail_des;权限绑 command_permission(s)

MUST NOT:在 usagetrigger_condition 写死权限角色。细则:cmd_perm

帮助「谁能看见」用 help_audience(插件级或 menu_data 条目级),与「谁能执行」的 command_permissions 分开;普通 / 超管私聊双视图见 牛牛帮助

command_permissions

"command_permissions": [
    {"id": "my_plugin.demo", "label": "牛牛示例", "default": "everyone"},
]

同一 id 贯穿 matcher、WebUI 覆盖、帮助「何人可用」。

command_limits

"command_limits": [
    {"id": "my_plugin.demo", "cd_sec": 10},
]

即使 handler 内自行判断冷却,也 MUST 声明默认值。见 command_limits

llm_tools 的素材透传

llm_command_tool_row() 默认不携带原消息的图片、@ 或「自己」,避免帮助、点歌等文本命令被追加无关参数。

画图、表情等需要引用素材的工具显式声明 source_segments="media"

llm_command_tool_row(
    name="my_plugin.make",
    command_id="my_plugin.make",
    description="生成图片",
    parameters={"type": "object", "properties": {}},
    command_template="牛牛制作",
    source_segments="media",
)

media 会透传非 bot 的 @、图片与用户显式写出的「自己」;若原消息没有这些素材,则补「自己」供生成类插件使用。

ingress_route

可选。声明该插件在入站预筛里的车道与是否吃闲聊:

extra={
    "ingress_route": {
        "lane": "storage",   # 可选:command / chat / storage / remote 等调度档
        "passive": True,     # 闲聊严格模式下仍会激活(复读、智能对话、局内玩法等)
        "always_run": False, # 极少用:几乎每条群消息都激活
    },
}

热群默认开启闲聊严格预筛(PALLAS_CHAT_MATCHER_STRICT):非命令消息主要只跑 passive / always_run 与路由命中的模块。

  • passive: true:声明本插件要吃闲聊车道(复读、智能对话、局内玩法等)。不标则严格模式下普通群聊可能收不到事件。
  • always_run: true:极少用;几乎每条群消息都激活,热群代价高。
  • lane:调度档位(与是否 passive 正交),如 storage / remote

用户向说明(含对照表)见 语料联邦 · 热闹群与入站设计

reload_policy

类型:Literal["config_only", "metadata", "full"]pallas.core.plugin_reload.metadata.ReloadPolicy)。默认 config_only

含义
config_onlyWebUI 保存配置即可;无需模块 reload
metadata帮助 / 权限 / ingress 等声明变更需重建索引
full需完整模块重载或重启

activation_policy

类型:Literal["hot-reloadable", "workers-restart", "full-restart"]。与 reload_policy 正交。

装包 / 升级后
hot-reloadable可热载激活(视部署模式)
workers-restart需重启 worker
full-restart需全进程 / hub+worker 重启

官方表:OFFICIAL_EXTENSION_ACTIVATION_POLICYplugin_matrix.py)。

最小组合

插件类型MUST
纯命令型command_permissions + command_limits + menu_data
维护者向help_audienceactivation_policy(若扩展)、WebUI/运维说明
带配置页上列 + reload_policy + 热载接入
extra={
    "command_permissions": [
        {"id": "my_plugin.demo", "label": "牛牛示例", "default": "everyone"},
    ],
    "command_limits": [
        {"id": "my_plugin.demo", "cd_sec": 10},
    ],
    "reload_policy": "metadata",
    "activation_policy": "hot-reloadable",
}

可选增强:menu_templateplugin_storage、完整 menu_dataknowledge_sources

检查

  • 命令 ID 全链路一致
  • 权限未写死在文案
  • 帮助仅靠 metadata 可理解
  • 装包生效方式已声明(扩展)

后续阅读