bm-github/polysint
GitHub: bm-github/polysint
专注于 Polymarket 的自动化 OSINT 平台,集成链上追踪、AI 情报分析和实时告警功能。
Stars: 0 | Forks: 0
# 🕵️♂️ PolySINT:预测市场 OSINT 引擎
**PolySINT** 是一个自动化开源情报 (OSINT) 平台,旨在通过 Polygon 区块链监控 Polymarket。它采用无头微服务架构构建,能够识别早期预警信号、追踪内幕交易行为、揭露匿名代理钱包,并利用大语言模型 (LLM) 对市场异常提供认知取证分析。
## ✨ 功能特性
* **自动采集器:** 抓取并对 Polymarket 的 Gamma API 进行分页处理,以追踪活跃市场和交易量,每 15 分钟运行一次。自动提取每个市场的 CLOB token ID,以支持实时价格历史查询。
* **CLOB 价格历史:** 直接从 `clob.polymarket.com` 获取实时的 24 小时价格历史数据,用于增强的变动计算;如果 CLOB 数据不可用,则回退使用本地快照。
* **异常检测:** 监控在 24 小时窗口内概率变化超过 10% 的市场。通过所有配置的通知渠道触发警报。
* **AI 情报简报:** 使用 LLM(通过 OpenRouter 的 OpenAI/Claude)评估市场变动的 *原因*,并可通过 Tavily 搜索 API 关联现实世界的新闻(可选,默认关闭)。
* **实体追踪 (Whale Watcher):** 追踪标记的目标钱包,并通过 Polygon RPC 调用揭露 Polymarket Gnosis Safe 代理,以找到真实的人类所有者 (EOA)。
* **Web 仪表盘:** 实时深色模式 UI,展示波动最大的市场、24 小时变动指标、异常高亮显示,以及完整的实体监控列表管理器,支持 AI 分析和钱包揭露功能。
* **通知层:** 将可操作的情报推送到 Discord 和/或 Telegram,并每 6 小时发送一次定期健康心跳。
## 🚀 入门指南
### 1. 前置条件
确保您已安装 **Python 3.9+**。您还需要:
- 您首选 LLM 的 API 密钥(OpenAI,或任何兼容 OpenAI 的提供商,如用于 Claude 的 OpenRouter)
- 用于获取现实世界新闻上下文的 **Tavily API key** — 可选,见下方说明 ([tavily.com](https://tavily.com))
- 可选,用于 Discord 和/或 Telegram 通知的 Webhooks
### 2. 安装说明
克隆仓库并安装所需的 Python 依赖项:
```
# 克隆 repository
git clone https://github.com/bm-github/polysint.git
cd polysint
# 创建 virtual environment (推荐)
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
# 安装 dependencies
pip install fastapi uvicorn requests python-dotenv openai web3
```
### 3. 环境配置
在项目的根目录下创建一个 `.env` 文件。PolySINT 依赖此文件来管理所有密钥和功能开关。
```
# Blockchain
POLYGON_RPC_URL="https://polygon-rpc.com" # Or use your own Infura/Alchemy endpoint
# LLM / AI Analyst
# Standard OpenAI,或使用 OpenRouter 访问 Claude
LLM_API_KEY="your_llm_api_key_here"
LLM_API_BASE_URL="https://api.openai.com/v1"
ANALYSIS_MODEL="gpt-4o"
# 通过 Tavily 进行 Web Research (可选)
# 仅当 ENABLE_WEB_RESEARCH=true 时需要
# TAVILY_API_KEY="your_tavily_api_key_here"
# 启用 background daemons 以在 anomaly analysis 期间使用 Tavily
# 默认为 false — 如果缺少 TAVILY_API_KEY,可避免 400 errors
# ENABLE_WEB_RESEARCH=false
# Notification Webhooks (可选但推荐)
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
TELEGRAM_BOT_TOKEN="your_telegram_bot_token"
TELEGRAM_CHAT_ID="your_telegram_chat_id"
```
## ⚙️ 运行引擎
### 推荐:一键启动 (`start.py`)
运行 PolySINT 最简单的方法是使用统一启动器,它会将所有守护进程作为子进程启动,监控它们的健康状况,并向您配置的 Webhooks 发送定期心跳:
```
python start.py
```
这将:
1. 在端口 **9000** 上启动 **FastAPI server**
2. 启动 **Data Harvester**
3. 启动 **Anomaly Detector**
4. 启动 **Whale Watcher**
5. 向 Discord/Telegram 发送启动通知
6. 每 **6 小时** 发送一次健康检查(可在 `start.py` 中通过 `HEARTBEAT_INTERVAL` 配置)
按 `Ctrl+C` 安全关闭所有进程。
### 替代方案:手动启动(单独终端)
如果您更喜欢精细控制,可以使用单独的终端、`tmux`、`screen` 或 PM2/Supervisor 等进程管理器单独运行每个组件。
#### Step 1: 启动 API(核心接口与数据库初始化)
启动 API 会自动初始化 SQLite 数据库 Schema。
```
uvicorn api:app --port 9000 --reload
```
交互式 API 文档可在 [http://localhost:9000/docs](http://localhost:9000/docs) 获取。
Web 仪表盘可在 [http://localhost:9000](http://localhost:9000) 获取。
#### Step 2: 启动 Data Harvester
每 15 分钟从 Polymarket 拉取一次活跃市场数据,保存本地快照,并回填 CLOB token ID。
```
python harvest.py
```
#### Step 3: 启动 Anomaly Detector
每 5 分钟检查一次市场。如果 24 小时 CLOB 价格变动超过 10%,它会通过所有配置的 Webhooks 广播情报警报。
```
python alerts.py
```
#### Step 4: 启动 Whale Watcher
每 5 分钟监控您监控列表中的钱包是否有新交易。
```
python watcher.py
```
## 🌐 Web 仪表盘
API 运行后,打开 [http://localhost:9000](http://localhost:9000) 访问实时仪表盘。
**功能:**
- **按交易量排名的顶级市场** — 按 24 小时波动率排序,异常(≥10% 变动)以红色高亮显示,警告(≥5% 变动)以琥珀色显示
- **实时赔率** — 在每个市场问题下方显示当前的 YES 概率
- **24 小时变动** — 根据 CLOB 历史计算的方向性价格变动 (↑/↓)
- **网络研究开关** — 针对每个分析请求启用或禁用 Tavily 新闻上下文,独立于守护进程设置
- **AI 分析** — 按需为任何市场触发完整的 LLM 情报简报
- **自动刷新** — 市场每 5 分钟自动重新加载一次,并带有实时倒计时
- **实体监控列表** — 直接从 UI 添加、移除和管理追踪的钱包
- **Unmask** — 通过 Polygon RPC 将 Gnosis Safe 代理地址解析为其底层 EOA
- **AI Profile** — 生成任何被追踪实体的取证行为画像
## 🎯 管理您的监控列表
可以直接从 **Web 仪表盘** 使用 Entity Watchlist 面板顶部的输入表单添加钱包。输入 `0x...` 代理地址和人类可读的标签,然后点击 **Add**。
或者,您可以通过 SQLite CLI 添加条目:
```
sqlite3 polysint_core.db
```
```
INSERT INTO watch_list (address, label, added_at)
VALUES ('0xYourTargetProxyAddressHere', 'High-Volume Whale', datetime('now'));
.exit
```
`watcher.py` 守护进程会在其下一个 5 分钟周期内自动提取新条目。
## 📂 项目结构
| 文件 | 描述 |
|------|-------------|
| `start.py` | 统一启动器 — 启动所有守护进程并运行心跳循环 |
| `api.py` | 用于市场数据、AI 分析和监控列表管理的 FastAPI 端点 |
| `harvest.py` | 数据摄取工作进程(Polymarket Gamma API,每 15 分钟运行一次) |
| `alerts.py` | 异常扫描器 — 检测 >10% 的变动并广播情报警报 |
| `watcher.py` | OSINT 实体追踪工作进程(每 5 分钟运行一次) |
| `analyst.py` | LLM 集成层(市场变动分析 & 钱包画像) |
| `clob.py` | Polymarket CLOB API 客户端 — 获取 24 小时价格历史并计算变动 |
| `researcher.py` | 用于获取现实世界新闻上下文的 Tavily 网络搜索集成(可选) |
| `notifier.py` | Webhook 广播器 (Discord & Telegram) |
| `utils.py` | Web3 / Polygon 取证(Gnosis Safe 代理揭露) |
| `db.py` | SQLite WAL 模式连接管理器 & Schema 初始化器 |
| `config.py` | 集中式环境变量加载器 |
| `logger.py` | 集中日志记录到 `analyzer.log`(WARNING 级别及以上) |
| `static/index.html` | Web 仪表盘 HTML |
| `static/app.js` | Web 仪表盘 JavaScript |
## 🛠️ 故障排除
**数据缺失 / 无警报**
确保在启动 `alerts.py` 之前,`harvest.py` 至少完成了一次完整运行。对于基于 CLOB 的检测,`alerts.py` 直接查询实时价格历史 — 不需要最低快照数量。对于本地快照回退,每个市场至少需要两个快照才能计算变动。
**网络研究 400 错误**
`ENABLE_WEB_RESEARCH` 默认为 `false`。仅当您配置了有效的 `TAVILY_API_KEY` 时,才在 `.env` 中将其设置为 `true`。也可以从仪表盘针对每个请求切换网络研究,而无需更改守护进程设置。
**Cloudflare 拦截(403 或 SSL 错误)**
Polymarket 的 Cloudflare 保护可能会拦截采集器。该脚本使用了模拟浏览器的标头,但对于重度使用可能需要轮换代理。作为回退方案,可以在 `harvest.py` 的 `session.get(...)` 中添加 `verify=False`。
**CLOB SSL 警告**
Polymarket 的 CLOB 端点使用自签名证书。`clob.py` 会自动禁用 SSL 验证并抑制 urllib3 警告 — 无需操作。
**速率限制 (429)**
`harvest.py` 通过在重试前休眠 10 秒来自动处理 429 响应。
**端口冲突**
API 服务器默认在端口 **9000** 上运行(而不是 8000)。如有需要,请调整 `start.py` 中的 `uvicorn` 调用。
**日志**
检查根目录下的 `analyzer.log`,以获取来自所有后台工作进程的 WARNING、ERROR 和 CRITICAL 级别事件。
标签:API 爬虫, Discord 机器人, DLL 劫持, ESC4, FinTech, GitHub, Gnosis Safe, Headless, LLM, OSINT, Petitpotam, Polygon, Polymarket, Python, Telegram 机器人, Unmanaged PE, Web3 安全, 人工智能, 代理钱包揭秘, 内幕交易识别, 加密货币, 区块链监控, 大语言模型, 巨鲸追踪, 市场分析, 异常检测, 微服务架构, 无后门, 智能告警, 暗网模式 UI, 用户模式Hook绕过, 自动化情报, 认知取证, 足迹分析, 逆向工具, 量化分析, 金融科技, 链上分析, 预测市场