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

171 lines
3.9 KiB
Markdown
Raw Permalink 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执行模式。每次定时任务触发时会启动一个独立的子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模式