D4D-51E/Open-Intelligence-Layer
GitHub: D4D-51E/Open-Intelligence-Layer
一个实时OSINT融合引擎,在3D地球仪上整合多源公开情报,并通过交叉核实机制对打击声明进行自动化裁决。
Stars: 0 | Forks: 0
# 开源情报层 (Open Intelligence Layer)
**一个实时 OSINT 融合引擎,它不仅仅是收集信息,而是_裁决_声明——将公共航空器、船只、卫星和 Telegram 报告整合在一个实时的 3D 地球仪上,每个打击声明都附有裁决结果、置信度数值以及证据账本。**
(84 public channels)"] --> F{"war-result
keyword?"} F -->|no| X["drop (noise / off-topic)"] F -->|yes| G["geolocate (gazetteer)"] G --> TH["thermal axis
NASA FIRMS proximity + causal time window"] G --> XC["cross-source axis
other channels, same place & time"] G --> RG["regional heat activity
(weak context)"] TH --> S["confidence 0–100 + evidence ledger"] XC --> S RG --> S S --> V{"verdict"} V -->|"≥2 independent axes · ≥65"| V1["✅ CONFIRMED"] V -->|"≥30"| V2["🟡 LIKELY"] V -->|"no corroboration"| V3["🟠 UNVERIFIED"] V -->|"strong claim · signal absent"| V4["🔴 FALSE"] classDef good fill:#123,stroke:#2c6 class V1 good ``` ## 功能 - **实时融合地球仪** —— 全球航空器 (ADS-B)、船只 (AIS) 和卫星 (TLE) 呈现在 MapLibre 3D 地球仪上,并根据视口/缩放级别进行过滤。点击任意轨迹,会弹出一个跟随其移动的窗口(包含 ID、速度、航向、高度、坐标)。 - **OSINT 裁决引擎** —— 监测 84 个频道 → 战果过滤器 → 地理定位 → **CONFIRMED / LIKELY / UNVERIFIED / FALSE(已确认 / 很可能 / 未证实 / 虚假) + 置信度 + 证据账本**,并与**实时的 NASA FIRMS 热异常数据**及其他佐证来源进行交叉核实。 - **预警图层** —— 乌克兰空袭警报 (`@air_alert_ua`)、EMSC 浅源震中(“爆炸型”)地震、大韩民国(ROK)特殊空域 (KADIZ · P-73) 及航线、OpenAIP 全球空域、FAA NOTAM。 - **浏览器内卫星轨道推演** —— 在客户端通过 Celestrak TLE + SGP4 计算 (`satellite.js`),无需为每一帧请求服务器。 - **AI 副驾驶** —— 基于 OpenAI 的区域摘要、基于规则的异常评估以及多轮对话。严格基于提供的数据生成,并带有行内来源标签。 - **Telegram 机器人** —— 支持移动端查询 (`/status` `/mil` `/verify <地点>` `/ai <问题>`) 以及主动推送:6 小时冲突简报、异常航空器警报(紧急应答机代码、AWACS/ISR/加油机/轰炸机)以及空袭/拦截警报。 - **时间轴回放** —— 拖动时间轴浏览过去 6 小时内的航空器、船只和卫星运动轨迹。 ## 截图
截取自一次实时会话 —— 内容因时间和地区而异。
## 架构
```
flowchart LR
SRC["19 public sources
adsb · AIS · TLE · FIRMS · Telegram · …"] COL["Collector (Docker worker)
AIS WebSocket + ADS-B polling"] CRON["Scheduler (cron)
ingest 15m · briefing 6h · alerts 5m"] API["Serverless functions /api
read · cron · bot(webhook+push)"] DB[("Postgres
time-series")] WEB["Browser SPA
React · MapLibre 3D · SGP4"] BOT["Telegram bot
query · active push"] SRC --> COL --> DB SRC --> API CRON --> API API <--> DB API --> WEB API --> BOT ``` **设计原则:** 将数据采集与读取分离(采集器将时间序列写入 Postgres;前端和机器人负责读取数据,绝不会在每个请求时重复抓取) · 隐藏密钥(任何带有密钥的源仅在服务端进行交互) · 针对重负载图层限定视口范围(船只、卫星、空域仅在当前视口下渲染)。完整详情 → [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)。 ## 技术栈 | 领域 | 技术 | |---|---| | 前端 | Vite · React 18 · TypeScript · MapLibre GL (3D globe) · satellite.js (SGP4) | | Serverless API | Vercel Functions (Node) — 12 个 endpoint | | 数据库 | Postgres (Neon HTTP driver, `@neondatabase/serverless`) | | 采集器 | 容器化 worker — AISStream WebSocket + adsb.lol 轮询 | | 调度 | Cron (GitHub Actions) | | AI · 机器人 | OpenAI (默认 `gpt-5.4-mini`) · Telegram Bot API (webhook + push) | | 质量门禁 | vitest (61 个测试) · `tsc` · `vite build` | ## 数据源(19 个,全部为公开数据) 尽可能选择无需密钥的数据源;任何带有密钥的数据源仅限在服务端使用,绝不会下发到浏览器。 | 类别 | 来源 | |---|---| | 轨迹与位置 | **adsb.lol** (ADS-B, 紧急应答机代码, 军用/高价值航空器) · **AISStream** (全球 AIS) · **Celestrak** (TLE) | | 威胁与事件 | **NASA FIRMS** (热力) · **EMSC** (地震) · **@air_alert_ua** (乌克兰空袭) · **Tzeva Adom** (以色列警报镜像) · **FAA NOTAM** | | 空域与地理 | **OpenAIP** (全球空域切片) · **data.go.kr** (大韩民国航线) · **ROK AIP** (KADIZ · P-73) · **BigDataCloud** (逆地理编码) | | OSINT 与文本 | **84 个公开的 Telegram 频道** · **GDELT** · 防务/国际 **RSS** (USNI, Defense News, Breaking Defense, TWZ, DoD, Al Jazeera, BBC, Yonhap) · **Open-Meteo** · **Google Translate** (无需密钥) | | AI | **OpenAI** (副驾驶, 简报) · **Telegram Bot API** | 包含 endpoint 的完整表格 → [`docs/DATA-SOURCES.md`](./docs/DATA-SOURCES.md)。 ## 快速开始 ``` npm install npm run dev # Vite app + public-data refresh loop npm run build # tsc -b && vite build npm test # vitest run (61 tests) ``` 实时外部图层(ADS-B、卫星、地震、空袭警报)在**无需任何密钥和数据库**的情况下即可工作 —— 只需克隆代码库并运行 `npm run dev`,地球仪即可呈现实时数据。 ## 自托管 需要数据库支持的图层(**时间轴 · 船只 · Telegram OSINT · 新闻 feed · NOTAM**)需要您拥有自己的 Postgres 并执行一次数据采集。只需三个步骤即可复现: **1. 带有 `pgvector` 的 Postgres** —— `db/schema.sql` 使用了 `CREATE EXTENSION vector`。 - Neon (免费版): 运行 `neonctl projects create`,或者通过 Vercel Marketplace 进行配置,然后复制连接字符串。 - 任何支持 `CREATE EXTENSION vector;` 的 Postgres 15+ 版本。 **2. 配置 `.env`** (参见 [`.env.example`](./.env.example)): ``` DATABASE_URL=postgres://user:pass@host/db?sslmode=require ``` **3. 迁移并采集数据:** ``` npm run db:migrate # idempotent — creates the 9 time-series tables npm run record # one-shot ingest (ADS-B · weather · OSINT · NOTAM · Telegram → Postgres) ``` 为了实现不间断的 AIS + ADS-B 数据采集,常驻型采集器 (`collector/`) 提供了一个 `Dockerfile`,可部署在任何容器宿主机上。**它会全天候 (24/7) 写入数据**,因此在运行前请进行调整:`PRUNE_HOURS`(数据保留时间;前端仅读取最近约 6 小时的数据)、`WRITE_THROTTLE_MS`(每艘船只 MMSI 的最小写入间隔),并设置 `AISSTREAM_API_KEY`(如果缺失,将跳过船只数据采集)。如果仅用于演示,运行几次 `npm run record` 就足够了——您并不一定需要启动常驻采集器。 ## 部署 - **Web + API** —— Vercel: 运行 `npx vercel --prod` (`dist/` 静态文件 + `api/` serverless functions)。 - **采集器** —— 任意容器宿主机: 根目录下的 `Dockerfile` 运行 `collector/` (AIS WebSocket + ADS-B 轮询)。 - **调度器** —— GitHub Actions cron (目前仅支持 `workflow_dispatch` 触发;请参阅上方的实时数据说明)。 - **机密信息** —— 全部仅保留在服务端,绝不会出现在浏览器打包文件或 git 中。汇总信息 → [`docs/DATA-SOURCES.md`](./docs/DATA-SOURCES.md)。 ## 为什么它能直接部署到现场 - **100% 开源数据 → 可直接在非涉密 (UNCLASS) 环境下运行。** 恰好在无法进行涉密共享的环节发挥重大作用 —— **多国联军/盟友** 的态势感知。 - **提供决策支持与预警 (I&W),而非用于瞄准打击** → 降低了法律/交战规则 (ROE) 的门槛,能更快部署到现场。紧急应答机代码、高价值资产及空袭推文可直接为部队防护、空中态势图以及 ISR 提示提供数据支持。 - **可移植** —— 采用 serverless + 容器化采集器架构,可轻松重新部署到本地部署、物理隔离网络或政府云平台中,且没有 SaaS 供应商锁定风险。机器人传输层是一个适配器 —— 可将 Telegram 替换为任何获批的通讯软件。 - **针对大韩民国 (ROK) 优化** —— 集成 KADIZ · P-73 · 大韩民国航线 + 韩语 AI 副驾驶。 ## 安全性 —— 设计上不可用于瞄准打击 - **定位于决策支持与态势感知 —— 不用于身份识别、目标瞄准或交战。** 军用标志来源于公开的 ADS-B 标签,而非身份解析。 - **不使用任何合成或捏造的数据** —— 仅使用公开来源,且仅限经过实时验证的真实数据。各个频道必须通过实时可达性检查。 - **诚实的置信度** —— 绝不将微弱的证据虚高为高分。 - 密钥严格保留在服务端,远离浏览器和 git。 ## 现存的局限性 - 公开的 ADS-B/AIS 数据并不完整(涉及敏感航空器、接收器覆盖范围等问题)。卫星位置是利用 **TLE 计算**得出的结果,而非实时遥测数据。 - 以色列的警报使用的是官方警报数据 (oref.org.il 屏蔽了境外 IP) 的 **Tzeva Adom 镜像**。 - 基于 Cron 的数据采集意味着所谓的“瞬时”同步实际上存在约 5–15 分钟的误差;在实际部署中,可以通过常驻 worker 来缩短这一延迟。 - Telegram 并非获批的安全通讯渠道 —— 在生产环境中建议替换其传输层。 ## 文档 | 文档 | 内容 | |---|---| | [`docs/PROJECT.md`](./docs/PROJECT.md) | 提交概述 · Anti-Maven 定位 · 评分图谱 | | [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) | 架构 · 服务 · 完整功能列表 | | [`docs/DATA-SOURCES.md`](./docs/DATA-SOURCES.md) | 19 个外部数据源 · endpoint · 环境变量 | | [`docs/AI-AND-BOT.md`](./docs/AI-AND-BOT.md) | AI 副驾驶与 Telegram 机器人内部机制 | | [`docs/README.ko.md`](./docs/README.ko.md) | 🇰🇷 한국어 README | **Team 오일이** · D4D Hackathon · 开源,不可用于瞄准打击,并对自身的置信度保持诚实。
(84 public channels)"] --> F{"war-result
keyword?"} F -->|no| X["drop (noise / off-topic)"] F -->|yes| G["geolocate (gazetteer)"] G --> TH["thermal axis
NASA FIRMS proximity + causal time window"] G --> XC["cross-source axis
other channels, same place & time"] G --> RG["regional heat activity
(weak context)"] TH --> S["confidence 0–100 + evidence ledger"] XC --> S RG --> S S --> V{"verdict"} V -->|"≥2 independent axes · ≥65"| V1["✅ CONFIRMED"] V -->|"≥30"| V2["🟡 LIKELY"] V -->|"no corroboration"| V3["🟠 UNVERIFIED"] V -->|"strong claim · signal absent"| V4["🔴 FALSE"] classDef good fill:#123,stroke:#2c6 class V1 good ``` ## 功能 - **实时融合地球仪** —— 全球航空器 (ADS-B)、船只 (AIS) 和卫星 (TLE) 呈现在 MapLibre 3D 地球仪上,并根据视口/缩放级别进行过滤。点击任意轨迹,会弹出一个跟随其移动的窗口(包含 ID、速度、航向、高度、坐标)。 - **OSINT 裁决引擎** —— 监测 84 个频道 → 战果过滤器 → 地理定位 → **CONFIRMED / LIKELY / UNVERIFIED / FALSE(已确认 / 很可能 / 未证实 / 虚假) + 置信度 + 证据账本**,并与**实时的 NASA FIRMS 热异常数据**及其他佐证来源进行交叉核实。 - **预警图层** —— 乌克兰空袭警报 (`@air_alert_ua`)、EMSC 浅源震中(“爆炸型”)地震、大韩民国(ROK)特殊空域 (KADIZ · P-73) 及航线、OpenAIP 全球空域、FAA NOTAM。 - **浏览器内卫星轨道推演** —— 在客户端通过 Celestrak TLE + SGP4 计算 (`satellite.js`),无需为每一帧请求服务器。 - **AI 副驾驶** —— 基于 OpenAI 的区域摘要、基于规则的异常评估以及多轮对话。严格基于提供的数据生成,并带有行内来源标签。 - **Telegram 机器人** —— 支持移动端查询 (`/status` `/mil` `/verify <地点>` `/ai <问题>`) 以及主动推送:6 小时冲突简报、异常航空器警报(紧急应答机代码、AWACS/ISR/加油机/轰炸机)以及空袭/拦截警报。 - **时间轴回放** —— 拖动时间轴浏览过去 6 小时内的航空器、船只和卫星运动轨迹。 ## 截图
![]() Airspace + NOTAM — class-colored airspace polygons and NOTAM control zones. |
![]() Live satellites — Celestrak TLE propagated in-browser with SGP4. |
![]() OSINT verdict — verdict + confidence % + evidence panel. |
![]() Claim node popup — per-claim verdict, evidence, and link to the source post. |
![]() Telegram bot — mobile queries + briefing / anomaly / air-raid pushes. |
![]() Track popup — aircraft ID, altitude, speed, fused context. |
adsb · AIS · TLE · FIRMS · Telegram · …"] COL["Collector (Docker worker)
AIS WebSocket + ADS-B polling"] CRON["Scheduler (cron)
ingest 15m · briefing 6h · alerts 5m"] API["Serverless functions /api
read · cron · bot(webhook+push)"] DB[("Postgres
time-series")] WEB["Browser SPA
React · MapLibre 3D · SGP4"] BOT["Telegram bot
query · active push"] SRC --> COL --> DB SRC --> API CRON --> API API <--> DB API --> WEB API --> BOT ``` **设计原则:** 将数据采集与读取分离(采集器将时间序列写入 Postgres;前端和机器人负责读取数据,绝不会在每个请求时重复抓取) · 隐藏密钥(任何带有密钥的源仅在服务端进行交互) · 针对重负载图层限定视口范围(船只、卫星、空域仅在当前视口下渲染)。完整详情 → [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)。 ## 技术栈 | 领域 | 技术 | |---|---| | 前端 | Vite · React 18 · TypeScript · MapLibre GL (3D globe) · satellite.js (SGP4) | | Serverless API | Vercel Functions (Node) — 12 个 endpoint | | 数据库 | Postgres (Neon HTTP driver, `@neondatabase/serverless`) | | 采集器 | 容器化 worker — AISStream WebSocket + adsb.lol 轮询 | | 调度 | Cron (GitHub Actions) | | AI · 机器人 | OpenAI (默认 `gpt-5.4-mini`) · Telegram Bot API (webhook + push) | | 质量门禁 | vitest (61 个测试) · `tsc` · `vite build` | ## 数据源(19 个,全部为公开数据) 尽可能选择无需密钥的数据源;任何带有密钥的数据源仅限在服务端使用,绝不会下发到浏览器。 | 类别 | 来源 | |---|---| | 轨迹与位置 | **adsb.lol** (ADS-B, 紧急应答机代码, 军用/高价值航空器) · **AISStream** (全球 AIS) · **Celestrak** (TLE) | | 威胁与事件 | **NASA FIRMS** (热力) · **EMSC** (地震) · **@air_alert_ua** (乌克兰空袭) · **Tzeva Adom** (以色列警报镜像) · **FAA NOTAM** | | 空域与地理 | **OpenAIP** (全球空域切片) · **data.go.kr** (大韩民国航线) · **ROK AIP** (KADIZ · P-73) · **BigDataCloud** (逆地理编码) | | OSINT 与文本 | **84 个公开的 Telegram 频道** · **GDELT** · 防务/国际 **RSS** (USNI, Defense News, Breaking Defense, TWZ, DoD, Al Jazeera, BBC, Yonhap) · **Open-Meteo** · **Google Translate** (无需密钥) | | AI | **OpenAI** (副驾驶, 简报) · **Telegram Bot API** | 包含 endpoint 的完整表格 → [`docs/DATA-SOURCES.md`](./docs/DATA-SOURCES.md)。 ## 快速开始 ``` npm install npm run dev # Vite app + public-data refresh loop npm run build # tsc -b && vite build npm test # vitest run (61 tests) ``` 实时外部图层(ADS-B、卫星、地震、空袭警报)在**无需任何密钥和数据库**的情况下即可工作 —— 只需克隆代码库并运行 `npm run dev`,地球仪即可呈现实时数据。 ## 自托管 需要数据库支持的图层(**时间轴 · 船只 · Telegram OSINT · 新闻 feed · NOTAM**)需要您拥有自己的 Postgres 并执行一次数据采集。只需三个步骤即可复现: **1. 带有 `pgvector` 的 Postgres** —— `db/schema.sql` 使用了 `CREATE EXTENSION vector`。 - Neon (免费版): 运行 `neonctl projects create`,或者通过 Vercel Marketplace 进行配置,然后复制连接字符串。 - 任何支持 `CREATE EXTENSION vector;` 的 Postgres 15+ 版本。 **2. 配置 `.env`** (参见 [`.env.example`](./.env.example)): ``` DATABASE_URL=postgres://user:pass@host/db?sslmode=require ``` **3. 迁移并采集数据:** ``` npm run db:migrate # idempotent — creates the 9 time-series tables npm run record # one-shot ingest (ADS-B · weather · OSINT · NOTAM · Telegram → Postgres) ``` 为了实现不间断的 AIS + ADS-B 数据采集,常驻型采集器 (`collector/`) 提供了一个 `Dockerfile`,可部署在任何容器宿主机上。**它会全天候 (24/7) 写入数据**,因此在运行前请进行调整:`PRUNE_HOURS`(数据保留时间;前端仅读取最近约 6 小时的数据)、`WRITE_THROTTLE_MS`(每艘船只 MMSI 的最小写入间隔),并设置 `AISSTREAM_API_KEY`(如果缺失,将跳过船只数据采集)。如果仅用于演示,运行几次 `npm run record` 就足够了——您并不一定需要启动常驻采集器。 ## 部署 - **Web + API** —— Vercel: 运行 `npx vercel --prod` (`dist/` 静态文件 + `api/` serverless functions)。 - **采集器** —— 任意容器宿主机: 根目录下的 `Dockerfile` 运行 `collector/` (AIS WebSocket + ADS-B 轮询)。 - **调度器** —— GitHub Actions cron (目前仅支持 `workflow_dispatch` 触发;请参阅上方的实时数据说明)。 - **机密信息** —— 全部仅保留在服务端,绝不会出现在浏览器打包文件或 git 中。汇总信息 → [`docs/DATA-SOURCES.md`](./docs/DATA-SOURCES.md)。 ## 为什么它能直接部署到现场 - **100% 开源数据 → 可直接在非涉密 (UNCLASS) 环境下运行。** 恰好在无法进行涉密共享的环节发挥重大作用 —— **多国联军/盟友** 的态势感知。 - **提供决策支持与预警 (I&W),而非用于瞄准打击** → 降低了法律/交战规则 (ROE) 的门槛,能更快部署到现场。紧急应答机代码、高价值资产及空袭推文可直接为部队防护、空中态势图以及 ISR 提示提供数据支持。 - **可移植** —— 采用 serverless + 容器化采集器架构,可轻松重新部署到本地部署、物理隔离网络或政府云平台中,且没有 SaaS 供应商锁定风险。机器人传输层是一个适配器 —— 可将 Telegram 替换为任何获批的通讯软件。 - **针对大韩民国 (ROK) 优化** —— 集成 KADIZ · P-73 · 大韩民国航线 + 韩语 AI 副驾驶。 ## 安全性 —— 设计上不可用于瞄准打击 - **定位于决策支持与态势感知 —— 不用于身份识别、目标瞄准或交战。** 军用标志来源于公开的 ADS-B 标签,而非身份解析。 - **不使用任何合成或捏造的数据** —— 仅使用公开来源,且仅限经过实时验证的真实数据。各个频道必须通过实时可达性检查。 - **诚实的置信度** —— 绝不将微弱的证据虚高为高分。 - 密钥严格保留在服务端,远离浏览器和 git。 ## 现存的局限性 - 公开的 ADS-B/AIS 数据并不完整(涉及敏感航空器、接收器覆盖范围等问题)。卫星位置是利用 **TLE 计算**得出的结果,而非实时遥测数据。 - 以色列的警报使用的是官方警报数据 (oref.org.il 屏蔽了境外 IP) 的 **Tzeva Adom 镜像**。 - 基于 Cron 的数据采集意味着所谓的“瞬时”同步实际上存在约 5–15 分钟的误差;在实际部署中,可以通过常驻 worker 来缩短这一延迟。 - Telegram 并非获批的安全通讯渠道 —— 在生产环境中建议替换其传输层。 ## 文档 | 文档 | 内容 | |---|---| | [`docs/PROJECT.md`](./docs/PROJECT.md) | 提交概述 · Anti-Maven 定位 · 评分图谱 | | [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) | 架构 · 服务 · 完整功能列表 | | [`docs/DATA-SOURCES.md`](./docs/DATA-SOURCES.md) | 19 个外部数据源 · endpoint · 环境变量 | | [`docs/AI-AND-BOT.md`](./docs/AI-AND-BOT.md) | AI 副驾驶与 Telegram 机器人内部机制 | | [`docs/README.ko.md`](./docs/README.ko.md) | 🇰🇷 한국어 README | **Team 오일이** · D4D Hackathon · 开源,不可用于瞄准打击,并对自身的置信度保持诚实。
标签:3D可视化, ESC4, HTTP/HTTPS抓包, MITM代理, OSINT, Petitpotam, 多源数据, 态势感知, 情报融合, 数据 adjudication, 自动化攻击, 请求拦截





