taskmanager/docs/modules/subagent-scheduler.md
bojunC 3af9fa58e7 feat(scheduler): 修改定时任务为子Agent模式
- 使用 Agent 工具启动独立子Agent处理任务
- 子Agent完成后自动退出,等待下次触发
- 提高系统稳定性和资源管理
- 添加实施计划和模块文档
2026-03-19 17:34:56 +08:00

3.9 KiB
Raw Blame History

子Agent模式定时任务

概述

定时任务系统已从主进程执行模式改为子Agent执行模式。每次定时任务触发时会启动一个独立的子Agent来处理任务完成后子Agent自动退出主进程等待下一次触发。

架构

主进程职责

  • 维护定时任务调度(使用 CronCreate
  • 在每次触发时扫描待处理的 Issues/PRs
  • 使用 Agent 工具启动子Agent
  • 等待子Agent完成
  • 不执行具体的业务逻辑

子Agent职责

  • 接收具体的任务(处理 Issue 或审核 PR
  • 拥有独立的上下文和执行环境
  • 完成任务后报告结果
  • 自动退出

工作流程

Code Agent 流程

graph TD
    A[定时触发] --> B[扫描未处理的 Issues]
    B --> C[过滤和排序]
    C --> D{是否有未处理 Issue?}
    D -->|是| E[启动子Agent]
    D -->|否| F[等待下次触发]
    E --> G[子Agent处理 Issue]
    G --> H[创建分支和代码]
    H --> I[运行测试]
    I --> J[提交代码和创建 PR]
    J --> K[报告结果并退出]
    K --> F

PR Agent 流程

graph TD
    A[定时触发] --> B[扫描未审核的 PRs]
    B --> C{是否有未审核 PR?}
    C -->|是| D[启动子Agent]
    C -->|否| E[等待下次触发]
    D --> F[子Agent审核 PR]
    F --> G[代码质量检查]
    G --> H[测试检查]
    H --> I[安全检查]
    I --> J{审核通过?}
    J -->|是| K[批准 PR]
    J -->|否| L[请求修改]
    K --> M[报告结果并退出]
    L --> M
    M --> E

技术实现

使用 Agent 工具

// Code Agent
Agent({
  subagent_type: "general-purpose",
  description: `处理 Issue #{number}`,
  prompt: `完整的工作流程说明...`,
  run_in_background: false  // 前台运行
})

// PR Agent
Agent({
  subagent_type: "general-purpose",
  description: `审核 PR #{number}`,
  prompt: `完整的审核流程说明...`,
  run_in_background: false  // 前台运行
})

并发控制

  • 定时任务检查是否有正在运行的子Agent
  • 如果有,跳过本次触发
  • 如果没有启动新的子Agent

优势

1. 隔离性

  • 每个子Agent有独立的上下文
  • 子Agent的错误不影响主进程
  • 任务之间相互独立

2. 稳定性

  • 子Agent崩溃不影响定时任务继续运行
  • 资源泄漏被限制在子Agent内
  • 主进程保持轻量

3. 可观察性

  • 每个子Agent的任务清晰可追踪
  • 独立的日志和状态
  • 更容易调试问题

4. 资源管理

  • 子Agent完成后自动释放资源
  • 避免长时间运行导致的内存问题
  • 更好的系统资源利用率

配置

环境变量

# Gitea 配置
GITEA_URL=http://your-gitea-url
GITEA_TOKEN=your-api-token
GITEA_OWNER=your-username
GITEA_REPO=your-repo-name

# 定时间隔(分钟)
CODE_AGENT_INTERVAL=5      # Code Agent 触发间隔
PR_AGENT_INTERVAL=10       # PR Agent 触发间隔

# 审核配置
AUTO_MERGE=false           # 是否自动合并审核通过的 PR

定时间隔建议

根据项目规模调整:

  • 小型项目 (< 10 个 Issues): 3-5 分钟
  • 中型项目 (10-50 个 Issues): 5-10 分钟
  • 大型项目 (> 50 个 Issues): 10-15 分钟

使用方式

启动定时任务

/gitea:start-scheduler

停止定时任务

/gitea:stop-scheduler

查看状态

/gitea:status

注意事项

  1. 会话限制: 定时任务仅在当前会话有效
  2. 自动过期: 定时任务最多运行 3 天
  3. 并发控制: 同一时间只运行一个子Agent
  4. 错误重试: 子Agent失败后会在下次触发时重试
  5. 资源管理: 子Agent完成后自动释放资源

相关文件

  • .claude/commands/gitea/start-scheduler.md - 启动定时任务
  • .claude/commands/gitea/stop-scheduler.md - 停止定时任务
  • docs/plan/2026-03-19_subagent-scheduler.md - 实施计划

更新历史

  • 2026-03-19: 从主进程模式迁移到子Agent模式