案例 GuaDa AI:功能完备的AI Agent系统,支持MCP、Skills、多平台机器人

2026-05-07 22:18:24 +0800 CST views 11

GuaDa AI:功能完备的AI Agent系统,支持MCP、Skills、多平台机器人

开源地址: https://gitee.com/zhendongdong/guada_ai
开源协议: MIT
发布平台: 程序员茄子(chenxutan.com)
标签: AI Agent, ReAct, MCP, Skills, RAG, 多模型, NestJS, Vue 3


引言

GuaDa — 智能 AI 对话平台。

围绕 ReAct Agent 设计,将 LLM 推理与工具调用深度结合,形成多轮自治循环。

集成 RAG 知识库MCP 协议Skills 技能框架,支持多种模型提供商。

可作为:

  • 企业内部 AI 中台
  • 聊天机器人后端
  • 个人智能助理

一、项目概览

核心定位

打造一个可用、易用、好用的个人智能助理。

主要功能

功能说明
ReAct AgentLLM 推理与工具调用深度结合
多模型适配支持多种模型提供商
RAG 知识库向量检索 + FTS5 全文搜索
MCP 工具调用Model Context Protocol 协议
Skills 技能框架可热插拔的技能系统
多平台机器人QQ/飞书/企业微信等
会话压缩两级压缩,长上下文管理
多角色对话支持多角色切换

二、架构特点

1. 双入口设计

┌─────────────────────────────────────────────┐
│                  用户入口                     │
├─────────────────────────────────────────────┤
│                                             │
│   REST + SSE API          Bot Gateway       │
│   (Web/桌面用户)           (IM平台用户)       │
│                                             │
└─────────────┬─────────────┬─────────────────┘
              │             │
              └──────┬──────┘
                     │
                     ▼
              ┌─────────────┐
              │ Agent Engine │
              └─────────────┘
入口服务对象
REST + SSE APIWeb/桌面用户
Bot Gateway即时通讯平台用户

两个对等入口,最终汇聚到同一个 Agent 引擎。

2. Agent 中心化

所有能力经由 Agent 循环统一调度。

  • 知识检索 ✅
  • 工具执行 ✅
  • 技能调用 ✅

3. 插拔式扩展

组件扩展方式
工具接口抽象
技能接口抽象 + 热插拔
模型适配器接口抽象

Skills 目前支持热插拔,其余正在开发中。

4. 长上下文管理

两级压缩策略

优先裁剪工具结果 → 语义压缩 → 压缩支持回退

三、技术选型

后端技术栈

类别技术
运行时Node.js ≥ 18
框架NestJS 11
语言TypeScript 6
ORMPrisma 7 (better-sqlite3)
数据库SQLite
向量数据库sqlite-vec + FTS5
分词jieba (中文分词)
Token 计算tiktoken + HuggingFace Tokenizers
MCP 协议@modelcontextprotocol/sdk
日志Winston (winston-daily-rotate-file)
认证JWT (Passport)

前端技术栈

类别技术
UI 框架Vue 3 (Composition API)
构建工具Vite
UI 组件库Element Plus
CSSTailwind CSS
状态管理Pinia
Markdown 渲染marked + highlight.js
HTTP 客户端Axios

四、架构层次

四层架构

层级职责核心组件
前端入口用户交互层Vue 3 Web、Electron 桌面、IM 平台客户端
入口层请求处理与路由分发REST + SSE API、Bot Gateway
核心服务层业务逻辑中枢Agent Engine、上下文压缩、RAG、工具与 MCP、Skills、LLM 适配器
数据层持久化存储SQLite、sqlite-vec + FTS5、文件系统

五、项目结构

ai_chat/
├── backend-ts/                    # NestJS 后端
│   ├── prisma/
│   │   └── schema.prisma          # 数据库 Schema
│   ├── src/
│   │   ├── common/                # 基础设施
│   │   │   ├── database/          # Prisma + Repository 层
│   │   │   ├── vector-db/         # 向量数据库抽象 + sqlite-vec 实现
│   │   │   ├── mcp/               # MCP 客户端
│   │   │   └── utils/             # Tokenizer 等工具
│   │   ├── modules/
│   │   │   ├── chat/              # 核心对话模块
│   │   │   │   ├── agent.service.ts         # Agent 循环引擎
│   │   │   │   ├── compression-engine.ts    # 两级压缩引擎
│   │   │   │   ├── conversation-context.ts  # 上下文管理器
│   │   │   │   └── message-store.service.ts # 消息持久化
│   │   │   ├── tools/             # 工具调用系统
│   │   │   │   └── providers/     # 各工具 Provider 实现
│   │   │   ├── skills/            # Skills 技能框架
│   │   │   │   ├── core/          # 核心服务 (发现/加载/注册/调度)
│   │   │   │   ├── integration/   # Skill-Tool 桥接
│   │   │   │   └── execution/     # 脚本执行引擎
│   │   │   ├── knowledge-base/    # 知识库模块 (RAG)
│   │   │   ├── llm-core/          # LLM 适配层
│   │   │   │   └── adapters/      # OpenAI / Gemini 适配器
│   │   │   ├── bot-gateway/       # 多平台机器人网关
│   │   │   ├── auth/              # JWT 认证
│   │   │   ├── models/            # 模型管理
│   │   │   ├── settings/          # 系统设置
│   │   │   └── users/             # 用户管理
│   │   └── main.ts                # 应用入口
│   └── skills/                    # Skills 技能目录
├── frontend/                      # Vue 3 前端
│   ├── src/
│   │   ├── components/
│   │   │   ├── chat/              # 对话界面
│   │   │   ├── knowledge-base/    # 知识库管理
│   │   │   ├── plugins/           # 工具/MCP/Skills 管理
│   │   │   ├── bot/               # 机器人管理
│   │   │   └── setting/           # 系统设置
│   │   ├── composables/           # 组合式函数
│   │   ├── stores/                # Pinia 状态管理
│   │   └── services/              # API 服务层
│   └── package.json
└── LICENSE

