# ms2 **Repository Path**: North_Fan/ms2 ## Basic Information - **Project Name**: ms2 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CoAssitant Skills 管理平台 企业级多租户技能隔离管理平台,支持技能注册、执行、对话式交互,以及 RBAC 权限控制。 ## 技术栈 | 层级 | 技术 | |------|------| | 前端 | Vue 3 + Vite + TypeScript + Element Plus | | 后端 | Python 3.11 + FastAPI + SQLAlchemy 2.0 (async) | | 数据库 | MySQL 8.0 | | 缓存 | Redis 6.2 | | LLM | 阿里云百炼 (OpenAI 兼容协议) | ## 环境要求 - Python 3.11+ - Node.js 18+ - Docker & Docker Compose - Conda (推荐) ## 快速开始 ### 1. 启动 MySQL 和 Redis ```bash cd refs docker-compose up -d ``` 等待 MySQL 初始化完成(约 30 秒),然后导入数据库: ```bash docker cp src/co_assitant_skills_isolated/database/init.sql ruoyi-ai-mysql:/tmp/init.sql docker exec ruoyi-ai-mysql mysql -uroot -proot --default-character-set=utf8mb4 ruoyi-ai-agent -e "source /tmp/init.sql" ``` 验证数据库: ```bash docker exec ruoyi-ai-mysql mysql -uroot -proot -e "SELECT id,name FROM ruoyi-ai-agent.sys_tenant" ``` ### 2. 启动后端 ```bash # 或手动安装核心依赖 pip install fastapi uvicorn pydantic sqlalchemy aiomysql redis omegaconf python-docx cryptography aiosqlite pywin32 # 设置环境变量并启动 conda activate py311; python run.py ``` 后端启动后访问 http://localhost:8000/docs 查看 API 文档。 ### 3. 启动前端 ```bash cd web npm install npm run dev ``` 前端启动后访问 http://localhost:3000 。 > 前端开发服务器自动将 `/api` 请求代理到后端 `http://localhost:8000`。 ### 4. 生产构建 ```bash cd web npm run build ``` 构建产物在 `web/dist/`,后端自动挂载为 SPA 首页,访问 http://localhost:8000 即可。 ## 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `MYSQL_HOST` | localhost | MySQL 主机 | | `MYSQL_PORT` | 3306 | MySQL 端口 | | `MYSQL_USER` | root | MySQL 用户名 | | `MYSQL_PASSWORD` | root | MySQL 密码 | | `MYSQL_DATABASE` | ruoyi-ai-agent | 数据库名 | | `REDIS_HOST` | localhost | Redis 主机 | | `REDIS_PORT` | 6379 | Redis 端口 | | `REDIS_PASSWORD` | (空) | Redis 密码 | | `LLM_MODEL` | qwen3.6-flash | LLM 模型名称 | | `LLM_API_KEY` | sk-ad8977... | LLM API 密钥 | | `LLM_BASE_URL` | https://dashscope.aliyuncs.com/compatible-mode/v1 | LLM API 地址 | ## 项目结构 ``` ms2/ ├── src/ # 后端源码 │ ├── api/ │ │ ├── app.py # FastAPI 应用工厂 │ │ └── routes/ │ │ ├── tenant.py # 租户管理路由 │ │ ├── skills.py # 技能管理路由 │ │ └── chat.py # 对话执行路由 │ └── co_assitant_skills_isolated/ │ ├── config.py # 配置(MySQL/Redis/LLM) │ ├── models.py # Pydantic 请求/响应模型 │ ├── access_control.py # RBAC 访问控制 │ ├── tenant_auto_skills.py # 租户技能管理器 │ ├── isolated_loader.py # 技能加载器 │ ├── isolated_container.py # 技能执行容器 │ ├── llm_skill_executor.py # LLM 技能执行器 │ ├── conversation_executor.py # 对话式技能执行器 │ └── database/ │ ├── init.sql # 数据库初始化脚本 │ ├── connection.py # SQLAlchemy 异步连接 │ ├── models.py # ORM 模型(12张表) │ ├── dal.py # 数据访问层 │ └── redis_cache.py # Redis 缓存层 ├── web/ # 前端源码 │ ├── src/ │ │ ├── api/ # API 封装 │ │ ├── views/ # 页面组件 │ │ ├── layouts/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ └── stores/ # Pinia 状态管理 │ ├── vite.config.ts │ └── package.json ├── data/ # 运行时数据 │ └── skills/_global/ # 全局技能目录 ├── refs/ # 参考资料 │ ├── docker-compose.yaml # MySQL + Redis │ └── ruoyi-ai-v3_mysql8.sql # 若依 AI 参考数据库 └── pyproject.toml ``` ## 数据库表设计 | 表名 | 说明 | |------|------| | `sys_tenant` | 租户表 | | `sys_user` | 用户表 | | `sys_role` | 角色表 | | `sys_user_role` | 用户-角色关联 | | `sys_permission` | 权限表 | | `sys_role_permission` | 角色-权限关联 | | `skill_registration` | 技能注册表 | | `skill_execution` | 技能执行记录 | | `chat_session` | 对话会话表 | | `chat_message` | 对话消息表 | | `chat_model` | 模型管理表 | | `chat_provider` | 模型供应商表 | ## API 端点 | 前缀 | 说明 | |------|------| | `POST/GET/DELETE /api/v1/tenants/` | 租户 CRUD | | `POST/GET/DELETE /api/v1/tenants/{id}/users` | 用户 CRUD | | `POST/GET/DELETE /api/v1/skills/register` | 技能注册/注销 | | `POST /api/v1/skills/execute` | 技能执行 | | `GET /api/v1/skills/global/list` | 全局技能列表 | | `POST/GET/DELETE /api/v1/chat/sessions` | 对话会话管理 | | `POST /api/v1/chat/sessions/{id}/stream` | SSE 流式对话 | | `WS /api/v1/chat/sessions/{id}/ws` | WebSocket 对话 | | `GET /health` | 健康检查 | ## 默认账号 系统初始化后自带以下默认数据: | 项目 | ID | 名称 | |------|----|------| | 默认租户 | `default-tenant` | 默认租户 | | 默认用户 | `default-user` | admin (管理员角色,全部权限) |