AUTO_TASKS_使用说明.md 21 KB

自动任务执行脚本 - 使用说明 v2.0

🚀 快速开始

推荐方式:使用启动器

双击运行启动器脚本,根据菜单选择运行模式:

scripts\start_task_scheduler.bat

最推荐的运行模式

Agent 循环模式 - 全自动化,无需人工干预:

python scripts\auto_execute_tasks.py --chat-loop --use-agent

功能特点:

  • ✅ 自动检测 pending 任务
  • ✅ 自动启动 Cursor Agent
  • ✅ 自动执行任务
  • ✅ 自动关闭 Agent
  • ✅ 自动部署到生产服务器
  • ✅ 自动同步数据库状态

📋 启动器菜单说明

【基础模式】

选项 模式 说明 适用场景
1 前台运行 实时查看日志,Ctrl+C 停止 调试、监控
2 后台运行 日志写入文件,无窗口 生产环境
3 单次执行 执行一次后退出 手动触发

【Agent 自动化模式】(推荐)

选项 模式 说明 适用场景
4 Agent 循环模式 全自动:检测→启动→执行→部署→关闭 生产环境首选
5 Agent 单次执行 执行一次任务后退出 测试、验证
6 Agent 循环 + 禁用部署 只执行任务,不部署到生产 开发环境

【传统 Chat 模式】

选项 模式 说明 适用场景
7 Chat 循环模式 定期发送 Chat 消息提醒 需要人工确认
8 立即发送 Chat 立即发送一次消息 手动触发

【部署功能】

选项 功能 说明
9 测试连接 测试到生产服务器的 SSH 连接
10 立即部署 部署指定任务 ID 的脚本

【管理功能】

选项 功能 说明
11 查看状态 查看进程、日志、任务状态
12 停止服务 停止后台运行的服务

💻 命令行方式

基础用法

cd G:\code-lab\DataOps-platform-new
python scripts\auto_execute_tasks.py [选项]

完整参数列表

基础参数

参数 说明 默认值
--once 只执行一次检查,不循环 -
--interval N 设置检查间隔(秒) 300

Chat 相关参数

参数 说明 默认值
--enable-chat 启用自动 Cursor Chat 禁用
--chat-input-pos "x,y" 指定 Chat 输入框位置 -
--chat-message "消息" 自定义 Chat 消息内容 默认消息
--chat-loop 启动 Chat 自动触发循环 -
--chat-interval N Chat 循环检查间隔(秒) 60
--send-chat-now 立即发送一次 Chat 消息 -

Agent 模式参数

参数 说明 默认值
--use-agent 使用 Agent 模式 启用
--no-agent 禁用 Agent,使用传统 Chat -
--agent-run 立即启动 Agent 执行任务 -
--agent-timeout N Agent 超时时间(秒) 3600
--no-auto-close 任务完成后不自动关闭 Agent -

自动部署参数

参数 说明 默认值
--enable-deploy 启用自动部署 启用
--no-deploy 禁用自动部署 -
--deploy-now TASK_ID 立即部署指定任务 -
--test-connection 测试生产服务器连接 -

其他参数

参数 说明
--refresh-trigger 仅刷新触发器文件

常用命令示例

1. 生产环境推荐配置

# Agent 循环模式 + 自动部署(推荐)
python scripts\auto_execute_tasks.py --chat-loop --use-agent

# 后台运行
start /B python scripts\auto_execute_tasks.py --chat-loop --use-agent > logs\auto_execute.log 2>&1

2. 开发环境配置

# Agent 循环模式,但不部署
python scripts\auto_execute_tasks.py --chat-loop --use-agent --no-deploy

# 单次执行测试
python scripts\auto_execute_tasks.py --agent-run --no-deploy

3. 传统 Chat 模式

# 启用 Chat 循环
python scripts\auto_execute_tasks.py --chat-loop --no-agent

# 指定 Chat 输入框位置
python scripts\auto_execute_tasks.py --chat-loop --no-agent --chat-input-pos "1180,965"

4. 部署相关

# 测试生产服务器连接
python scripts\auto_execute_tasks.py --test-connection

