feat: 新增 client 一键安装脚本

This commit is contained in:
Del Wang
2025-05-10 01:41:58 +08:00
parent 73bf1c6f4d
commit b4f52ee5b9
2 changed files with 65 additions and 10 deletions
+32 -10
View File
@@ -7,21 +7,42 @@
- 转发小爱音箱上的事件到 Server 端(语音识别结果、播放状态等)
- 响应来自 Server 端的指令调用(执行脚本、播放音频流、系统升级等)
## 快速开始
> [!NOTE]
> 以下操作需要先将小爱音箱刷机, 然后 SSH 连接到小爱音箱。👉 [教程](../../docs/flash.md)
首先在小爱音箱上安装启动脚本
```shell
# 下载到 /data/init.sh 开机时自启动
curl -L -o /data/init.sh https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client/init.sh
```
> [!NOTE]
> 请先在你的电脑上运行其他 server 演示程序,获取 server 地址
然后配置你要连接的 server 地址。注意安全!不要连接来路不明的 server 🚨
```shell
# 创建 open-xiaoai 文件夹
mkdir /data/open-xiaoai
# 更新 server 地址(注意替换成自己的 server 地址)
cat 'ws://192.168.31.227:4399' > /data/open-xiaoai/server.txt
```
最后重启小爱音箱,使更新后的 server 地址生效。
> [!TIP]
> 本项目 Rust 端通过 binding 与 Python 和 Node.js 端双向互调,实现了网络通信模块的共享复用。当然你也可以参考 Rust 端通信协议源码,在其他 Server 端重新实现 WebSocket 通信过程
> 如果你是一名开发者,想要修改源代码实现自己想要的功能,可以按照下面的步骤,自行编译运行该项目
## 编译运行
> [!IMPORTANT]
> 本项目只是一个简单的演示程序,抛砖引玉,并未提供任何预构建产物,仅适合有动手能力的人自行编译运行。你可以按需修改源代码,增删自己想要的功能。
首先,你需要在电脑上安装 `Rust` 开发环境 👉 [传送门](https://www.rust-lang.org/)
为了构建能够在小爱音箱上运行的 ARMv7 应用,你还需要安装 `cross` 👉 [传送门](https://github.com/cross-rs/cross)
> [!TIP]
> 如果你是 Apple silicon 芯片,为了能够正常使用 cross 交叉编译镜像,请先在 Docker Desktop - Settings - General - Virtual Machine Options 中打开 Apple Virtual framework 选项,然后开启 `Use Rosetta for x86_64/amd64 emulation on Apple Silicon`
```shell
# 安装依赖
cargo fetch
@@ -30,8 +51,8 @@ cargo fetch
cross build --release --target armv7-unknown-linux-gnueabihf
```
> [!NOTE]
> 以下操作需要先将小爱音箱刷机, 然后 SSH 连接到小爱音箱。👉 [教程](../../docs/flash.md)
> [!TIP]
> 如果你是 Apple silicon 芯片,为了能够正常使用 cross 交叉编译镜像,请先在 Docker Desktop - Settings - General - Virtual Machine Options 中打开 Apple Virtual framework 选项,然后开启 `Use Rosetta for x86_64/amd64 emulation on Apple Silicon`
编译成功后,将构建好的补丁程序 `client` 复制到小爱音箱上
@@ -92,6 +113,7 @@ chmod +x /data/open-xiaoai/client
其默认提供了**执行任意脚本**的能力演示,虽然在启动 Client 端时需要由你本人指定可信的 Server 端连接地址,但还是要务必小心!
毕竟再怎么小心都不为过 :)
> [!TIP]
> 本项目 Rust 端通过 binding 与 Python 和 Node.js 端双向互调,实现了网络通信模块的共享复用。当然你也可以参考 Rust 端通信协议源码,在其他 Server 端重新实现 WebSocket 通信过程。
你也可以 Fork 本项目,在此基础上将 MiGPT 和小智 AI 等业务逻辑完全放在 Client 端运行,这样就不需要额外的服务器或 NAS 设备来部署运行了。
+33
View File
@@ -0,0 +1,33 @@
#! /bin/sh
set -e
DOWNLOAD_BASE_URL="https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client"
WORK_DIR="/data/open-xiaoai"
CLIENT_BIN="$WORK_DIR/client"
SERVER_ADDRESS="ws://127.0.0.1:4399" # 默认不会连接到任何 server
if [ ! -d "$WORK_DIR" ]; then
mkdir -p "$WORK_DIR"
fi
if [ ! -f "$CLIENT_BIN" ]; then
echo "🔥 正在下载 Client 端补丁程序..."
curl -L -# -o "$CLIENT_BIN" "$DOWNLOAD_BASE_URL/client"
chmod +x "$CLIENT_BIN"
echo "✅ Client 端补丁程序下载完毕"
fi
if [ -f "$WORK_DIR/server.txt" ]; then
SERVER_ADDRESS=$(cat "$WORK_DIR/server.txt")
fi
echo "🔥 正在启动 Client 端补丁程序..."
kill -9 `ps|grep "open-xiaoai/client"|grep -v grep|awk '{print $1}'` > /dev/null 2>&1 || true
"$CLIENT_BIN" "$SERVER_ADDRESS"