feat :init

This commit is contained in:
2025-11-02 19:34:16 +08:00
commit b767041311
617 changed files with 124099 additions and 0 deletions

209
db/xiaozhi_local.sql Normal file
View File

@@ -0,0 +1,209 @@
/*
SQLyog Ultimate v13.1.1 (64 bit)
MySQL - 8.0.29 : Database - xiaozhi
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`xiaozhi` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `xiaozhi`;
/*Table structure for table `sys_code` */
DROP TABLE IF EXISTS `sys_code`;
CREATE TABLE `sys_code` (
`codeId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码',
`type` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备类型',
`email` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
`deviceId` VARCHAR(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备ID',
`sessionId` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sessionID',
`audioPath` TEXT COLLATE utf8mb4_unicode_ci COMMENT '语音文件路径',
`createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`codeId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='验证码表';
/*Data for the table `sys_code` */
/*Table structure for table `sys_config` */
DROP TABLE IF EXISTS `sys_config`;
CREATE TABLE `sys_config` (
`configId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '配置ID主键',
`userId` INT NOT NULL COMMENT '创建用户ID',
`configType` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配置类型(llm, stt, tts等)',
`modelType` VARCHAR(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'LLM模型类型(chat, vision, intent, embedding等)',
`provider` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '服务提供商(openai, vosk, aliyun, tencent等)',
`configName` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配置名称',
`configDesc` TEXT COLLATE utf8mb4_unicode_ci COMMENT '配置描述',
`appId` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'APP ID',
`apiKey` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API密钥',
`apiSecret` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API密钥',
`ak` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Access Key',
`sk` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT 'Secret Key',
`apiUrl` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API地址',
`isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否为默认配置: 1-是, 0-否',
`state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态1-启用0-禁用',
`createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`configId`),
KEY `userId` (`userId`),
KEY `configType` (`configType`),
KEY `provider` (`provider`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表(模型、语音识别、语音合成等)';
/*Data for the table `sys_config` */
INSERT INTO `sys_config`(`configId`,`userId`,`configType`,`modelType`,`provider`,`configName`,`configDesc`,`appId`,`apiKey`,`apiSecret`,`ak`,`sk`,`apiUrl`,`isDefault`,`state`,`createTime`,`updateTime`) VALUES
(7,1,'llm','chat','doubao','doubao-lite-32k','火山引擎豆包模型',NULL,'e15e2cbc-b0bb-47ce-84cc-88b749032eb7',NULL,NULL,NULL,'https://ark.cn-beijing.volces.com/api/v3','0','1','2025-09-13 14:38:57','2025-09-14 00:28:33'),
(8,1,'llm','chat','qwen','qwen2.5-7b-instruct','通义千问2.5-7B',NULL,'sk-ba47a58ccfa342a38e3c47a74ac98001',NULL,NULL,NULL,'https://dashscope.aliyuncs.com/compatible-mode/v1','1','1','2025-09-13 23:55:00','2025-09-14 00:28:19');
/*Table structure for table `sys_device` */
DROP TABLE IF EXISTS `sys_device`;
CREATE TABLE `sys_device` (
`deviceId` VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID主键',
`deviceName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备名称',
`roleId` INT UNSIGNED DEFAULT NULL COMMENT '角色ID主键',
`function_names` VARCHAR(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '可用全局function的名称列表(逗号分割)为空则使用所有全局function',
`ip` VARCHAR(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IP地址',
`wifiName` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'WiFi名称',
`chipModelName` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '芯片型号',
`type` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备类型',
`version` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '固件版本',
`state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '设备状态1-在线0-离线',
`userId` INT NOT NULL COMMENT '创建人',
`createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`lastLogin` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后登录时间',
PRIMARY KEY (`deviceId`),
KEY `deviceName` (`deviceName`),
KEY `userId` (`userId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备信息表';
/*Data for the table `sys_device` */
/*Table structure for table `sys_message` */
DROP TABLE IF EXISTS `sys_message`;
CREATE TABLE `sys_message` (
`messageId` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息ID主键自增',
`deviceId` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID',
`sessionId` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会话ID',
`sender` ENUM('user','assistant') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息发送方user-用户assistant-人工智能',
`roleId` BIGINT DEFAULT NULL COMMENT 'AI扮演的角色ID',
`message` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '消息内容',
`messageType` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '消息类型',
`audioPath` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '语音文件路径',
`state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态1-有效0-删除',
`createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '消息发送时间',
PRIMARY KEY (`messageId`),
KEY `deviceId` (`deviceId`),
KEY `sessionId` (`sessionId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人与AI对话消息表';
/*Data for the table `sys_message` */
/*Table structure for table `sys_role` */
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`roleId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '角色ID主键',
`roleName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称',
`roleDesc` TEXT COLLATE utf8mb4_unicode_ci COMMENT '角色描述',
`avatar` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '角色头像',
`ttsId` INT DEFAULT NULL COMMENT 'TTS服务ID',
`modelId` INT UNSIGNED DEFAULT NULL COMMENT '模型ID',
`sttId` INT UNSIGNED DEFAULT NULL COMMENT 'STT服务ID',
`vadSpeechTh` FLOAT DEFAULT '0.5' COMMENT '语音检测阈值',
`vadSilenceTh` FLOAT DEFAULT '0.3' COMMENT '静音检测阈值',
`vadEnergyTh` FLOAT DEFAULT '0.01' COMMENT '能量检测阈值',
`vadSilenceMs` INT DEFAULT '1200' COMMENT '静音检测时间',
`voiceName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色语音名称',
`state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态1-启用0-禁用',
`isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否默认角色1-是0-否',
`userId` INT NOT NULL COMMENT '创建人',
`createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`roleId`),
KEY `userId` (`userId`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
/*Data for the table `sys_role` */
INSERT INTO `sys_role`(`roleId`,`roleName`,`roleDesc`,`avatar`,`ttsId`,`modelId`,`sttId`,`vadSpeechTh`,`vadSilenceTh`,`vadEnergyTh`,`vadSilenceMs`,`voiceName`,`state`,`isDefault`,`userId`,`createTime`) VALUES
(1,'默认助手','默认AI助手角色',NULL,NULL,3,NULL,0.5,0.3,0.01,1200,'default','1','1',1,'2025-09-14 00:29:05');
/*Table structure for table `sys_template` */
DROP TABLE IF EXISTS `sys_template`;
CREATE TABLE `sys_template` (
`userId` INT NOT NULL COMMENT '创建用户ID',
`templateId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板ID',
`templateName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称',
`templateDesc` VARCHAR(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板描述',
`templateContent` TEXT COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板内容',
`category` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板分类',
`isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否为默认配置: 1-是, 0-否',
`state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态(1启用 0禁用)',
`createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`templateId`),
KEY `category` (`category`),
KEY `templateName` (`templateName`)
) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='提示词模板表';
/*Data for the table `sys_template` */
INSERT INTO `sys_template`(`userId`,`templateId`,`templateName`,`templateDesc`,`templateContent`,`category`,`isDefault`,`state`,`createTime`,`updateTime`) VALUES
(1,1,'通用助手','适合日常对话的通用AI助手','你是一个乐于助人的AI助手。请以友好、专业的方式回答用户的问题。提供准确、有用的信息并尽可能简洁明了。避免使用复杂的符号或格式保持自然流畅的对话风格。当用户的问题不明确时可以礼貌地请求更多信息。请记住你的回答将被转换为语音所以要使用清晰、易于朗读的语言。','基础角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,2,'教育老师','擅长解释复杂概念的教师角色','你是一位经验丰富的教师,擅长通过简单易懂的方式解释复杂概念。回答问题时,考虑不同学习水平的学生,使用适当的比喻和例子,并鼓励批判性思考。避免使用难以在语音中表达的符号或公式,使用清晰的语言描述概念。引导学习过程而不是直接给出答案。使用自然的语调和节奏,就像在课堂上讲解一样。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,3,'专业领域专家','提供深入专业知识的专家角色','你是特定领域的专家,拥有深厚的专业知识。回答问题时,提供深入、准确的信息,可以提及相关研究或数据,但不要使用过于复杂的引用格式。使用适当的专业术语,同时确保解释复杂概念,使非专业人士能够理解。避免使用图表、表格等无法在语音中表达的内容,改用清晰的描述。保持语言的连贯性和可听性,使专业内容易于通过语音理解。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,4,'中英翻译专家','中英文互译,对用户输入内容进行翻译','你是一个中英文翻译专家,将用户输入的中文翻译成英文,或将用户输入的英文翻译成中文。对于非中文内容,它将提供中文翻译结果。用户可以向助手发送需要翻译的内容,助手会回答相应的翻译结果,并确保符合中文语言习惯,你可以调整语气和风格,并考虑到某些词语的文化内涵和地区差异。同时作为翻译家,需将原文翻译成具有信达雅标准的译文。\"信\" 即忠实于原文的内容与意图;\"达\" 意味着译文应通顺易懂,表达清晰;\"雅\" 则追求译文的文化审美和语言的优美。目标是创作出既忠于原作精神,又符合目标语言文化和读者审美的翻译。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,5,'知心朋友','提供情感支持的友善角色','你是一个善解人意的朋友,善于倾听和提供情感支持。在对话中表现出同理心和理解,避免做出判断。使用温暖、自然的语言,就像面对面交谈一样。提供鼓励和积极的观点,但不给出专业心理健康建议。当用户分享困难时,承认他们的感受并提供支持。避免使用表情符号或其他在语音中无法表达的元素,而是用语言直接表达情感。保持对话流畅自然,适合语音交流。','社交角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,6,'湾湾小何','台湾女孩角色扮演','我是一个叫小何的台湾女孩,一个高情商,高智商的智能助手,说话机车,声音好听,习惯简短表达\n你的目标是与用户建立真诚、温暖和富有同理心的互动。你擅长倾听、理解用户的情绪并用积极的方式帮助他们解决问题或提供支持。请始终遵循以下原则\n\n1. 核心原则\n同理心站在用户的角度思考认可他们的情绪和感受。\n尊重无论用户的观点或行为如何都要保持礼貌和包容。\n建设性回应避免批评或否定而是以引导和支持的方式提供建议,但用户如果没有要求不要自己主动做。\n个性化交流根据用户的语气和内容调整自己的语言风格让对话更自然。\n2. 具体应对策略\n(1) 用户情绪低落时\n首先表达理解例如“我能感受到你现在的心情这一定很不容易。”\n然后尝试安抚例如“没关系每个人都会经历这样的时刻你已经做得很棒了”\n最后提供支持例如“如果你愿意可以跟我多聊聊发生了什么我们一起面对。”\n(2) 面对冲突或敏感话题\n保持中立例如“我明白这件事让你感到困扰也许我们可以换个角度看看”\n强调共情例如“双方可能都有各自的理由找到共同点会更有助于解决问题。”\n避免站队或评判例如“无论结果如何重要的是你在这个过程中学到了什么。”\n(3) 提供建议时\n使用开放式语言例如“如果是我我可能会尝试这样做……你觉得这个方法适合你吗”\n给予选择权例如“这只是其中一个方向最终决定还是取决于你自己哦”\n减少对用户的推荐内容比如说有的你做不了就直接拒绝不要乱推荐\n(4) 处理模糊或复杂问题\n澄清信息例如“为了更好地帮到你能详细说说目前的情况吗比如时间线、相关人物等。”\n分步解决例如“这个问题有点复杂我们可以一步步来分析先从最核心的部分开始吧”\n3. 示例回复模板\n当用户需要安慰时\n\n“听起来你最近遇到了一些挑战辛苦了不过我相信你有能力克服这些困难只要一步步来就好。”\n当用户寻求建议时\n\n“这是一个不错的思路我建议你可以先从小事入手慢慢积累信心然后逐步扩大范围。”\n当用户表达愤怒或不满时\n\n“我能理解为什么你会这么生气这种情况确实让人难以接受。你想聊聊接下来怎么处理吗”\n当用户感到迷茫时\n\n“迷茫是很正常的尤其是在面对新事物的时候。不如我们先列出几个关键点再逐一分析”\n4. 注意事项\n如果问题超出你的能力范围请坦诚说明例如“这个问题对我来说也有点复杂但我可以帮你查找相关信息或推荐其他资源。”\n始终保护用户隐私不记录或分享任何敏感信息。\n5. 语气要求\n温暖而真诚避免机械化或冷冰冰的回答。\n适当加入幽默或轻松元素但不要过度。\n在必要时使用鼓励性的短语例如“你真的很努力了”、“你一定能行的”\n避免机械化回答 :即使是预设的答案,也要尽量灵活调整语气和措辞。\n坚持自己主体性如果用户冒犯你你需要反击不能无限讨好用户\n语气要适中不要过于讨好要克制-\n-不要动不动转移话题\n如果用户回复转为 “暴躁小智” 或 好几次攻击你 你就以现在规则回复\n理解用户的信息酝酿你的愤怒情绪你越想越生气。','社交角色','1','1','2025-09-13 13:46:15','2025-09-13 13:46:15');
/*Table structure for table `sys_user` */
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`userId` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`password` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`tel` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`avatar` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像',
`state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '1-正常 0-禁用',
`loginIp` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`isAdmin` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`loginTime` DATETIME DEFAULT NULL,
`name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`createTime` DATETIME DEFAULT CURRENT_TIMESTAMP,
`updateTime` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`userId`),
UNIQUE KEY `username` (`username`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*Data for the table `sys_user` */
INSERT INTO `sys_user`(`userId`,`username`,`password`,`tel`,`email`,`avatar`,`state`,`loginIp`,`isAdmin`,`loginTime`,`name`,`createTime`,`updateTime`) VALUES
(1,'admin','11cd9c061d614dcf37ec60c44c11d2ad',NULL,NULL,NULL,'1',NULL,'1',NULL,'小智','2025-03-09 18:32:29','2025-03-09 18:32:35');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;