| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- @echo off
- chcp 65001 >nul
- REM ============================================================
- REM 自动任务调度脚本启动器
- REM ============================================================
- REM 功能:启动核心任务调度脚本 auto_execute_tasks.py
- REM 支持前台运行、后台运行、Agent模式、自动部署等多种模式
- REM ============================================================
- setlocal enabledelayedexpansion
- REM 切换到项目根目录
- cd /d %~dp0..
- echo.
- echo ========================================================
- echo 自动任务调度脚本启动器 v2.0
- echo ========================================================
- echo.
- REM 检查 Python 是否安装
- python --version >nul 2>&1
- if errorlevel 1 (
- echo [错误] 未找到 Python,请先安装 Python
- pause
- exit /b 1
- )
- REM 检查脚本文件是否存在
- if not exist "scripts\auto_execute_tasks.py" (
- echo [错误] 未找到脚本文件: scripts\auto_execute_tasks.py
- pause
- exit /b 1
- )
- REM 检查项目配置文件是否存在
- if not exist "app\config\config.py" (
- echo [错误] 未找到项目配置文件: app\config\config.py
- pause
- exit /b 1
- )
- REM 创建必要的目录
- if not exist "logs" mkdir logs
- if not exist "tasks" mkdir tasks
- echo [信息] 当前目录: %cd%
- echo.
- echo ========================================================
- echo 请选择运行模式
- echo ========================================================
- echo.
- echo 【基础模式】
- echo 1. 前台运行 (实时日志)
- echo 2. 后台运行 (日志写入文件)
- echo 3. 单次执行 (执行一次后退出)
- echo.
- echo 【Agent 自动化模式】(推荐)
- echo 4. Agent 循环模式 (自动启动/关闭 Agent)
- echo 5. Agent 单次执行 (执行一次任务)
- echo 6. Agent 循环模式 + 禁用自动部署
- echo.
- echo 【传统 Chat 模式】
- echo 7. Chat 循环模式 (定期发送消息)
- echo 8. 立即发送 Chat 消息
- echo.
- echo 【部署功能】
- echo 9. 测试生产服务器连接
- echo 10. 立即部署指定任务
- echo.
- echo 【管理功能】
- echo 11. 查看服务状态
- echo 12. 停止后台服务
- echo.
- echo 0. 退出
- echo ========================================================
- echo.
- set /p choice="请输入选择 [0-12]: "
- if "%choice%"=="1" goto :run_foreground
- if "%choice%"=="2" goto :run_background
- if "%choice%"=="3" goto :run_once
- if "%choice%"=="4" goto :run_agent_loop
- if "%choice%"=="5" goto :run_agent_once
- if "%choice%"=="6" goto :run_agent_no_deploy
- if "%choice%"=="7" goto :run_chat_loop
- if "%choice%"=="8" goto :send_chat_now
- if "%choice%"=="9" goto :test_connection
- if "%choice%"=="10" goto :deploy_now
- if "%choice%"=="11" goto :check_status
- if "%choice%"=="12" goto :stop_service
- if "%choice%"=="0" goto :exit
- echo [错误] 无效的选择,请重新运行
- pause
- exit /b 1
- REM ============================================================
- REM 基础模式
- REM ============================================================
- :run_foreground
- echo.
- echo ========================================================
- echo 前台运行模式
- echo ========================================================
- echo [启动] 检查间隔: 5分钟
- echo [提示] 按 Ctrl+C 可停止服务
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --interval 300
- pause
- goto :exit
- :run_background
- echo.
- echo ========================================================
- echo 后台运行模式
- echo ========================================================
- echo [启动] 检查间隔: 5分钟
- echo [信息] 日志输出到: logs\auto_execute.log
- echo ========================================================
- start /B "" python scripts\auto_execute_tasks.py --interval 300 > logs\auto_execute.log 2>&1
- echo.
- echo [成功] 服务已在后台启动!
- echo.
- echo [提示] 相关命令:
- echo - 查看日志: type logs\auto_execute.log
- echo - 停止服务: 再次运行此脚本选择 12
- echo.
- pause
- goto :exit
- :run_once
- echo.
- echo ========================================================
- echo 单次执行模式
- echo ========================================================
- echo [执行] 检查一次 pending 任务后退出
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --once
- echo.
- pause
- goto :exit
- REM ============================================================
- REM Agent 自动化模式 (推荐)
- REM ============================================================
- :run_agent_loop
- echo.
- echo ========================================================
- echo Agent 循环模式 (推荐)
- echo ========================================================
- echo [功能] 自动启动/关闭 Agent,自动部署到生产服务器
- echo [间隔] 任务检查: 60秒, Agent超时: 3600秒
- echo [提示] 按 Ctrl+C 可停止服务
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --chat-loop --use-agent
- pause
- goto :exit
- :run_agent_once
- echo.
- echo ========================================================
- echo Agent 单次执行模式
- echo ========================================================
- echo [功能] 启动 Agent 执行一次任务后退出
- echo [超时] 3600秒 (1小时)
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --agent-run
- pause
- goto :exit
- :run_agent_no_deploy
- echo.
- echo ========================================================
- echo Agent 循环模式 (禁用自动部署)
- echo ========================================================
- echo [功能] 自动启动/关闭 Agent,但不自动部署
- echo [间隔] 任务检查: 60秒, Agent超时: 3600秒
- echo [提示] 按 Ctrl+C 可停止服务
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --chat-loop --use-agent --no-deploy
- pause
- goto :exit
- REM ============================================================
- REM 传统 Chat 模式
- REM ============================================================
- :run_chat_loop
- echo.
- echo ========================================================
- echo Chat 循环模式 (传统)
- echo ========================================================
- echo [功能] 定期发送 Chat 消息提醒执行任务
- echo [间隔] 60秒
- echo [提示] 需要手动在 Cursor 中响应
- echo ========================================================
- echo.
- set /p chat_pos="请输入 Chat 输入框位置 (格式: x,y,直接回车使用默认): "
- echo.
- if "%chat_pos%"=="" (
- python scripts\auto_execute_tasks.py --chat-loop --no-agent
- ) else (
- python scripts\auto_execute_tasks.py --chat-loop --no-agent --chat-input-pos "%chat_pos%"
- )
- pause
- goto :exit
- :send_chat_now
- echo.
- echo ========================================================
- echo 立即发送 Chat 消息
- echo ========================================================
- echo [功能] 立即发送一次 Chat 消息到 Cursor
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --send-chat-now
- echo.
- pause
- goto :exit
- REM ============================================================
- REM 部署功能
- REM ============================================================
- :test_connection
- echo.
- echo ========================================================
- echo 测试生产服务器连接
- echo ========================================================
- echo [功能] 测试 SSH 连接到生产服务器
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --test-connection
- echo.
- pause
- goto :exit
- :deploy_now
- echo.
- echo ========================================================
- echo 立即部署指定任务
- echo ========================================================
- echo.
- set /p task_id="请输入要部署的任务 ID: "
- if "%task_id%"=="" (
- echo [错误] 任务 ID 不能为空
- pause
- goto :exit
- )
- echo.
- echo [部署] 任务 ID: %task_id%
- echo ========================================================
- echo.
- python scripts\auto_execute_tasks.py --deploy-now %task_id%
- echo.
- pause
- goto :exit
- REM ============================================================
- REM 管理功能
- REM ============================================================
- :check_status
- echo.
- echo ========================================================
- echo 服务状态检查
- echo ========================================================
- echo.
- echo [进程状态]
- powershell -Command "$processes = Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '*auto_execute_tasks.py*' }; if ($processes) { Write-Host '[运行中] 找到以下进程:' -ForegroundColor Green; $processes | ForEach-Object { Write-Host (' 进程ID: ' + $_.ProcessId + ' | 启动时间: ' + $_.CreationDate) } } else { Write-Host '[未运行] 未找到 auto_execute_tasks.py 进程' -ForegroundColor Yellow }"
- echo.
- echo ========================================================
- echo 最近日志 - 最后 30 行
- echo ========================================================
- echo.
- if exist "logs\auto_execute.log" (
- powershell -Command "Get-Content logs\auto_execute.log -Tail 30 -ErrorAction SilentlyContinue"
- ) else (
- echo [提示] 日志文件不存在: logs\auto_execute.log
- )
- echo.
- echo ========================================================
- echo pending_tasks.json 状态
- echo ========================================================
- echo.
- if exist "tasks\pending_tasks.json" (
- echo [文件存在] tasks\pending_tasks.json
- powershell -Command "$tasks = Get-Content 'tasks\pending_tasks.json' -Raw -ErrorAction SilentlyContinue | ConvertFrom-Json; if ($tasks) { Write-Host (' 任务数量: ' + $tasks.Count); $tasks | ForEach-Object { Write-Host (' - [' + $_.task_id + '] ' + $_.task_name + ' (' + $_.status + ')') } } else { Write-Host ' [空] 没有待处理任务' }"
- ) else (
- echo [提示] pending_tasks.json 不存在
- )
- echo.
- echo ========================================================
- echo 任务执行指令文件
- echo ========================================================
- echo.
- if exist "tasks\task_execute_instructions.md" (
- echo [文件存在] tasks\task_execute_instructions.md
- powershell -Command "$content = Get-Content 'tasks\task_execute_instructions.md' -Raw -ErrorAction SilentlyContinue; if ($content) { $lines = $content -split '`n'; Write-Host (' 行数: ' + $lines.Count); Write-Host ' 前 10 行:'; $lines | Select-Object -First 10 | ForEach-Object { Write-Host (' ' + $_) } } else { Write-Host ' [空文件]' }"
- ) else (
- echo [提示] task_execute_instructions.md 不存在
- )
- echo.
- pause
- goto :exit
- :stop_service
- echo.
- echo ========================================================
- echo 停止后台服务
- echo ========================================================
- echo.
- powershell -Command "$processes = Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '*auto_execute_tasks.py*' }; if ($processes) { Write-Host '[找到] 以下进程将被停止:' -ForegroundColor Yellow; $processes | ForEach-Object { Write-Host (' 进程ID: ' + $_.ProcessId); Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }; Write-Host '[完成] 进程已停止' -ForegroundColor Green } else { Write-Host '[提示] 未找到运行中的进程' -ForegroundColor Cyan }"
- echo.
- pause
- goto :exit
- :exit
- endlocal
- exit /b 0
|