> 技术文档 > [火了]-----FastGPT 插件系统架构演进:从 Monorepo 到独立生态

[火了]-----FastGPT 插件系统架构演进:从 Monorepo 到独立生态


背景与挑战

FastGPT 作为一款快速发展的 AI 应用,其原有架构将所有功能模块(包括系统插件)集成在一个基于 Next.js 的 Monorepo 中。这种架构在项目初期确实带来了开发便利,但随着用户规模的增长,其局限性日益凸显:

  1. 耦合度过高:系统插件必须与主应用同步发版(每周一次),严重制约了插件的迭代速度
  2. 开发门槛高:社区开发者需要完整运行 FastGPT 环境才能贡献插件,必须向主仓库提交 PR
  3. 维护成本大:使用自定义插件的用户需要维护 FastGPT 的 fork 版本,手动处理代码合并
  4. 技术限制:受限于 Next.js/webpack 架构,无法实现插件的运行时热加载

架构演进:插件系统独立化

为解决上述问题,我们决定将插件系统拆分为独立项目:FastGPT-plugin。这一架构演进带来了多重优势:

  1. 解耦与模块化:不仅支持系统工具的热加载,未来可扩展至知识库插件、RAG 等模块
  2. 独立迭代:插件系统可自主发版,不再受限于主应用的发版周期,支持热更新
  3. 开发简化:贡献插件只需使用插件项目提供的调试套件,无需搭建完整 FastGPT 环境
  4. 生态扩展:为插件市场的建设奠定基础,支持用户自由发布和获取插件

技术架构详解

核心选型

技术组件 选型理由 ts-rest 提供类型安全的 RPC 框架,自动生成 OpenAPI 规范和客户端代码 zod 强大的运行时类型校验,支持复杂数据转换和合并 bun 高性能打包工具,支持生成独立的插件 js 文件

项目结构

fastgpt-plugin/├── modules/│ └── tool/  # 系统工具模块│ ├── api/  # 接口实现│ ├── packages/ # 工具集合│ │ ├── getTime/ # 示例工具│ │ └── dalle3/ # 示例工具│ ├── type/  # 类型定义│ └── utils/ # 公共工具├── scripts/  # 构建和生成脚本├── sdk/ # 客户端SDK(发布到npm)├── src/ # 运行时服务(Express)└── test/# 测试套件