From bdd80d0c2e93fe55e01d14b35116d37b1ba46d04 Mon Sep 17 00:00:00 2001 From: Snowykami Date: Tue, 17 Dec 2024 21:09:20 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=8F=92=E4=BB=B6=E7=83=AD?= =?UTF-8?q?=E9=87=8D=E8=BD=BD=E5=92=8C=E5=85=BC=E5=AE=B9=E6=80=A7=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=EF=BC=8C=E4=BC=98=E5=8C=96=E5=AE=89=E8=A3=85=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/dev/extension.md | 41 +++++++++++++++++++++++++++++++++------- docs/zh/start/install.md | 13 +++++++++++-- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/docs/zh/dev/extension.md b/docs/zh/dev/extension.md index cbb213cf..ce0e986a 100755 --- a/docs/zh/dev/extension.md +++ b/docs/zh/dev/extension.md @@ -22,7 +22,6 @@ order: 2 - 元数据:包含插件的信息,如名称、版本、作者等 - function call:供AI调用的函数 - :::tip 如果你编写过NoneBot插件,那么你会发现插件的编写方式和NoneBot插件的编写方式几乎一样。 ::: @@ -76,14 +75,19 @@ def fortune_telling(name: str, age: int) -> str: ```python @on_function_call(description="在设备上执行命令").params( command=String(description="命令内容") -).permission(SUPERUSER).rule(RegexRule("查询(.*)的天气")) +).permission(SUPERUSER) def execute_command(command: str) -> str: return eval(command) ``` ## 依赖注入 -function call支持NoneBot2原生的会话上下文依赖注入,例如Bot、Event等 +function call支持NoneBot2原生的会话上下文依赖注入 + +- Event 及其子类实例 +- Bot 及其子类实例 +- Matcher 及其子类实例 +- T_State ```python @on_function_call(description="获取个人信息") @@ -95,14 +99,37 @@ async def get_bot_info(b: Bot) -> str: return f"机器人ID: {b.self_id}" ``` -## 其他 +## 兼容性 -- function call支持同步和异步函数 -- 本文是一个引导,要查看具体功能请查阅[插件 API 文档](./api/plugin/index) +插件可以编写NoneBot或者轻雪插件的内容,可作为NoneBot插件或者轻雪插件单独发布 + +不过,所编写功能仅会在对应的实例上加载对应的功能,如果通过marshoai加载混合插件,那么插件中NoneBot的功能将会依附于marshoai插件, +若通过NoneBot加载包含marshoai功能的NoneBot插件,那么marshoai功能将会依附于NoneBot插件。 + +**我们建议**:若插件中包含了NoneBot功能,仍然使用marshoai进行加载,这样更符合逻辑。若你想发布为NoneBot插件,请注意`require("nonebot_plugin_marshoai")`,这是老生常谈了。 + +:::tip +本质上都是动态导入和注册声明加载,运行时把这些东西塞到一起 +::: + +## 插件热重载 + +插件热重载是一个实验性功能,可以在不重启机器人的情况下更新插件 + +:::warning +框架无法完全消除之前插件带来的副作用,当效果不符合预期时请重启机器人实例 +::: + +将`MARSHOAI_DEVMODE`环境变量设置为`true`,然后在配置的插件目录`MARSHOAI_PLUGIN_DIRS`下开发插件,当插件发生变化时,机器人会自动加载新的插件。 ## AIGC 自举 :::warning 该功能为实验性功能,请注意甄别AI的行为,不要让AI执行危险的操作。 ::: -function call为AI赋能,实现了文件io操作,AI可以调用function call来读取文档然后给自己编写代码,实现自举。 \ No newline at end of file +function call为AI赋能,实现了文件io操作,AI可以调用function call来读取文档然后给自己编写代码,实现自举。 + +## 其他 + +- function call支持同步和异步函数 +- 本文是一个引导,要查看具体功能请查阅[插件 API 文档](./api/plugin/index) diff --git a/docs/zh/start/install.md b/docs/zh/start/install.md index 479ea5e2..12ba51ef 100644 --- a/docs/zh/start/install.md +++ b/docs/zh/start/install.md @@ -61,9 +61,11 @@ title: 安装 当 nonebot 连接到支持的 OneBot v11 实现端时,可以接收头像双击戳一戳消息并进行响应。详见`MARSHOAI_POKE_SUFFIX`配置项。 ## 🛠️ ~~小棉工具~~(已弃用) + 小棉工具(MarshoTools)是`v0.5.0`版本的新增功能,支持加载外部函数库来为 Marsho 提供 Function Call 功能。 ## 🧩 小棉插件 + 小棉插件是`v1.0.0`的新增功能,替代旧的小棉工具功能。[使用文档](https://marsho.liteyuki.icu/dev/extension) ## 👍 夸赞名单 @@ -132,10 +134,17 @@ title: 安装 | MARSHOAI_ENABLE_NICKNAME_TIP | `bool` | `true` | 启用后用户未设置昵称时提示用户设置 | | MARSHOAI_ENABLE_PRAISES | `bool` | `true` | 是否启用夸赞名单功能 | | MARSHOAI_ENABLE_TOOLS | `bool` | `false` | 是否启用小棉工具 | -| MARSHOAI_ENABLE_PLUGINS | `bool` | `true` | 是否启用小棉插件 | +| MARSHOAI_ENABLE_PLUGINS | `bool` | `true` | 是否启用小棉插件 | +| MARSHOAI_PLUGINS | `list[str]` | `[]` | 要从`sys.path`加载的插件的名称,例如从pypi安装的包 | | MARSHOAI_PLUGIN_DIRS | `list[str]` | `[]` | 插件目录路径列表 | | MARSHOAI_LOAD_BUILTIN_TOOLS | `bool` | `true` | 是否加载内置工具包 | | MARSHOAI_TOOLSET_DIR | `list` | `[]` | 外部工具集路径列表 | | MARSHOAI_DISABLED_TOOLKITS | `list` | `[]` | 禁用的工具包包名列表 | | MARSHOAI_ENABLE_RICHTEXT_PARSE | `bool` | `true` | 是否启用自动解析消息(若包含图片链接则发送图片、若包含LaTeX公式则发送公式图) | -| MARSHOAI_SINGLE_LATEX_PARSE | `bool` | `false` | 单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看) | \ No newline at end of file +| MARSHOAI_SINGLE_LATEX_PARSE | `bool` | `false` | 单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看) | + +#### 开发及调试选项 + +| 配置项 | 类型 | 默认值 | 说明 | +| ------------------------ | ------ | ------- | ---------------- | +| MARSHOAI_DEVMODE | `bool` | `false` | 是否启用开发者模式 |