blaikr/osint-agent
GitHub: blaikr/osint-agent
一个基于LangGraph与Claude的自主OSINT智能代理,解决多语言公开情报的自动发现、翻译与结构化报告问题。
Stars: 0 | Forks: 0
# 🎯 OSINT 情报分析代理
一个用于开源情报调查的自主 AI 代理。接收目标(个人、公司、组织或事件),并生成从全球新闻、多语言区域来源、卫星影像和持久记忆中提取的结构化情报报告。

## ✨ 功能
给定一个目标,它能够自主地:
- 搜索开放网络,包括 Google、Bing、Baidu、Yandex 等
- 抓取并阅读完整文章,而不仅仅是摘要
- 使用**16 种语言**以原生脚本进行查询(中文、阿拉伯语、俄语、日语、韩语等)
- 将外文内容翻译回英文
- 为任何相关的工作场所、校园或城市提取**三个缩放级别**的卫星影像
- 跨会话记住每一次调查并基于先前发现进行构建
- 关联事实并标记矛盾之处
- 生成带有可信度评估的结构化情报报告
## 🛰️ 示例输出

询问“调查 Anthropic 在旧金山的总部”,它将返回一份完整报告。
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────┐
│ Streamlit UI (app.py) │
└─────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ LangGraph Agent (agent.py) │
│ - Claude Haiku brain with 10 tools │
│ - Auto-triggers multilingual for non-Western │
└───┬──────┬──────┬──────┬──────┬──────┬─────────────┘
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────┐
│News ││DDGS ││SearX ││Crawl ││Geo ││ ChromaDB │
│API ││ ││NG ││4AI ││Maps ││ Memory │
└──────┘└──────┘└──────┘└──────┘└──────┘└────────────┘
```
## 🛠️ 技术栈
- **代理框架:** LangGraph
- **大语言模型:** Claude Haiku(Anthropic API)
- **网络搜索:** DuckDuckGo + 自托管 SearXNG 聚合器
- **区域引擎:** Baidu、Yandex、Bing、Google(通过 SearXNG)
- **抓取:** Crawl4AI(底层使用 Playwright)
- **翻译:** Claude Haiku,支持 16 种语言
- **向量记忆:** ChromaDB,搭配本地 sentence-transformers 嵌入
- **地理空间:** Google Maps Static API + Geocoding API
- **用户界面:** Streamlit
## 🚀 安装与设置
### 前置条件
- Python 3.11
- Conda(或任意 venv 管理器)
- Docker Desktop(用于自托管 SearXNG)
- API 密钥:Anthropic、NewsAPI、Google Maps
### 1. 克隆并安装
```
git clone https://github.com/blaikr/osint-agent.git
cd osint-agent
conda create -n osint-agent python=3.11
conda activate osint-agent
pip install -r requirements.txt
crawl4ai-setup
```
### 2. 添加 API 密钥
```
cp .env.example .env
```
打开 `.env` 并粘贴你的密钥:
```
ANTHROPIC_API_KEY=sk-ant-...
NEWSAPI_KEY=...
GOOGLE_MAPS_API_KEY=...
```
### 3. 启动 SearXNG
```
cd searxng
docker compose up -d
```
访问 [http://localhost:8080](http://localhost:8080) 验证是否运行正常。
### 4. 运行代理
终端模式:
```
python agent.py
```
仪表板模式:
```
streamlit run app.py
```
## 💡 示例查询
```
Research Anthropic
Investigate UT Dallas computer science department
Find information on Xi Jinping's recent policy moves
Research Mohammed bin Salman
What do we know about Dario Amodei
```
非西方目标会自动触发针对区域引擎的多语言搜索(例如中文使用 Baidu,俄语使用 Yandex 等)。
## 🧠 记忆
每一次调查都会自动保存并在会话之间持久化。通过以下方式回忆:
```
what's in memory
what have we investigated
```
或者你可以像这样提问:“关于 Anthropic 我们了解什么?”——代理会直接提取存储的报告原文,而不会重新调查。
## 📁 项目结构
```
osint-agent/
├── agent.py # LangGraph orchestration + tools
├── app.py # Streamlit dashboard
├── memory.py # ChromaDB persistent memory
├── translator.py # Multilingual translation (Claude)
├── searxng_client.py # Local SearXNG aggregator client
├── geo_tools.py # Google Maps geocoding + satellite
├── prompts.py # System prompt for the analyst persona
├── check_memory.py # Inspect ChromaDB directly
├── requirements.txt
├── .env.example
├── .gitignore
└── searxng/
├── docker-compose.yml
└── settings.yml
```
## 🎚️ 设计说明
- **幻觉防护:** 严格的系统提示规则,仅引用工具实际返回的 URL,大幅降低捏造内容。
- **程序化触发:** 对非西方目标自动启动多语言搜索,而非依赖 LLM 决策。
- **记忆完整性:** 存储的报告以原文引用而非意译,防止事实随时间扭曲。
- **范围边界:** 卫星影像仅限于专业/公共地点;代理不会提取私人住宅影像。
## ⚠️ 范围与限制
本工具仅搜索**公开、开源的信息**。它无法且不会:
- 访问需要登录的内容(私人社交媒体、付费文章)
- 入侵、抓取受限数据库或绕过平台保护
- 访问商业数据商工具(如 Palantir、LexisNexis、Pipl)
- 保证绝对准确性——每一项调查在采取行动前都应由人工核实
适用于研究、新闻报道、个人尽职调查和教育用途。
## 🛣️ 路线图
- [ ] 自主监控模式(在保存的目标上后台循环运行)
- [ ] 为免费 24/7 运行微调本地 Qwen 模型
- [ ] 在调查之间建立实体知识图谱
- [ ] 支持 PDF 摄入,用于法院文件与归档文档
- [ ] 集成 Wayback Machine 以获取历史报道
## 👤 作者
由 [Rami Blaik](https://github.com/blaikr) 构建——UT Dallas 计算机科学本科生。
其他项目:
- [personalized-llm](https://github.com/blaikr/personalized-llm) — 采用 SFT、IFT 和 DPO 的定制大模型微调
## 📜 许可证
Apache 2.0
标签:AI智能体, Baidu, Bing, ESC4, Google, Kubernetes, LangGraph, Nuclei, OSINT, SEO检索词, Streamlit UI, Yandex, 事实关联, 会话记忆, 信息搜集, 卫星图像, 卫星影像, 地理定位, 多语言搜索, 多语言查询, 开源情报工具, 情报报告, 情报调查, 搜索引擎集成, 流式处理, 目标追踪, 矛盾检测, 结构化报告, 置信度评估, 自主智能体, 自动化分析, 记忆持久化, 跨站脚本, 跨语言翻译