From 176f77ba5baab1a74c1b3f3eb702e4afcb4ce880 Mon Sep 17 00:00:00 2001 From: Jianglang Date: Fri, 7 Apr 2023 00:35:06 +0800 Subject: [PATCH] Update README.md --- plugins/README.md | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/plugins/README.md b/plugins/README.md index 0fda3a9..217c2c7 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -1,3 +1,11 @@ +**Table of Content** + +- [插件化初衷](#插件化初衷) +- [插件安装方法](#插件化安装方法) +- [插件化实现](#插件化实现) +- [插件编写示例](#插件编写示例) +- [插件设计建议](#插件设计建议) + ## 插件化初衷 之前未插件化的代码耦合程度高,如果要定制一些个性化功能(如流量控制、接入`NovelAI`画图平台等),需要了解代码主体,避免影响到其他的功能。多个功能同时存在时,无法调整功能的优先级顺序,功能配置项也非常混乱。 @@ -11,7 +19,23 @@ - [x] 插件化能够自由开关和调整优先级。 - [x] 每个插件可在插件文件夹内维护独立的配置文件,方便代码的测试和调试,可以在独立的仓库开发插件。 -PS: 插件目前支持`itchat`和`wechaty` +## 插件安装方法 + +在本仓库中预置了一些插件,如果要安装其他仓库的插件,有两种方法。 + +- 第一种方法是在将下载的插件文件都解压到"plugins"文件夹的一个单独的文件夹,最终插件的代码都位于"plugins/PLUGIN_NAME/*"中。启动程序后,如果插件的目录结构正确,插件会自动被扫描加载。 + +- 第二种方法是`Godcmd`插件,它是预置的管理员插件,能够让程序在运行时就能安装插件。 + + 安装插件的命令是"#installp [仓库源](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/plugins/source.json)记录的插件名/仓库地址"。这是管理员命令,认证方法在[这里](https://github.com/zhayujie/chatgpt-on-wechat/tree/master/plugins/godcmd)。 + + - 安装[仓库源](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/plugins/source.json)记录的插件:#installp sdwebui + + - 安装指定仓库的插件:#installp https://github.com/lanvent/plugin_sdwebui.git + + 在安装之后,需要执行"#scanp"命令来扫描加载新安装的插件(或者重新启动程序)。 + +安装插件后需要注意有些插件有自己的配置模板,一般要去掉".template"新建一个配置文件。 ## 插件化实现 @@ -26,7 +50,7 @@ PS: 插件目前支持`itchat`和`wechaty` 1.收到消息 ---> 2.产生回复 ---> 3.包装回复 ---> 4.发送回复 ``` -以下是它们的默认处理逻辑(太长不看,可跳过): +以下是它们的默认处理逻辑(太长不看,可跳到[插件编写示例](#插件编写示例)): #### 1. 收到消息 @@ -154,7 +178,8 @@ PS: 插件目前支持`itchat`和`wechaty` ### 1. 创建插件 -在`plugins`目录下创建一个插件文件夹`hello`。然后,在该文件夹中创建一个与文件夹同名的`.py`文件`hello.py`。 +在`plugins`目录下创建一个插件文件夹`hello`。然后,在该文件夹中创建``__init__.py``文件,在``__init__.py``中将其他编写的模块文件导入。在程序启动时,插件管理器会读取``__init__.py``的所有内容。 + ``` plugins/ └── hello @@ -162,6 +187,11 @@ plugins/ └── hello.py ``` +``__init__.py``的内容: +``` +from .hello import * +``` + ### 2. 编写插件类 在`hello.py`文件中,创建插件类,它继承自`Plugin`。 @@ -234,5 +264,8 @@ class Hello(Plugin): - 尽情将你想要的个性化功能设计为插件。 - 一个插件目录建议只注册一个插件类。建议使用单独的仓库维护插件,便于更新。 + + 在测试调试好后提交`PR`,把自己的仓库加入到[仓库源](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/plugins/source.json)中。 + - 插件的config文件、使用说明`README.md`、`requirement.txt`等放置在插件目录中。 - 默认优先级不要超过管理员插件`Godcmd`的优先级(999),`Godcmd`插件提供了配置管理、插件管理等功能。