pr02 P1 三条全部兜底
device_prompt 缓存跨日不失效导致今天日期/天气被烤死,改成独立 key 并带 5 分钟 ttl;mcp 工具列表在收到初始化响应后补回并发发送,helloHandle 预发万一丢帧时也能兜住;启服脚本去硬编码路径与全机 pkill,改用相对路径与 PID 文件。
This commit is contained in:
1 parent
8c41faac8b
commit
4dd194ef8b
3 files changed
+40
-15
No files matched your search
@@ -1,9 +1,31 @@
|
||||
#!/bin/bash
|
||||
# 在 main/xiaozhi-server 目录启 wk01 服务到 18000 端口
|
||||
cd /home/claw/myworkspace/wk01/xiaozhi-esp32-server/main/xiaozhi-server
|
||||
pkill -f 'python app.py' 2>/dev/null
|
||||
sleep 1
|
||||
rm -f /tmp/wk01_xiaozhi.log
|
||||
nohup /home/claw/miniconda3/envs/xiaozhi-esp32-server/bin/python app.py > /tmp/wk01_xiaozhi.log 2>&1 &
|
||||
echo "started pid=$!"
|
||||
# 在 main/xiaozhi-server 目录启服务(端口 18000)。
|
||||
# 通过 SERVER_DIR / PORT / PID_FILE / LOG_FILE 环境变量覆盖默认值。
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
SERVER_DIR="${SERVER_DIR:-$REPO_ROOT/main/xiaozhi-server}"
|
||||
PORT="${PORT:-18000}"
|
||||
PID_FILE="${PID_FILE:-$SERVER_DIR/.run/server.pid}"
|
||||
LOG_FILE="${LOG_FILE:-$SERVER_DIR/.run/server.log}"
|
||||
|
||||
mkdir -p "$(dirname "$PID_FILE")" "$(dirname "$LOG_FILE")"
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
OLD_PID="$(cat "$PID_FILE" 2>/dev/null || true)"
|
||||
if [ -n "$OLD_PID" ] && kill -0 "$OLD_PID" 2>/dev/null; then
|
||||
kill "$OLD_PID" 2>/dev/null || true
|
||||
sleep 1
|
||||
fi
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
|
||||
cd "$SERVER_DIR"
|
||||
|
||||
PYTHON_BIN="${PYTHON_BIN:-python}"
|
||||
nohup "$PYTHON_BIN" app.py > "$LOG_FILE" 2>&1 &
|
||||
SERVER_PID=$!
|
||||
echo "$SERVER_PID" > "$PID_FILE"
|
||||
echo "started pid=$SERVER_PID port=$PORT log=$LOG_FILE"
|
||||
disown
|
||||
@@ -148,8 +148,8 @@ async def handle_mcp_message(
|
||||
f"客户端MCP服务器信息: name={name}, version={version}"
|
||||
)
|
||||
|
||||
# tools/list 已在握手初期并发预发,避免与 audio 流 FIFO 排队
|
||||
pass
|
||||
# helloHandle 握手初期已并发预发 tools/list;此处再补一次作为兜底,client 收到两次也能正常处理
|
||||
asyncio.create_task(send_mcp_tools_list_request(conn))
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -120,8 +120,9 @@ class PromptManager:
|
||||
|
||||
# 使用传入的提示词并缓存(如果有设备ID)
|
||||
if device_id:
|
||||
device_cache_key = f"device_prompt:{device_id}"
|
||||
self.cache_manager.set(self.CacheType.DEVICE_PROMPT, device_cache_key, user_prompt)
|
||||
self.cache_manager.set(
|
||||
self.CacheType.DEVICE_PROMPT, device_cache_key, user_prompt
|
||||
)
|
||||
self.logger.bind(tag=TAG).debug(f"设备 {device_id} 的提示词已缓存")
|
||||
|
||||
self.logger.bind(tag=TAG).info(f"使用快速提示词: {user_prompt[:50]}...")
|
||||
@@ -253,9 +254,9 @@ class PromptManager:
|
||||
if not self.base_prompt_template:
|
||||
return user_prompt
|
||||
|
||||
device_cache_key = f"device_prompt:{device_id}"
|
||||
enhanced_cache_key = f"enhanced_prompt:{device_id}"
|
||||
cached_prompt = self.cache_manager.get(
|
||||
self.CacheType.DEVICE_PROMPT, device_cache_key
|
||||
self.CacheType.DEVICE_PROMPT, enhanced_cache_key
|
||||
)
|
||||
if cached_prompt is not None:
|
||||
return cached_prompt
|
||||
@@ -308,9 +309,11 @@ class PromptManager:
|
||||
*args,
|
||||
**kwargs,
|
||||
)
|
||||
device_cache_key = f"device_prompt:{device_id}"
|
||||
self.cache_manager.set(
|
||||
self.CacheType.DEVICE_PROMPT, device_cache_key, enhanced_prompt
|
||||
self.CacheType.DEVICE_PROMPT,
|
||||
enhanced_cache_key,
|
||||
enhanced_prompt,
|
||||
ttl=300,
|
||||
)
|
||||
self.logger.bind(tag=TAG).debug(
|
||||
f"构建增强提示词成功,长度: {len(enhanced_prompt)}"
|
||||
|
||||
Reference in new issue
Block a user