From 2bab917b3e0ec5b4bb5c9e2351041447f8da445c Mon Sep 17 00:00:00 2001 From: hrz <1710360675@qq.com> Date: Mon, 14 Apr 2025 11:31:52 +0800 Subject: [PATCH] =?UTF-8?q?update:=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3=20(?= =?UTF-8?q?#775)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * update:添加设计公司致谢 * update:添加设计公司致谢 * update:优化文档 * update:优化文档 * update:优化文档 * update:优化文档 --- README.md | 33 +++++++++++++++++---------------- docs/images/logo_xuanfeng.png | Bin 0 -> 20417 bytes 2 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 docs/images/logo_xuanfeng.png diff --git a/README.md b/README.md index ef3431e9..e8958e61 100644 --- a/README.md +++ b/README.md @@ -169,17 +169,6 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/ 如遇到问题或产品建议反馈[点这里](docs/FAQ.md)。 ---- - -## 产品生态 👬 -小智是一个生态,当你使用这个产品时,也可以看看其他在这个生态圈的优秀项目 - -| 项目名称 | 项目地址 | 项目描述 | -|:---------------------|:--------|:--------| -| 小智安卓客户端 | [xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) | 一个基于xiaozhi-server的Android、IOS语音对话应用,支持实时语音交互和文字对话。
现在是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 的开源项目。
它包括前后端的服务,旨在为用户提供一个完整的后端服务解决方案。 | - --- ## 功能清单 ✨ @@ -197,7 +186,6 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/ | IOT功能 | 支持管理注册设备IOT功能,支持基于对话上下文语境下的智能物联网控制 | | 智控台 | 提供Web管理界面,支持智能体管理、用户管理、系统配置等功能,方便管理员和用户进行管理 | - ### 正在开发 🚧 想了解具体开发计划进度,[请点击这里](https://github.com/users/xinnan-tech/projects/3) @@ -206,6 +194,17 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/ --- +## 产品生态 👬 +小智是一个生态,当你使用这个产品时,也可以看看其他在这个生态圈的优秀项目 + +| 项目名称 | 项目地址 | 项目描述 | +|:---------------------|:--------|:--------| +| 小智安卓客户端 | [xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) | 一个基于xiaozhi-server的Android、IOS语音对话应用,支持实时语音交互和文字对话。
现在是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 的开源项目。
它包括前后端的服务,旨在为用户提供一个完整的后端服务解决方案。 | + +--- + ## 本项目支持的平台/组件列表 📋 ### LLM 语言模型 @@ -270,10 +269,12 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/ | Logo | 项目/公司 | 说明 | |:---:|:---:|:---| -| | [百聆语音对话机器人](https://github.com/wwbin2017/bailing) | 本项目受[百聆语音对话机器人](https://github.com/wwbin2017/bailing)启发,并在其基础上实现 | -| | [十方融海](https://www.tenclass.com/) | 感谢[十方融海](https://www.tenclass.com/)对小智通讯协议提供的详尽文档支持 | -| | [汇远设计](http://ui.kwd988.net/) | 感谢[汇远设计](http://ui.kwd988.net/)为本项目提供专业视觉解决方案,用其服务超千家企业的设计实战经验,赋能本项目产品用户体验 | -| | [西安勤人信息科技](https://www.029app.com/) | 感谢[西安勤人信息科技](https://www.029app.com/)深化本项目视觉体系,确保整体设计风格在多场景应用中的一致性和扩展性 | +| | [百聆语音对话机器人](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/)深化本项目视觉体系,确保整体设计风格在多场景应用中的一致性和扩展性 | + diff --git a/docs/images/logo_xuanfeng.png b/docs/images/logo_xuanfeng.png new file mode 100644 index 0000000000000000000000000000000000000000..552ee78a2176a19b50c86803569e850ea192241c GIT binary patch literal 20417 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