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

139 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 修改定时任务为子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
```typescript
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按需启动完成任务后自动退出
- 系统资源得到更好的管理
- 错误隔离,提高系统稳定性