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 ```
标签:实时数据流, 异常检测, 搜索引擎查询, 智能体工作流, 测试用例, 海事情报, 请求拦截, 逆向工具, 风险监控