# 立即部署任务 ID 123
python scripts\auto_execute_tasks.py --deploy-now 123

5. 调试和监控

# 执行一次
python scripts\auto_execute_tasks.py --once

# 自定义检查间隔(10分钟)
python scripts\auto_execute_tasks.py --interval 600

# 立即发送 Chat 消息
python scripts\auto_execute_tasks.py --send-chat-now

📊 工作流程详解

Agent 自动化模式流程

┌─────────────────────────────────────────────────────────────┐
│                    auto_execute_tasks.py                    │
│                      (Agent 循环模式)                        │
└─────────────────────────────┬───────────────────────────────┘
                              │
      ┌───────────────────────┼───────────────────────┐
      │                       │                       │
      ▼                       ▼                       ▼
┌─────────────┐      ┌─────────────────┐      ┌──────────────┐
│ 1. 同步完成 │      │ 2. 获取pending  │      │ 3. 生成文件  │
│    任务     │      │    任务         │      │              │
│  (completed)│      │  (从数据库)     │      │              │
└─────────────┘      └─────────────────┘      └──────────────┘
      │                       │                       │
      │                       ▼                       │
      │              ┌─────────────────┐              │
      │              │ 4. 创建任务文件 │              │
      │              │    更新状态为   │              │
      │              │    processing   │              │
      │              └─────────────────┘              │
      │                       │                       │
      │                       ▼                       │
      │        ┌──────────────────────────────┐       │
      │        │ 5. 生成执行指令文件          │       │
      │        │    - pending_tasks.json      │       │
      │        │    - instructions.md         │       │
      │        │    - task_trigger.txt        │       │
      │        └──────────────────────────────┘       │
      │                       │                       │
      │                       ▼                       │
      │        ┌──────────────────────────────┐       │
      │        │ 6. 启动 Cursor Agent         │       │
      │        │    (自动打开新 Agent 会话)   │       │
      │        └──────────────────────────────┘       │
      │                       │                       │
      │                       ▼                       │
      │        ┌──────────────────────────────┐       │
      │        │ 7. 等待 Agent 执行完成       │       │
      │        │    (监控 pending_tasks.json) │       │
      │        └──────────────────────────────┘       │
      │                       │                       │
      │                       ▼                       │
      │        ┌──────────────────────────────┐       │
      │        │ 8. 检测到任务完成            │       │
      │        │    (status = completed)      │       │
      │        └──────────────────────────────┘       │
      │                       │                       │
      │                       ▼                       │
      │        ┌──────────────────────────────┐       │
      │        │ 9. 自动部署到生产服务器      │       │
      │        │    - 上传脚本文件            │       │
      │        │    - 上传工作流文件          │       │
      │        │    - 设置执行权限            │       │
      │        └──────────────────────────────┘       │
      │                       │                       │
      │                       ▼                       │
      │        ┌──────────────────────────────┐       │
      │        │ 10. 自动关闭 Agent           │       │
      │        │     (如果启用 auto-close)    │       │
      │        └──────────────────────────────┘       │
      │                       │                       │
      └───────────────────────┼───────────────────────┘
                              ▼
                    ┌─────────────────┐
                    │  等待下一次检查  │
                    │   (60秒间隔)    │
                    └─────────────────┘

传统 Chat 模式流程

┌─────────────────────────────────────────────────────────────┐
│                    auto_execute_tasks.py                    │
│                      (Chat 循环模式)                         │
└─────────────────────────────┬───────────────────────────────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ 1. 生成执行指令 │
                    └─────────────────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ 2. 发送 Chat 消息│
                    │    (需要 GUI)    │
                    └─────────────────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ 3. 等待人工响应 │
                    │    (手动执行)   │
                    └─────────────────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ 4. 检测任务完成 │
                    └─────────────────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ 5. 同步数据库   │
                    └─────────────────┘

📁 生成的文件

