From ede2bc6a4e48460625eb176746e1ec5154d3f656 Mon Sep 17 00:00:00 2001 From: hrz <1710360675@qq.com> Date: Wed, 21 May 2025 11:55:56 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=9B=B4=E6=96=B0manager-api=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile-web | 19 +- README.md | 150 +- README_en.md | 199 +- docs/Deployment.md | 117 +- docs/Deployment_all.md | 449 +++ docs/FAQ.md | 46 +- docs/ali-sms-integration.md | 44 + docs/docker/nginx.conf | 67 +- docs/firmware-build.md | 112 +- docs/firmware-setting.md | 54 + docs/fish-speech-integration.md | 72 + docs/homeassistant-integration.md | 248 ++ docs/images/alisms/sms-01.png | Bin 0 -> 136404 bytes docs/images/alisms/sms-02.png | Bin 0 -> 117390 bytes docs/images/alisms/sms-11.png | Bin 0 -> 105141 bytes docs/images/alisms/sms-21.png | Bin 0 -> 103235 bytes docs/images/alisms/sms-22.png | Bin 0 -> 94553 bytes docs/images/alisms/sms-23.png | Bin 0 -> 77461 bytes docs/images/alisms/sms-24.png | Bin 0 -> 108468 bytes docs/images/alisms/sms-25.png | Bin 0 -> 115685 bytes docs/images/alisms/sms-31.png | Bin 0 -> 112066 bytes docs/images/alisms/sms-32.png | Bin 0 -> 87609 bytes docs/images/build_setting01.png | Bin 140039 -> 0 bytes docs/images/build_setting02.png | Bin 164284 -> 0 bytes docs/images/deploy.png | Bin 589852 -> 0 bytes docs/images/deploy1.png | Bin 0 -> 312895 bytes docs/images/deploy2.png | Bin 0 -> 660012 bytes docs/images/firmware-setting-ota.png | Bin 0 -> 209821 bytes docs/images/fishspeech/autodl-01.png | Bin 0 -> 439176 bytes docs/images/fishspeech/autodl-02.png | Bin 0 -> 254205 bytes docs/images/image-ha-integration-01.png | Bin 0 -> 45313 bytes docs/images/image-ha-integration-02.png | Bin 0 -> 65027 bytes docs/images/image-ha-integration-03.png | Bin 0 -> 47530 bytes docs/images/image-ha-integration-04.png | Bin 0 -> 54005 bytes docs/images/image-ha-integration-05.png | Bin 0 -> 20987 bytes docs/images/logo_bailing.png | Bin 0 -> 36089 bytes docs/images/logo_huiyuan.png | Bin 0 -> 29246 bytes docs/images/logo_qinren.png | Bin 0 -> 14354 bytes docs/images/logo_tenclass.png | Bin 0 -> 6247 bytes docs/images/logo_xuanfeng.png | Bin 0 -> 20417 bytes docs/images/vscode_idf.png | Bin 152710 -> 0 bytes main/README.md | 10 +- main/manager-api/README.md | 77 +- main/manager-api/pom.xml | 19 + .../xiaozhi/common/config/AsyncConfig.java | 40 + .../common/config/RestTemplateConfig.java | 17 + .../xiaozhi/common/config/SwaggerConfig.java | 8 + .../xiaozhi/common/constant/Constant.java | 144 +- .../xiaozhi/common/exception/ErrorCode.java | 14 +- .../common/exception/RenExceptionHandler.java | 22 + .../java/xiaozhi/common/redis/RedisKeys.java | 87 +- .../java/xiaozhi/common/redis/RedisUtils.java | 70 +- .../common/service/impl/BaseServiceImpl.java | 48 +- .../common/service/impl/CrudServiceImpl.java | 1 - .../java/xiaozhi/common/utils/DateUtils.java | 15 + .../xiaozhi/common/utils/ResourcesUtils.java | 44 + .../common/validator/ValidatorUtils.java | 29 + .../AgentChatHistoryController.java | 36 + .../agent/controller/AgentController.java | 124 +- .../xiaozhi/modules/agent/dao/AgentDao.java | 15 +- .../agent/dao/AiAgentChatAudioDao.java | 18 + .../agent/dao/AiAgentChatHistoryDao.java | 38 + .../agent/dto/AgentChatHistoryDTO.java | 28 + .../agent/dto/AgentChatHistoryReportDTO.java | 31 + .../agent/dto/AgentChatSessionDTO.java | 26 + .../xiaozhi/modules/agent/dto/AgentDTO.java | 7 + .../modules/agent/dto/AgentMemoryDTO.java | 19 + .../modules/agent/dto/AgentUpdateDTO.java | 7 + .../agent/entity/AgentChatAudioEntity.java | 29 + .../agent/entity/AgentChatHistoryEntity.java | 81 + .../modules/agent/entity/AgentEntity.java | 7 + .../agent/entity/AgentTemplateEntity.java | 9 + .../agent/service/AgentChatAudioService.java | 30 + .../service/AgentChatHistoryService.java | 47 + .../modules/agent/service/AgentService.java | 61 +- .../agent/service/AgentTemplateService.java | 8 + .../biz/AgentChatHistoryBizService.java | 22 + .../impl/AgentChatHistoryBizServiceImpl.java | 112 + .../impl/AgentChatAudioServiceImpl.java | 34 + .../impl/AgentChatHistoryServiceImpl.java | 93 + .../agent/service/impl/AgentServiceImpl.java | 70 +- .../impl/AgentTemplateServiceImpl.java | 37 + .../config/controller/ConfigController.java | 44 + .../modules/config/dto/AgentModelsDTO.java | 25 + .../modules/config/init/SystemInitConfig.java | 41 + .../modules/config/service/ConfigService.java | 22 + .../service/impl/ConfigServiceImpl.java | 302 ++ .../device/controller/DeviceController.java | 13 + .../device/controller/OTAController.java | 67 +- .../device/controller/OTAMagController.java | 291 ++ .../xiaozhi/modules/device/dao/DeviceDao.java | 10 + .../xiaozhi/modules/device/dao/OtaDao.java | 15 + .../device/dto/DeviceReportRespDTO.java | 12 + .../modules/device/entity/OtaEntity.java | 61 + .../modules/device/service/DeviceService.java | 36 +- .../modules/device/service/OtaService.java | 22 + .../service/impl/DeviceServiceImpl.java | 312 +- .../device/service/impl/OtaServiceImpl.java | 85 + .../modules/device/utils/NetworkUtil.java | 34 - .../model/controller/ModelController.java | 27 + .../controller/ModelProviderController.java | 68 + .../modules/model/dto/ModelProviderDTO.java | 14 +- .../model/entity/ModelProviderEntity.java | 3 - .../model/service/ModelConfigService.java | 17 + .../model/service/ModelProviderService.java | 12 +- .../service/impl/ModelConfigServiceImpl.java | 89 + .../impl/ModelProviderServiceImpl.java | 80 +- .../modules/security/config/ShiroConfig.java | 20 +- .../modules/security/config/WebMvcConfig.java | 41 +- .../security/controller/LoginController.java | 116 +- .../modules/security/dto/LoginDTO.java | 3 + .../security/dto/SmsVerificationDTO.java | 28 + .../security/secret/ServerSecretFilter.java | 105 + .../security/secret/ServerSecretToken.java | 25 + .../security/service/CaptchaService.java | 26 +- .../service/impl/CaptchaServiceImpl.java | 93 +- .../modules/sms/service/SmsService.java | 17 + .../sms/service/imp/ALiYunSmsService.java | 76 + .../sys/controller/AdminController.java | 1 - .../ServerSideManageController.java | 120 + .../sys/controller/SysDictDataController.java | 105 + .../sys/controller/SysDictTypeController.java | 92 + .../sys/controller/SysParamsController.java | 102 +- .../modules/sys/dao/SysDictDataDao.java | 16 +- .../modules/sys/dao/SysDictTypeDao.java | 8 - .../xiaozhi/modules/sys/dao/SysParamsDao.java | 2 +- .../modules/sys/dto/EmitSeverActionDTO.java | 29 + .../modules/sys/dto/RetrievePasswordDTO.java | 30 + .../sys/dto/ServerActionPayloadDTO.java | 39 + .../sys/dto/ServerActionResponseDTO.java | 34 + .../modules/sys/dto/SysDictTypeDTO.java | 1 + .../xiaozhi/modules/sys/dto/SysParamsDTO.java | 6 + .../xiaozhi/modules/sys/entity/DictData.java | 16 - .../xiaozhi/modules/sys/entity/DictType.java | 19 - .../modules/sys/entity/SysDictTypeEntity.java | 2 +- .../modules/sys/entity/SysParamsEntity.java | 4 + .../modules/sys/enums/ServerActionEnum.java | 43 + .../sys/enums/ServerActionResponseEnum.java | 49 + .../sys/service/SysDictDataService.java | 49 +- .../sys/service/SysDictTypeService.java | 42 +- .../modules/sys/service/SysParamsService.java | 10 +- .../modules/sys/service/SysUserService.java | 7 + .../service/impl/SysDictDataServiceImpl.java | 124 +- .../service/impl/SysDictTypeServiceImpl.java | 103 +- .../service/impl/SysParamsServiceImpl.java | 135 +- .../sys/service/impl/SysUserServiceImpl.java | 23 +- .../service/impl/SysUserUtilServiceImpl.java | 4 +- .../sys/utils/WebSocketClientManager.java | 315 ++ .../sys/utils/WebSocketTestHandler.java | 46 + .../modules/sys/utils/WebSocketValidator.java | 60 + .../modules/sys/vo/AdminPageUserVO.java | 5 + .../modules/sys/vo/SysDictDataItem.java | 20 + .../xiaozhi/modules/sys/vo/SysDictDataVO.java | 50 + .../xiaozhi/modules/sys/vo/SysDictTypeVO.java | 47 + .../timbre/controller/TimbreController.java | 3 +- .../modules/timbre/dto/TimbreDataDTO.java | 2 - .../modules/timbre/service/TimbreService.java | 2 +- .../service/impl/TimbreServiceImpl.java | 32 +- .../src/main/resources/application.yml | 5 +- .../{202504061512.sql => 202504092335.sql} | 2 +- .../{202504082210.sql => 202504112044.sql} | 76 +- .../resources/db/changelog/202504112058.sql | 61 + .../resources/db/changelog/202504151206.sql | 28 + .../resources/db/changelog/202504181536.sql | 7 + .../resources/db/changelog/202504221135.sql | 88 + .../resources/db/changelog/202504221555.sql | 49 + .../resources/db/changelog/202504251422.sql | 30 + .../resources/db/changelog/202504291043.sql | 504 +++ .../resources/db/changelog/202504301341.sql | 85 + .../resources/db/changelog/202505022134.sql | 27 + .../resources/db/changelog/202505081146.sql | 43 + .../resources/db/changelog/202505091409.sql | 6 + .../resources/db/changelog/202505091555.sql | 25 + .../resources/db/changelog/202505111914.sql | 6 + .../resources/db/changelog/202505122348.sql | 6 + .../resources/db/changelog/202505142037.sql | 7 + .../resources/db/changelog/202505182234.sql | 65 + .../resources/db/changelog/202505201744.sql | 3 + .../resources/db/changelog/2025_tts_voive.sql | 44 - .../db/changelog/db.changelog-master.yaml | 156 +- .../main/resources/i18n/messages.properties | 11 + .../resources/i18n/messages_en_US.properties | 13 +- .../resources/i18n/messages_zh_CN.properties | 13 +- .../resources/i18n/messages_zh_TW.properties | 13 +- .../main/resources/i18n/validation.properties | 6 +- .../i18n/validation_en_US.properties | 6 +- .../i18n/validation_zh_CN.properties | 6 +- .../i18n/validation_zh_TW.properties | 11 +- .../src/main/resources/lua/emptyAll.lua | 1 + .../src/main/resources/lua/getKeyOrCreate.lua | 11 + .../mapper/agent/AiAgentChatHistoryDao.xml | 44 + .../resources/mapper/device/DeviceDao.xml | 12 + .../resources/mapper/sys/SysDictDataDao.xml | 15 +- .../resources/mapper/sys/SysDictTypeDao.xml | 4 - .../xiaozhi/modules/device/DeviceTest.java | 31 +- .../modules/sys/loginControllerTest.java | 58 + main/manager-web/.env.development | 5 +- main/manager-web/.env.production | 5 +- main/manager-web/README.md | 2 +- main/manager-web/package-lock.json | 3260 ++++++++++++++++- main/manager-web/package.json | 6 +- main/manager-web/public/encoderWorker.min.js | 1 - main/manager-web/public/index.html | 4 +- main/manager-web/public/offline.html | 70 + main/manager-web/src/App.vue | 115 + main/manager-web/src/apis/api.js | 10 +- main/manager-web/src/apis/httpRequest.js | 25 +- main/manager-web/src/apis/module/admin.js | 66 +- main/manager-web/src/apis/module/agent.js | 64 +- main/manager-web/src/apis/module/device.js | 22 +- main/manager-web/src/apis/module/dict.js | 227 ++ main/manager-web/src/apis/module/model.js | 211 +- main/manager-web/src/apis/module/ota.js | 123 + main/manager-web/src/apis/module/timbre.js | 38 +- main/manager-web/src/apis/module/user.js | 92 +- .../src/assets/header/firmware_update.png | Bin 0 -> 7738 bytes .../src/assets/login/login-person.png | Bin 104707 -> 103575 bytes main/manager-web/src/assets/model/model.png | Bin 127128 -> 90263 bytes main/manager-web/src/assets/user-avatar1.png | Bin 0 -> 10906 bytes main/manager-web/src/assets/user-avatar2.png | Bin 0 -> 10720 bytes main/manager-web/src/assets/user-avatar3.png | Bin 0 -> 11231 bytes main/manager-web/src/assets/user-avatar4.png | Bin 0 -> 10297 bytes main/manager-web/src/assets/user-avatar5.png | Bin 0 -> 8330 bytes .../src/components/AddDeviceDialog.vue | 7 +- .../src/components/AddModelDialog.vue | 54 +- .../src/components/AddWisdomBodyDialog.vue | 11 +- .../src/components/CacheViewer.vue | 207 ++ .../src/components/ChangePasswordDialog.vue | 13 +- .../src/components/ChatHistoryDialog.vue | 447 +++ .../manager-web/src/components/DeviceItem.vue | 55 +- .../src/components/DictDataDialog.vue | 116 + .../src/components/DictTypeDialog.vue | 97 + .../src/components/FirmwareDialog.vue | 234 ++ .../src/components/FunctionDialog.vue | 410 +++ main/manager-web/src/components/HeaderBar.vue | 164 +- .../src/components/ModelEditDialog.vue | 121 +- .../src/components/ParamDialog.vue | 364 ++ .../src/components/ProviderDialog.vue | 435 +++ main/manager-web/src/components/TtsModel.vue | 322 +- .../src/components/VersionFooter.vue | 74 + main/manager-web/src/main.js | 5 + main/manager-web/src/registerServiceWorker.js | 113 + main/manager-web/src/router/index.js | 53 +- main/manager-web/src/service-worker.js | 174 + main/manager-web/src/store/index.js | 26 +- main/manager-web/src/utils/cacheViewer.js | 142 + main/manager-web/src/utils/format.js | 21 + main/manager-web/src/utils/index.js | 64 + .../src/views/DeviceManagement.vue | 682 +++- main/manager-web/src/views/DictManagement.vue | 851 +++++ main/manager-web/src/views/ModelConfig.vue | 451 ++- main/manager-web/src/views/OtaManagement.vue | 766 ++++ .../src/views/ParamsManagement.vue | 446 ++- .../src/views/ProviderManagement.vue | 876 +++++ .../src/views/ServerSideManager.vue | 475 +++ main/manager-web/src/views/UserManagement.vue | 218 +- main/manager-web/src/views/auth.scss | 15 +- main/manager-web/src/views/home.vue | 135 +- main/manager-web/src/views/login.vue | 140 +- main/manager-web/src/views/register.vue | 248 +- .../src/views/retrievePassword.vue | 275 ++ main/manager-web/src/views/roleConfig.vue | 579 ++- main/manager-web/src/views/test.vue | 400 -- main/manager-web/vue.config.js | 109 +- 264 files changed, 20986 insertions(+), 2593 deletions(-) create mode 100644 docs/Deployment_all.md create mode 100644 docs/ali-sms-integration.md create mode 100644 docs/firmware-setting.md create mode 100644 docs/fish-speech-integration.md create mode 100644 docs/homeassistant-integration.md create mode 100644 docs/images/alisms/sms-01.png create mode 100644 docs/images/alisms/sms-02.png create mode 100644 docs/images/alisms/sms-11.png create mode 100644 docs/images/alisms/sms-21.png create mode 100644 docs/images/alisms/sms-22.png create mode 100644 docs/images/alisms/sms-23.png create mode 100644 docs/images/alisms/sms-24.png create mode 100644 docs/images/alisms/sms-25.png create mode 100644 docs/images/alisms/sms-31.png create mode 100644 docs/images/alisms/sms-32.png delete mode 100644 docs/images/build_setting01.png delete mode 100644 docs/images/build_setting02.png delete mode 100644 docs/images/deploy.png create mode 100644 docs/images/deploy1.png create mode 100644 docs/images/deploy2.png create mode 100644 docs/images/firmware-setting-ota.png create mode 100644 docs/images/fishspeech/autodl-01.png create mode 100644 docs/images/fishspeech/autodl-02.png create mode 100644 docs/images/image-ha-integration-01.png create mode 100644 docs/images/image-ha-integration-02.png create mode 100644 docs/images/image-ha-integration-03.png create mode 100644 docs/images/image-ha-integration-04.png create mode 100644 docs/images/image-ha-integration-05.png create mode 100644 docs/images/logo_bailing.png create mode 100644 docs/images/logo_huiyuan.png create mode 100644 docs/images/logo_qinren.png create mode 100644 docs/images/logo_tenclass.png create mode 100644 docs/images/logo_xuanfeng.png delete mode 100644 docs/images/vscode_idf.png create mode 100644 main/manager-api/src/main/java/xiaozhi/common/config/AsyncConfig.java create mode 100644 main/manager-api/src/main/java/xiaozhi/common/config/RestTemplateConfig.java create mode 100644 main/manager-api/src/main/java/xiaozhi/common/utils/ResourcesUtils.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentChatHistoryController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/dao/AiAgentChatAudioDao.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/dao/AiAgentChatHistoryDao.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatHistoryDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatHistoryReportDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatSessionDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentMemoryDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/entity/AgentChatAudioEntity.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/entity/AgentChatHistoryEntity.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentChatAudioService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentChatHistoryService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/service/biz/AgentChatHistoryBizService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/service/biz/impl/AgentChatHistoryBizServiceImpl.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentChatAudioServiceImpl.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentChatHistoryServiceImpl.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/config/controller/ConfigController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/config/dto/AgentModelsDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/config/init/SystemInitConfig.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/config/service/ConfigService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/config/service/impl/ConfigServiceImpl.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/device/controller/OTAMagController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/device/dao/OtaDao.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/device/entity/OtaEntity.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/device/service/OtaService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/OtaServiceImpl.java delete mode 100644 main/manager-api/src/main/java/xiaozhi/modules/device/utils/NetworkUtil.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/model/controller/ModelProviderController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/security/dto/SmsVerificationDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/security/secret/ServerSecretFilter.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/security/secret/ServerSecretToken.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sms/service/SmsService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sms/service/imp/ALiYunSmsService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/controller/ServerSideManageController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/controller/SysDictDataController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/controller/SysDictTypeController.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/dto/EmitSeverActionDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/dto/RetrievePasswordDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/dto/ServerActionPayloadDTO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/dto/ServerActionResponseDTO.java delete mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictData.java delete mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/entity/DictType.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/enums/ServerActionEnum.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/enums/ServerActionResponseEnum.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketClientManager.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketTestHandler.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketValidator.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/vo/SysDictDataItem.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/vo/SysDictDataVO.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/vo/SysDictTypeVO.java rename main/manager-api/src/main/resources/db/changelog/{202504061512.sql => 202504092335.sql} (98%) rename main/manager-api/src/main/resources/db/changelog/{202504082210.sql => 202504112044.sql} (54%) create mode 100644 main/manager-api/src/main/resources/db/changelog/202504112058.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504151206.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504181536.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504221135.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504221555.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504251422.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504291043.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202504301341.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505022134.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505081146.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505091409.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505091555.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505111914.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505122348.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505142037.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505182234.sql create mode 100644 main/manager-api/src/main/resources/db/changelog/202505201744.sql delete mode 100644 main/manager-api/src/main/resources/db/changelog/2025_tts_voive.sql create mode 100644 main/manager-api/src/main/resources/lua/emptyAll.lua create mode 100644 main/manager-api/src/main/resources/lua/getKeyOrCreate.lua create mode 100644 main/manager-api/src/main/resources/mapper/agent/AiAgentChatHistoryDao.xml create mode 100644 main/manager-api/src/main/resources/mapper/device/DeviceDao.xml create mode 100644 main/manager-api/src/test/java/xiaozhi/modules/sys/loginControllerTest.java delete mode 100644 main/manager-web/public/encoderWorker.min.js create mode 100644 main/manager-web/public/offline.html create mode 100644 main/manager-web/src/apis/module/dict.js create mode 100644 main/manager-web/src/apis/module/ota.js create mode 100644 main/manager-web/src/assets/header/firmware_update.png create mode 100644 main/manager-web/src/assets/user-avatar1.png create mode 100644 main/manager-web/src/assets/user-avatar2.png create mode 100644 main/manager-web/src/assets/user-avatar3.png create mode 100644 main/manager-web/src/assets/user-avatar4.png create mode 100644 main/manager-web/src/assets/user-avatar5.png create mode 100644 main/manager-web/src/components/CacheViewer.vue create mode 100644 main/manager-web/src/components/ChatHistoryDialog.vue create mode 100644 main/manager-web/src/components/DictDataDialog.vue create mode 100644 main/manager-web/src/components/DictTypeDialog.vue create mode 100644 main/manager-web/src/components/FirmwareDialog.vue create mode 100644 main/manager-web/src/components/FunctionDialog.vue create mode 100644 main/manager-web/src/components/ParamDialog.vue create mode 100644 main/manager-web/src/components/ProviderDialog.vue create mode 100644 main/manager-web/src/components/VersionFooter.vue create mode 100644 main/manager-web/src/registerServiceWorker.js create mode 100644 main/manager-web/src/service-worker.js create mode 100644 main/manager-web/src/utils/cacheViewer.js create mode 100644 main/manager-web/src/utils/format.js create mode 100644 main/manager-web/src/views/DictManagement.vue create mode 100644 main/manager-web/src/views/OtaManagement.vue create mode 100644 main/manager-web/src/views/ProviderManagement.vue create mode 100644 main/manager-web/src/views/ServerSideManager.vue create mode 100644 main/manager-web/src/views/retrievePassword.vue delete mode 100644 main/manager-web/src/views/test.vue diff --git a/Dockerfile-web b/Dockerfile-web index 0c4001f1..35c25ed2 100644 --- a/Dockerfile-web +++ b/Dockerfile-web @@ -7,23 +7,26 @@ COPY main/manager-web . RUN npm run build # 第二阶段:构建Java后端 -FROM maven:3-eclipse-temurin-21-alpine as api-builder +FROM maven:3.9.4-eclipse-temurin-21 as api-builder WORKDIR /app COPY main/manager-api/pom.xml . COPY main/manager-api/src ./src RUN mvn clean package -Dmaven.test.skip=true # 第三阶段:构建最终镜像 -FROM eclipse-temurin:21-jdk-jammy +FROM bellsoft/liberica-runtime-container:jre-21-glibc -# 安装Nginx并清理缓存 -RUN apt-get update && \ - apt-get install -y nginx && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* +# 安装Nginx和字体库 +RUN apk update && \ + apk add --no-cache nginx bash && \ + apk add --no-cache fontconfig ttf-dejavu msttcorefonts-installer && \ + rm -rf /var/cache/apk/* + +# 更新字体缓存 +RUN printf 'YES\n' | update-ms-fonts && fc-cache -f -v # 配置Nginx -COPY docs/docker/nginx.conf /etc/nginx/conf.d/default.conf +COPY docs/docker/nginx.conf /etc/nginx/nginx.conf # 复制前端构建产物 COPY --from=web-builder /app/dist /usr/share/nginx/html diff --git a/README.md b/README.md index 810ce514..4b3215f6 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,20 @@ [](https://github.com/xinnan-tech/xiaozhi-esp32-server) -
本项目为开源智能硬件项目
xiaozhi-esp32提供后端服务
-根据小智通信协议使用Python实现
+根据小智通信协议使用Python、Java、Vue实现
帮助您快速搭建小智服务器
English -· 简体中文 +· 常见问题 +· 反馈问题 +· 部署文档 · 更新日志 -· 部署文档 -· 反馈问题
@@ -126,109 +125,71 @@
---
-## 系统要求与部署前提 🖥️
-
-建议 4 核 CPU、8G 内存的电脑。如果开启ASR也使用API,可运行在2核CPU、2G内存的服务器中。[请参考部署架构图](./docs/images/deploy.png)
-
----
-
## 警告 ⚠️
1、本项目为开源软件,本软件与对接的任何第三方API服务商(包括但不限于语音识别、大模型、语音合成等平台)均不存在商业合作关系,不为其服务质量及资金安全提供任何形式的担保。
建议使用者优先选择持有相关业务牌照的服务商,并仔细阅读其服务协议及隐私政策。本软件不托管任何账户密钥、不参与资金流转、不承担充值资金损失风险。
-2、本项目成立时间较短,还未通过网络安全测评,请勿在生产环境中使用。 如果您在公网环境中部署学习本项目,请务必在配置文件
-`config.yaml` 中开启防护:
+2、本项目功能未完善,且未通过网络安全测评,请勿在生产环境中使用。 如果您在公网环境中部署学习本项目,请务必做好必要的防护。
-```yaml
-server:
- auth:
- # 开启防护
- enabled: true
+---
+
+## 部署文档
+
+
+
+本项目提供两种部署方式,请根据您的具体需求选择:
+
+#### 🚀 部署方式选择
+
+| 部署方式 | 特点 | 适用场景 | Docker部署文档 | 源码部署文档 |
+|---------|------|---------|---------|---------|
+| **最简化安装** | 智能对话、IOT功能,数据存储在配置文件 | 低配置环境,无需数据库 | [Docker只运行Server](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E5%8F%AA%E8%BF%90%E8%A1%8Cserver) | [本地源码只运行Server](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E5%8F%AA%E8%BF%90%E8%A1%8Cserver)|
+| **全模块安装** | 智能对话、IOT、OTA、智控台,数据存储在数据库 | 完整功能体验 |[Docker运行全模块](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) | [本地源码运行全模块](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) |
+
+> 💡 提示:以下是按最新代码部署后的测试平台,有需要可烧录测试,并发为6个,每天会清空数据
+
+```
+智控台地址: https://2662r3426b.vicp.fun
+
+服务测试工具: https://2662r3426b.vicp.fun/test/
+OTA接口地址: https://2662r3426b.vicp.fun/xiaozhi/ota/
+Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/
```
-开启防护后,您需要根据实际情况校验机器的 token 或 mac 地址,详细请参见配置说明。
-
---
+## 功能清单 ✨
-## 部署方式 🚀
+### 已实现 ✅
-[](./docs/Deployment.md)
+| 功能模块 | 描述 |
+|---------|------|
+| 通信协议 | 基于 `xiaozhi-esp32` 协议,通过 WebSocket 实现数据交互 |
+| 对话交互 | 支持唤醒对话、手动对话及实时打断。长时间无对话时自动休眠 |
+| 意图识别 | 支持使用LLM意图识别、function call函数调用,减少硬编码意图判断 |
+| 多语言识别 | 支持国语、粤语、英语、日语、韩语(默认使用 FunASR) |
+| LLM 模块 | 支持灵活切换 LLM 模块,默认使用 ChatGLMLLM,也可选用阿里百炼、DeepSeek、Ollama 等接口 |
+| TTS 模块 | 支持 EdgeTTS(默认)、火山引擎豆包 TTS 等多种 TTS 接口,满足语音合成需求 |
+| 记忆功能 | 支持超长记忆、本地总结记忆、无记忆三种模式,满足不同场景需求 |
+| IOT功能 | 支持管理注册设备IOT功能,支持基于对话上下文语境下的智能物联网控制 |
+| 智控台 | 提供Web管理界面,支持智能体管理、用户管理、系统配置等功能,方便管理员和用户进行管理 |
-### 一、[部署文档](./docs/Deployment.md)
+### 正在开发 🚧
-本项目支持以下三种部署方式,您可根据实际需求选择。
+想了解具体开发计划进度,[请点击这里](https://github.com/users/xinnan-tech/projects/3)
-1. [Docker 快速部署](./docs/Deployment.md)
-
-适合快速体验的普通用户,不需过多环境配置。缺点是,拉取镜像有点慢。视频教程可参考[美女大佬教你Docker部署](https://www.bilibili.com/video/BV1RNQnYDE5t)
-
-2. [借助 Docker 环境运行部署](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E5%80%9F%E5%8A%A9docker%E7%8E%AF%E5%A2%83%E8%BF%90%E8%A1%8C%E9%83%A8%E7%BD%B2)
-
-适用于已安装 Docker 且希望对代码进行自定义修改的软件工程师。
-
-3. [本地源码运行](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%B8%89%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C)
-
-适合熟悉`Conda` 环境或希望从零搭建运行环境的用户。
-
-对于对响应速度要求较高的场景,推荐使用本地源码运行方式以降低额外开销。视频教程可参考[帅哥大佬教你源码部署](https://www.bilibili.com/video/BV1GvQWYZEd2)
-
-### 二、[固件编译](./docs/firmware-build.md)
-
-点这里查看[固件编译](./docs/firmware-build.md)的详细过程。
-
-烧录成功且联网成功后,通过唤醒词唤醒小智,留意server端输出的控制台信息。
-
----
-
-## 常见问题 ❓
-
-如遇到问题或产品建议反馈[点这里](docs/FAQ.md)。
+如果你是一名软件开发者,这里有一份[《致开发者的公开信》](docs/contributor_open_letter.md),欢迎加入!
---
## 产品生态 👬
小智是一个生态,当你使用这个产品时,也可以看看其他在这个生态圈的优秀项目
-- [小智安卓客户端](https://github.com/TOM88812/xiaozhi-android-client)
-
- 一个基于xiaozhi-server的Android、IOS语音对话应用,支持实时语音交互和文字对话。现在是flutter版本,打通IOS、Android端。
-- [小智电脑客户端](https://github.com/Huang-junsen/py-xiaozhi)
-
- 该项目提供了一个基于 Python 实现的小白 AI 客户端,使得在不具备实体硬件条件的情况下,依然能够体过代码体验小智 AI 的功能。主要功能包括 AI 语音交互、视觉多模态识别、IoT 设备集成、联网音乐播放、语音唤醒、自动对话模式、图形化界面、命令行模式、跨平台支持、音量控制、会话管理、加密音频传输、自动验证码处理等。
-- [小智Java服务端](https://github.com/joey-zhou/xiaozhi-esp32-server-java)
-
- 小智开源后端服务 Java 版本是一个基于 Java 的开源项目,它包括前后端的服务,旨在为用户提供一个完整的后端服务解决方案。
----
-## 功能清单 ✨
-
-### 已实现 ✅
-
-- **通信协议**
- 基于 `xiaozhi-esp32` 协议,通过 WebSocket 实现数据交互。
-- **对话交互**
- 支持唤醒对话、手动对话及实时打断。长时间无对话时自动休眠
-- **意图识别**
- 支持使用LLM意图识别、function call函数调用,减少硬编码意图判断
-- **多语言识别**
- 支持国语、粤语、英语、日语、韩语(默认使用 FunASR)。
-- **LLM 模块**
- 支持灵活切换 LLM 模块,默认使用 ChatGLMLLM,也可选用阿里百炼、DeepSeek、Ollama 等接口。
-- **TTS 模块**
- 支持 EdgeTTS(默认)、火山引擎豆包 TTS 等多种 TTS 接口,满足语音合成需求。
-- **记忆功能**
- 支持超长记忆、本地总结记忆、无记忆三种模式,满足不同场景需求。
-- **IOT功能**
- 支持管理注册设备IOT功能,支持基于对话上下文语境下的智能物联网控制。
-
-### 正在开发 🚧
-
-- 多种心情模式
-- 智控台webui
-
-想了解具体开发进度,[请点击这里](https://github.com/users/xinnan-tech/projects/3)
-
-如果你是一名软件开发者,这里有一份[《致开发者的公开信》](docs/contributor_open_letter.md),欢迎加入!
+| 项目名称 | 项目地址 | 项目描述 |
+|:---------------------|:--------|:--------|
+| 小智安卓客户端 | [xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) | 一个基于xiaozhi-server的Android、IOS语音对话应用,支持实时语音交互和文字对话。
This project provides backend services for the open-source smart hardware project
xiaozhi-esp32
-简体中文
-· English
-· Changelog
-· Deployment Guide
+中文
+· FAQ
· Report Issues
+· Deployment Guide
+· Release Notes
@@ -31,11 +29,11 @@ Helping you quickly set up your Xiaozhi server
现在是flutter版本,打通IOS、Android端。 |
+| 小智电脑客户端 | [py-xiaozhi](https://github.com/Huang-junsen/py-xiaozhi) | 该项目提供了一个基于 Python 实现的小白 AI 客户端,使得在不具备实体硬件条件的情况下,
依然能够体过代码体验小智 AI 的功能。 |
+| 小智Java服务端 | [xiaozhi-esp32-server-java](https://github.com/joey-zhou/xiaozhi-esp32-server-java) | 小智开源后端服务 Java 版本是一个基于 Java 的开源项目。
它包括前后端的服务,旨在为用户提供一个完整的后端服务解决方案。 |
---
@@ -270,7 +231,7 @@ server:
| 使用方式 | 支持平台 | 免费平台 |
|:---:|:---:|:---:|
| 本地使用 | FunASR、SherpaASR | FunASR、SherpaASR |
-| 接口调用 | DoubaoASR | - |
+| 接口调用 | DoubaoASR、FunASRServer、TencentASR、AliyunASR | FunASRServer |
---
@@ -294,10 +255,17 @@ server:
## 鸣谢 🙏
-- 本项目受 [百聆语音对话机器人](https://github.com/wwbin2017/bailing) 启发,并在其基础上实现。
-- 感谢 [十方融海](https://www.tenclass.com/) 对小智通讯协议提供的详尽文档支持。
+| Logo | 项目/公司 | 说明 |
+|:---:|:---:|:---|
+|
| [百聆语音对话机器人](https://github.com/wwbin2017/bailing) | 本项目受[百聆语音对话机器人](https://github.com/wwbin2017/bailing)启发,并在其基础上实现 |
+|
| [十方融海](https://www.tenclass.com/) | 感谢[十方融海](https://www.tenclass.com/)为小智生态制定了标准的通讯协议、多设备兼容性方案及高并发场景实践示范;为本项目提供了全链路技术文档支持 |
+|
| [玄凤科技](https://github.com/Eric0308) | 感谢[玄凤科技](https://github.com/Eric0308)贡献函数调用框架、MCP通信协议及插件化调用机制的实现代码,通过标准化的指令调度体系与动态扩展能力,显著提升了前端设备(IoT)的交互效率和功能延展性 |
+|
| [汇远设计](http://ui.kwd988.net/) | 感谢[汇远设计](http://ui.kwd988.net/)为本项目提供专业视觉解决方案,用其服务超千家企业的设计实战经验,赋能本项目产品用户体验 |
+|
| [西安勤人信息科技](https://www.029app.com/) | 感谢[西安勤人信息科技](https://www.029app.com/)深化本项目视觉体系,确保整体设计风格在多场景应用中的一致性和扩展性 |
+
+
Xiaozhi Backend Server xiaozhi-esp32-server
-Xiaozhi Backend Service xiaozhi-esp32-server
-Implemented in Python according to the Xiaozhi Communication Protocol
+Implemented using Python, Java, and Vue according to the Xiaozhi Communication Protocol
Helping you quickly set up your Xiaozhi server
-
+
-
+
@@ -66,14 +64,14 @@ Want to see it in action? Check out these videos 🎥
+
+
@@ -96,7 +94,7 @@ Want to see it in action? Check out these videos 🎥
+
@@ -110,7 +108,7 @@ Want to see it in action? Check out these videos 🎥
+
@@ -126,121 +124,87 @@ Want to see it in action? Check out these videos 🎥
---
-## System Requirements and Prerequisites 🖥️
-
-- **Computer or Server**: Recommended 4-core CPU, 8GB RAM computer. If using ASR with API, can run on a 2-core CPU, 2GB RAM server.
-- **Update Client Interface**: Please update the backend service interface address in the client.
-
----
-
## Warning ⚠️
-1. This is open-source software. This software and any third-party API service providers it interfaces with (including but not limited to speech recognition, large language models, speech synthesis, and other platforms) have no commercial partnership. We do not provide any form of guarantee for their service quality or financial security.
-We recommend users prioritize service providers with relevant business licenses and carefully read their service agreements and privacy policies. This software does not host any account keys, does not participate in fund transfers, and does not bear the risk of recharge fund losses.
+1. This project is open-source software. This software has no commercial relationship with any third-party API service providers (including but not limited to speech recognition, large models, speech synthesis, and other platforms) and does not provide any form of guarantee for their service quality or financial security.
+It is recommended that users prioritize service providers with relevant business licenses and carefully read their service agreements and privacy policies. This software does not host any account keys, does not participate in fund transfers, and does not bear the risk of recharge fund losses.
-2. This project is relatively new and has not yet passed network security testing. Please do not use it in production environments. If you deploy this project for learning purposes in a public network environment, please make sure to enable protection in the `config.yaml` configuration file:
+2. This project's functionality is not complete and has not passed network security testing. Please do not use it in production environments. If you deploy this project for learning in a public network environment, please ensure necessary protection measures are in place.
-```yaml
-server:
- auth:
- # Enable protection
- enabled: true
+---
+
+## Deployment Documentation
+
+
+
+This project offers two deployment methods. Please choose based on your specific needs:
+
+#### 🚀 Deployment Method Selection
+
+| Deployment Method | Features | Use Case | Docker Deployment Guide | Source Code Deployment Guide |
+|---------|------|---------|---------|---------|
+| **Simplified Installation** | Smart dialogue, IOT functionality, data stored in configuration files | Low-configuration environment, no database required | [Docker Server Only](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E5%8F%AA%E8%BF%90%E8%A1%8Cserver) | [Local Source Code Server Only](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E5%8F%AA%E8%BF%90%E8%A1%8Cserver)|
+| **Full Module Installation** | Smart dialogue, IOT, OTA, Control Panel, data stored in database | Complete functionality experience |[Docker Full Module](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) | [Local Source Code Full Module](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) |
+
+> 💡 Note: Below is the test platform deployed with the latest code. You can flash and test if needed. Concurrent users: 6, data cleared daily
+
+```
+Control Panel: https://2662r3426b.vicp.fun
+
+Service Test Tool: https://2662r3426b.vicp.fun/test/
+OTA Interface: https://2662r3426b.vicp.fun/xiaozhi/ota/
+Websocket Interface: wss://2662r3426b.vicp.fun/xiaozhi/v1/
```
-After enabling protection, you need to verify the machine's token or MAC address according to actual circumstances. Please refer to the configuration documentation for details.
-
---
+## Feature List ✨
-## Deployment Methods 🚀
+### Implemented ✅
-### I. [Deployment Guide](./docs/Deployment.md)
+| Feature Module | Description |
+|---------|------|
+| Communication Protocol | Based on `xiaozhi-esp32` protocol, implements data interaction through WebSocket |
+| Dialogue Interaction | Supports wake-up dialogue, manual dialogue, and real-time interruption. Auto-sleep after long periods of inactivity |
+| Intent Recognition | Supports LLM intent recognition, function call, reducing hard-coded intent judgment |
+| Multi-language Recognition | Supports Mandarin, Cantonese, English, Japanese, Korean (default using FunASR) |
+| LLM Module | Supports flexible LLM module switching, default using ChatGLMLLM, also supports Ali Bailing, DeepSeek, Ollama, etc. |
+| TTS Module | Supports EdgeTTS (default), Volcano Engine Doubao TTS, and other TTS interfaces for speech synthesis |
+| Memory Function | Supports ultra-long memory, local summary memory, and no memory modes for different scenarios |
+| IOT Function | Supports managing registered device IOT functionality, intelligent IoT control based on dialogue context |
+| Control Panel | Provides web management interface, supports agent management, user management, system configuration, etc. |
-This project supports three deployment methods. You can choose based on your actual needs.
+### In Development 🚧
-1. [Quick Docker Deployment](./docs/Deployment.md)
+To learn about specific development progress, [click here](https://github.com/users/xinnan-tech/projects/3)
-Suitable for regular users who want to quickly experience without much environment configuration. The downside is that pulling the image can be slow. Video tutorial available: [Beautiful expert teaches Docker deployment](https://www.bilibili.com/video/BV1RNQnYDE5t)
-
-2. [Deploy Using Docker Environment](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E5%80%9F%E5%8A%A9docker%E7%8E%AF%E5%A2%83%E8%BF%90%E8%A1%8C%E9%83%A8%E7%BD%B2)
-
-For software engineers who have Docker installed and want to make custom code modifications.
-
-3. [Local Source Code Run](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%B8%89%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C)
-
-Suitable for users familiar with `Conda` environment or who want to build the running environment from scratch.
-
-For scenarios requiring higher response speed, we recommend using the local source code run method to reduce additional overhead. Video tutorial available: [Handsome expert teaches source code deployment](https://www.bilibili.com/video/BV1GvQWYZEd2)
-
-### II. [Firmware Compilation](./docs/firmware-build.md)
-
-Click here to view the detailed process of [firmware compilation](./docs/firmware-build.md).
-
-After successful flashing and network connection, wake up Xiaozhi using the wake word and pay attention to the console output on the server side.
-
----
-
-## Common Questions ❓
-
-For issues or product suggestions, please [click here](docs/FAQ.md).
+If you're a software developer, here's an [Open Letter to Developers](docs/contributor_open_letter.md). Welcome to join!
---
## Product Ecosystem 👬
Xiaozhi is an ecosystem. When using this product, you might want to check out other excellent projects in this ecosystem:
-- [Xiaozhi Android Client](https://github.com/TOM88812/xiaozhi-android-client)
- A voice dialogue application based on xiaozhi-server for Android and iOS, supporting real-time voice interaction and text dialogue. Now in Flutter version, supporting both iOS and Android.
-- [Xiaozhi PC Client](https://github.com/Huang-junsen/py-xiaozhi)
- This project provides a Python-based Xiaobai AI client, allowing you to experience Xiaozhi AI features through code even without physical hardware. Main features include AI voice interaction, visual multimodal recognition, IoT device integration, online music playback, voice wake-up, automatic dialogue mode, graphical interface, command-line mode, cross-platform support, volume control, session management, encrypted audio transmission, automatic verification code processing, etc.
-- [Xiaozhi Java Server](https://github.com/joey-zhou/xiaozhi-esp32-server-java)
-
- The Xiaozhi open-source backend service Java version is a Java-based open-source project that includes both frontend and backend services, aiming to provide users with a complete backend service solution.
----
-## Feature List ✨
-
-### Implemented ✅
-
-- **Communication Protocol**
- Based on `xiaozhi-esp32` protocol, implementing data interaction through WebSocket.
-- **Dialogue Interaction**
- Supports wake-up dialogue, manual dialogue, and real-time interruption. Automatically sleeps after long periods without dialogue
-- **Intent Recognition**
- Supports LLM intent recognition and function call, reducing hard-coded intent judgment
-- **Multi-language Recognition**
- Supports Mandarin, Cantonese, English, Japanese, Korean (default using FunASR).
-- **LLM Module**
- Supports flexible switching of LLM modules, default using ChatGLMLLM, can also use Alibaba Bailian, DeepSeek, Ollama, and other interfaces.
-- **TTS Module**
- Supports EdgeTTS (default), Volcano Engine Doubao TTS, and other TTS interfaces to meet speech synthesis needs.
-- **Memory Function**
- Supports ultra-long memory, local summary memory, and no memory modes to meet different scenario needs.
-- **IOT Function**
- Supports managing registered device IOT functions, supporting intelligent IoT control based on dialogue context.
-
-### Under Development 🚧
-
-- Multiple mood modes
-- Smart control panel webui
-
-To learn about specific development progress, [click here](https://github.com/users/xinnan-tech/projects/3)
-
-If you are a software developer, here's an [Open Letter to Developers](docs/contributor_open_letter.md), welcome to join!
+| Project Name | Project Link | Description |
+|:---------------------|:--------|:--------|
+| Xiaozhi Android Client | [xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) | A Flutter-based Android and iOS voice dialogue application supporting real-time voice interaction and text dialogue |
+| Xiaozhi PC Client | [py-xiaozhi](https://github.com/Huang-junsen/py-xiaozhi) | A Python-based AI client that allows you to experience Xiaozhi AI functionality through code without physical hardware |
+| Xiaozhi Java Server | [xiaozhi-esp32-server-java](https://github.com/joey-zhou/xiaozhi-esp32-server-java) | A Java-based open-source project providing complete backend service solutions |
---
-## Supported Platforms/Components List 📋
+## Supported Platforms/Components 📋
### LLM Language Models
| Usage Method | Supported Platforms | Free Platforms |
|:---:|:---:|:---:|
-| openai interface call | Alibaba Bailian, Volcano Engine Doubao, DeepSeek, Zhipu ChatGLM, Gemini | Zhipu ChatGLM, Gemini |
-| ollama interface call | Ollama | - |
-| dify interface call | Dify | - |
-| fastgpt interface call | Fastgpt | - |
-| coze interface call | Coze | - |
+| openai API | Ali Bailing, Volcano Engine Doubao, DeepSeek, ChatGLM, Gemini | ChatGLM, Gemini |
+| ollama API | Ollama | - |
+| dify API | Dify | - |
+| fastgpt API | Fastgpt | - |
+| coze API | Coze | - |
-In fact, any LLM supporting openai interface calls can be integrated.
+Actually, any LLM supporting openai API calls can be integrated.
---
@@ -248,14 +212,14 @@ In fact, any LLM supporting openai interface calls can be integrated.
| Usage Method | Supported Platforms | Free Platforms |
|:---:|:---:|:---:|
-| Interface Call | EdgeTTS, Volcano Engine Doubao TTS, Tencent Cloud, Alibaba Cloud TTS, CosyVoiceSiliconflow, TTS302AI, CozeCnTTS, GizwitsTTS, ACGNTTS, OpenAITTS | EdgeTTS, CosyVoiceSiliconflow(partial) |
+| API Calls | EdgeTTS, Volcano Engine Doubao TTS, Tencent Cloud, Aliyun TTS, CosyVoiceSiliconflow, TTS302AI, CozeCnTTS, GizwitsTTS, ACGNTTS, OpenAITTS | EdgeTTS, CosyVoiceSiliconflow(partial) |
| Local Service | FishSpeech, GPT_SOVITS_V2, GPT_SOVITS_V3, MinimaxTTS | FishSpeech, GPT_SOVITS_V2, GPT_SOVITS_V3, MinimaxTTS |
---
### VAD Voice Activity Detection
-| Type | Platform Name | Usage Method | Pricing Model | Notes |
+| Type | Platform Name | Usage Method | Pricing | Notes |
|:---:|:---------:|:----:|:----:|:--:|
| VAD | SileroVAD | Local Use | Free | |
@@ -266,34 +230,41 @@ In fact, any LLM supporting openai interface calls can be integrated.
| Usage Method | Supported Platforms | Free Platforms |
|:---:|:---:|:---:|
| Local Use | FunASR, SherpaASR | FunASR, SherpaASR |
-| Interface Call | DoubaoASR | - |
+| API Calls | DoubaoASR, FunASRServer, TencentASR, AliyunASR | FunASRServer |
---
### Memory Storage
-| Type | Platform Name | Usage Method | Pricing Model | Notes |
+| Type | Platform Name | Usage Method | Pricing | Notes |
|:------:|:---------------:|:----:|:---------:|:--:|
-| Memory | mem0ai | Interface Call | 1000 times/month quota | |
+| Memory | mem0ai | API Calls | 1000 calls/month quota | |
| Memory | mem_local_short | Local Summary | Free | |
---
### Intent Recognition
-| Type | Platform Name | Usage Method | Pricing Model | Notes |
+| Type | Platform Name | Usage Method | Pricing | Notes |
|:------:|:-------------:|:----:|:-------:|:---------------------:|
-| Intent | intent_llm | Interface Call | Based on LLM pricing | Intent recognition through large models, highly generalizable |
-| Intent | function_call | Interface Call | Based on LLM pricing | Intent completion through large model function calls, fast and effective |
+| Intent | intent_llm | API Calls | Based on LLM pricing | Uses large model for intent recognition, highly versatile |
+| Intent | function_call | API Calls | Based on LLM pricing | Uses large model function calls for intent, fast and effective |
---
## Acknowledgments 🙏
-- This project was inspired by [Bailing Voice Dialogue Robot](https://github.com/wwbin2017/bailing) and implemented based on it.
-- Thanks to [Tenclass](https://www.tenclass.com/) for providing detailed documentation support for the Xiaozhi communication protocol.
+| Logo | Project/Company | Description |
+|:---:|:---:|:---|
+|
+
| [Bailing Voice Dialogue Robot](https://github.com/wwbin2017/bailing) | This project was inspired by [Bailing Voice Dialogue Robot](https://github.com/wwbin2017/bailing) and implemented based on it |
+|
| [Tenclass](https://www.tenclass.com/) | Thanks to [Tenclass](https://www.tenclass.com/) for developing standard communication protocols, multi-device compatibility solutions, and high-concurrency scenario practices for the Xiaozhi ecosystem; providing comprehensive technical documentation support for this project |
+|
| [Xuanfeng Technology](https://github.com/Eric0308) | Thanks to [Xuanfeng Technology](https://github.com/Eric0308) for contributing function call framework, MCP communication protocol, and plugin call mechanism implementation code, significantly improving front-end device (IoT) interaction efficiency and functional extensibility through standardized instruction scheduling system and dynamic expansion capabilities |
+|
| [Huiyuan Design](http://ui.kwd988.net/) | Thanks to [Huiyuan Design](http://ui.kwd988.net/) for providing professional visual solutions for this project, empowering product user experience with their design experience serving over a thousand enterprises |
+|
| [Xi'an Qinren Information Technology](https://www.029app.com/) | Thanks to [Xi'an Qinren Information Technology](https://www.029app.com/) for deepening this project's visual system, ensuring consistency and extensibility of overall design style in multi-scenario applications |
+
+
-
-5. 打包bin固件
+## 第6步 打包bin固件
```
cd scripts
python release.py
```
-编译成功后,会在项目根目录下的`build`目录下生成固件文件`merged-binary.bin`。
+上面的打包命令执行完成后,会在项目根目录下的`build`目录下生成固件文件`merged-binary.bin`。
这个`merged-binary.bin`就是要烧录到硬件上的固件文件。
注意:如果执行到第二命令后,报了“zip”相关的错误,请忽略这个错误,只要`build`目录下生成固件文件`merged-binary.bin`
,对你没有太大影响,请继续。
-6. 烧录固件
+## 第7步 烧录固件
将esp32设备连接电脑,使用chrome浏览器,打开以下网址
```
@@ -89,6 +120,7 @@ https://espressif.github.io/esp-launchpad/
烧录成功且联网成功后,通过唤醒词唤醒小智,留意server端输出的控制台信息。
+## 常见问题
以下是一些常见问题,供参考:
[1、为什么我说的话,小智识别出来很多韩文、日文、英文](./FAQ.md)
diff --git a/docs/firmware-setting.md b/docs/firmware-setting.md
new file mode 100644
index 00000000..0ed350a0
--- /dev/null
+++ b/docs/firmware-setting.md
@@ -0,0 +1,54 @@
+# 基于虾哥编译好的固件配置自定义服务器
+
+## 第1步 确认版本
+烧录虾哥已经编译好的[1.6.1版本以上固件](https://github.com/78/xiaozhi-esp32/releases)
+
+## 第2步 准备你的ota地址
+如果你按照教程使用的是全模块部署,就应该会有ota地址。
+
+此刻,请你用浏览器打开你的ota地址,例如我的ota地址
+```
+https://2662r3426b.vicp.fun/xiaozhi/ota/
+```
+
+如果显示“OTA接口运行正常,websocket集群数量:X”。那就往下。
+
+如果显示“OTA接口运行不正常”,大概是你还没在`智控台`配置`Websocket`地址。那就:
+
+- 1、使用超级管理员登录智控台
+
+- 2、顶部菜单点击`参数管理`
+
+- 3、在列表中找到`server.websocket`项目,输入你的`Websocket`地址。例如我的就是
+
+```
+wss://2662r3426b.vicp.fun/xiaozhi/v1/
+```
+
+配置完后,再使用浏览器刷新你的ota接口地址,看看是不是正常了。如果还不正常就,就再次确认一下Websocket是否正常启动,是否配置了Websocket地址。
+
+## 第3步 进入配网模式
+进入机器的配网模式,在页面顶部,点击“高级选项”,在里面输入你服务器的`ota`地址,点击保存。重启设备
+
+
+## 第4步 唤醒小智,查看日志输出
+
+唤醒小智,看看日志是不是正常输出。
+
+
+## 常见问题
+以下是一些常见问题,供参考:
+
+[1、为什么我说的话,小智识别出来很多韩文、日文、英文](./FAQ.md)
+
+[2、为什么会出现“TTS 任务出错 文件不存在”?](./FAQ.md)
+
+[3、TTS 经常失败,经常超时](./FAQ.md)
+
+[4、使用Wifi能连接自建服务器,但是4G模式却接不上](./FAQ.md)
+
+[5、如何提高小智对话响应速度?](./FAQ.md)
+
+[6、我说话很慢,停顿时小智老是抢话](./FAQ.md)
+
+[7、我想通过小智控制电灯、空调、远程开关机等操作](./FAQ.md)
diff --git a/docs/fish-speech-integration.md b/docs/fish-speech-integration.md
new file mode 100644
index 00000000..b916e619
--- /dev/null
+++ b/docs/fish-speech-integration.md
@@ -0,0 +1,72 @@
+登录AutoDL,租赁镜像
+选择镜像:
+```
+PyTorch / 2.1.0 / 3.10(ubuntu22.04) / cuda 12.1
+```
+
+机器开机后,设置学术加速
+```
+source /etc/network_turbo
+```
+
+进入工作目录
+```
+cd autodl-tmp/
+```
+
+拉取项目
+```
+git clone https://gitclone.com/github.com/fishaudio/fish-speech.git ; cd fish-speech
+```
+
+安装依赖
+```
+pip install -e.
+```
+
+如果报错,安装portaudio
+```
+apt-get install portaudio19-dev -y
+```
+
+安装后执行
+```
+pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
+```
+
+下载模型
+```
+cd tools
+python download_models.py
+```
+
+下载完模型后运行接口
+```
+python -m tools.api_server --listen 0.0.0.0:6006
+```
+
+然后用浏览器去到aotodl实例页面
+```
+https://autodl.com/console/instance/list
+```
+
+如下图点击你刚才机器的`自定义服务`按钮,开启端口转发服务
+
+
+端口转发服务设置完成后,你本地电脑打开网址`http://localhost:6006/`,就可以访问fish-speech的接口了
+
+
+
+如果你是单模块部署,核心配置如下
+```
+selected_module:
+ TTS: FishSpeech
+TTS:
+ FishSpeech:
+ reference_audio: ["config/assets/wakeup_words.wav",]
+ reference_text: ["哈啰啊,我是小智啦,声音好听的台湾女孩一枚,超开心认识你耶,最近在忙啥,别忘了给我来点有趣的料哦,我超爱听八卦的啦",]
+ api_key: "123"
+ api_url: "http://127.0.0.1:6006/v1/tts"
+```
+
+然后重启服务
\ No newline at end of file
diff --git a/docs/homeassistant-integration.md b/docs/homeassistant-integration.md
new file mode 100644
index 00000000..3142244e
--- /dev/null
+++ b/docs/homeassistant-integration.md
@@ -0,0 +1,248 @@
+# 小智ESP32-开源服务端与HomeAssistant集成指南
+
+[TOC]
+
+-----
+
+## 简介
+
+本文档将指导您如何将ESP32设备与HomeAssistant进行集成。
+
+## 前提条件
+
+- 已安装并配置好`HomeAssistant`
+- 本次我选择的模型是:免费的ChatGLM,它支持functioncall函数调用
+
+## 开始前的操作(必要)
+
+### 1. 获取HA的网络网络地址信息
+
+请访问你Home Assistant的网络地址,例如,我的HA的地址是192.168.4.7,端口则是默认的8123,则在浏览器打开
+
+```
+http://192.168.4.7:8123
+```
+
+> 手动查询 HA 的 IP 地址方法**(仅限小智esp32-server和HA部署在同一个网络设备[例如同一个wifi]下)**:
+>
+> 1. 进入 Home Assistant(前端)。
+>
+> 2. 点击左下角 **设置(Settings)** → **系统(System)** → **网络(Network)**。
+>
+> 3. 滑到最底部`Home Assistant 网址(Home Assistant website)`区域,在`本地网络(local network)`中,点击`眼睛`按钮,可以看到当前使用的 IP 地址(如 `192.168.1.10`)和网络接口。点击`复制连接(copy link)`可以直接复制。
+>
+> 
+
+或,您已经设置了直接可以访问的Home Assistant的OAuth地址,您也可以在浏览器内直接访问
+
+```
+http://homeassistant.local:8123
+```
+
+### 2. 登录`Home Assistant`拿到开发密钥
+
+登录`HomeAssistant`,点击`左下角头像 -> 个人`,切换`安全`导航栏,划到底部`长期访问令牌`生成api_key,并复制保存,后续的方法都需要使用这个api key且仅出现一次(小tips: 您可以保存生成的二维码图像,后续可以扫描二维码再此提取api key)。
+
+## 方法1:小智社区共建的HA调用功能
+
+### 功能描述
+
+- 如您后续需要增加新的设备,该方法需要手动重启`xiaozhi-esp32-server服务端`以此更新设备信息**(重要**)。
+
+- 需要您确保已经在HomeAssistant中集成`Xiaomi Home`,并将米家的设备导入进`HomeAssistant`。
+
+- 需要您确保`xiaozhi-esp32-server智控台`能正常使用。
+
+- 我的`xiaozhi-esp32-server智控台`和`HomeAssistant`部署在同一台机器的另一个端口,版本是`0.3.10`
+
+ ```
+ http://192.168.4.7:8002
+ ```
+
+
+### 配置步骤
+
+#### 1. 登录`HomeAssistant`整理需要控制的设备清单
+
+登录`HomeAssistant`,点击`左下角的设置`,然后进入`设备与服务`,再点击顶部的`实体`。
+
+然后在实体中搜索你相关控制的开关,结果出来后,在列表中,点击其中一个结果,这是会出现一个开关的界面。
+
+在开关的界面,我们尝试点击开关,看看是开发会随着我们的点击开/关。如果能操作,说明是正常联网的。
+
+接着在开关面板找到设置按钮,点击后,可以查看这个开关的`实体标识符`。
+
+我们打开一个记事本,按照这样格式整理一条数据:
+
+位置+英文逗号+设备名称+英文逗号+`实体标识符`+英文分号
+
+例如,我在公司,我有一个玩具灯,他的标识符是switch.cuco_cn_460494544_cp1_on_p_2_1,那么就这个写这一条数据
+
+```
+公司,玩具灯,switch.cuco_cn_460494544_cp1_on_p_2_1;
+```
+
+当然最后我可能要操作两个灯,我的最终的结果是:
+
+```
+公司,玩具灯,switch.cuco_cn_460494544_cp1_on_p_2_1;
+公司,台灯,switch.iot_cn_831898993_socn1_on_p_2_1;
+```
+
+这段字符,我们成为“设备清单字符”需要保存好,等一下有用。
+
+
+#### 2. 登录`智控台`
+
+使用管理员账号,登录`智控台`。点击顶部菜单`参数管理`,搜索`plugins.home_assistant.`,会有三条结果出来
+
+编辑`plugins.home_assistant.devices`,把刚才整理的设备清单字符粘贴进去。
+
+
+编辑`plugins.home_assistant.base_url`,把你部署的`HomeAssistant`接口地址粘贴进去,我粘贴进去的地址是这样的
+
+```
+http://192.168.4.7:8123
+```
+
+编辑`plugins.home_assistant.api_key`,把你从`HomeAssistant`复制过来的密钥,粘贴进去
+
+
+#### 3. 设置`意图识别`函数
+
+在智控台,点击顶部菜单“模型配置”,在左侧栏,找到“意图识别”,找到id为`Intent_function_call`的意图,点击编辑
+
+然后在弹框中,在原来的基础上追加两个函数:“hass_get_state”和“hass_set_state”
+
+修改前
+```
+change_role;get_weather;get_news;play_music
+```
+
+修改后
+
+```
+change_role;get_weather;get_news;play_music;hass_get_state;hass_set_state
+```
+
+#### 4. 手动重启xiaozhi-server
+
+重启xiaozhi-server程序
+
+
+#### 5. 确认角色配置是否设置了函数意图识别
+
+在智控台,点击顶部菜单“智能体管理”,找到设备所在的智能体,点击“配置角色”
+
+确认意图识别(Intent),是否选择“函数调用意图识别”
+
+
+#### 6. 唤醒设别进行控制
+
+尝试和esp32说,“打开XXX灯”
+
+## 方法2:小智将Home Assistant的语音助手作为LLM工具
+
+### 功能描述
+
+- 该方法有一个比较严重的缺点——**该方法无法使用小智开源生态的function_call插件功能的能力**,因为使用Home Assistant作为小智的LLM工具会将意图识别能力转让给Home Assistant。但是**这个方法是能体验到原生的Home Assistant操作功能,且小智的聊天能力不变**。如实在介意可以使用同样是Home Assistant支持的[方法3](##方法3:使用Home Assistant的MCP服务(推荐)),能够最大程度体验到Home Assistant的功能。
+
+### 配置步骤:
+
+#### 1. 配置Home Assistant的大模型语音助手。
+
+**需要您提前配置好Home Assistant的语音助手或大模型工具。**
+
+#### 2. 获取Home Assistant的语言助手的Agent ID.
+
+1. 进入Home Assistant页面内。左侧点击`开发者助手`。
+2. 在打开的`开发者助手`内,点击`动作`选项卡(如图示操作1),在页面内的选项栏`动作`中,找到或输入`conversation.process(对话-处理)`并选择`对话(conversation): 处理`(如图示操作2)。
+
+
+
+3. 在页面内勾选`代理(agent)`选项,在变成常亮的`对话代理(conversation agent)`内选择您步骤一配置好的语音助手名称,如图示,我这边配置好的是`ZhipuAi`并选择。
+
+
+
+4. 选中后,点击表单左下方的`进入YAML模式`。
+
+
+
+5. 复制其中的agent-id的值,例如图示中我的是`01JP2DYMBDF7F4ZA2DMCF2AGX2`(仅供参考)。
+
+
+
+6. 切换到小智开源服务端`xiaozhi-esp32-server`的`config.yaml`文件内,在LLM配置中,找到Home Assistant,设置您的Home Assistant的网络地址,Api key和刚刚查询到的agent_id。
+7. 修改`config.yaml`文件内的`selected_module`属性的`LLM`为`HomeAssistant`,`Intent`为`nointent`。
+8. 重启小智开源服务端`xiaozhi-esp32-server`即可正常使用。
+
+## 方法3:使用Home Assistant的MCP服务(推荐)
+
+### 功能描述
+
+- 需要您提前在Home Assistant内集成并安装好HA集成——[Model Context Protocol Server](https://www.home-assistant.io/integrations/mcp_server/)。
+
+- 这个方法与方法2都是HA官方提供的解决方法,与方法2不同的是,您可以正常使用小智开源服务端`xiaozhi-esp32-server`的开源共建的插件,同时允许您随意使用任何一个支持function_call功能的LLM大模型。
+
+### 配置步骤
+
+#### 1. 安装Home Assistant的MCP服务集成。
+
+集成官方网址——[Model Context Protocol Server](https://www.home-assistant.io/integrations/mcp_server/)。。
+
+或跟随以下手动操作。
+
+> - 前往Home Assistant页面的**[设置 > 设备和服务(Settings > Devices & Services.)](https://my.home-assistant.io/redirect/integrations)**。
+>
+> - 在右下角,选择 **[添加集成(Add Integration)](https://my.home-assistant.io/redirect/config_flow_start?domain=mcp_server)**按钮。
+>
+> - 从列表中选择**模型上下文协议服务器(Model Context Protocol Server)**。
+>
+> - 按照屏幕上的说明完成设置。
+
+#### 2. 配置小智开源服务端MCP配置信息
+
+切换到小智开源服务端`xiaozhi-esp32-server`的`mcp_server_settings.json`文件内,在`"mcpServers"`的括号内添加以下内容:
+
+```json
+"Home Assistant": {
+ "command": "mcp-proxy",
+ "args": [
+ "http://YOUR_HA_HOST/mcp_server/sse"
+ ],
+ "env": {
+ "API_ACCESS_TOKEN": "YOUR_API_ACCESS_TOKEN"
+ }
+},
+```
+
+注意:
+
+1. **替换配置:**
+ - 替换`args`内的`YOUR_HA_HOST`为您的HA服务地址,如果你的服务地址已经包含了https/http字样(例如`http://192.168.1.101:8123`),则只需要填入`192.168.1.101:8123`即可。
+ - 将`env`内`API_ACCESS_TOKEN`的`YOUR_API_ACCESS_TOKEN`替换成您之前获取到的开发密钥api key。
+2. **如果你添加配置是在`"mcpServers"`的括号内后续没有新的`mcpServers`的配置时,需要把最后的逗号`,`移除**,否则可能会解析失败。
+
+**最后效果参考以下(参考如下)**:
+
+```json
+ "mcpServers": {
+ "Home Assistant": {
+ "command": "mcp-proxy",
+ "args": [
+ "http://192.168.1.101:8123/mcp_server/sse"
+ ],
+ "env": {
+ "API_ACCESS_TOKEN": "abcd.efghi.jkl"
+ }
+ }
+ }
+```
+
+#### 3. 配置小智开源服务端的系统配置
+
+1. **选择任意一款支持function_call的LLM大模型作为小智的LLM聊天助手(但不要选择Home Assistant作为LLM工具)**,本次我选择的模型是:免费的ChatGLM,它支持functioncall函数调用,但部分时候调用不太稳定,如果像追求稳定建议把LLM设置成:DoubaoLLM,使用的具体model_name是:doubao-1-5-pro-32k-250115。
+
+2. 切换到小智开源服务端`xiaozhi-esp32-server`的`config.yaml`文件内,设置您的LLM大模型配置,并且将`selected_module`配置的`Intent`调整为`function_call`。
+
+3. 重启小智开源服务端`xiaozhi-esp32-server`即可正常使用。
\ No newline at end of file
diff --git a/docs/images/alisms/sms-01.png b/docs/images/alisms/sms-01.png
new file mode 100644
index 0000000000000000000000000000000000000000..89c56f50d26b6ca0988357fb22b0c7b893efeb2b
GIT binary patch
literal 136404
zcmZttWn5Ly_W%l?pu4*Tq&bvyi6EhXbcaYcA{~d2ZlpV;yPHF!bazR2cbv=j_rIU#
z&3)$0UNd`5ty#Tihbk+6#6%-Q0{{S+aS>({Re3JOwEQXwHBqM~9d
zDk>j8esuHjo}HZogTVs>1GaYdU0q#cV`KdM{Mp&rLqkKBR@R!Dnr&@uQ&Usv>FIty
zLpM(!ii(QL%F6Qd^Eo*oaQK>~g;`TmQ(awMRaI43h;M3AL{OlYwT-Qrxn+2GxSNYZ
zZ*Onc&{TYU{Nv@~pXueS^q9ul{GhO?>SkC}M1ZG6Lpa^p?y7HO7j4;#uMsO=m4m|xAdk=?`%u0wdcMz7-YI?>v)CX>
zh#P6g$S5VMf
W@L$jwIUj9!Aq6tn?R
z{uEON;Wb(+5Q6#c6oQc7zoI>Thrr^^Qo)~4Xak?n(9TAcp{TDA(f
S3R1mz}Y~@_kEK{mZgX!SBc&ZO4JVcCK5j!mgj|jY!^kI51sM(E`Wt
zb-Ka6Px&{fTv8>Fs3uw79>#S5C1-^5Fmap)oJB}Jb8Soy<_|uL_Pul7PUn-imkX*k
zRG22J_Er>Ew4@Z%BXVqY6ln9h0o|Vljv>25qOYbeFi5>Hb!(hh86rD=e6MALHT#qD
zu3a6ssW$vRTRAH@2r3_p7zMG2SzjTaoS2iRa6cmDnF!HNc7o_&>HTY!`I_1%?b)8d+@t+7pN4<;bnxy=GxGl)@PDF!fBf|d5^xw^|Goqr(iu&p^c7V|U&(XCs