start_task_scheduler.bat 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. @echo off
  2. chcp 65001 >nul
  3. REM ============================================================
  4. REM 自动任务调度脚本启动器
  5. REM ============================================================
  6. REM 功能:启动核心任务调度脚本 auto_execute_tasks.py
  7. REM 支持前台运行、后台运行、Agent模式、自动部署等多种模式
  8. REM ============================================================
  9. setlocal enabledelayedexpansion
  10. REM 切换到项目根目录
  11. cd /d %~dp0..
  12. echo.
  13. echo ========================================================
  14. echo 自动任务调度脚本启动器 v2.0
  15. echo ========================================================
  16. echo.
  17. REM 检查 Python 是否安装
  18. python --version >nul 2>&1
  19. if errorlevel 1 (
  20. echo [错误] 未找到 Python,请先安装 Python
  21. pause
  22. exit /b 1
  23. )
  24. REM 检查脚本文件是否存在
  25. if not exist "scripts\auto_execute_tasks.py" (
  26. echo [错误] 未找到脚本文件: scripts\auto_execute_tasks.py
  27. pause
  28. exit /b 1
  29. )
  30. REM 检查项目配置文件是否存在
  31. if not exist "app\config\config.py" (
  32. echo [错误] 未找到项目配置文件: app\config\config.py
  33. pause
  34. exit /b 1
  35. )
  36. REM 创建必要的目录
  37. if not exist "logs" mkdir logs
  38. if not exist "tasks" mkdir tasks
  39. echo [信息] 当前目录: %cd%
  40. echo.
  41. echo ========================================================
  42. echo 请选择运行模式
  43. echo ========================================================
  44. echo.
  45. echo 【基础模式】
  46. echo 1. 前台运行 (实时日志)
  47. echo 2. 后台运行 (日志写入文件)
  48. echo 3. 单次执行 (执行一次后退出)
  49. echo.
  50. echo 【Agent 自动化模式】(推荐)
  51. echo 4. Agent 循环模式 (自动启动/关闭 Agent)
  52. echo 5. Agent 单次执行 (执行一次任务)
  53. echo 6. Agent 循环模式 + 禁用自动部署
  54. echo.
  55. echo 【传统 Chat 模式】
  56. echo 7. Chat 循环模式 (定期发送消息)
  57. echo 8. 立即发送 Chat 消息
  58. echo.
  59. echo 【部署功能】
  60. echo 9. 测试生产服务器连接
  61. echo 10. 立即部署指定任务
  62. echo.
  63. echo 【管理功能】
  64. echo 11. 查看服务状态
  65. echo 12. 停止后台服务
  66. echo.
  67. echo 0. 退出
  68. echo ========================================================
  69. echo.
  70. set /p choice="请输入选择 [0-12]: "
  71. if "%choice%"=="1" goto :run_foreground
  72. if "%choice%"=="2" goto :run_background
  73. if "%choice%"=="3" goto :run_once
  74. if "%choice%"=="4" goto :run_agent_loop
  75. if "%choice%"=="5" goto :run_agent_once
  76. if "%choice%"=="6" goto :run_agent_no_deploy
  77. if "%choice%"=="7" goto :run_chat_loop
  78. if "%choice%"=="8" goto :send_chat_now
  79. if "%choice%"=="9" goto :test_connection
  80. if "%choice%"=="10" goto :deploy_now
  81. if "%choice%"=="11" goto :check_status
  82. if "%choice%"=="12" goto :stop_service
  83. if "%choice%"=="0" goto :exit
  84. echo [错误] 无效的选择,请重新运行
  85. pause
  86. exit /b 1
  87. REM ============================================================
  88. REM 基础模式
  89. REM ============================================================
  90. :run_foreground
  91. echo.
  92. echo ========================================================
  93. echo 前台运行模式
  94. echo ========================================================
  95. echo [启动] 检查间隔: 5分钟
  96. echo [提示] 按 Ctrl+C 可停止服务
  97. echo ========================================================
  98. echo.
  99. python scripts\auto_execute_tasks.py --interval 300
  100. pause
  101. goto :exit
  102. :run_background
  103. echo.
  104. echo ========================================================
  105. echo 后台运行模式
  106. echo ========================================================
  107. echo [启动] 检查间隔: 5分钟
  108. echo [信息] 日志输出到: logs\auto_execute.log
  109. echo ========================================================
  110. start /B "" python scripts\auto_execute_tasks.py --interval 300 > logs\auto_execute.log 2>&1
  111. echo.
  112. echo [成功] 服务已在后台启动!
  113. echo.
  114. echo [提示] 相关命令:
  115. echo - 查看日志: type logs\auto_execute.log
  116. echo - 停止服务: 再次运行此脚本选择 12
  117. echo.
  118. pause
  119. goto :exit
  120. :run_once
  121. echo.
  122. echo ========================================================
  123. echo 单次执行模式
  124. echo ========================================================
  125. echo [执行] 检查一次 pending 任务后退出
  126. echo ========================================================
  127. echo.
  128. python scripts\auto_execute_tasks.py --once
  129. echo.
  130. pause
  131. goto :exit
  132. REM ============================================================
  133. REM Agent 自动化模式 (推荐)
  134. REM ============================================================
  135. :run_agent_loop
  136. echo.
  137. echo ========================================================
  138. echo Agent 循环模式 (推荐)
  139. echo ========================================================
  140. echo [功能] 自动启动/关闭 Agent,自动部署到生产服务器
  141. echo [间隔] 任务检查: 60秒, Agent超时: 3600秒
  142. echo [提示] 按 Ctrl+C 可停止服务
  143. echo ========================================================
  144. echo.
  145. python scripts\auto_execute_tasks.py --chat-loop --use-agent
  146. pause
  147. goto :exit
  148. :run_agent_once
  149. echo.
  150. echo ========================================================
  151. echo Agent 单次执行模式
  152. echo ========================================================
  153. echo [功能] 启动 Agent 执行一次任务后退出
  154. echo [超时] 3600秒 (1小时)
  155. echo ========================================================
  156. echo.
  157. python scripts\auto_execute_tasks.py --agent-run
  158. pause
  159. goto :exit
  160. :run_agent_no_deploy
  161. echo.
  162. echo ========================================================
  163. echo Agent 循环模式 (禁用自动部署)
  164. echo ========================================================
  165. echo [功能] 自动启动/关闭 Agent,但不自动部署
  166. echo [间隔] 任务检查: 60秒, Agent超时: 3600秒
  167. echo [提示] 按 Ctrl+C 可停止服务
  168. echo ========================================================
  169. echo.
  170. python scripts\auto_execute_tasks.py --chat-loop --use-agent --no-deploy
  171. pause
  172. goto :exit
  173. REM ============================================================
  174. REM 传统 Chat 模式
  175. REM ============================================================
  176. :run_chat_loop
  177. echo.
  178. echo ========================================================
  179. echo Chat 循环模式 (传统)
  180. echo ========================================================
  181. echo [功能] 定期发送 Chat 消息提醒执行任务
  182. echo [间隔] 60秒
  183. echo [提示] 需要手动在 Cursor 中响应
  184. echo ========================================================
  185. echo.
  186. set /p chat_pos="请输入 Chat 输入框位置 (格式: x,y,直接回车使用默认): "
  187. echo.
  188. if "%chat_pos%"=="" (
  189. python scripts\auto_execute_tasks.py --chat-loop --no-agent
  190. ) else (
  191. python scripts\auto_execute_tasks.py --chat-loop --no-agent --chat-input-pos "%chat_pos%"
  192. )
  193. pause
  194. goto :exit
  195. :send_chat_now
  196. echo.
  197. echo ========================================================
  198. echo 立即发送 Chat 消息
  199. echo ========================================================
  200. echo [功能] 立即发送一次 Chat 消息到 Cursor
  201. echo ========================================================
  202. echo.
  203. python scripts\auto_execute_tasks.py --send-chat-now
  204. echo.
  205. pause
  206. goto :exit
  207. REM ============================================================
  208. REM 部署功能
  209. REM ============================================================
  210. :test_connection
  211. echo.
  212. echo ========================================================
  213. echo 测试生产服务器连接
  214. echo ========================================================
  215. echo [功能] 测试 SSH 连接到生产服务器
  216. echo ========================================================
  217. echo.
  218. python scripts\auto_execute_tasks.py --test-connection
  219. echo.
  220. pause
  221. goto :exit
  222. :deploy_now
  223. echo.
  224. echo ========================================================
  225. echo 立即部署指定任务
  226. echo ========================================================
  227. echo.
  228. set /p task_id="请输入要部署的任务 ID: "
  229. if "%task_id%"=="" (
  230. echo [错误] 任务 ID 不能为空
  231. pause
  232. goto :exit
  233. )
  234. echo.
  235. echo [部署] 任务 ID: %task_id%
  236. echo ========================================================
  237. echo.
  238. python scripts\auto_execute_tasks.py --deploy-now %task_id%
  239. echo.
  240. pause
  241. goto :exit
  242. REM ============================================================
  243. REM 管理功能
  244. REM ============================================================
  245. :check_status
  246. echo.
  247. echo ========================================================
  248. echo 服务状态检查
  249. echo ========================================================
  250. echo.
  251. echo [进程状态]
  252. 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 }"
  253. echo.
  254. echo ========================================================
  255. echo 最近日志 - 最后 30 行
  256. echo ========================================================
  257. echo.
  258. if exist "logs\auto_execute.log" (
  259. powershell -Command "Get-Content logs\auto_execute.log -Tail 30 -ErrorAction SilentlyContinue"
  260. ) else (
  261. echo [提示] 日志文件不存在: logs\auto_execute.log
  262. )
  263. echo.
  264. echo ========================================================
  265. echo pending_tasks.json 状态
  266. echo ========================================================
  267. echo.
  268. if exist "tasks\pending_tasks.json" (
  269. echo [文件存在] tasks\pending_tasks.json
  270. 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 ' [空] 没有待处理任务' }"
  271. ) else (
  272. echo [提示] pending_tasks.json 不存在
  273. )
  274. echo.
  275. echo ========================================================
  276. echo 任务执行指令文件
  277. echo ========================================================
  278. echo.
  279. if exist "tasks\task_execute_instructions.md" (
  280. echo [文件存在] tasks\task_execute_instructions.md
  281. 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 ' [空文件]' }"
  282. ) else (
  283. echo [提示] task_execute_instructions.md 不存在
  284. )
  285. echo.
  286. pause
  287. goto :exit
  288. :stop_service
  289. echo.
  290. echo ========================================================
  291. echo 停止后台服务
  292. echo ========================================================
  293. echo.
  294. 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 }"
  295. echo.
  296. pause
  297. goto :exit
  298. :exit
  299. endlocal
  300. exit /b 0