mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-22 17:57:46 +00:00
139 lines
4.1 KiB
Bash
Executable File
139 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "🔍 Chrome Qwen Bridge 连接诊断"
|
|
echo "==============================="
|
|
echo ""
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# 1. 检查 Native Host 配置
|
|
echo -e "${BLUE}1. 检查 Native Host 配置${NC}"
|
|
NATIVE_HOST_CONFIG="$HOME/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.qwen.cli.bridge.json"
|
|
|
|
if [ -f "$NATIVE_HOST_CONFIG" ]; then
|
|
echo -e "${GREEN}✓${NC} Native Host 配置存在"
|
|
echo " 内容:"
|
|
cat "$NATIVE_HOST_CONFIG" | sed 's/^/ /'
|
|
|
|
# 检查路径是否正确
|
|
HOST_PATH=$(cat "$NATIVE_HOST_CONFIG" | grep '"path"' | sed 's/.*"path".*:.*"\(.*\)".*/\1/')
|
|
if [ -f "$HOST_PATH" ]; then
|
|
echo -e "${GREEN}✓${NC} Host 文件存在: $HOST_PATH"
|
|
# 检查是否可执行
|
|
if [ -x "$HOST_PATH" ]; then
|
|
echo -e "${GREEN}✓${NC} Host 文件可执行"
|
|
else
|
|
echo -e "${RED}✗${NC} Host 文件不可执行"
|
|
echo " 修复: chmod +x '$HOST_PATH'"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗${NC} Host 文件不存在: $HOST_PATH"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗${NC} Native Host 配置不存在"
|
|
echo " 请运行: npm run install:host"
|
|
fi
|
|
echo ""
|
|
|
|
# 2. 检查扩展 ID
|
|
echo -e "${BLUE}2. 检查扩展 ID${NC}"
|
|
if [ -f ".extension-id" ]; then
|
|
SAVED_ID=$(cat .extension-id)
|
|
echo -e "${GREEN}✓${NC} 保存的扩展 ID: $SAVED_ID"
|
|
|
|
# 检查配置中的 ID
|
|
if grep -q "$SAVED_ID" "$NATIVE_HOST_CONFIG" 2>/dev/null; then
|
|
echo -e "${GREEN}✓${NC} Native Host 配置包含此 ID"
|
|
else
|
|
if grep -q 'chrome-extension://\*/' "$NATIVE_HOST_CONFIG" 2>/dev/null; then
|
|
echo -e "${YELLOW}⚠${NC} Native Host 使用通配符 (接受所有扩展)"
|
|
else
|
|
echo -e "${RED}✗${NC} Native Host 配置不包含此 ID"
|
|
fi
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚠${NC} 未保存扩展 ID"
|
|
fi
|
|
echo ""
|
|
|
|
# 3. 测试 Native Host
|
|
echo -e "${BLUE}3. 测试 Native Host 直接连接${NC}"
|
|
if [ -f "$HOST_PATH" ]; then
|
|
# 发送测试消息
|
|
TEST_RESPONSE=$(echo '{"type":"handshake","version":"1.0.0"}' | \
|
|
python3 -c "
|
|
import sys, json, struct
|
|
msg = sys.stdin.read().strip()
|
|
encoded = msg.encode('utf-8')
|
|
sys.stdout.buffer.write(struct.pack('<I', len(encoded)))
|
|
sys.stdout.buffer.write(encoded)
|
|
sys.stdout.flush()
|
|
" | "$HOST_PATH" 2>/dev/null | \
|
|
python3 -c "
|
|
import sys, struct, json
|
|
try:
|
|
length_bytes = sys.stdin.buffer.read(4)
|
|
if length_bytes:
|
|
length = struct.unpack('<I', length_bytes)[0]
|
|
message = sys.stdin.buffer.read(length)
|
|
print(json.loads(message.decode('utf-8')))
|
|
except: pass
|
|
" 2>/dev/null)
|
|
|
|
if [ -n "$TEST_RESPONSE" ]; then
|
|
echo -e "${GREEN}✓${NC} Native Host 响应: $TEST_RESPONSE"
|
|
else
|
|
echo -e "${RED}✗${NC} Native Host 无响应"
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚠${NC} 跳过测试 (Host 文件不存在)"
|
|
fi
|
|
echo ""
|
|
|
|
# 4. 检查日志
|
|
echo -e "${BLUE}4. 检查最近的错误日志${NC}"
|
|
LOG_FILE="/tmp/qwen-bridge-host.log"
|
|
if [ -f "$LOG_FILE" ]; then
|
|
RECENT_ERRORS=$(tail -20 "$LOG_FILE" | grep -i error | tail -3)
|
|
if [ -n "$RECENT_ERRORS" ]; then
|
|
echo -e "${YELLOW}⚠${NC} 最近的错误:"
|
|
echo "$RECENT_ERRORS" | sed 's/^/ /'
|
|
else
|
|
echo -e "${GREEN}✓${NC} 日志中无最近错误"
|
|
fi
|
|
else
|
|
echo " 日志文件不存在"
|
|
fi
|
|
echo ""
|
|
|
|
# 5. 建议
|
|
echo -e "${BLUE}5. 下一步操作建议${NC}"
|
|
echo ""
|
|
echo "请按以下步骤操作:"
|
|
echo ""
|
|
echo "1. 重新加载扩展:"
|
|
echo " - 打开 chrome://extensions/"
|
|
echo " - 找到 'Qwen CLI Bridge' 扩展"
|
|
echo " - 点击重新加载按钮 (🔄)"
|
|
echo ""
|
|
echo "2. 查看 Service Worker 日志:"
|
|
echo " - 在扩展卡片上点击 'Service Worker'"
|
|
echo " - 在打开的控制台中查看错误信息"
|
|
echo ""
|
|
echo "3. 测试连接:"
|
|
echo " - 点击扩展图标"
|
|
echo " - 点击 'Connect to Qwen CLI'"
|
|
echo " - 观察控制台输出"
|
|
echo ""
|
|
echo "4. 如果仍有问题:"
|
|
echo " - 运行: ./debug-chrome.sh"
|
|
echo " - 这会打开调试控制台帮助诊断"
|
|
echo ""
|
|
|
|
echo "==============================="
|
|
echo "诊断完成" |