> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xpertai.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 概述

## 1. 概述

### 插件系统的目标

Xpert AI 插件系统旨在为开发者提供一种**可扩展、可复用、低耦合**的扩展机制，使业务功能能够以模块化的方式集成到系统中。通过插件化设计，我们能够：

* 在不修改核心代码的前提下，**快速扩展系统能力**
* 将不同业务逻辑解耦，形成**独立可维护的功能单元**
* 建立统一的插件生态，方便**内部团队和外部开发者协作开发**

### 设计理念

插件系统基于 **[NestJS](https://nestjs.com/) + [TypeORM](https://typeorm.io/)** 技术栈，结合了依赖注入、模块化、装饰器模式和策略模式，提供了一套完整的扩展点机制：

1. **模块化设计**：每个插件作为独立的 NestJS 模块，具备自己的 `controller`、`service`、`strategy`、`entity`。
2. **策略化扩展**：通过 [策略机制](https://en.wikipedia.org/wiki/Strategy_pattern) 例如 `IntegrationStrategy` 和 `DocumentSourceStrategy`，插件能够以策略模式挂载到宿主系统中，从而实现外部系统集成或文档数据源接入。
3. **生命周期管理**：插件具备完整的生命周期（注册 → 启动 → 销毁），开发者可以在不同阶段执行初始化或清理操作。
4. **增强出口点（Enhancement Points）**：宿主系统预定义了一些增强点（策略），插件只需实现对应接口，即可无缝扩展系统能力。
5. **安全与配置**：基于 `zod` 的配置 Schema，插件可声明所需参数（如 API Key、URL 等），并在系统界面或配置文件中进行安全管理。
6. **资源化分发**：插件除了提供服务端能力，还可以内置可初始化资源，例如 `Skills`、`MCP`、`Apps` 和 `Hooks`，由宿主在工作空间或已有 Xpert 中按目标初始化。

### 为什么需要插件化？

在传统的单体架构中，业务功能往往直接耦合在核心代码中，导致：

* 扩展成本高，需要修改核心代码
* 功能模块之间耦合度高，难以维护
* 不利于构建生态，外部开发者无法贡献

通过插件化，Xpert AI 实现了：

* **灵活扩展**：新增功能只需安装插件，而非修改核心
* **模块解耦**：每个插件独立维护，减少代码冲突
* **生态建设**：第三方开发者可以快速编写并发布插件，丰富系统功能
* **跨系统集成**：插件可作为连接外部 API 或系统的桥梁

### 插件开发的适用场景

插件系统广泛适用于以下场景：

* **系统集成**：如接入 Firecrawl、OpenAI、Slack、飞书等第三方系统
* **数据源扩展**：为 BI、搜索、知识库等功能引入新的数据源
* **工具集扩展**：为智能体或 Copilot 提供新的工具能力
* **MCP Tool 和 MCP App**：通过 [plugin-managed MCP server](./mcp-tools-and-apps) 暴露标准 MCP 工具，并在 ChatKit 中渲染交互式工具结果
* **行业定制化功能**：针对能源、金融、零售等不同行业，开发独立插件进行业务扩展
