Browse Source

Update README.md

master
Jianglang GitHub 1 year ago
parent
commit
176f77ba5b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 36 additions and 3 deletions
  1. +36
    -3
      plugins/README.md

+ 36
- 3
plugins/README.md View File

@@ -1,3 +1,11 @@
**Table of Content**

- [插件化初衷](#插件化初衷)
- [插件安装方法](#插件化安装方法)
- [插件化实现](#插件化实现)
- [插件编写示例](#插件编写示例)
- [插件设计建议](#插件设计建议)

## 插件化初衷 ## 插件化初衷


之前未插件化的代码耦合程度高,如果要定制一些个性化功能(如流量控制、接入`NovelAI`画图平台等),需要了解代码主体,避免影响到其他的功能。多个功能同时存在时,无法调整功能的优先级顺序,功能配置项也非常混乱。 之前未插件化的代码耦合程度高,如果要定制一些个性化功能(如流量控制、接入`NovelAI`画图平台等),需要了解代码主体,避免影响到其他的功能。多个功能同时存在时,无法调整功能的优先级顺序,功能配置项也非常混乱。
@@ -11,7 +19,23 @@
- [x] 插件化能够自由开关和调整优先级。 - [x] 插件化能够自由开关和调整优先级。
- [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.收到消息 ---> 2.产生回复 ---> 3.包装回复 ---> 4.发送回复
``` ```


以下是它们的默认处理逻辑(太长不看,可跳):
以下是它们的默认处理逻辑(太长不看,可跳到[插件编写示例](#插件编写示例)):


#### 1. 收到消息 #### 1. 收到消息


@@ -154,7 +178,8 @@ PS: 插件目前支持`itchat`和`wechaty`


### 1. 创建插件 ### 1. 创建插件


在`plugins`目录下创建一个插件文件夹`hello`。然后,在该文件夹中创建一个与文件夹同名的`.py`文件`hello.py`。
在`plugins`目录下创建一个插件文件夹`hello`。然后,在该文件夹中创建``__init__.py``文件,在``__init__.py``中将其他编写的模块文件导入。在程序启动时,插件管理器会读取``__init__.py``的所有内容。

``` ```
plugins/ plugins/
└── hello └── hello
@@ -162,6 +187,11 @@ plugins/
└── hello.py └── hello.py
``` ```


``__init__.py``的内容:
```
from .hello import *
```

### 2. 编写插件类 ### 2. 编写插件类


在`hello.py`文件中,创建插件类,它继承自`Plugin`。 在`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`等放置在插件目录中。 - 插件的config文件、使用说明`README.md`、`requirement.txt`等放置在插件目录中。
- 默认优先级不要超过管理员插件`Godcmd`的优先级(999),`Godcmd`插件提供了配置管理、插件管理等功能。 - 默认优先级不要超过管理员插件`Godcmd`的优先级(999),`Godcmd`插件提供了配置管理、插件管理等功能。

Loading…
Cancel
Save