liurenchaxin/modules/legacy-support/start_trae_server.sh

95 lines
2.4 KiB
Bash
Executable File

#!/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"