文件路径 说明 格式
tasks/pending_tasks.json 待处理任务列表 JSON
tasks/task_execute_instructions.md Cursor 执行指令 Markdown
tasks/task_trigger.txt 触发器标记文件 文本
logs/auto_execute.log 后台运行日志 文本
app/core/data_flow/*.py 任务占位文件 Python

pending_tasks.json 结构

[
  {
    "task_id": 123,
    "task_name": "创建数据流",
    "task_description": "从 A 到 B 的数据同步",
    "status": "processing",
    "created_at": "2025-01-07T10:00:00",
    "file_path": "app/core/data_flow/task_123.py"
  }
]

task_execute_instructions.md 结构

# 任务执行指令

## 任务信息
- 任务ID: 123
- 任务名称: 创建数据流
- 状态: processing

## 执行要求
1. 阅读任务描述
2. 创建或修改文件
3. 完成后更新状态为 completed

## 完成标记
完成后请更新 tasks/pending_tasks.json 中的状态为 "completed"

⚙️ 配置说明

1. 数据库配置

编辑文件:app/config/config.py

# PostgreSQL 数据库配置
DATABASE_CONFIG = {
    'host': 'localhost',
    'port': 5432,
    'database': 'dataops',
    'user': 'postgres',
    'password': 'your_password'
}

2. 生产服务器配置

编辑文件:scripts/auto_execute_tasks.py

PRODUCTION_SERVER = {
    "host": "your-server.com",
    "port": 22,
    "username": "deploy_user",
    "password": "your_password",
    "script_path": "/opt/dataops/scripts",
    "workflow_path": "/opt/dataops/workflows",
}

3. 自动 Chat 配置

安装依赖:

pip install pywin32 pyautogui pyperclip

获取 Chat 输入框位置:

  1. 打开 Cursor 并显示 Chat 面板
  2. 将鼠标移动到 Chat 输入框
  3. 使用屏幕坐标工具记录坐标(如 PowerToys)
  4. 使用 --chat-input-pos "x,y" 参数指定

示例:

python scripts\auto_execute_tasks.py --chat-loop --no-agent --chat-input-pos "1180,965"

🔧 依赖安装

核心依赖

pip install psycopg2-binary

GUI 自动化依赖(可选)

pip install pywin32 pyautogui pyperclip

SSH 部署依赖(可选)

pip install paramiko

一键安装所有依赖

pip install psycopg2-binary pywin32 pyautogui pyperclip paramiko

🔍 故障排查

问题 1:脚本无法启动

症状: 运行脚本时报错 ModuleNotFoundError

检查:

# 检查 Python 版本
python --version

# 检查依赖
pip show psycopg2-binary

解决:

pip install psycopg2-binary

问题 2:无法连接数据库

症状: 日志显示 数据库连接失败

检查:

  1. PostgreSQL 服务是否运行
  2. app/config/config.py 配置是否正确
  3. 网络连接是否正常
  4. 防火墙是否阻止连接

解决:

# 测试数据库连接
python -c "import psycopg2; conn = psycopg2.connect('postgresql://user:pass@host:5432/db'); print('连接成功')"

问题 3:Agent 无法启动

症状: 日志显示 无法启动 Cursor Agent

检查:

  1. Cursor 是否已打开
  2. 是否有其他 Agent 正在运行
  3. Windows GUI 自动化依赖是否安装

解决:

# 安装 GUI 依赖
pip install pywin32 pyautogui

# 手动测试
python scripts\auto_execute_tasks.py --agent-run

问题 4:自动部署失败

症状: 日志显示 SSH 连接失败部署失败

检查:

  1. paramiko 是否安装
  2. 生产服务器配置是否正确
  3. SSH 连接是否正常

解决:

# 安装 paramiko
pip install paramiko

# 测试连接
python scripts\auto_execute_tasks.py --test-connection

问题 5:进程无法停止

症状: 后台进程无法通过启动器停止

解决方法 1: 使用启动器

运行 start_task_scheduler.bat → 选择 12

解决方法 2: 使用 PowerShell

Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '*auto_execute_tasks.py*' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }

解决方法 3: 使用任务管理器

  1. 打开任务管理器 (Ctrl+Shift+Esc)
  2. 找到 python.exe 进程
  3. 查看命令行包含 auto_execute_tasks.py
  4. 结束进程

问题 6:Chat 消息发送失败

症状: 启用 Chat 后无反应

检查:

  1. GUI 依赖是否安装
  2. Cursor 窗口是否打开
  3. Chat 面板是否可见
  4. 输入框位置是否正确

解决:

# 安装依赖
pip install pywin32 pyautogui pyperclip

# 重新获取输入框位置
# 使用 PowerToys 或其他工具获取准确坐标

📝 日志说明

日志级别

  • INFO - 正常信息
  • WARNING - 警告信息
  • ERROR - 错误信息

日志位置

前台运行: 直接输出到控制台

后台运行: logs\auto_execute.log

查看日志

# 查看全部日志
type logs\auto_execute.log

# 查看最后 50 行
powershell "Get-Content logs\auto_execute.log -Tail 50"

# 实时监控日志
powershell "Get-Content logs\auto_execute.log -Wait -Tail 20"

日志示例

2025-01-07 10:00:00 - INFO - ========================================
2025-01-07 10:00:00 - INFO - 🚀 启动自动任务执行脚本 (Agent 模式)
2025-01-07 10:00:00 - INFO - ========================================
2025-01-07 10:00:05 - INFO - ✅ 数据库连接成功
2025-01-07 10:00:06 - INFO - 📋 发现 1 个 pending 任务
2025-01-07 10:00:06 - INFO - 📝 生成任务执行指令文件
2025-01-07 10:00:07 - INFO - 🚀 启动 Cursor Agent...
2025-01-07 10:05:30 - INFO - ✅ 任务 123 已完成
2025-01-07 10:05:31 - INFO - 🚀 开始部署到生产服务器...
2025-01-07 10:05:35 - INFO - ✅ 部署成功
2025-01-07 10:05:36 - INFO - 🔒 关闭 Cursor Agent

🎯 最佳实践

1. 生产环境部署

推荐配置:

  • 使用 Agent 循环模式
  • 启用自动部署
  • 后台运行
  • 定期检查日志

启动命令:

start /B python scripts\auto_execute_tasks.py --chat-loop --use-agent > logs\auto_execute.log 2>&1

监控命令:

# 查看状态
scripts\start_task_scheduler.bat → 选择 11

# 查看日志
powershell "Get-Content logs\auto_execute.log -Wait -Tail 20"

2. 开发环境测试

推荐配置:

  • 使用 Agent 单次执行
  • 禁用自动部署
  • 前台运行

启动命令:

python scripts\auto_execute_tasks.py --agent-run --no-deploy

3. 调试和排错

推荐配置:

  • 单次执行模式
  • 前台运行
  • 查看详细日志

启动命令:

python scripts\auto_execute_tasks.py --once

4. 定时任务配置

Windows 任务计划程序:

  1. 打开任务计划程序
  2. 创建基本任务
  3. 触发器:每天 00:00
  4. 操作:启动程序
    • 程序:python.exe
    • 参数:scripts\auto_execute_tasks.py --agent-run
    • 起始于:G:\code-lab\DataOps-platform-new

📞 相关文件

文件路径 说明
scripts/auto_execute_tasks.py 核心调度脚本
scripts/start_task_scheduler.bat 启动器脚本
scripts/AUTO_TASKS_使用说明.md 本文档
app/config/config.py 数据库配置
tasks/pending_tasks.json 任务状态文件
tasks/task_execute_instructions.md 执行指令文件
logs/auto_execute.log 日志文件

🆕 更新日志

v2.0 (2025-01-07)

新增功能:

  • ✨ Agent 自动化模式(自动启动/关闭 Agent)
  • ✨ 自动部署到生产服务器(SSH + SFTP)
  • ✨ 完整的启动器菜单(12 个选项)
  • ✨ 服务状态检查功能
  • ✨ 立即部署指定任务功能
  • ✨ SSH 连接测试功能

改进:

  • 🔧 优化日志输出格式
  • 🔧 改进错误处理机制
  • 🔧 增强任务状态同步
  • 🔧 完善文档说明

修复:

  • 🐛 修复未使用变量警告
  • 🐛 修复 paramiko 导入问题
  • 🐛 修复类型检查错误

📚 参考资料


祝您使用愉快!🚀

如有问题,请查看日志文件或联系技术支持。