CURSOR_AUTO_TASK_EXECUTION.md 6.4 KB

Cursor 自动任务执行机制

问题背景

MCP(Model Context Protocol)的工作原理

  • MCP是一个被动协议,工具必须被主动调用才会执行
  • task-manager MCP可以读取任务并将状态改为processing
  • 但是,MCP返回的结果只是文本,不会自动触发Cursor执行任何操作
  • Cursor需要用户或脚本主动调用MCP工具来获取并执行任务

解决方案

我们提供了3种方式让Cursor自动感知并执行任务:


方案1:手动触发(最简单)

在Cursor Chat中直接说:

请检查并执行所有pending任务

或者:

@task-manager 执行所有pending任务

Cursor会:

  1. 调用get_pending_tasks工具获取任务列表
  2. 对每个任务调用execute_task工具
  3. 根据任务描述生成代码
  4. 自动调用update_task_status更新任务状态

优点:最简单,无需额外配置
缺点:需要手动触发


方案2:Python自动执行脚本(推荐)

使用我们提供的自动执行脚本:

2.1 执行一次检查

python scripts/auto_execute_tasks.py --once

脚本会:

  1. 从数据库读取所有pending任务
  2. 以特定格式打印任务详情
  3. 创建任务通知文件 .cursor/pending_tasks.json
  4. Cursor可以识别这个文件并自动执行任务

2.2 持续监控模式

python scripts/auto_execute_tasks.py --interval 300

参数:

  • --interval: 检查间隔(秒),默认300秒(5分钟)

脚本会每隔指定时间自动检查新任务。

2.3 在后台运行

Windows(PowerShell):

Start-Process python -ArgumentList "scripts/auto_execute_tasks.py" -WindowStyle Hidden

Linux/Mac:

nohup python scripts/auto_execute_tasks.py > logs/auto_execute.log 2>&1 &

优点:真正的自动化,无需人工干预
缺点:需要运行额外的Python进程


方案3:Cursor Agent脚本

使用Cursor Agent脚本创建任务提示文件:

3.1 执行一次

python scripts/cursor_task_agent.py --once

3.2 守护进程模式

python scripts/cursor_task_agent.py --daemon --interval 300

这个脚本会:

  1. 从数据库读取pending任务
  2. 为每个任务创建一个Markdown提示文件
  3. 文件保存在 .cursor/task_prompts/ 目录
  4. 用户打开Cursor时会看到这些提示文件

优点:提供友好的任务通知界面
缺点:不是完全自动化,用户仍需手动执行


自动执行工作流程

完整流程(以方案2为例)

1. 用户在Web界面创建任务
   ↓
2. 任务保存到PostgreSQL (status = 'pending')
   ↓
3. auto_execute_tasks.py 定期检查数据库
   ↓
4. 发现pending任务,打印任务详情
   ↓
5. 创建 .cursor/pending_tasks.json 通知文件
   ↓
6. Cursor检测到通知文件(或脚本输出)
   ↓
7. Cursor自动调用 execute_task MCP工具
   ↓
8. task-manager MCP将任务状态改为 'processing'
   ↓
9. 返回执行指令给Cursor
   ↓
10. Cursor根据任务描述生成Python代码
   ↓
11. Cursor自动调用 update_task_status 工具
   ↓
12. 任务状态更新为 'completed'
   ↓
13. 任务完成!✅

配置说明

数据库配置

确保 mcp-servers/task-manager/config.json 配置正确:

{
  "database": {
    "uri": "postgresql://postgres:dataOps@192.168.3.143:5432/dataops"
  }
}

脚本配置

两个脚本都会自动读取上述配置文件,无需额外配置。

日志查看

日志文件位置:

  • logs/cursor_task_agent.log - Agent脚本日志
  • logs/auto_execute.log - 自动执行脚本日志(如果在后台运行)

快速开始

方式1:最简单(推荐新手)

在Cursor Chat中说:

请检查并执行所有pending任务

方式2:自动化(推荐生产环境)

  1. 安装依赖:

    pip install psycopg2-binary
    
    1. 运行脚本: bash python scripts/auto_execute_tasks.py
  2. 让脚本在后台持续运行,它会自动检查并执行新任务


故障排查

问题1:脚本报错"ModuleNotFoundError: No module named 'psycopg2'"

解决方案

pip install psycopg2-binary

问题2:无法连接数据库

检查

  1. PostgreSQL服务是否运行
  2. mcp-servers/task-manager/config.json 中的数据库URI是否正确
  3. 网络连接是否正常(如果数据库在远程服务器)

问题3:Cursor没有执行任务

可能原因

  1. Cursor没有看到任务通知 → 检查 .cursor/pending_tasks.json 是否存在
  2. 任务状态不是pending → 检查数据库中任务的status字段
  3. 任务描述格式不正确 → 确保任务描述包含清晰的需求说明

问题4:任务一直是processing状态

原因

  • 任务被执行但Cursor没有调用update_task_status更新状态

解决方案

  1. 在Cursor中手动调用:

    调用工具: update_task_status
    参数: {
    "task_id": <任务ID>,
    "status": "completed",
    "code_name": "<生成的文件名>.py",
    "code_path": "<文件路径>"
    }
    
  2. 或者在数据库中手动更新:

    UPDATE task_list 
    SET status = 'pending', update_time = CURRENT_TIMESTAMP 
    WHERE task_id = <任务ID>;
    

    然后重新执行任务。


    MCP工具使用

    如果你想在Cursor中手动使用MCP工具:

    获取pending任务列表

    ```

调用工具: get_pending_tasks


### 执行特定任务

调用工具: execute_task 参数: { "task_id": 8, "auto_complete": true }


### 更新任务状态

调用工具: update_task_status 参数: { "task_id": 8, "status": "completed", "code_name": "import_dept_mapping.py", "code_path": "app/core/data_flow" }


### 批量处理所有任务

调用工具: process_all_tasks 参数: { "auto_poll": true } ```


最佳实践

  1. 任务描述要清晰:包含足够的技术细节和需求说明
  2. 使用markdown格式:任务描述应该是结构化的markdown文档
  3. 指定文件路径:在任务描述中明确代码文件的保存路径
  4. 监控任务状态:定期检查任务的执行状态
  5. 查看日志:遇到问题时查看日志文件

总结

  • 最简单:在Cursor中直接说"执行pending任务"
  • 最自动:运行 auto_execute_tasks.py 脚本
  • 最友好:运行 cursor_task_agent.py 脚本创建任务提示

选择适合你的方式,开始自动化你的开发任务吧!🚀