sidnov6/trident
GitHub: sidnov6/trident
实时海上咽喉要道情报平台,通过确定性检测器与 LangGraph 代理集群在 AIS 数据流上识别暗船和制裁规避威胁并量化经济影响。
Stars: 0 | Forks: 0
# TRIDENT — 海上咽喉要道情报平台
一个实时指挥中心,实时监控全球海上咽喉要道,在全球 AIS 数据洪流上运行常驻的确定性检测器集群,并通过推理代理链路升级异常事件,对威胁进行分类并量化其经济冲击波。
六大咽喉要道 — **苏伊士运河**(旗舰级)、霍尔木兹海峡、曼德海峡、马六甲海峡、巴拿马运河、博斯普鲁斯海峡。
## 核心原则:双速认知
整个系统的主心骨。**反应成本低廉且持续不断;认知代价高昂且具有选择性。**
```
AIS FIREHOSE (hundreds of msgs/sec)
│
┌─────▼─────────────────────────┐
│ FAST LANE · Tier 0–2 REFLEX │ sub-ms, every message, no LLM
│ ingest → state → detectors │
└─────┬──────────────────────────┘
│ emits typed Signals
┌────▼────┐
│ EVENT BUS│ Redis Streams — wakes the brain only when something fires
└────┬────┘
┌─────▼──────────────────────────┐
│ SLOW LANE · Tier 3 COGNITION │ seconds, event-triggered, always resident
│ LangGraph swarm (Groq) │ Sentinel → Analyst → Desk
└─────┬──────────────────────────┘
│ confirmed incidents + market notes
Tier 4 · CASE STORE + UI PUSH
```
我们将**所有的监控交由确定性代码完成**,把思考留给真正值得的罕见时刻。在单消息循环中调用代理将违背这一原则——代理只消费**信号**,从不直接处理原始消息。
## 拓扑结构
五个后端服务 + 一个前端 + 三个数据存储。服务之间**仅**通过 Redis 和 Postgres 通信,因此任何一个服务都可以重启而不会导致其他服务崩溃。
| 服务 | 层级 | 职责 |
|---|---|---|
| `services/ingestor` | 0–2 | AIS 接入、Redis 状态引擎、检测器套件、异步轨迹写入器 |
| `services/cognition` | 3 | LangGraph Sentinel→Analyst→Desk (Groq)、审计、事件 RAG |
| `services/api` | 4 | FastAPI REST + 连接 UI 的单个多路复用 WebSocket |
| `services/replay` | 4 | 取证轨迹回放 + `ST_DWithin` 近距离查询(“谁在暗船附近”) |
| `web` | UI | Next.js 指挥中心 — MapLibre + OpenSeaMap + deck.gl |
共享的、冻结的**核心基础**(可导入的包):
| 包 | 导入 | 内容 |
|---|---|---|
| `packages/contracts` | `trident_contracts` | Signal / Vessel / Incident / WS schemas (Pydantic) + `ts/contracts.ts` 镜像 |
| `packages/common` | `trident_common` | `get_settings()`、Redis 键 + 流名称 |
| `packages/geo` | `trident_geo` | 咽喉要道区域、苏伊士分区、MMSI 归属国、地理围栏 |
有关完整的服务间契约,请参阅 [`docs/INTEGRATION.md`](docs/INTEGRATION.md);有关数据融合层(SAR / OFAC / GDELT / 天气 / 市场),请参阅 [`docs/FUSION.md`](docs/FUSION.md)。
## 快速开始
### 1. 配置
```
cp .env.example .env
# 开箱即用,无需密钥 — AIS_SOURCE=synthetic 回放预编写的 Suez 场景。
# 如需稍后上线:设置 AISSTREAM_API_KEY + AIS_SOURCE=live,以及用于真实认知的 GROQ_API_KEY。
```
### 2a. 全部在 Docker 中运行(推荐)
```
docker compose up --build
# web: http://localhost:3000 ← 指挥中心
# api: http://localhost:8000 (REST + ws://localhost:8000/ws)
# replay: http://localhost:8100
```
首次启动会自动加载 `services/db/schema.sql`(TimescaleDB hypertable + PostGIS + 融合表)。
### 2b. 不使用 Docker 进行本地开发
你仍然需要在某处运行 Redis + Postgres(Timescale/PostGIS)(在 `.env` 中指向它们)。
然后:
```
./scripts/dev_install.sh # editable-installs the 3 spine packages + service deps
make ingestor # synthetic feed → Redis state → detectors → bus
make api # FastAPI on :8000
make cognition # LangGraph brain on the bus
make web # Next.js on :3000
```
在没有 UI 的情况下验证快车道:
```
make counts # live per-zone vessel counts (M1 proof)
```
## “完成”的标准(v1 定义)
打开应用 → 实时船舶在真实的 OpenSeaMap 航标图上滑过苏伊士运河 → 一艘油轮在苏伊士湾关闭 AIS → 几秒钟内,一张带有完整推理轨迹、威胁分类和预计运费影响的事件卡片流入右侧轨道。在**合成模式下,这一切会自动发生** — 测试脚本框架模拟了一艘暗船 + 停滞的船对船过驳 (STS) + U 型掉头集群,使得整个链路在离线状态下也可演示。
## 里程碑路线图 (spec §15) → 代码位置
| 里程碑 | 状态 | 位置 |
|---|---|---|
| M0 骨架与基础设施 | ✅ | `docker-compose.yml`, `packages/*`, `services/db/schema.sql` |
| M1 实时接入 + 状态 | ✅ | `services/ingestor` (`make counts`) |
| M2 地图 MVP | ✅ | `web` (MapLibre + OpenSeaMap + deck.gl IconLayer) |
| M3 平滑运动 | ✅ | `web/lib/ws.ts` dead-reckoning + TripsLayer |
| M4 反射机制 | ✅ | `services/ingestor/ingestor/detectors/*` |
| M5 认知系统 | ✅ | `services/cognition` (Groq + 确定性兜底) |
| M6 案例与审计 | ✅ | `incidents` + `audit_log`、档案面板、威胁指示条 |
| M7 取证 | ✅ | `services/replay` (`ST_DWithin`, scrubber) |
| M8 强化 | ◐ | 重连/背压 + 所有检测器已到位;按区域调优进行中 |
## 不可妥协项(机构级要求)
1. **每个断言均提供溯源** — 每一个事件都链接到其确切的信号、轨迹点和代理推理。
2. **不可变审计日志** — 每一个代理节点都会写入一个只追加的 `audit_log` 行(`Signal → Sentinel → Analyst → Desk` 完全可重构)。
3. **数据流中断记录** — 断线情况记录在 `feed_gaps` 中;你可以证明自己何时陷入了盲区。
4. **回放 / 证据保管链** — 任何过去的时间窗口都可以从 `tracks` hypertable 中重现。
5. **确定性核心** — 检测器是纯净的、带版本的函数;LLM 负责解读,绝不捏造事实。
## 测试
```
PYTHONPATH=packages/contracts:packages/common:packages/geo:services/ingestor \
python -m pytest services/ingestor/tests -q # 17 detector/maths tests
# cognition 图表测试需要 pytest-asyncio:pip install pytest-asyncio
```
标签:实时数据流, 异常检测, 搜索引擎查询, 智能体工作流, 测试用例, 海事情报, 请求拦截, 逆向工具, 风险监控