跳到正文

目录

God's Eye View:把开源情报变成一张可交互的 3D 地球

一句判断

开源情报(OSINT,Open Source Intelligence)的瓶颈从来不是数据匮乏,而是界面:信号散落在几十个浏览器标签页里,聚合靠人肉。God’s Eye View 把这件事做成了一张可交互的 3D 地球——航班、船舶、卫星、地震、天气、公共摄像头实时铺在地球上,浏览器里直接跑,不配密钥也能启动。

这个项目把"看起来像电影里的军用 HUD"和"每一行代码都能查"两件事叠在了一起。前者是体验,后者是它作为开源项目的底气。九月中旬之后它又多了一层身份:一个 MCP 服务器,让 Claude、Codex 这类编码代理能在对话里直接调起这张地球。

本文基于 2026 年 10 月 3 日的 v0.2.1 核查。文章初版发表于 9 月 3 日(v0.1.x 时代),此后项目从 13 个图层扩到 19 个、摄像头从约 800 路涨到约 3,600 路,并新增了 MCP 接入与卫星影像回看,正文均已按现状重写。

它是什么,从哪来

God’s Eye View 是一个跑在浏览器里的地球可视化应用,技术栈刻意朴素:原生 JavaScript 加 CesiumJS 和 Vite,没有前端框架,行星表面用 Google Photorealistic 3D Tiles,语音走 OpenAI Realtime API。作者 Bilawal Sidhu 凭同名 YouTube 系列走红(README 称该系列播放量超 500 万,全社交平台累计超 2,500 万),2026 年 6 月 23 日建仓,8 月底发布 v0.1.0 正式开源,当周登顶 GitHub Trending 日榜与周榜;截至 10 月 3 日为 46,700 stars(本文初版发表次日实拍 16,943,一个月间翻了一倍多)。目前在维护者名单里的还有 Sameh Khamis,两人同属 Halfpixel——官方已在 README 预告将推出托管版,理由是开源发布后听到的最响亮请求不是新功能,而是"给我一个链接就行"。

它的数据不是模型渲染出来的假数据,而是真实公共信号,每一层都能在仓库的 DATA_SOURCES.md 里查到来源与条款:

  • 航班:ADS-B(广播式自动相关监视)应答机信号,主源 OpenSky,备用 adsb.lol,11,000+ 架在飞飞机
  • 船舶:船载 AIS(船舶自动识别系统)信标,来自 AISStream.io
  • 卫星:CelesTrak 的 838 个目标轨道根数(TLE),客户端用 SGP4 算法推算位置
  • 地震:USGS 过去 24 小时全球事件
  • 公共摄像头:各交通局公开的城市摄像头,约 3,600 路,特拉华州的 DelDOT 是实时视频流
  • 发射任务:Launch Library 2 的滚动 30 天发射清单

地图:19 个图层怎么分

应用内的 Data Layers 面板把图层分成六组,这张表也是理解整个项目的最快入口——19 个图层与地图源里有 17 个有无密钥路径,只有船舶、火灾这类要注册拿免费钥匙:

分组图层数据源密钥
移动目标航班、军机、船舶、公交、共享单车OpenSky、adsb.lol、AISStream、GTFS-RT、GBFS船舶需免费 AISStream 密钥,其余无密钥
摄像头城市摄像头、ALPR 车牌识别器位置各地交通局 API、OpenStreetMap 标注无密钥
基础设施数据中心 4,351 个、大坝 704 座、海底光缆 712 条、军事设施随包分发 + OSM无密钥
事件地震、火灾、发射任务USGS、NASA FIRMS、Launch Library 2火灾需免费 FIRMS 密钥
天气风场、雨雷达、卫星云图、闪电、气旋NOAA GFS/ECMWF、nowCOAST、NHC全部无密钥
工具地图底座、路线规划、无线电、Recent ImageryEsri/Google/OSM、OSRM、Radio Browser、NASA底座高档位才需要密钥

