Repository navigation
zh dev star plugin new
欢迎来到 AstrBot 插件开发指南!本章节将引导您如何开发 AstrBot 插件。在我们开始之前,希望你能具备以下基础知识:
- 有一定的 Python 编程经验。
- 有一定的 Git、GitHub 使用经验。
欢迎加入我们的开发者专用 QQ 群: 975206796。
- 打开 AstrBot 插件模板: helloworld
- 点击右上角的
Use this template - 然后点击
Create new repository。 - 在
Repository name处填写您的插件名。插件名格式:- 推荐以
astrbot_plugin_开头; - 不能包含空格;
- 保持全部字母小写;
- 尽量简短。
- 推荐以
- 点击右下角的
Create repository。
克隆 AstrBot 项目本体和刚刚创建的插件仓库到本地。
git clone https://github.com/AstrBotDevs/AstrBot
mkdir -p AstrBot/data/plugins
cd AstrBot/data/plugins
git clone 插件仓库地址然后,使用 VSCode 打开 AstrBot 项目。找到 data/plugins/<你的插件名字> 目录。
更新 metadata.yaml 文件,填写插件的元数据信息。
Warning
请务必修改此文件,AstrBot 识别插件元数据依赖于 metadata.yaml 文件。
可以在插件目录下添加 logo.png 文件作为插件的 Logo。请保持长宽比为 1:1,推荐尺寸为 256x256。
可以修改(或添加) metadata.yaml 文件中的 display_name 字段,作为插件在插件市场等场景中的展示名,以方便用户阅读。
插件展示名和描述支持按 WebUI 语言显示,详见插件国际化。
你可以在 metadata.yaml 中新增 short_desc 字段,作为插件市场卡片上的短描述。它适合写成一句简短介绍;如果没有提供,卡片会回退显示 desc。
short_desc: 一句话介绍你的插件。插件可以在自己的目录下提供 skills/ 文件夹。AstrBot 加载插件后会自动把其中合法的 Skill 纳入 Skill Manager,来源会显示为对应插件。
推荐一个插件包含多个 Skill 时使用以下结构:
your_plugin/
metadata.yaml
main.py
skills/
web-search-helper/
SKILL.md
report-writer/
SKILL.md
如果 skills/ 本身就是一个 Skill,也可以直接放置:
your_plugin/
skills/
SKILL.md
这种情况下 Skill 名称会使用插件目录名。插件提供的 Skill 由插件管理,在 WebUI 的 插件 → 技能 页面中作为只读来源展示;可以启用或禁用,但不能从本地 Skills 页面删除或编辑。插件卸载或更新后,对应 Skill 会随插件文件变化。
你可以在 metadata.yaml 中新增 support_platforms 字段(list[str]),声明插件支持的平台适配器。WebUI 插件页会展示该字段。
support_platforms:
- telegram
- discordsupport_platforms 中的值需要使用 ADAPTER_NAME_2_TYPE 的 key,目前支持:
aiocqhttpqq_officialqq_official_webhooktelegramwecomwecom_ai_botlarkdingtalkdiscordslackkookvocechatweixin_official_accountweixin_ocsatorimisskeylinematrixmattermost
你可以在 metadata.yaml 中新增 astrbot_version 字段,声明插件要求的 AstrBot 版本范围。格式与 pyproject.toml 依赖版本约束一致(PEP 440),且不要加 v 前缀。
astrbot_version: ">=4.16,<5"可选示例:
>=4.17.0>=4.16,<5~=4.17
如果你只想声明最低版本,可以直接写:
>=4.17.0
当当前 AstrBot 版本不满足该范围时,插件会被阻止加载并提示版本不兼容。 在 WebUI 安装插件时,你可以选择“无视警告,继续安装”来跳过这个检查。
AstrBot 采用在运行时注入插件的机制。因此,在调试插件时,需要启动 AstrBot 本体。
您可以使用 AstrBot 的热重载功能简化开发流程。
插件的代码修改后,在 AstrBot WebUI 的 插件 页找到自己的插件,点击插件卡片上的刷新图标(重载插件)。
如果插件因为代码错误等原因加载失败,可以在同一页面的 加载失败插件 列表中点击对应插件的 重载 按钮。
目前 AstrBot 对插件的依赖管理使用 pip 自带的 requirements.txt 文件。如果你的插件需要依赖第三方库,请务必在插件目录下创建 requirements.txt 文件并写入所使用的依赖库,以防止用户在安装你的插件时出现依赖未找到(Module Not Found)的问题。
requirements.txt的完整格式可以参考 pip 官方文档。
感谢您为 AstrBot 生态做出贡献,开发插件请遵守以下原则,这也是良好的编程习惯。
- 功能需经过测试。
- 需包含良好的注释。
- 持久化数据请存储于
data目录下,而非插件自身目录,防止更新/重装插件时数据被覆盖。 - 良好的错误处理机制,不要让插件因一个错误而崩溃。
- 在进行提交前,请使用 ruff 工具格式化您的代码。
- 不要使用
requests库来进行网络请求,可以使用aiohttp,httpx等异步网络请求库。 - 如果是对某个插件进行功能扩增,请优先给那个插件提交 PR 而不是单独再写一个插件(除非原插件作者已经停止维护)。
- 如果直接借鉴了其他项目的设计、功能创意或实现思路,请在 README 中清楚说明灵感来源并附上相关项目链接。
- 如果使用、修改或移植了其他项目的代码或资源,请遵守原项目的开源许可协议,并按协议要求保留版权及许可声明。
- 首页
- 文档入口
- Top Level
- community events
- deploy
- dev
- others
- platform
- 接入 OneBot v11 协议实现
- 接入钉钉 DingTalk
- 接入 Discord
- 接入 Kook
- 接入飞书
- 接入 LINE
- 接入 Matrix
- 接入 Mattermost
- 接入 Misskey 平台
- 接入 QQ 官方机器人平台
- 通过 QQ官方机器人 接入 QQ (Webhook)
- 通过 QQ官方机器人 接入 QQ (Websockets)
- 接入 Satori 协议
- 接入 server-satori (基于 Koishi)
- 接入 Slack
- 接入消息平台
- 接入 Telegram
- 接入 VoceChat
- AstrBot 接入企业微信
- 接入企业微信智能机器人平台
- AstrBot 接入微信公众平台
- 接入个人微信
- providers
- use
- Home
- Docs Entry
- Top Level
- config
- deploy
- Deploy AstrBot on 1Panel
- Deploy AstrBot on BT Panel
- Deploy AstrBot on CasaOS
- Deploy AstrBot from Source Code
- Community-Provided Deployment Methods
- Deploy via Compshare
- Deploy with AstrBot Desktop Client
- Deploy AstrBot with Docker
- Deploy AstrBot with Kubernetes
- Deploy AstrBot with AstrBot Launcher
- Other Deployments
- Script Deployment
- Installation via System Package Manager
- Preface
- dev
- AstrBot Configuration File
- API Scope–Endpoint Reference
- AstrBot HTTP API
- AstrBot Plugin Market JSON Specification
- Developing a Platform Adapter
- plugin
- AI
- Text to Image
- Handling Message Events
- Plugin Configuration
- Plugin Internationalization
- Plugin Views
- Sending Messages
- Session Control
- Minimal Example
- Plugin Storage
- AstrBot Plugin Development Guide 🌠
- Publishing Plugins to the Plugin Marketplace
- ospp
- others
- platform
- Connect OneBot v11 Protocol Implementations
- Connect to DingTalk
- Connecting to Discord
- Connect to KOOK
- Connecting to Lark
- Connecting to LINE
- Connecting to Matrix
- Connecting to Mattermost
- Connecting to Misskey Platform
- Connect QQ Official Bot
- Connect QQ via QQ Official Bot (Webhook)
- Connect QQ via QQ Official Bot (Websockets)
- Connect to Satori Protocol
- Connect server-satori (Koishi)
- Connecting to Slack
- Messaging Platforms
- Connecting to Telegram
- Connect to VoceChat
- Connect AstrBot to WeCom
- Connect to WeCom AI Bot Platform
- Connect AstrBot to WeChat Official Account Platform
- Connect Personal WeChat
- providers
- Connect 302.AI
- Agent Runners
- Built-in Agent Runner
- Connect to Coze
- Connect to Alibaba Cloud Bailian Application
- Connect to DeerFlow
- Connect to Dify
- Connect AIHubMix
- coze
- dashscope
- dify
- Model input images
- Large Language Model Providers
- Connect MiraRouter
- NewAPI
- Connect PPIO Cloud
- Connect LM Studio to Use DeepSeek-R1 and Other Models
- Integrating Ollama
- Connect ShengSuanYun
- Connecting to SiliconFlow
- Connecting Model Services
- Connecting to TokenPony
- use
- Agent Execution Mode {#agent-runner}
- Agent Sandbox Environment
- astrbot sandbox
- AstrBot CLI {#cli-commands}
- Docker-based Code Interpreter
- Built-in Commands
- computer
- Context Compression
- Custom Rules
- AstrBot Knowledge Base
- MCP
- AstrBot Plugins {#astrbot-star}
- Proactive Capabilities
- Skills {#anthropic-skills}
- SubAgent Orchestration {#agent-handoff-and-subagent}
- Unified Webhook Mode
- Web Search
- DeepSeek Search API
- SerpApi
- WebUI
