Преглед изворни кода

docs: add AGENTS.md with deployment steps

wenhongquan пре 3 недеља
родитељ
комит
5be6fe2514
1 измењених фајлова са 103 додато и 0 уклоњено
  1. 103 0
      AGENTS.md

+ 103 - 0
AGENTS.md

@@ -0,0 +1,103 @@
+# ASR Agent 部署步骤
+
+## SSH 连接
+```bash
+sshpass -p '123456' ssh -o StrictHostKeyChecking=no ubuntu@200.200.18.11
+```
+
+## 构建 & 部署
+
+```bash
+# 1. 本地编译校验
+python3 -m py_compile asr_agent/worker.py
+python3 -m py_compile asr_agent/dispatcher.py
+
+# 2. 上传文件到服务器
+sshpass -p '123456' scp asr_agent/worker.py ubuntu@200.200.18.11:/tmp/asr_build/worker.py
+sshpass -p '123456' scp asr_agent/dispatcher.py ubuntu@200.200.18.11:/tmp/asr_build/dispatcher.py
+sshpass -p '123456' scp -r asr_agent/whisper_asr ubuntu@200.200.18.11:/tmp/asr_build/
+
+# 3. 服务器构建镜像
+sshpass -p '123456' ssh ubuntu@200.200.18.11 '
+cd /tmp/asr_build
+docker build -t asr-dispatcher:v1 .
+'
+
+# 4. 重启容器
+sshpass -p '123456' ssh ubuntu@200.200.18.11 '
+docker stop asr-dispatcher 2>/dev/null
+docker rm asr-dispatcher 2>/dev/null
+docker run -d --name asr-dispatcher --network host --restart unless-stopped \
+  -e ASR_MODEL_PATH=/data/models/Qwen3-ASR \
+  -e MIMO_KEY=tp-cilplawdowf6ljqlb5lrldr0c39pe55ip1riir6zqvc3z9te \
+  -e LIVEKIT_URL=ws://localhost:7880 \
+  -e PUBLIC_LIVEKIT_URL=ws://36.152.142.37:10003 \
+  -e LLM_PROVIDER=mimo \
+  -e ASR_PROVIDER=mimo \
+  -v /data/models:/data/models:ro \
+  asr-dispatcher:v1
+'
+
+# 5. 查看日志
+sshpass -p '123456' ssh ubuntu@200.200.18.11 'docker logs --tail 30 asr-dispatcher'
+
+# 6. 测试 API
+sshpass -p '123456' ssh ubuntu@200.200.18.11 '
+curl -s http://localhost:9100/health
+curl -s -X POST http://localhost:10005/connect -H "Content-Type: application/json" -d "{\"identity\":\"test\"}"
+'
+```
+
+## 环境变量
+
+| 变量 | 默认值 | 说明 |
+|------|--------|------|
+| `LIVEKIT_URL` | `ws://localhost:7880` | Worker 连接 LiveKit 地址 |
+| `PUBLIC_LIVEKIT_URL` | 同 LIVEKIT_URL | 返回给 App 的外网地址 |
+| `LLM_PROVIDER` | `vllm` | `vllm` / `mimo` |
+| `ASR_PROVIDER` | `qwen` | `qwen` / `mimo` |
+| `LLM_MODEL` | `qwen3.6-35b-awq` | vLLM 模式下的模型名 |
+| `MIMO_KEY` | — | Mimo API Key |
+| `MIMO_API_BASE` | `https://token-plan-cn.xiaomimimo.com/v1` | Mimo API 地址 |
+| `VAD_MODEL_PATH` | `whisper_asr/silero_vad.onnx` | Silero VAD 模型路径 |
+
+## 端口
+
+| 端口 | 用途 |
+|------|------|
+| 7880 | LiveKit 核心服务(内网) |
+| 9100 | Dispatcher HTTP(内网) |
+| 10003 | LiveKit nginx 代理(外网 `36.152.142.37`) |
+| 10005 | Dispatcher nginx 代理(外网) |
+
+## App 调用流程
+
+```
+1. App → POST http://36.152.142.37:10005/connect → {room, url, token}
+2. App → WebSocket ws://36.152.142.37:10003 (LiveKit) with token
+3. Dispatcher 自动启动 Worker 加入同一房间
+4. App 说话 → VAD → ASR → LLM → TTS 播放
+5. App 断开 → Worker 退出 → 房间释放
+```
+
+## Flutter App 编译
+
+```bash
+cd flutter_asr_client
+flutter build apk --debug
+# 产物: build/app/outputs/flutter-apk/app-debug.apk
+```
+
+## nginx 配置
+
+Dispatcher 代理配置(端口 10005):
+```
+# /data/nginx/config/http/dispatcher-proxy.conf
+server {
+    listen 10005;
+    location / {
+        proxy_pass http://127.0.0.1:9100;
+    }
+}
+```
+重载: `docker exec nginx nginx -s reload`