无密钥启动时,地球上已经在动的是航班、军机、卫星、地震、公共摄像头、无线电和发射任务;底座是 Esri 卫星影像加无密钥地形,Esri 不可达时自动切 OSM。想要 Google 级别的写实 3D 城市,配一把免费的 Cesium ion 密钥即可。

上手:两条路径

路径一:Pinokio 一键安装。需要 Pinokio 8.2 或更高版本——8.0.40 的原生 Configure 表单对这类嵌套应用会把密钥写错文件还留下日志,官方 README 和 SECURITY.md 都专门警告过这一点。在 Pinokio 里打开应用页,点 Install 再点 Start,适合不想碰终端的用户。

路径二:终端或编码代理。Node.js 要求 24.x(不低于 24.14.0)或 26.x,package.json 的 engines 字段写得很精确(>=24.14.0 <25 || >=26 <27),25 已 EOL,setup doctor 会主动提醒:

git clone https://github.com/bilawalsidhu/gods-eye-view.git
cd gods-eye-view
npm ci
npm run doctor
npm run dev

打开 http://localhost:4173(端口在 build/vite.js 里默认写死)。性能基线来自 docs/PERFORMANCE.md:2026 年 8 月 22 日在 M5 + Chrome 上捕获,首屏稳定中位数 1.86 秒——官方明确说这是对照基线,不是你机器上的承诺,也不是最低配置要求。同一个文档里还有个容易被忽略的数字:摄像头图层是冷激活最慢的一层,约 19.6 秒才完全就位,等它加载不是你的机器不行。

有一条升级警告值得单独说:旧版本查询的公共 OpenStreetMap Overpass 服务器现在已拒绝旧客户端,不升级的话交通、军事设施和 ALPR 三个图层会一直空白。

