定时任务与自动化
定时任务系统架构
在实际开发工作中,许多任务需要定期执行或按特定事件触发。Hermes Agent 内置了强大的定时任务与自动化系统,支持从简单的定时执行到复杂的事件驱动工作流。
系统架构
定时任务系统采用分层架构设计,从上到下分为三个层级:
| 层级 | 组件 | 职责 |
|---|---|---|
| 调度层 | Scheduler Engine | 管理任务生命周期、触发策略、并发控制 |
| 执行层 | Task Executor | 创建隔离的执行环境、管理 Agent 实例 |
| 监控层 | Monitor & Notifier | 采集执行状态、发送通知、记录日志 |
调度引擎是整个系统的核心,负责维护任务注册表、计算触发时间、执行冲突解决等关键功能:
// 定时任务系统核心接口
interface SchedulerConfig {
tasks: ScheduledTask[];
executor: {
maxConcurrent: number;
timeout: number;
retryOnFailure: boolean;
maxRetries: number;
};
monitoring: {
logLevel: string;
metricsEnabled: boolean;
alertChannels: string[];
};
}
interface ScheduledTask {
id: string;
name: string;
description: string;
trigger: CronTrigger | EventTrigger | IntervalTrigger;
agentConfig: {
model: string;
tools: string[];
maxSteps: number;
};
prompt: string;
notifications: {
onStart: boolean;
onComplete: boolean;
onFailure: boolean;
};
}
Cron 表达式配置
定时任务是自动化系统中最基础也最常用的功能。通过标准 Cron 表达式,可以精确控制任务的执行时间。
基本配置示例
# .hermes/schedules.yaml
tasks:
- id: daily-code-review
name: "每日代码审查"
description: "每天早上 9 点审查昨日提交的代码"
trigger:
type: cron
expression: "0 9 * * 1-5" # 工作日 9:00
timezone: "Asia/Shanghai"
agentConfig:
model: claude-sonnet-4-20250514
tools: ["git", "filesystem", "terminal"]
maxSteps: 50
prompt: |
请执行以下任务:
1. 获取昨日所有提交的代码变更
2. 逐文件审查代码质量
3. 检查是否有安全漏洞或性能问题
4. 生成审查报告并提交到 Code Review 系统
notifications:
onComplete: true
onFailure: true
- id: weekly-dependency-update
name: "每周依赖更新检查"
description: "每周一检查项目依赖更新"
trigger:
type: cron
expression: "0 10 * * 1"
timezone: "UTC"
agentConfig:
model: claude-sonnet-4-20250514
tools: ["terminal", "filesystem"]
maxSteps: 30
prompt: |
检查项目依赖是否有安全更新:
1. 运行 npm audit / pip audit
2. 分析漏洞严重程度
3. 生成依赖更新建议报告
复杂 Cron 表达式示例
# 每 30 分钟执行一次
expression: "*/30 * * * *"
# 每小时的第 15 分钟执行
expression: "15 * * * *"
# 每天凌晨 2:30 执行
expression: "30 2 * * *"
# 每月 1 号和 15 号执行
expression: "0 8 1,15 * *"
# 每季度第一天执行
expression: "0 9 1 1,4,7,10 *"
事件触发式任务
除了定时触发,Hermes Agent 的自动化系统还支持事件驱动模式,当特定事件发生时自动触发任务。
支持的事件类型
tasks:
- id: auto-merge-check
name: "PR 合并前检查"
trigger:
type: event
eventSource: github
eventType: pull_request.opened
filters:
- field: pull_request.base.ref
pattern: "main"
- field: pull_request.changed_files
max: 50
agentConfig:
model: claude-sonnet-4-20250514
tools: ["git", "terminal", "filesystem"]
maxSteps: 40
prompt: |
审查 PR #{{payload.pull_request.number}}:
1. 获取 PR 变更内容
2. 检查代码风格和最佳实践
3. 运行测试并验证
4. 自动添加审查评论
- id: deploy-on-tag
name: "发布部署"
trigger:
type: event
eventSource: git
eventType: tag.created
filters:
- field: tag
pattern: "v*"
agentConfig:
model: claude-sonnet-4-20250514
tools: ["terminal", "filesystem"]
maxSteps: 60
prompt: |
检测到新版本标签 {{payload.tag}},执行部署:
1. 运行测试套件
2. 构建生产版本
3. 更新版本号
4. 部署到生产服务器
无人值守运行模式
无人值守模式是 Hermes Agent 自动化能力的核心特性,允许任务在完全不需要人工干预的情况下执行。配置无人值守任务需要特别注意安全性和错误处理。
# .hermes/agent-config.yaml
unattended:
enabled: true
safety:
requireApproval: false
allowedTools: ["git", "terminal", "filesystem", "network"]
blockedCommands: ["rm -rf /", "sudo", "chmod 777"]
maxConsecutiveFailures: 3
actionOnFailure: "pause_and_notify"
fallback:
onAmbiguousInput: "pause"
onMissingPermission: "pause"
onToolError: "retry_once"
无人值守模式下,Agent 会自主决策、自主执行,仅在遇到无法处理的异常时才会暂停并寻求人工介入。
任务状态监控与通知
任务状态管理
Hermes Agent 为每个任务维护完整的状态机:
enum TaskState {
PENDING = "pending", // 等待执行
RUNNING = "running", // 执行中
PAUSED = "paused", // 暂停(等待人工介入)
COMPLETED = "completed", // 执行完成
FAILED = "failed", // 执行失败
CANCELLED = "cancelled" // 已取消
}
interface TaskStatus {
id: string;
state: TaskState;
progress: number;
startedAt: string;
completedAt?: string;
currentStep: string;
logs: LogEntry[];
metrics: {
duration: number;
stepsExecuted: number;
toolsCalled: number;
tokensUsed: number;
};
}
多渠道通知配置
notifications:
channels:
email:
enabled: true
recipients: ["[email protected]"]
events: ["onFailure", "onCritical"]
slack:
enabled: true
webhook: "https://hooks.slack.com/services/xxx"
channel: "#dev-monitor"
events: ["onComplete", "onFailure"]
webhook:
enabled: true
url: "https://api.company.com/agent-events"
events: ["onStart", "onComplete", "onFailure", "onCritical"]
templates:
onComplete: "✅ 任务 {{task.name}} 已完成,耗时 {{metrics.duration}}"
onFailure: "❌ 任务 {{task.name}} 执行失败: {{error.message}}"
实战:每日自动代码审查任务
下面我们配置一个完整的每日自动代码审查系统。
完整配置
# .hermes/auto-review.yaml
tasks:
- id: daily-code-review
name: "每日代码自动审查"
description: "每天自动审查前一天的代码提交"
trigger:
type: cron
expression: "0 8 * * 1-5"
timezone: "Asia/Shanghai"
description: "工作日每天早上 8 点执行"
agentConfig:
model: claude-sonnet-4-20250514
tools: ["git", "filesystem", "terminal", "mcp-github"]
maxSteps: 80
temperature: 0.1
prompt: |
执行每日代码审查任务:
第一阶段 - 获取变更:
1. git log --since="24 hours ago" --stat
2. 获取每个提交的详细 diff
3. 统计变更文件数量和类型
第二阶段 - 深度分析:
1. 检查潜在的安全漏洞(SQL 注入、XSS、CSRF)
2. 检查性能问题(N+1 查询、内存泄漏)
3. 检查代码质量(重复代码、过长函数、命名规范)
4. 检查测试覆盖率影响
第三阶段 - 生成报告:
1. 按严重程度分类问题
2. 为每个问题提供修复建议
3. 计算总体代码健康评分
4. 将报告上传到团队 Wiki
notifications:
onStart: true
onComplete: true
onFailure: true
errorHandling:
retryCount: 3
retryDelay: 300
fallbackAction: notify_team
配置完成后,运行以下命令激活定时任务:
# 启动任务调度器
hermes-agent scheduler start
# 查看所有已注册任务
hermes-agent scheduler list
# 查看特定任务状态
hermes-agent scheduler status daily-code-review
# 手动触发一次执行(用于测试)
hermes-agent scheduler trigger daily-code-review
# 暂停任务
hermes-agent scheduler pause daily-code-review
# 恢复任务
hermes-agent scheduler resume daily-code-review
通过 Hermes Agent 的定时任务与自动化系统,团队可以将大量重复性的开发运维工作交给 Agent 自动完成,让开发者将精力集中在更有创造性的工作上,显著提升整体研发效能。