#!/bin/bash # Trae Server 启动脚本 # 解决版本匹配和连接问题 set -e TRAE_VERSION="8fe6088bdb0697eec2662377a7abd7f9791493c6" TRAE_DIR="/home/ben/.trae-server" TRAE_BIN_DIR="$TRAE_DIR/bin/stable-$TRAE_VERSION" WORKSPACE_DIR="/home/ben/github/liurenchaxin" TOKEN_FILE="$TRAE_DIR/.stable-$TRAE_VERSION.token" LOG_FILE="/tmp/trae-server.log" echo "🚀 启动 Trae 服务器..." # 清理旧进程 echo "🧹 清理旧进程..." pkill -f "trae" || true pkill -f "stable-$TRAE_VERSION" || true sleep 2 # 确保目录存在 if [ ! -d "$TRAE_BIN_DIR" ]; then echo "❌ 错误: Trae 二进制目录不存在: $TRAE_BIN_DIR" exit 1 fi # 生成新的 token NEW_TOKEN=$(uuidgen) echo "$NEW_TOKEN" > "$TOKEN_FILE" chmod 600 "$TOKEN_FILE" echo "🔑 生成新的连接 token: $NEW_TOKEN" # 启动服务器 echo "🌟 启动 Trae 服务器..." cd "$TRAE_BIN_DIR" nohup ./node ./index_trae.js \ --start-server \ --host=127.0.0.1 \ --port=0 \ --connection-token-file "$TOKEN_FILE" \ --default-folder "$WORKSPACE_DIR" \ --server-data-dir "$TRAE_DIR" \ --telemetry-level off \ --enable-remote-auto-shutdown \ --accept-server-license-terms \ > "$LOG_FILE" 2>&1 & SERVER_PID=$! echo "📋 服务器进程 PID: $SERVER_PID" # 等待服务器启动 echo "⏳ 等待服务器启动..." sleep 5 # 查找实际端口 PORT=$(ss -tlnp | grep "node.*pid=$SERVER_PID" | grep -o ':33[0-9]*' | head -1 | cut -d':' -f2) if [ -z "$PORT" ]; then # 从日志中查找端口 PORT=$(grep -o "port [0-9]*" "$LOG_FILE" | tail -1 | cut -d' ' -f2) fi if [ -z "$PORT" ]; then echo "❌ 无法确定服务器端口" tail -20 "$LOG_FILE" exit 1 fi echo "✅ Trae 服务器启动成功!" echo "" echo "📝 连接信息:" echo " 服务器地址: 127.0.0.1:$PORT" echo " 连接 Token: $NEW_TOKEN" echo " 工作目录: $WORKSPACE_DIR" echo " 日志文件: $LOG_FILE" echo "" echo "🌐 浏览器访问: http://127.0.0.1:$PORT/?folder=$WORKSPACE_DIR" echo "" # 测试连接 echo "🔍 测试服务器连接..." if curl -s -I "http://127.0.0.1:$PORT" | grep -q "405\|200"; then echo "✅ 服务器响应正常" else echo "⚠️ 服务器连接测试失败" tail -10 "$LOG_FILE" fi echo "" echo "💡 如果 Trae 客户端仍然连接失败,请尝试:" echo " 1. 重启 Trae 客户端应用" echo " 2. 清除客户端缓存" echo " 3. 使用浏览器直接访问上面的URL"