首次启动会弹任务卡让你选 Live Contacts(实时目标)、Space Missions(太空任务)、Environmental(环境数据)或 Explore Manually(手动探索)。键盘快捷键:1–7 切换视觉风格,H HUD,D 检测框,C 座舱,` 帧率,Esc 退出。

核心机制:四条主线

追踪链是骨架。点任意目标,镜头锁定、画出渐隐航迹、弹出完整元数据卡;锁定一架在飞航班后按 C 切进座舱,镜头跟着飞机走,地形始终压在机身下方,途中可以随时切传感器。Contacts 面板维护着目标周围 250 公里的名单,可以在飞机之间直接跳座舱。底层的工程细节 README 写得很诚实:实时数据每 15–30 秒才到一批,地球渲染的是滞后一个区间的画面,靠插值和航位推测补平滑——你看到的是推算出来的流畅,不是逐秒的真实。

传感器滤镜是皮肤。1–7 共七档:正常、CRT、NVG 夜视(PVS-14 像增强器模拟)、FLIR 热成像、Noir 黑白、Snow、Anime,全部是 GLSL 着色器,整个地球实时重渲染。3D 机库按机型加载真实模型(787、ATR-72、Citation、Bell 206、MQ-9 等,GLB 文件就在 public/models/ 里),追踪目标靠近后从图标切换成模型。

语音是豪华配置。对着地球说话,可以把州界多边形、标记、路线实时标注上去,也能问"德州上空现在有多少航班"这类分析师查询。官方口径是 29 个语音工具,分导览、标注、查询、操作四类;同一把 OpenAI 密钥还驱动 AI HUD 摘要——每移动一次就重新生成一句五个词的情报风格战况。语音是唯一持续花钱的功能,应用自带花费控制:麦克风旁边有实时会话花费读数,默认 2 美元弹出警告、5 美元硬性断开会话(voiceCost.js 里的 warnUsd: 2, capUsd: 5),这在同类项目里少见地体贴。

绘制与路线不需要麦克风。DISPLAY 面板的 Draw 可以在地球上画面、线、钉并持久保存;Directions 输入 A、B 两点,OSRM 给出步行、骑车、驾车路线并逐转向提示,还能让镜头沿着路线飞一遍——无密钥、无地理编码器。Recent Imagery 是 9 月新增的重磅功能:框选任意区域,拿到过去 30 天无密钥的 NASA 影像(HLS Sentinel-2/Landsat,30 米分辨率),支持两个日期 A/B 对比,选中的那一天会自动铺到地球上。

所有状态——相机姿态、风格、图层、甚至一个正在追踪的目标——都能序列化进分享链接。README 对此有一句很准的话:一个活的目标是"交接"(handoff),不是"书签"。

一个任务流:追问一架绕圈的军机

README 的 Field Missions 清单里最能把整条链串起来的是"Ask the planet":

你在军机图层看到一群直升机在原地绕圈。点选其中一架,客户端静默回填它过去约 24 小时的真实轨迹历史——绕圈在 3D 里解析成一摞叠起来的环形航线,它在做什么一目了然。按 C 跳进它的座舱,1–7 切到 NVG,打开检测网格让 HUD 读整个场景。想知道地面视角,去摄像头面板点 NEAREST,最近的公共摄像头立刻接管同一片区域。最后把分享链接发给同事——他打开的不是截图,是同一个还在动的追踪目标。

航班、船舶、火灾的交接是同构的:追踪目标→座舱或战术卡→最近摄像头→分享链接。这套"信号→视角→交接"的动线,是整个产品的核心交互。

从应用到编码代理:MCP 与 40 个工具

10 月 3 日的 v0.2.0 把 God’s Eye View 变成了一个 MCP 服务器:在 Claude Desktop、Codex 或 ChatGPT 桌面端里说"给我看东京",对话右侧会直接打开一个可交互的地球面板,带着正确的图层和风格,甚至能跟某架飞机的座舱——面板由 MCP 服务器自己伺服,本地运行,不需要 HTTPS 或内网穿透。每个回答还附带一个链接,点开就是完整应用。

工具目录与语音共用一套定义,src/tools/ 下实测恰好 40 个:find_aircraft、get_aircraft_track、find_cctv_cameras、get_recent_imagery、plan_route、next_satellite_pass、get_cyclones、situation_brief 等,覆盖飞机、船舶、卫星、火灾、摄像头、无线电、路线、天气、基础设施和态势简报。接入方式照 docs/MCP_SETUP.md 做:npm run build:panel 之后,把 server/mcp/stdio.js 注册进 Claude Code、Codex CLI 或 Claude Desktop 即可。另有 ?embed=1 嵌入模式,让第三方页面只框住地球本身。

对持有编码代理的团队来说,这可能是比"又一个可视化 demo"更实际的入口:代理负责问数据,地球负责给空间直觉,两边共享同一份本地数据面。

数据真实边界:哪些是实况,哪些是估计

这一点 README 自己做了区分,写文章不能含糊:

  • 真实且实时/准实时:航班、船舶、卫星、地震、公共摄像头、天气与发射任务。
  • 模拟或粗略估计:道路交通是沿真实道路、用聚合位置数据模拟的——配了 TomTom 密钥会有实时流速和拥堵配色,但单个车辆的位置始终不是实测;公共摄像头的机位朝向是估计值,界面上会标 ESTIMATED,你可以在摄像头本体上拖拽 gizmo 校准;火箭发射的上升轨迹标注 RECONSTRUCTED ESTIMATE,可 0.25–4 倍速回放,但它是重建,不是遥测。

这不是一个"全真"的地球——信号是真的,视觉呈现里掺了模拟成分。README 尾部的免责声明把边界划得更硬:数据可能延迟、缺失、建模、推断或出错,不得用于航行、应急响应、医疗或投资决策。把它当军用级实时态势系统用会高估它,当"公共信号的可视化教学台"来理解则恰到好处。

密钥与成本:不花钱能到哪一步

六把密钥,四把有免费档,两把按量计费。全部通过应用右下角的 POWER UP 面板配置,粘贴保存后应用自动重启生效;没有一把是启动前提。

密钥打开什么成本
Cesium ionGoogle 写实 3D 城市与全球地形免费档限个人非商业用途,有配额
Google Maps直连 3D 影像 + 应用内地点搜索计费;每月前 1,000 个 3D Tiles 会话目前免费
OpenAI语音、AI HUD 摘要按量,实时语音约每活跃分钟几美分,有 $2/$5 会话闸
AISStream全球船舶免费注册
NASA FIRMS活跃火灾免费
TomTom交通实时流速有免费档

另外两把"锦上添花"的钥匙(OpenSky、Launch Library 2)只是提高轮询配额。无密钥状态的开箱体验已经覆盖了 OSINT 该有的基本盘。

安全模型可以一句话概括:带密钥的请求全部由本地服务端代理转发,浏览器永远拿不到真密钥——OpenAI 走短时效的临时会话令牌,唯一的例外是 Google Maps 和 Cesium ion 这两把必须进浏览器的钥匙(Vite 注入,devtools 里可见),SECURITY.md 要求在提供方控制台做域名与 API 双重限制。密钥文件写入前先设为仅属主可读(源码里是 openSync(tmp, 'wx', 0o600)),macOS 上 dev-fresh.sh 还能把密钥收进钥匙串。默认只绑定 localhost;如果你主动开 LAN 共享,要知道任何能访问到服务器的人都能消耗你配置的密钥——v0.2.1 已给花钱的端点加了默认限流(OpenAI 每分钟 30 次、Google 120 次),但应用层限流不等于账单上限,提供方侧的预算告警仍然要自己设。

许可与商用边界

初版曾把许可写成"自定义 Other、未挂标准开源协议"——那是 GitHub API 对这段免责附注的机器识别结果,不是事实。源代码是标准 MIT 协议(LICENSE 文件正文即 MIT 文本)。但 MIT 只覆盖代码:随包分发的数据集和运行时拉取的第三方数据各按各的条款来,DATA_SOURCES.md 逐项列了清单。对商用最要紧的两条:海底光缆数据来自 TeleGeography,CC BY-NC-SA 非商业许可,商用部署必须删掉这个数据集(官方明说它是一个自包含目录,删起来不难);航班主源 OpenSky 的数据许可限定非商业研究/教育用途。也就是说"代码能商用"和"整套应用能商用"是两个问题,后者取决于你留哪些图层。

项目还有一条产品红线,写在 README 的 “The line” 一节:只建模事件、资产、基础设施和系统,不做指名道姓的人物搜索、人脸识别或个人追踪,“People are not a query type here”,越线的 PR 不会被合并。对一个长得像情报工具的开源项目来说,这条边界本身就是它能不能被严肃采用的前提。

谁该现在用

现在就上:OSINT 爱好者和地理空间可视化开发者。前者得到的是免费的全球信号沙盘,后者得到的是一个"原生 JS + Cesium + 单层模块化数据源"的参考实现——想加一层自己的数据源,README 的原话是"开个 issue 或直接发 PR"。

值得认真评估:已经在用 Claude、Codex 或 ChatGPT 桌面端的团队。MCP 接入成本是一次配置,换来的空间问答能力没有同类替代——项目这一个月从 1.7 万星涨到 4.7 万,MCP 发布(10 月 3 日 v0.2.0)与 v0.2.1 的密集迭代都落在这个窗口里。

先等等:需要可靠性承诺的生产场景。官方自己的定性是"探索与学习用的开源客户端,不是加固的生产服务",本地单机运行、靠 localhost 边界而非账号体系隔离访问,托管版还没上线。等 Halfpixel 的托管版落地再评估不迟。

用之前删掉或关掉的:商用部署删 TeleGeography 海缆数据集;认真场景里把交通层当模拟看;不要拿任何图层做导航或应急决策——这条是项目方写的,不是本文替它谦虚。

延伸

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。