#!/bin/bash ################################################################################ # Kimodo 完全独立启动脚本(包含工具链) ################################################################################ set -e WORKSPACE_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)" TOOLS_DIR="${WORKSPACE_DIR}/tools" ENV_DIR="${WORKSPACE_DIR}/env" KIMODO_DIR="${WORKSPACE_DIR}/kimodo" PYTHON_BIN="${ENV_DIR}/kimodo/bin/python" # 设置环境变量,优先使用 workspace 内的工具 export PATH="${TOOLS_DIR}/bin:${PATH}" export LD_LIBRARY_PATH="${TOOLS_DIR}/lib:${ENV_DIR}/kimodo/lib:${LD_LIBRARY_PATH}" export CPATH="${TOOLS_DIR}/include:${CPATH}" export PKG_CONFIG_PATH="${TOOLS_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH}" export CMAKE_ROOT="${TOOLS_DIR}/share/cmake-3.28" # 服务器配置 DEFAULT_SERVER_NAME="0.0.0.0" DEFAULT_SERVER_PORT="7860" # 颜色输出 print_info() { echo -e "\033[32m[INFO]\033[0m $1" } print_error() { echo -e "\033[31m[ERROR]\033[0m $1" } print_step() { echo -e "\033[36m[STEP]\033[0m $1" } # 检查工具 check_tools() { print_step "检查工具..." if [ ! -f "${TOOLS_DIR}/bin/cmake" ]; then print_error "cmake 未找到" exit 1 fi if [ ! -f "${TOOLS_DIR}/bin/gcc" ]; then print_error "gcc 未找到" exit 1 fi print_info "cmake: $(${TOOLS_DIR}/bin/cmake --version | head -1)" print_info "gcc: $(${TOOLS_DIR}/bin/gcc --version | head -1)" print_info "make: $(${TOOLS_DIR}/bin/make --version | head -1)" } # 检查环境 check_env() { if [ ! -f "${PYTHON_BIN}" ]; then print_error "Python 环境未找到: ${PYTHON_BIN}" exit 1 fi if [ ! -d "${KIMODO_DIR}" ]; then print_error "Kimodo 目录不存在: ${KIMODO_DIR}" exit 1 fi } # 设置环境变量 setup_environment() { print_step "设置环境变量..." export PYTHONPATH="${KIMODO_DIR}:${PYTHONPATH}" export SERVER_NAME="${SERVER_NAME:-${DEFAULT_SERVER_NAME}}" export SERVER_PORT="${SERVER_PORT:-${DEFAULT_SERVER_PORT}}" export LOCAL_CACHE="True" export TEXT_ENCODERS_DIR="${KIMODO_DIR}/McGill-NLP" export TEXT_ENCODER_MODE="local" export HF_HOME="${WORKSPACE_DIR}/.cache/huggingface" export HUGGINGFACE_HUB_CACHE="${HF_HOME}/hub" export kimodo_EMBED_CACHE_DIR="${WORKSPACE_DIR}/.cache/kimodo_demo/embeddings" export WORKSPACE_DIR="${WORKSPACE_DIR}" print_info "环境变量设置完成" } # 显示配置 show_config() { print_step "配置信息:" echo " 工作空间: ${WORKSPACE_DIR}" echo " 工具目录: ${TOOLS_DIR}" echo " Python: ${PYTHON_BIN}" echo " Kimodo: ${KIMODO_DIR}" echo " 服务器: ${SERVER_NAME}:${SERVER_PORT}" } # 启动应用 start_kimodo() { print_step "启动 Kimodo Demo..." cd "${WORKSPACE_DIR}" echo "" print_info "======================================================================" print_info "Kimodo Demo 正在启动..." print_info "访问地址: http://${SERVER_NAME:-${DEFAULT_SERVER_NAME}}:${SERVER_PORT:-${DEFAULT_SERVER_PORT}}" print_info "======================================================================" echo "" exec "${PYTHON_BIN}" -c " import sys sys.path.insert(0, '${KIMODO_DIR}') from kimodo.demo import main if __name__ == '__main__': sys.exit(main()) " } # 主函数 main() { echo "" echo "======================================================================" echo " Kimodo 完全独立启动(包含工具链)" echo "======================================================================" echo "" check_tools check_env show_config setup_environment start_kimodo } main