六、核心模块详解

1. Agent Engine

agent.service.ts - Agent 循环引擎

用户输入 → LLM 推理 → 工具调用 → 结果反馈 → LLM 推理 → ... → 最终回复

ReAct 循环:

  • Reasoning:LLM 推理下一步行动
  • Acting:执行工具/技能调用
  • Observation:获取执行结果
  • 循环:直到任务完成

2. 两级压缩引擎

compression-engine.ts

第一级:裁剪工具结果(优先)
    ↓
第二级:语义压缩
    ↓
支持回退

3. Skills 技能框架

模块职责
core/发现/加载/注册/调度
integration/Skill-Tool 桥接
execution/脚本执行引擎

热插拔支持:无需重启服务即可添加新技能。

4. 知识库 RAG

knowledge-base/ 模块

  • 向量检索:sqlite-vec
  • 全文搜索:FTS5
  • 中文分词:jieba

5. 多平台机器人网关

bot-gateway/ 模块

支持平台:

  • QQ ✅
  • 飞书 ✅
  • 企业微信 ✅
  • 更多平台扩展中

七、快速开始

环境要求

  • Node.js ≥ 18.x(推荐 20.x LTS)
  • npm ≥ 9.x

启动后端

cd backend-ts
npm install
npx prisma migrate dev    # 初始化数据库
npm run db:seed:force     # 初始化种子数据
                          # 默认账户: guada / guada
npm run start:dev         # 开发模式启动
                          # → http://localhost:3000

启动前端

cd frontend
npm install
npm run dev               # 开发模式启动
                          # → http://localhost:5173

八、LLM 适配器

已支持

模型适配器
OpenAI
Gemini

扩展中

更多模型适配器正在开发中。


九、MCP 协议支持

使用官方 SDK:

import { @modelcontextprotocol/sdk } from '...'

支持:

  • 工具调用
  • 资源访问
  • 提示词模板

十、适用场景

场景适用度
企业内部 AI 中台⭐⭐⭐⭐⭐ 完美
聊天机器人后端⭐⭐⭐⭐⭐ 完美
个人智能助理⭐⭐⭐⭐⭐ 完美
知识库问答系统⭐⭐⭐⭐⭐ 完美
多平台客服机器人⭐⭐⭐⭐⭐ 完美

十一、技术亮点

1. 全栈 TypeScript

前后端均使用 TypeScript,类型安全贯穿始终。

2. 现代化前端

Vue 3 Composition API + Vite + Pinia,开发体验一流。

3. 轻量级数据库

SQLite + sqlite-vec,无需额外部署数据库服务。

4. 中文优化

jieba 分词 + FTS5,中文检索效果好。

5. 长上下文支持

两级压缩策略,支持超长对话。


十二、与同类项目对比

特性GuaDa其他
ReAct Agent部分
MCP 协议少数
Skills 热插拔
多平台机器人部分
两级压缩
RAG + FTS部分
全栈 TypeScript部分

十三、后续规划

根据项目结构,正在开发:

  • 工具热插拔
  • 模型适配器热插拔
  • 更多 IM 平台支持

十四、总结

核心价值

价值说明
功能完备ReAct Agent + RAG + MCP + Skills
架构清晰四层架构,职责分明
技术现代NestJS + Vue 3 + TypeScript
易于部署SQLite 无需额外数据库
可扩展热插拔 + 接口抽象

推荐理由

如果你需要一个功能完备、架构清晰、易于扩展的 AI Agent 系统,GuaDa 是一个很好的起点。


本文首发于「程序员茄子」博客,原文链接:https://chenxutan.com

复制全文 生成海报 AI Agent ReAct MCP Skills RAG 多模型 NestJS Vue 3 开源

推荐文章

deepcopy一个Go语言的深拷贝工具库
2024-11-18 18:17:40 +0800 CST
前端代码规范 - 图片相关
2024-11-19 08:34:48 +0800 CST
Git 常用命令详解
2024-11-18 16:57:24 +0800 CST
mysql关于在使用中的解决方法
2024-11-18 10:18:16 +0800 CST
聚合支付管理系统
2025-07-23 13:33:30 +0800 CST
Vue3的虚拟DOM是如何提高性能的?
2024-11-18 22:12:20 +0800 CST
CentOS 镜像源配置
2024-11-18 11:28:06 +0800 CST
程序员茄子在线接单