文章 · 2024-01-01

Nighthawks项目揭秘:构建AI智能任务调度系统

系统架构

Nighthawks遵循高可用、可扩展、安全可靠的设计原则。下面是其分层架构的概览。


+--------------------------------+
|      用户界面与接入层          |
|  +-----------+   +-----------+ |
|  | Web界面   |-->| RESTful API | |
|  +-----------+   +-----------+ |
+--------------------------------+
                 |
                 v
+--------------------------------+
|      应用服务层 (FastAPI)      |
|  +-----------+                 |
|  |  主应用   |-----------------+
|  +-----------+                 |
|   | |   |   |                  |
|   v v   v   v                  |
| [认证][调度器][NLP][指标]      |
+--------------------------------+
    |      |      |      |
    |      |      |      +------>[Prometheus]-->[Grafana]
    |      |      |
    |      |      +------------->[AI智能层: OpenAI, Graphiti]
    |      |
    |      +--------------------->[AI Agent]
    |      +--------------------->[执行日志]
    |
    +---------------------------->[数据存储: PostgreSQL, Redis]

关键模块

自然语言处理模块 (NLP)

该模块将用户意图解析为可执行的调度指令。当用户输入"每周五下午5点生成并发送销售报告"时,NLP模块调用OpenAI GPT模型,同时提取Cron表达式 0 17 * * 5 和核心任务"生成并发送销售报告"作为AI Agent的执行指令。解析准确率超过95%。

AI Agent与知识图谱

每个任务都由一个独立的AI Agent负责执行。Agent在执行前会查询Graphiti知识图谱,获取与该任务相关的历史信息、用户偏好或上下文数据。例如,如果之前的报告因数据源延迟而失败,Agent可能会在执行前先检查数据源状态。这种反馈循环使系统能够根据历史失败进行持续改进。

任务调度器 (APScheduler)

APScheduler作为底层执行引擎,提供稳定可靠的分布式任务调度能力。AI层负责"决定做什么和什么时候做",调度器则负责"准时执行"。

数据模型 (SQLModel)

SQLModel结合了Pydantic和SQLAlchemy的优点,提供类型安全的ORM操作,极大地提升开发效率和代码健壮性。

技术栈

层级 技术选型 说明
Web框架 FastAPI 异步、高性能的API框架。
AI引擎 OpenAI GPT + Graphiti GPT负责理解意图,Graphiti保存上下文知识。
任务调度 APScheduler 成熟、稳定,支持多种触发器和分布式部署。
容器化 Docker + Kubernetes 标准化的部署和管理,通过HPA实现自动扩展。
监控 Prometheus + Grafana 实时掌握系统状态和性能情况。

使用示例

1. 用户输入自然语言指令:

curl -X POST http://localhost:9527/api/v1/nlp/parse \
  -d '{"text": "每个工作日的早上9点,检查服务器健康状况并发送邮件通知"}'

2. Nighthawks进行解析:

系统返回结构化的任务定义:

{
  "success": true,
  "task_name": "服务器健康检查",
  "cron_expression": "0 9 * * 1-5",
  "agent_prompt": "检查服务器健康状况,并将结果通过邮件发送给管理员。",
  "confidence": 0.98
}

3. 创建并调度任务:

用户确认后,该任务被持久化到数据库,并由APScheduler进行调度。

4. 任务执行:

在每个工作日的早上9点,调度器触发对应的AI Agent。Agent首先查询知识图谱,可能会发现"上周的服务器B在9点时CPU占用率很高",于是它会优先检查服务器B。执行完健康检查后,它会生成报告并通过邮件发送。所有执行细节,包括Token消耗和执行时长,都会被记录用于未来的优化。

© 2026 Yuxu Ge ·