Skip to content

Commit

Permalink
✨ 更新文档,添加插件热重载和兼容性说明,优化安装配置项描述
Browse files Browse the repository at this point in the history
  • Loading branch information
snowykami committed Dec 17, 2024
1 parent 99c1138 commit bdd80d0
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 9 deletions.
41 changes: 34 additions & 7 deletions docs/zh/dev/extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ order: 2
- 元数据:包含插件的信息,如名称、版本、作者等
- function call:供AI调用的函数


:::tip
如果你编写过NoneBot插件,那么你会发现插件的编写方式和NoneBot插件的编写方式几乎一样。
:::
Expand Down Expand Up @@ -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="获取个人信息")
Expand All @@ -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来读取文档然后给自己编写代码,实现自举。
function call为AI赋能,实现了文件io操作,AI可以调用function call来读取文档然后给自己编写代码,实现自举。

## 其他

- function call支持同步和异步函数
- 本文是一个引导,要查看具体功能请查阅[插件 API 文档](./api/plugin/index)
13 changes: 11 additions & 2 deletions docs/zh/start/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

## 👍 夸赞名单
Expand Down Expand Up @@ -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` | 单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看) |
| MARSHOAI_SINGLE_LATEX_PARSE | `bool` | `false` | 单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看) |

#### 开发及调试选项

| 配置项 | 类型 | 默认值 | 说明 |
| ------------------------ | ------ | ------- | ---------------- |
| MARSHOAI_DEVMODE | `bool` | `false` | 是否启用开发者模式 |

0 comments on commit bdd80d0

Please sign in to comment.