# 子Agent模式定时任务 ## 概述 定时任务系统已从主进程执行模式改为子Agent执行模式。每次定时任务触发时,会启动一个独立的子Agent来处理任务,完成后子Agent自动退出,主进程等待下一次触发。 ## 架构 ### 主进程职责 - 维护定时任务调度(使用 CronCreate) - 在每次触发时扫描待处理的 Issues/PRs - 使用 Agent 工具启动子Agent - 等待子Agent完成 - 不执行具体的业务逻辑 ### 子Agent职责 - 接收具体的任务(处理 Issue 或审核 PR) - 拥有独立的上下文和执行环境 - 完成任务后报告结果 - 自动退出 ## 工作流程 ### Code Agent 流程 ```mermaid 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 流程 ```mermaid 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 工具 ```javascript // 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完成后自动释放资源 - 避免长时间运行导致的内存问题 - 更好的系统资源利用率 ## 配置 ### 环境变量 ```bash # 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 分钟 ## 使用方式 ### 启动定时任务 ```bash /gitea:start-scheduler ``` ### 停止定时任务 ```bash /gitea:stop-scheduler ``` ### 查看状态 ```bash /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模式