Add project startup scripts

This commit is contained in:
2026-03-21 10:13:43 +08:00
parent 5af586610c
commit e76f0828b9
3 changed files with 339 additions and 0 deletions

168
setup.bat Normal file
View 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
View 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
View 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