Previously, FastGPT's system plugins were tightly coupled with the system, making code contribution quite difficult. Now we are extracting this code to decouple it, and in the future, we can support more modules (not limited to system plugins).
The main objectives are:
- Decoupling and modularization.
- FastGPT-plugin can update rapidly, with versions independent of FastGPT
- Reduce development complexity (no need to run FastGPT environment)
- Plugin marketplace
Longer-term vision:
- Build applications in pure code.
- Add other customizable modules.
- ...
- Use
ts-restas the RPC framework for interaction, providing SDK for FastGPT main project to call - Use
zodfor type validation - Use
bunfor compiling each tool into a single.jsfile, supporting hot plugging.
graph LR
A[FastGPT] --> |RESTful API|B[FastGPT-plugin]
B <--> C(Minio)
- packages
- tool FastGPT system tools
- api Interface implementation logic
- packages System tools directory (each one is a package)
- getTime
- dalle3
- ...
- type Type definitions
- utils Utilities
- tool FastGPT system tools
- scripts Scripts (compilation, creating new tools)
- sdk: SDK definitions for external calls, published to npm
- src: Runtime, express service
- test: Test samples
Refer to Contributing System Tools