# contex-ai **Repository Path**: lijunnew/contex-ai ## Basic Information - **Project Name**: contex-ai - **Description**: 基于Ruoyi v3.9.2和hermes理念,设计的适合B端快速接入AI的平台 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-09-19 - **Last Updated**: 2026-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CortexAI — 企业级 AI Agent 开发平台

Spring Boot Vue 3 Element Plus JDK LangChain4j License

基于若依框架构建的全栈 AI Agent 平台,提供完整的 Agent 运行时引擎、插件生态、知识库 RAG 和技能包管理能力, 支持 SSE 流式响应、MCP 协议、工具审批、语音交互和嵌入式小窗。

## 界面展示 ![img.png](img.png) ![img_1.png](img_1.png) ![img_4.png](img_4.png) --- ## 📋 目录 - [项目简介](#-项目简介) - [核心特性](#-核心特性) - [技术架构](#-技术架构) - [项目结构](#-项目结构) - [快速开始](#-快速开始) - [功能详解](#-功能详解) - [Agent 运行时引擎](#1-agent-运行时引擎) - [插件生态系统](#2-插件生态系统) - [知识库系统](#3-知识库系统) - [技能包管理](#4-技能包管理) - [语音交互](#5-语音交互) - [嵌入式小窗](#6-嵌入式小窗) - [MCP 协议支持](#7-mcp-协议支持) - [工具审批机制](#8-工具审批机制) - [待办任务系统](#9-待办任务系统) - [配置说明](#-配置说明) - [部署指南](#-部署指南) - [项目截图](#-项目截图) - [许可证](#-许可证) --- ## 📖 项目简介 CortexAI 是一个基于 **若依(RuoYi)** 框架二次开发的企业级 AI Agent 智能对话平台。项目核心参考了 Hermes Agent 的 `conversation_loop` 设计理念,在国内开源生态基础上构建了一套完整的 Agent 运行时,具备以下能力: - **开箱即用**:内置 13 个插件、完整的前端管理后台、SQL 一键初始化 - **模型无关**:兼容所有 OpenAI 协议供应商(OpenAI、Claude、Qwen、DeepSeek、本地 Ollama 等) - **工具调用完整**:支持多工具并发执行、工具去重、名称模糊修复、截断重试 - **流式响应**:SSE 实时输出,`` 块自动剥离,前端打字机效果 - **企业安全**:工具审批三级管控、API Key 多租户隔离、RBAC 权限体系 > 默认账号:`admin / admin123` > 后端默认端口:`8080`,前端默认端口:`80` --- ## ✨ 核心特性 ### 🤖 Agent 运行时引擎 - **ConversationLoop**:完整的多轮对话循环,最大迭代次数可配置(默认 20 次),支持预算控制 - **SSE 流式响应**:基于 Server-Sent Events 的实时输出,支持内容增量推送、工具执行状态推送 - **上下文压缩**:自适应压缩阈值(可用上下文的 70%),压缩后工作上下文独立于历史记录 - **错误分类与重试**:ErrorClassifier 自动分类 LLM 错误,支持 jitter backoff 退避重试(最多 3 次) - **Fallback 模型**:主模型失败后自动切换到备用模型列表 - **会话管理**:会话隔离、并行处理、用户打断、标题 AI 自动生成 - **消息队列**:新消息自动排队,用户可手动中断当前对话 - **图片处理**:多模态消息支持,自动识别 Provider 不支持图片时退回纯文本 - **Token 追踪**:实时统计 prompt/completion tokens,上下文使用百分比前端实时展示 - **执行日志**:完整链路追踪,包含每轮迭代、工具调用参数、LLM 响应详情 ### 🔌 插件生态系统 - **13 个内置插件**:涵盖网络搜索、文件管理、代码执行、终端命令、数据库查询、知识库检索等 - **MCP 协议**:兼容 Model Context Protocol,通过 stdio/SSE 接入海量 MCP 生态插件 - **工具审批**:三种审批模式(always / auto / never),高风险操作走人工审批流 - **插件环境变量**:每个插件独立配置 API Key 等环境变量,安全隔离 ### 📚 知识库(RAG) - **向量检索**:基于 Milvus 的 Embedding + 相似度搜索 - **Rerank**:LangChain4j 集成重排序,精排检索结果 - **多格式文档**:PDF、Word、Excel、TXT、Markdown,Apache Tika 统一解析 - **召回测试**:内置召回测试工具,可验证知识库检索效果 - **权限隔离**:按业务系统和用户隔离知识库访问 ### 🎯 技能包管理 - **层级结构**:技能包 → 技能文件(.md / .py / .js / .json / .txt) - **双层权限**:全局技能(管理员维护)+ 个人技能(用户自管理) - **拉取模型(Pull Model)**:系统提示词只注入技能索引,按需 `skill_read` 读取全文,降低 token 消耗 - **AI 自学习**:Agent 执行复杂任务后主动询问是否保存为技能,发现技能过时立即 patch ### 🎙️ 语音交互 - **ASR**:Sherpa-ONNX 离线语音识别,支持 SenseVoice 中英日韩粤多语言模型 - **TTS**:VITS 语音合成,多音色支持 - **跨平台**:Windows / Linux 原生库,随 Maven 依赖自动加载(见 `tts/` 目录) ### 🪟 嵌入式小窗(Widget) - **零依赖**:纯 JavaScript 实现,一行 ` ``` Widget 通过 Shadow DOM 完全隔离样式,不影响宿主页面,支持暗色主题和移动端。 API Key 在**后台 → Agent 管理 → API Key 授权**中创建,每个 Key 绑定特定 Agent 和业务系统,支持启用/禁用。 --- ### 7. MCP 协议支持 CortexAI 完整实现了 MCP(Model Context Protocol)规范,作为 MCP Host: - **进程管理**:`McpProcessManager` 负责启动/停止 MCP 服务器进程(stdio 模式) - **会话管理**:`McpSessionManager` 维护 MCP 会话生命周期 - **工具扫描**:`IMcpPackageScanService` 扫描 MCP 服务器提供的工具列表,自动注册到插件系统 - **调用代理**:`McpClient` 通过 JSON-RPC 2.0 协议转发工具调用请求 MCP 插件和内置插件在 Agent 运行时中统一处理,对 LLM 完全透明。 在前端**插件管理 → MCP 插件**页面可以: - 添加 MCP 服务器配置(命令、参数、环境变量) - 测试连接 - 查看扫描到的工具列表 - 分配给 Agent 使用 --- ### 8. 工具审批机制 工具审批是企业安全的核心保障。在**Agent 管理 → 审批授权**中为每个插件配置审批模式: | 模式 | 说明 | |------|------| | `never` | 从不需要审批(低风险工具,如搜索、读取) | | `auto` | 系统自动判断(低风险自动通过,高风险人工审批) | | `always` | 每次必须人工审批(高风险工具,如终端命令、数据库写入) | 审批流程: 1. Agent 发起工具调用 → `ApprovalChecker` 检查审批模式 2. 需要审批时 → SSE 推送 `approval_required` 事件到前端 3. 前端弹出 `ApprovalDialog`,展示工具名称和参数 4. 用户**批准** → 继续执行;用户**拒绝** → 返回拒绝原因给 Agent 5. 超时未处理 → 根据配置自动批准或拒绝 --- ### 9. 待办任务系统 待办任务(TODO Task)是 Agent 将复杂任务拆解可视化的机制,由 `TaskPlanManagerPlugin` 提供。 #### 工作流程 ``` 用户提出复杂需求 │ ├─ Agent 判断需要多步骤执行 ├─ 调用 create_todo_task,传入 title + steps 数组 ├─ 后端创建 AiTaskPlan + AiTaskStep 记录 ├─ SSE 推送 task_plan_created 事件到前端 ├─ 前端 TaskPlanView 组件展示进度面板(输入框上方) ├─ 后台异步执行每个步骤 │ ├─ 步骤开始 → status: running(转圈动画) │ ├─ 步骤完成 → status: completed(对号) │ └─ 步骤失败 → status: failed(错误信息)+ 停止后续 └─ 全部完成 → status: completed ``` #### 五个工具 | 工具 | 用途 | |------|------| | `create_todo_task` | 创建待办任务并拆解步骤 | | `get_todo_task` | 查询任务状态和进度(planId) | | `update_todo_status` | 手动更新步骤状态 | | `cancel_todo_task` | 取消进行中的任务 | | `list_todo_tasks` | 列出当前会话的所有任务 | --- ## ⚙️ 配置说明 ### 供应商与模型配置 进入**前端 → 供应商管理**,添加 AI 供应商: ``` 供应商名称:OpenAI API Base URL:https://api.openai.com/v1 API Key:sk-xxx ``` 然后在**模型管理**中添加具体模型: ``` 模型代码:gpt-4o 模型名称:GPT-4o 上下文长度:128000 最大输出 Token:16384 ``` 支持所有兼容 OpenAI 协议的服务商,包括: - OpenAI、Azure OpenAI - Anthropic Claude(通过代理层) - 阿里云通义千问(Qwen) - DeepSeek - 本地 Ollama ### Agent 创建 在**Agent 管理**中创建 Agent,主要配置项: | 配置项 | 说明 | |--------|------| | Agent 名称 | 显示名称 | | Agent Code | 唯一标识符(用于 Sub-Agent 委派) | | 系统提示词 | Agent 的角色和行为定义 | | 绑定模型 | 选择使用的 AI 模型 | | 最大迭代次数 | 单次对话最多调用 LLM 次数(默认 20) | | 最大 Token | 每次回复的最大 token 数 | | 温度 | 创造性参数(0~2) | | 绑定插件 | 勾选允许使用的插件 | | 绑定技能包 | 勾选可访问的技能包 | | 绑定知识库 | 勾选可检索的知识库 | ### 多模型 Fallback 在 Agent 配置中可以设置备用模型列表。当主模型出现以下情况时自动切换: - 速率限制(429) - 服务不可用(503) - 上下文溢出(context overflow) ### 环境变量配置 `application.yml` 中与 AI 功能相关的关键配置: ```yaml cortex: # 文件上传路径 profile: /home/cortex/uploadPath # 知识库配置 knowledge: milvus: host: localhost port: 19530 token: root:Milvus # 语音配置 voice: asr: modelDir: ./tts/models/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17 tts: modelDir: ./tts/models/vits-zh-aishell3 ``` --- ## 🚢 部署指南 ### 方式一:本地 JAR 部署 ```bash # 1. 打包(跳过测试) mvn clean package -DskipTests # 2. 运行 java -jar cortex-admin/target/cortex-admin.jar \ --spring.profiles.active=prod \ --server.port=8080 ``` ### 方式二:使用自带脚本 ```bash # Windows cortex.bat start cortex.bat stop cortex.bat restart # Linux ./cortex.sh start ./cortex.sh stop ./cortex.sh status ``` ### 方式三:Docker(Milvus 套件) ```bash # 仅启动基础设施(Milvus + Redis + PostgreSQL 可选) cd docker/milvus cp .env.example .env # 编辑 .env 配置密码和端口 docker-compose up -d ``` `docker/milvus/docker-compose.yml` 包含: - Milvus standalone - MinIO(Milvus 对象存储) - etcd(Milvus 元数据存储) - Redis(可选,也可使用已有实例) ### 生产环境建议 - PostgreSQL 开启连接池(Druid 已配置,默认最大 50 连接) - Redis 配置持久化(AOF 推荐) - Milvus 建议独立部署,配置充足内存(向量索引内存占用较大) - 前端 `nginx` 反向代理后端,配置 SSE 超时为 0(`proxy_read_timeout 0`) - JVM 推荐 `-Xms2g -Xmx4g`,启用语音功能时适当增加 ---