000www547/security-intel-agent
GitHub: 000www547/security-intel-agent
Stars: 0 | Forks: 0
# 🛡️ Security-Intel-Agent 安全情报分析智能体
**AI 驱动的网络安全威胁情报采集、分析、预警平台** | 基于[硅基流动](https://cloud.siliconflow.cn) API + DeepSeek V3
[](https://python.org)
[](https://fastapi.tiangolo.com)
[](https://vuejs.org)
[](https://langchain.com)
[](https://docker.com)
[](LICENSE)
## 📖 项目简介
Security-Intel-Agent 是一个**全栈 AI Agent 实战项目**,实现从全网安全情报自动采集 → 大模型智能分析 → 数据库持久化 → Web 可视化展示的完整链路。适合**网络安全求职、课程设计、毕业设计、简历项目**。
### 核心亮点
| 维度 | 说明 |
|------|------|
| 🤖 **AI Agent** | LangChain + DeepSeek 驱动, 非简单调用 API |
| 🏗️ **全栈架构** | Vue 3 前端 + FastAPI 后端 + SQLite 持久化 |
| 🔄 **自动化** | GitHub Actions 无服务器定时采集 |
| 🐳 **容器化** | Docker Compose 一键部署 |
| 📊 **可视化** | Web Dashboard 展示风险趋势与分布 |
## 🏗️ 系统架构
┌─────────────────────────────────────────────────────┐
│ 用户浏览器 │
│ Vue 3 + Naive UI Dashboard │
└─────────────────┬───────────────────────────────────┘
│ HTTP REST API
┌─────────────────▼───────────────────────────────────┐
│ FastAPI 后端服务 │
│ ┌──────────┬──────────┬──────────┬─────────────┐ │
│ │ Collector│ Analyzer │ Database │ Notifier │ │
│ │ (RSS采集)│(LangChain)│(SQLite) │ (飞书推送) │ │
│ └──────────┴──────────┴──────────┴─────────────┘ │
└─────────────────┬───────────────────────────────────┘
│
┌────────────▼────────────┐
│ GitHub Actions │
│ 每日 16:00 定时执行 │
└─────────────────────────┘
### 数据流
RSS Feeds → feedparser 抓取 → 数据清洗去重
→ LangChain + DeepSeek 威胁分析 → Pydantic 结构化输出
→ SQLite 持久化(自动去重) → RESTful API
→ Vue 3 前端展示 ← 飞书/钉钉推送
## 🚀 快速开始
### 前置要求
- Python 3.11+
- Node.js 18+
- [硅基流动 API Key](https://cloud.siliconflow.cn)(注册即送免费额度,支持 DeepSeek V3)
### 方式一: 本地开发
# 1. 克隆项目
git clone https://github.com/000www547/security-intel-agent.git
cd security-intel-agent
# 2. 后端
cd backend
pip install -r requirements.txt
# 编辑 config.yaml, 填入你的 DeepSeek API Key
python -m app.main
# 3. 前端 (新终端)
cd frontend
npm install
npm run dev
浏览器打开 `http://localhost:3000` 即可看到 Dashboard。
### 方式二: Docker Compose 一键部署
# 1. 编辑 backend/config.yaml, 填入 API Key
docker-compose up -d
# 2. 访问
# 前端: http://localhost
# API 文档: http://localhost:8000/docs
## 📂 项目结构
security-intel-agent/
├── backend/ # 后端 (Python FastAPI)
│ ├── app/
│ │ ├── main.py # FastAPI 入口 (lifespan + CORS)
│ │ ├── pipeline.py # 采集→分析→存储 流水线
│ │ ├── api/routes.py # RESTful API 路由
│ │ ├── collector/
│ │ │ └── rss_collector.py # RSS 多源采集 + 数据清洗
│ │ ├── analyzer/
│ │ │ ├── threat_analyzer.py # LangChain + DeepSeek 分析引擎
│ │ │ ├── prompts.py # 安全分析师 System Prompt
│ │ │ └── models.py # Pydantic 数据模型
│ │ ├── notifier/
│ │ │ └── feishu.py # 飞书卡片消息推送
│ │ └── db/
│ │ └── database.py # SQLite CRUD + 统计查询
│ ├── requirements.txt
│ ├── config.yaml # 全局配置
│ └── Dockerfile
├── frontend/ # 前端 (Vue 3 + Naive UI)
│ ├── src/
│ │ ├── App.vue # 主布局 (导航 + 路由)
│ │ ├── views/
│ │ │ ├── Dashboard.vue # 仪表盘 (统计+趋势)
│ │ │ ├── IntelList.vue # 情报列表 (分页+筛选)
│ │ │ └── IntelDetail.vue # 情报详情
│ │ ├── components/
│ │ │ ├── IntelCard.vue # 情报卡片
│ │ │ └── RiskBadge.vue # 风险标签
│ │ └── api/index.js # API 请求封装
│ ├── vite.config.js
│ └── Dockerfile
├── .github/workflows/
│ └── daily_run.yml # GitHub Actions 定时任务
├── docker-compose.yml # 容器编排
└── README.md
## 📚 面试知识体系
### 🐍 Python 工程化
| 知识点 | 在本项目中如何体现 |
|--------|-------------------|
| **包管理** | `requirements.txt` 依赖声明, 虚拟环境隔离 |
| **类型注解** | `def analyze(self, raw_item: RawIntelItem) -> Optional[ThreatAnalysis]` |
| **异常处理** | try/except 保证单个源失败不影响整体, 分级日志 |
| **上下文管理器** | `@contextmanager` 管理数据库连接, 自动 commit/rollback |
| **懒加载** | `@property` 延迟初始化 ChatOpenAI 实例 |
| **环境变量** | `os.environ.get("CONFIG_PATH")` 配置注入 |
### 🕷️ 网络爬虫 & RSS
| 知识点 | 实现 |
|--------|------|
| **feedparser** | 解析 RSS/Atom 标准格式 |
| **httpx** | 比 requests 更快, 支持 async |
| **User-Agent** | 模拟浏览器, 避免被反爬 |
| **数据清洗** | HTML 标签去除 + HTML 实体解码 + 空白合并 |
| **日期标准化** | `dateutil.parser` 自动识别多种日期格式 → ISO 8601 |
| **去重策略** | 用 `set` 按 URL O(1) 去重 + DB 层 UNIQUE 约束 |
### 🤖 LangChain 框架
| 知识点 | 代码体现 |
|--------|---------|
| **ChatOpenAI** | 通过 `base_url` 指向 DeepSeek API (适配器模式) |
| **ChatPromptTemplate** | System + Human 双消息模板 |
| **PydanticOutputParser** | 解析 LLM 输出 → Pydantic 对象 |
| **Chain 编排** | prompt → model → parser 流水线 |
| **Temperature** | 0.3 低温度保证分析稳定性和一致性 |
### 🧠 Prompt Engineering
| 技巧 | 实践 |
|------|------|
| **角色设定** | "你是一名资深网络安全威胁情报分析师, 拥有 10 年以上经验" |
| **约束规则** | 明确定义威胁分类标准 + 风险定级规则 |
| **格式要求** | 要求输出严格 JSON, 定义每个字段含义 |
| **幻觉控制** | "无法确定的信息标注为'暂无相关信息'" |
### 📐 Pydantic 数据验证
| 知识点 | 代码 |
|--------|------|
| **BaseModel** | 所有数据模型继承, 自动类型校验 |
| **Field** | 添加描述、默认值、约束 (ge/le) |
| **Enum 约束** | ThreatType / RiskLevel 枚举约束取值范围 |
| **field_validator** | 校验 CVE 格式 `CVE-YYYY-NNNNN` |
| **model_dump** | 序列化为 dict/JSON |
### 🗄️ SQLite 数据库
| 知识点 | 实现 |
|--------|------|
| **建表** | `CREATE TABLE IF NOT EXISTS` 幂等初始化 |
| **唯一索引** | `source_url UNIQUE` 防止重复入库 |
| **INSERT OR IGNORE** | 原子去重, 无需先 SELECT |
| **分页查询** | `LIMIT ? OFFSET ?` 参数化查询防注入 |
| **GROUP BY** | 风险/类型分布 + 每日趋势聚合 |
| **WAL 模式** | `PRAGMA journal_mode=WAL` 提高并发 |
### 🌐 FastAPI Web 框架
| 知识点 | 代码 |
|--------|------|
| **异步支持** | `async def` + `await` 非阻塞 I/O |
| **RESTful 设计** | GET 查询 / POST 触发 / 路径参数 |
| **Query 参数** | 自动校验 + OpenAPI 文档生成 |
| **lifespan** | 启动初始化 / 关闭清理 |
| **CORS 中间件** | 前后端分离必需 |
| **HTTPException** | 统一错误响应 |
### 🎨 Vue 3 前端
| 知识点 | 体现 |
|--------|------|
| **Composition API** | `