Add project startup scripts
This commit is contained in:
168
setup.bat
Normal file
168
setup.bat
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
title Jarvis 配置向导
|
||||||
|
|
||||||
|
echo ==========================================
|
||||||
|
echo Jarvis 个人 AI 助理 - 配置向导
|
||||||
|
echo ==========================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM --- 选择 LLM 提供商 ---
|
||||||
|
echo 请选择 LLM 提供商:
|
||||||
|
echo [1] OpenAI (GPT-4o) - 默认推荐
|
||||||
|
echo [2] DeepSeek (deepseek-chat) - 性价比高
|
||||||
|
echo [3] Claude (Anthropic) - 强大稳定
|
||||||
|
echo [4] Ollama (本地模型) - 完全免费
|
||||||
|
echo.
|
||||||
|
set /p PROVIDER_CHOICE=请选择 (1-4), 默认1:
|
||||||
|
|
||||||
|
if "%PROVIDER_CHOICE%"=="" set PROVIDER_CHOICE=1
|
||||||
|
if "%PROVIDER_CHOICE%"=="1" goto :openai
|
||||||
|
if "%PROVIDER_CHOICE%"=="2" goto :deepseek
|
||||||
|
if "%PROVIDER_CHOICE%"=="3" goto :claude
|
||||||
|
if "%PROVIDER_CHOICE%"=="4" goto :ollama
|
||||||
|
goto :openai
|
||||||
|
|
||||||
|
:openai
|
||||||
|
echo.
|
||||||
|
echo [选择] OpenAI (GPT-4o)
|
||||||
|
echo.
|
||||||
|
set /p OPENAI_API_KEY=请输入 OpenAI API Key (sk-...):
|
||||||
|
if "%OPENAI_API_KEY%"=="" (
|
||||||
|
echo [错误] API Key 不能为空
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
goto :write_env
|
||||||
|
|
||||||
|
:deepseek
|
||||||
|
echo.
|
||||||
|
echo [选择] DeepSeek
|
||||||
|
echo.
|
||||||
|
set /p OPENAI_API_KEY=请输入 DeepSeek API Key:
|
||||||
|
if "%OPENAI_API_KEY%"=="" (
|
||||||
|
echo [错误] API Key 不能为空
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
goto :write_env
|
||||||
|
|
||||||
|
:claude
|
||||||
|
echo.
|
||||||
|
echo [选择] Claude (Anthropic)
|
||||||
|
echo.
|
||||||
|
set /p ANTHROPIC_API_KEY=请输入 Anthropic API Key (sk-ant-...):
|
||||||
|
if "%ANTHROPIC_API_KEY%"=="" (
|
||||||
|
echo [错误] API Key 不能为空
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
goto :write_env
|
||||||
|
|
||||||
|
:ollama
|
||||||
|
echo.
|
||||||
|
echo [选择] Ollama (本地模型)
|
||||||
|
echo 请确保 Ollama 已启动 (ollama serve)
|
||||||
|
echo.
|
||||||
|
set /p OLLAMA_MODEL_IN=请输入模型名 (留空默认 llama3):
|
||||||
|
if "%OLLAMA_MODEL_IN%"=="" set OLLAMA_MODEL=llama3
|
||||||
|
goto :write_env
|
||||||
|
|
||||||
|
:write_env
|
||||||
|
echo.
|
||||||
|
echo [配置] 写入 backend\.env...
|
||||||
|
|
||||||
|
(
|
||||||
|
echo # =============================================
|
||||||
|
echo # Jarvis 后端配置
|
||||||
|
echo # =============================================
|
||||||
|
echo.
|
||||||
|
echo APP_NAME=Jarvis
|
||||||
|
echo APP_VERSION=0.1.0
|
||||||
|
echo DEBUG=true
|
||||||
|
echo SECRET_KEY=jarvis-secret-key-change-in-production
|
||||||
|
echo.
|
||||||
|
echo CORS_ORIGINS=http://localhost:5173,http://localhost:3000
|
||||||
|
echo.
|
||||||
|
echo # LLM 配置
|
||||||
|
) > backend\.env
|
||||||
|
|
||||||
|
if "%PROVIDER_CHOICE%"=="1" (
|
||||||
|
(
|
||||||
|
echo LLM_PROVIDER=openai
|
||||||
|
echo OPENAI_API_KEY=%OPENAI_API_KEY%
|
||||||
|
echo OPENAI_MODEL=gpt-4o
|
||||||
|
echo OPENAI_BASE_URL=https://api.openai.com/v1
|
||||||
|
) >> backend\.env
|
||||||
|
) else if "%PROVIDER_CHOICE%"=="2" (
|
||||||
|
(
|
||||||
|
echo LLM_PROVIDER=deepseek
|
||||||
|
echo OPENAI_API_KEY=%OPENAI_API_KEY%
|
||||||
|
echo OPENAI_BASE_URL=https://api.deepseek.com/v1
|
||||||
|
) >> backend\.env
|
||||||
|
) else if "%PROVIDER_CHOICE%"=="3" (
|
||||||
|
(
|
||||||
|
echo LLM_PROVIDER=claude
|
||||||
|
echo ANTHROPIC_API_KEY=%ANTHROPIC_API_KEY%
|
||||||
|
echo CLAUDE_MODEL=claude-sonnet-4-20250514
|
||||||
|
) >> backend\.env
|
||||||
|
) else (
|
||||||
|
(
|
||||||
|
echo LLM_PROVIDER=ollama
|
||||||
|
echo OLLAMA_BASE_URL=http://localhost:11434
|
||||||
|
echo OLLAMA_MODEL=%OLLAMA_MODEL%
|
||||||
|
) >> backend\.env
|
||||||
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
echo.
|
||||||
|
echo # 数据库
|
||||||
|
echo DATABASE_URL=sqlite+aiosqlite:///./data/jarvis.db
|
||||||
|
echo.
|
||||||
|
echo # ChromaDB
|
||||||
|
echo CHROMA_PERSIST_DIR=./data/chroma
|
||||||
|
echo.
|
||||||
|
echo # JWT
|
||||||
|
echo ACCESS_TOKEN_EXPIRE_MINUTES=1440
|
||||||
|
echo.
|
||||||
|
echo # 上传
|
||||||
|
echo UPLOAD_DIR=./data/uploads
|
||||||
|
echo MAX_UPLOAD_SIZE=52428800
|
||||||
|
echo.
|
||||||
|
echo # 定时任务
|
||||||
|
echo SCHEDULER_ENABLED=true
|
||||||
|
echo DAILY_PLAN_TIME=00:00
|
||||||
|
echo FORUM_SCAN_INTERVAL_MINUTES=30
|
||||||
|
echo.
|
||||||
|
echo DATA_DIR=./data
|
||||||
|
) >> backend\.env
|
||||||
|
|
||||||
|
echo [OK] 配置完成
|
||||||
|
|
||||||
|
REM --- 检查 uv ---
|
||||||
|
echo.
|
||||||
|
echo [检查] 验证环境...
|
||||||
|
where uv >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo [警告] 未找到 uv,请运行: pip install uv
|
||||||
|
echo 或访问: https://github.com/astral-sh/uv
|
||||||
|
) else (
|
||||||
|
echo [OK] uv 已安装
|
||||||
|
)
|
||||||
|
|
||||||
|
where npm >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo [警告] 未找到 npm,请安装 Node.js: https://nodejs.org
|
||||||
|
) else (
|
||||||
|
echo [OK] npm 已安装
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ==========================================
|
||||||
|
echo 配置完成!
|
||||||
|
echo.
|
||||||
|
echo LLM: %PROVIDER_CHOICE%
|
||||||
|
echo.
|
||||||
|
echo 下一步: 双击 start.bat 启动服务
|
||||||
|
echo ==========================================
|
||||||
|
pause
|
||||||
92
start.bat
Normal file
92
start.bat
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
title Jarvis 一键启动
|
||||||
|
|
||||||
|
echo ==========================================
|
||||||
|
echo Jarvis 个人 AI 助理 - 一键启动
|
||||||
|
echo ==========================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM --- 检查 uv ---
|
||||||
|
where uv >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo [错误] 未找到 uv,请先安装: https://github.com/astral-sh/uv
|
||||||
|
echo.
|
||||||
|
echo 安装命令:
|
||||||
|
echo pip install uv
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM --- 检查 npm ---
|
||||||
|
where npm >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo [错误] 未找到 npm,请先安装 Node.js: https://nodejs.org
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM --- 检查 .env ---
|
||||||
|
if not exist backend\.env (
|
||||||
|
echo [提示] 首次运行,需要配置 API Key
|
||||||
|
echo [提示] 请编辑 backend\.env 文件,填入:
|
||||||
|
echo ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxx
|
||||||
|
echo.
|
||||||
|
)
|
||||||
|
|
||||||
|
REM --- 安装后端依赖 ---
|
||||||
|
echo [1/4] 安装后端依赖...
|
||||||
|
cd /d "%~dp0backend"
|
||||||
|
uv sync --quiet
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo [错误] 后端依赖安装失败
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
echo [OK] 后端依赖安装完成
|
||||||
|
|
||||||
|
REM --- 安装前端依赖 ---
|
||||||
|
echo.
|
||||||
|
echo [2/4] 安装前端依赖...
|
||||||
|
cd /d "%~dp0frontend"
|
||||||
|
call npm install >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo [错误] 前端依赖安装失败
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
echo [OK] 前端依赖安装完成
|
||||||
|
|
||||||
|
REM --- 启动后端 ---
|
||||||
|
echo.
|
||||||
|
echo [3/4] 启动后端服务 (端口 8000)...
|
||||||
|
cd /d "%~dp0backend"
|
||||||
|
start "Jarvis-Backend" cmd /c "uv run uvicorn app.main:app --reload --port 8000"
|
||||||
|
|
||||||
|
REM --- 等待后端启动 ---
|
||||||
|
echo 等待后端启动...
|
||||||
|
timeout /t 5 /nobreak >nul
|
||||||
|
|
||||||
|
REM --- 启动前端 ---
|
||||||
|
echo.
|
||||||
|
echo [4/4] 启动前端服务 (端口 5173)...
|
||||||
|
cd /d "%~dp0frontend"
|
||||||
|
start "Jarvis-Frontend" cmd /c "npm run dev"
|
||||||
|
|
||||||
|
REM --- 完成 ---
|
||||||
|
echo.
|
||||||
|
echo ==========================================
|
||||||
|
echo 启动完成!
|
||||||
|
echo.
|
||||||
|
echo 后端: http://localhost:8000
|
||||||
|
echo 前端: http://localhost:5173
|
||||||
|
echo API文档: http://localhost:8000/docs
|
||||||
|
echo ==========================================
|
||||||
|
echo.
|
||||||
|
echo 提示:
|
||||||
|
echo - 首次使用请先注册账号
|
||||||
|
echo - 对话前请在 backend\.env 填入 API Key
|
||||||
|
echo - 关闭时请关闭两个终端窗口
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
79
start.sh
Normal file
79
start.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " Jarvis 个人 AI 助理 - 一键启动"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 检查 uv
|
||||||
|
if ! command -v uv &> /dev/null; then
|
||||||
|
echo "[错误] 未找到 uv,请先安装: https://github.com/astral-sh/uv"
|
||||||
|
echo "安装命令: pip install uv"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 npm
|
||||||
|
if ! command -v npm &> /dev/null; then
|
||||||
|
echo "[错误] 未找到 npm,请先安装 Node.js: https://nodejs.org"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 .env
|
||||||
|
if [ ! -f backend/.env ]; then
|
||||||
|
echo "[提示] 首次运行,请编辑 backend/.env 文件"
|
||||||
|
echo " 填入: ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxx"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
# 安装后端依赖
|
||||||
|
echo "[1/4] 安装后端依赖..."
|
||||||
|
cd "$SCRIPT_DIR/backend"
|
||||||
|
uv sync --quiet
|
||||||
|
echo "[OK] 后端依赖安装完成"
|
||||||
|
|
||||||
|
# 安装前端依赖
|
||||||
|
echo ""
|
||||||
|
echo "[2/4] 安装前端依赖..."
|
||||||
|
cd "$SCRIPT_DIR/frontend"
|
||||||
|
npm install --silent
|
||||||
|
echo "[OK] 前端依赖安装完成"
|
||||||
|
|
||||||
|
# 启动后端
|
||||||
|
echo ""
|
||||||
|
echo "[3/4] 启动后端服务 (端口 8000)..."
|
||||||
|
cd "$SCRIPT_DIR/backend"
|
||||||
|
uv run uvicorn app.main:app --reload --port 8000 &
|
||||||
|
BACKEND_PID=$!
|
||||||
|
|
||||||
|
# 等待后端
|
||||||
|
echo " 等待后端启动..."
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# 启动前端
|
||||||
|
echo ""
|
||||||
|
echo "[4/4] 启动前端服务 (端口 5173)..."
|
||||||
|
cd "$SCRIPT_DIR/frontend"
|
||||||
|
npm run dev &
|
||||||
|
FRONTEND_PID=$!
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 启动完成!"
|
||||||
|
echo ""
|
||||||
|
echo " 后端: http://localhost:8000"
|
||||||
|
echo " 前端: http://localhost:5173"
|
||||||
|
echo " API文档: http://localhost:8000/docs"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "提示:"
|
||||||
|
echo " - 首次使用请先注册账号"
|
||||||
|
echo " - 对话前请在 backend/.env 填入 API Key"
|
||||||
|
echo " - 关闭时请按 Ctrl+C"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 等待信号
|
||||||
|
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" SIGINT SIGTERM
|
||||||
|
wait
|
||||||
Reference in New Issue
Block a user