修复网页对话并接入 SearXNG 搜索
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 部署说明 · 服务器侧助手
|
||||
|
||||
更新:2026-09-15。状态:**已部署并跑通**,端到端测试 16/16 通过。
|
||||
更新:2026-09-16。状态:**已部署并跑通**,语音、网页文字与联网搜索均完成闭环。
|
||||
|
||||
## 架构定位
|
||||
|
||||
@@ -88,6 +88,10 @@ DoA 读取和网络桥接,不跑任何推理。
|
||||
| `AI_TTS_INSTRUCTIONS` | `用轻快活泼的语气说` | 风格指令 |
|
||||
| `AI_STT_THREADS` | `4` | **N5095 上必须改成 2**(见下) |
|
||||
| `AI_MODEL_DIR` | `/home/yonglin/ai-companion/models` | 两边模型位置不同 |
|
||||
| `SEARCH_ENABLED` | `true` | 向 LLM 注册只读 `web_search` 工具 |
|
||||
| `SEARXNG_BASE_URL` | `http://127.0.0.1:18080` | 私有 SearXNG,仅服务器回环可达 |
|
||||
| `SEARCH_TIMEOUT_S` | `6`(默认) | 搜索总超时,失败后让模型明确降级 |
|
||||
| `SEARCH_MAX_RESULTS` | `5`(默认) | 单次最多回灌的搜索结果 |
|
||||
|
||||
**两台机器的线程配置不能照抄**:N5095(4核无AVX2)STT 超过 2 线程急剧退化
|
||||
(4 线程慢 3.9 倍);服务器(i9-14900K 有AVX2)给 4 线程没问题。
|
||||
@@ -100,15 +104,22 @@ TTS 的线程扩展方向又和 STT 相反(越多越快)。
|
||||
cd ~/tts-qwen && setsid nohup .venv/bin/python tts_server.py --port 18040 \
|
||||
> logs/tts_service.log 2>&1 < /dev/null &
|
||||
|
||||
# 2. Pipecat 实时服务端(含 /client/ 网页测试入口)
|
||||
# 2. 私有 SearXNG(首次部署先从 example 生成 settings.yml 并替换随机密钥)
|
||||
cd ~/ai-companion/deploy/searxng && docker compose up -d
|
||||
|
||||
# 3. Pipecat 实时服务端(含 /client/ 网页测试入口)
|
||||
cd ~/ai-companion && setsid nohup .venv/bin/python services/bot_server.py \
|
||||
--host 0.0.0.0 --port 7860 > logs/bot_server.log 2>&1 < /dev/null &
|
||||
|
||||
# 3. 确认就绪
|
||||
# 4. 确认就绪
|
||||
curl -s http://127.0.0.1:18040/health
|
||||
curl -GsS http://127.0.0.1:18080/search \
|
||||
--data-urlencode 'q=DeepSeek' --data-urlencode 'format=json'
|
||||
|
||||
# 3. 跑测试
|
||||
# 5. 跑测试
|
||||
cd ~/ai-companion && .venv/bin/python app/tests/test_engine_e2e.py
|
||||
.venv/bin/python app/tests/test_search.py
|
||||
.venv/bin/python app/tests/test_search_live.py
|
||||
```
|
||||
|
||||
助手本体还没有常驻服务(没有 systemd),目前靠直接跑脚本。
|
||||
@@ -180,6 +191,22 @@ Playground 使用的 `/start` 后,浏览器麦克风、RTVI、语音回复均
|
||||
指标约 3.0 秒。当前是 P1 调试模式:连接后持续上传并响应每段有效语音,尚未实现
|
||||
P2 的本地唤醒和 20 秒连续对话窗口。
|
||||
|
||||
网页文字输入由 RTVI `send-text` 转为 `LLMMessagesAppendFrame`,适配层会调用
|
||||
`ConversationEngine.respond_to_text()`;回复用标准 LLM 帧返回,因此 Conversation
|
||||
区域可显示用户文字和助手回复,默认也会合成语音。当前 Playground 1.7 还需要
|
||||
完整的 `bot-transcription` / `bot-output` 事件,不能只发送 token 级
|
||||
`bot-llm-text`。
|
||||
|
||||
**联网搜索已实现并部署。** DeepSeek 通过 Function Calling 请求 `web_search`,引擎
|
||||
聚合完整的流式工具参数,调用回环地址上的 SearXNG,并把标题、摘要、URL 作为
|
||||
`tool` 消息回灌后生成最终回答。最多连续搜索两轮,搜索失败不会拖垮对话;网页保留
|
||||
一到三个来源 URL,TTS 从“来源:”开始停止朗读。2026-09-16 真实验收中,模型主动
|
||||
搜索、取得 5 条结果并生成带两个来源的回答。
|
||||
|
||||
服务器到 DuckDuckGo、Brave、Wikipedia 会超时,因此 SearXNG 当前只保留并显式
|
||||
启用 Bing、360 搜索、搜狗;其中 360 与搜狗实测有结果,Bing 当前返回空结果。
|
||||
容器只监听 `127.0.0.1:18080`,不向局域网或公网暴露。
|
||||
|
||||
## 未做的事
|
||||
|
||||
- **没有常驻服务**:TTS 服务和助手都没有 systemd 开机自启(方案 §10 要求 P2 后做)
|
||||
|
||||
Reference in New Issue
Block a user