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

3.5 KiB
Raw Permalink Blame History

修改定时任务为子Agent模式

目标

将定时任务从主进程执行改为子Agent执行模式实现

  1. 启动定时任务时启动一个子Agent
  2. 子Agent完成任务后自动退出
  3. 主进程等待下一个定时任务触发

背景

当前实现:

  • 使用 CronCreate 创建定时任务
  • 定时任务在主进程中直接执行Agent逻辑
  • 可能存在长时间运行导致的问题

目标实现:

  • 定时任务触发时使用Agent工具启动子Agent
  • 子Agent独立运行有自己的上下文
  • 子Agent完成后自动退出不影响主进程

实施步骤

1. 修改 start-scheduler.md

当前逻辑

每 N 分钟执行一次:
1. 获取所有打开的 Issues
2. 过滤出未处理的
3. 选择优先级最高的Issue
4. 在主进程中处理该Issue

修改后逻辑

每 N 分钟执行一次:
1. 获取所有打开的 Issues
2. 过滤出未处理的
3. 选择优先级最高的Issue
4. 使用 Agent 工具启动子Agent处理该Issue
5. 子Agent完成后自动退出
6. 等待下次定时任务

2. 使用 Agent 工具

使用 Agent 工具启动子Agent

Agent({
  subagent_type: "general-purpose",
  description: "处理 Issue #{number}",
  prompt: "处理 Gitea Issue #{number} 的完整流程...",
  run_in_background: false  // 前台运行,完成后继续
})

3. 修改内容

start-scheduler.md 的修改点

  1. Code Agent 定时任务逻辑第24-33行

    • 将"启动 Agent 处理该 Issue"改为使用 Agent 工具
  2. Agent 工作流程第35-62行

    • 将详细工作流程移到子Agent的prompt中
  3. PR Agent 定时任务逻辑第68-74行

    • 将"启动 Agent 审核"改为使用 Agent 工具
  4. Agent 审核流程第76-111行

    • 将详细工作流程移到子Agent的prompt中

4. 优势

  1. 隔离性子Agent有独立的上下文不会干扰主进程
  2. 稳定性子Agent崩溃不影响定时任务继续运行
  3. 可观察性每个子Agent的任务清晰可追踪
  4. 资源管理子Agent完成后自动释放资源

5. 实施细节

Code Agent Prompt 模板

你是一个 Code Agent负责处理 Gitea Issue #{number}。

工作流程:
1. 依据 .claude/commands/gitea/API-QUICK-REFERENCE.md 获取 Issue 详情
2. 解析需求,检查依赖
3. 创建分支 feature/issue-{number}
4. 实现功能,编写测试
5. 运行测试,确保通过
6. 提交代码,创建 PR
7. 在 Issue 中添加评论说明

完成后报告结果并退出。

PR Agent Prompt 模板

你是一个 PR Agent负责审核 Gitea PR #{number}。

工作流程:
1. 依据 .claude/commands/gitea/API-QUICK-REFERENCE.md 获取 PR 详情
2. 代码质量检查
3. 测试检查
4. 安全检查
5. 创建审核评论,决定是否批准
6. 如需修改启动修复Agent

完成后报告结果并退出。

风险与缓解

  1. 风险子Agent启动开销

    • 缓解:定时任务间隔已考虑此开销
  2. 风险子Agent失败无法重试

    • 缓解:下次定时任务会再次尝试
  3. 风险:并发控制需要确保

    • 缓解在启动子Agent前检查是否有正在运行的任务

测试计划

  1. 启动定时任务
  2. 创建测试Issue
  3. 观察子Agent启动和处理
  4. 验证子Agent自动退出
  5. 确认定时任务继续运行

预期结果

  • 定时任务启动后,主进程保持轻量
  • 子Agent按需启动完成任务后自动退出
  • 系统资源得到更好的管理
  • 错误隔离,提高系统稳定性