Skip to content

架构概述

ChatAI Plugin 采用模块化分层架构设计,本文档概述整体架构。

架构图

┌─────────────────────────────────────────────────────────────────┐
│                        业务层 (Apps)                             │
│                    chat.js / ChatListener.js                     │
└─────────────────────────────┬───────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                    Skills Agent 层                               │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  SkillsAgent - 统一技能接口、权限过滤、参数自动填充       │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────┬───────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                       MCP 层                                     │
│  ┌───────────────┐ ┌───────────────┐ ┌───────────────────────┐  │
│  │ McpManager    │ │ McpClient     │ │ BuiltinMcpServer      │  │
│  │ 工具注册管理  │ │ 协议传输实现  │ │ 内置工具管理          │  │
│  └───────────────┘ └───────────────┘ └───────────────────────┘  │
└─────────────────────────────┬───────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                     工具实现层                                   │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
│  │ 内置工具      │ │ JS 工具      │ │ 外部 MCP 服务器          │ │
│  │ src/mcp/tools │ │ data/tools   │ │ npm包/stdio/SSE/HTTP    │ │
│  └──────────────┘ └──────────────┘ └──────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

核心概念

三层架构

层级说明主要模块
应用层消息处理、命令响应apps/, ChatListener
服务层业务逻辑、API 服务services/, agent/
核心层基础设施、适配器core/, mcp/

MCP 系统

MCP (Model Context Protocol) 是 Anthropic 提出的标准协议,用于定义 AI 与工具的交互:

  • McpManager - 统一管理所有工具来源
  • McpClient - 支持多种传输协议(stdio/npm/SSE/HTTP)
  • BuiltinMcpServer - 管理内置工具和自定义 JS 工具

Skills Agent

Skills Agent 是 MCP 之上的业务抽象层:

  • 整合所有工具为统一的"技能"概念
  • 提供权限过滤和参数自动填充
  • 支持预设级别的工具访问控制

目录结构

chatgpt-plugin/
├── apps/                    # 应用模块(Yunzai 插件入口)
│   ├── chat.js              # 主聊天处理
│   ├── Commands.js          # 命令处理
│   ├── Management.js        # 管理命令
│   └── ...                  # 其他功能模块
├── config/                  # 配置管理
├── data/                    # 运行时数据
│   ├── presets/             # 预设文件
│   ├── tools/               # 自定义 JS 工具
│   ├── mcp-servers.json     # MCP 服务器配置
│   └── chatai.db            # SQLite 数据库
├── src/
│   ├── core/                # 核心层
│   │   ├── adapters/        # LLM 适配器
│   │   │   ├── AbstractClient.js  # 抽象基类
│   │   │   ├── openai/      # OpenAI 客户端
│   │   │   ├── claude/      # Claude 客户端
│   │   │   └── gemini/      # Gemini 客户端
│   │   ├── types/           # 类型定义
│   │   └── utils/           # 工具函数
│   ├── mcp/                 # MCP 系统
│   │   ├── McpManager.js    # MCP 管理器
│   │   ├── McpClient.js     # MCP 客户端
│   │   ├── BuiltinMcpServer.js  # 内置工具服务器
│   │   └── tools/           # 内置工具(20个类别)
│   └── services/            # 服务层
│       ├── agent/           # Skills Agent
│       ├── llm/             # LLM 服务
│       ├── storage/         # 存储服务
│       ├── routes/          # API 路由
│       └── webServer.js     # Web 服务
└── index.js                 # 插件入口

核心组件

组件文件职责
AbstractClientsrc/core/adapters/AbstractClient.jsLLM 适配器抽象基类
OpenAIClientsrc/core/adapters/openai/OpenAIClient.jsOpenAI/兼容 API 客户端
McpManagersrc/mcp/McpManager.js工具注册与调用管理
McpClientsrc/mcp/McpClient.jsMCP 协议客户端(stdio/npm/SSE/HTTP)
BuiltinMcpServersrc/mcp/BuiltinMcpServer.js内置工具服务器与上下文管理
SkillsAgentsrc/services/agent/SkillsAgent.js技能代理与权限控制
ToolFilterServicesrc/services/tools/ToolFilterService.js工具过滤服务

设计原则

  1. 模块化 - 功能解耦,独立维护
  2. 可扩展 - 支持自定义工具和适配器
  3. 标准化 - 遵循 MCP 协议规范
  4. 安全性 - 完善的权限控制机制

详细文档

基于 MIT 许可发布