Paradise——持续研究与监测Agent已通过
# Paradise
**AI 驱动的持续研究与监控系统**
> 告诉 AI 你想追踪什么,它会自动抓取、分析、定期汇报。
参赛赛道:**Mojo Hackathon — Track 3: Agent-powered Apps**
---
## 项目简介
Paradise 是一个多智能体系统,通过自然语言对话创建自动化监控流水线。你只需在聊天界面描述关注的话题,Paradise 就会调度一组爬虫和分析 Agent,持续追踪 GitHub、Reddit、HackerNews、Twitter/X 上的趋势变化,并按计划生成 AI 洞察报告。
不用配置仪表盘,不用写查询语句,直接对话就行。
---
## 系统架构
```
+------------------------------------------------------------------+
| 用户 (浏览器) |
| |
| +---------------------+ +----------------------------+ |
| | 对话式 AI 界面 | | 仪表盘 & 可视化面板 | |
| | (FlowithStyleChat) | | (Recharts + Tailwind) | |
| +----------+----------+ +-------------+--------------+ |
+--------------|-----------------------------|--------------------+
| REST API |
v v
+------------------------------------------------------------------+
| FastAPI (端口 8000) |
| |
| /api/monitors /api/tasks /api/reports |
+-----------+-----------------------------+------------------------+
| |
+-----v-----+ +------v------+
| PostgreSQL | | Redis |
| (数据存储) | | (消息队列) |
+-----------+ +------+------+
|
+-----------v-----------+
| Celery Workers |
| |
| +------------------+ |
| | 爬虫 Agents | |
| | GitHub / Reddit | |
| | HN / Twitter-X | |
| +--------+---------+ |
| v |
| +------------------+ |
| | 分析 Agent | |
| | (OpenAI LLM) | |
| +--------+---------+ |
| v |
| +------------------+ |
| | 报告 Agent | |
| +------------------+ |
+------------------------+
```
---
## 核心功能
### 1. 对话式创建监控
像跟同事聊天一样告诉 Paradise 你想追踪什么。AI 聊天界面会自动解析意图、提取关键词、选择平台、设定周期,一句话搞定整条监控流水线。
```
你: "帮我追踪马斯克最近的动态"
Paradise: ✨ 我理解了!
📍 监控目标: 马斯克动态
🔍 关键词: Elon Musk, Tesla, SpaceX
🌐 数据源: Twitter, HackerNews
⏰ 周期: 168小时
正在创建智能监控...
```
### 2. 多平台爬虫 Agent
四个专用爬虫 Agent 并行采集结构化数据:
| 平台 | 采集内容 | 接口 |
|-------------|----------------------------------------|------------------|
| GitHub | 仓库、Star 数、描述、更新动态 | GitHub REST API |
| Reddit | 帖子、评分、评论数、子版块 | Reddit JSON API |
| HackerNews | 文章、积分、评论数、链接 | Algolia HN API |
| Twitter/X | 推文、互动指标 | Twitter API |
### 3. 定时分析与检查点
每个监控任务运行指定时长,自动创建 10 个等间隔检查点。每个检查点执行:
1. 抓取所有已配置平台的数据
2. 将数据送入分析 Agent(OpenAI LLM)
3. 与上一个检查点数据进行对比
4. 生成带情感评分的趋势报告
### 4. AI 驱动的趋势检测
分析 Agent 输出结构化 JSON 报告,包含:
- 趋势摘要(方向 + 置信度)
- 关键事件(影响等级)
- 情感评分(0.0 – 1.0)
- 跨检查点变化分析
### 5. 实时仪表盘与可视化
- 监控卡片带实时状态指示
- 情感趋势折线图(Recharts)
- 暂停 / 恢复 / 删除操作
- 每 30 秒自动刷新
---
## 技术栈
| 层级 | 技术 |
|------------|------------------------------------------------|
| 前端 | React 18, TypeScript, Tailwind CSS, Vite |
| 图表 | Recharts |
| 后端 | FastAPI, SQLAlchemy, Pydantic |
| 任务队列 | Celery + Redis(消息代理) |
| 数据库 | PostgreSQL |
| 数据采集 | httpx, BeautifulSoup4, Playwright |
| AI 引擎 | OpenAI API(可配置模型) |
| 部署 | EC2, Nginx, Systemd |
---
## 演示流程
```
第1步: 打开 Paradise AI 聊天界面
用户输入自然语言请求
第2步: AI 解析意图
-> 提取关键词、选择平台、设定周期
-> 思考节点动画: 理解意图 -> 提取关键词 -> 选择数据源 -> 配置监控
第3步: 自动创建监控任务
-> 10 个检查点按等间隔排列
-> Celery Beat 在每个检查点触发采集
第4步: Agent 自主执行
-> 爬虫 Agent 从 GitHub / Reddit / HN / Twitter 采集数据
-> 分析 Agent (LLM) 生成结构化趋势报告
-> 报告 Agent 存储结果并准备可视化数据
第5步: 用户在仪表盘查看结果
-> 监控卡片显示运行状态
-> 情感趋势随时间变化的折线图
-> 点击查看单个检查点的详细报告
```
---
## 项目结构
```
paradise/
├── backend/
│ ├── app/
│ │ ├── agents/ # AI Agent 实现
│ │ │ ├── scraper.py # 多平台爬虫
│ │ │ └── analyzer.py # OpenAI 分析引擎
│ │ ├── api/ # REST API 路由
│ │ │ ├── monitors.py # 监控任务 CRUD
│ │ │ ├── tasks.py # 任务端点
│ │ │ └── reports.py # 报告端点
│ │ ├── core/ # 配置、数据库、Celery
│ │ ├── models/ # SQLAlchemy 模型
│ │ ├── schemas/ # Pydantic 数据校验
│ │ └── tasks/ # Celery 任务定义
│ ├── alembic/ # 数据库迁移
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── FlowithStyleChat.tsx # 对话式 AI 界面
│ │ │ ├── PerplexityStyleChat.tsx
│ │ │ ├── ChatInterface.tsx
│ │ │ └── CreateMonitorModal.tsx
│ │ ├── pages/
│ │ │ ├── Dashboard.tsx # 监控总览
│ │ │ └── MonitorDetail.tsx # 检查点详情
│ │ └── api/client.ts # Axios API 客户端
│ └── package.json
└── README.md
```
---
## 快速开始
### 环境要求
- Python 3.10+
- Node.js 18+
- PostgreSQL 14+
- Redis 7+
### 后端
```bash
cd backend
pip install -r requirements.txt
cp .env.example .env # 编辑填入你的密钥
createdb paradise
alembic upgrade head
```
启动服务(分别在不同终端运行):
```bash
redis-server
celery -A app.core.celery_app worker --loglevel=info
celery -A app.core.celery_app beat --loglevel=info
uvicorn app.main:app --reload --port 8000
```
### 前端
```bash
cd frontend
npm install
npm run dev
```
---
## API 接口
### 监控任务
- `POST /api/monitors` — 创建监控
- `GET /api/monitors` — 获取监控列表
- `GET /api/monitors/{id}` — 获取监控详情
- `PATCH /api/monitors/{id}/pause` — 暂停监控
- `PATCH /api/monitors/{id}/resume` — 恢复监控
- `DELETE /api/monitors/{id}` — 删除监控
### 执行任务
- `GET /api/tasks/monitor/{id}` — 获取监控的任务列表
- `GET /api/tasks/{id}` — 获取任务详情
### 分析报告
- `GET /api/reports/monitor/{id}` — 获取监控的报告列表
- `GET /api/reports/{id}` — 获取报告详情
交互式文档:`http://localhost:8000/docs`(Swagger UI)