Skip to content

Commit

Permalink
doc: 添加提案
Browse files Browse the repository at this point in the history
  • Loading branch information
RockChinQ committed Mar 4, 2024
1 parent e26154e commit 3182430
Showing 1 changed file with 51 additions and 1 deletion.
52 changes: 51 additions & 1 deletion draft/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,54 @@

## 设计

在新的扩展方案中,
### 插件的存储

在新的扩展方案中,插件仍然是存储在`plugins`目录下,`下载的插件`以zip包形式存放,正在开发的插件直接以源码形式存放。

树状图:

```
- main.py
- plugins/
- __init__.py
- PluginA/
- __init__.py
- plugin_a.py
- PluginB/
- __init__.py
- plugin_b.py
- PluginC.zip
- PluginD.zip
```

插件zip包内部结构:

```
# PluginC.zip
- PluginC.zip
- plugins/
- PluginC/
- __init__.py
- plugin_c.py
- PyMySQL/
- __init__.py
- ...
```

### 导入路径

QChatGPT 将各个插件的zip包添加到 `sys.path`。此时,无论是开发中的插件还是下载的插件,都可以通过`import plugins.PluginC`的方式导入自身的模块。
同时,先添加各个插件包,再添加`plugins`目录,可以保证开发中的插件优先于下载的插件。

### 依赖管理

插件的额外依赖(非QChatGPT的依赖)直接被打包到插件的zip包中,同时,基于上述的导入路径,插件可以直接导入自己的依赖。

### 插件管理 CLI

计划提供一个插件管理的命令行工具,用于打包、测试、上传(在GitHub Actions中自动打包)和下载插件。

### 插件 API

插件的注册、调用等 API 将额外设计。

0 comments on commit 3182430

Please sign in to comment.