核心问题: 你的用法能否与数据许可(CC BY-NC-SA 海缆、ODbL 提取)和服务商条款(Google Maps、OpenSky 的商用限制)兼容?
RepoDaily 采用评分
RepoDaily 将该项目的采用分评为 92/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。
包含 5 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。
检测到 6 个工作流步骤、6 个下一步动作,以及 2 个命令/安装信号。
趋势热度为 +1,984 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。
采纳风险标记为 medium,并包含 7 条安全说明与 4 条跳过条件。
3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。
文章中包含许可证来源或许可证表述。
文章正文和元数据中检测到 4 个 AI/Agent 相关信号。
项目概览
God's Eye View 是一个爆款的代码化落地。README 开篇即点明出身:这是 YouTube 播放量超 500 万的 God's Eye View 系列(前身为 WorldView)的开源版本,"You asked, so it's happening"。发布物是一个浏览器应用:写实 3D 地球之上,实时叠加航班、船舶、卫星、地震、交通与公共摄像头——技术栈完全无框架,只有原生 JavaScript、CesiumJS 与 Vite,源码以 MIT 发布。
这个项目最独特的选择是对数据质量诚实。客户端刻意把航班渲染在落后一个轮询间隔的位置,以便平滑插值;没有实时数据源的视图全部打标签而不是造假——无密钥交通标注为仿真,相机位姿在标定前标注为估计,火箭上升段回放标记 `RECONSTRUCTED ESTIMATE`。每个图层都公开来源与新鲜度状态:partial、delayed、simulated、unavailable。
底层是一个安全姿态异常清晰的本地优先客户端:`vite.config.js` 中的 Vite 中间件代理所有需要私密凭据的请求,浏览器只拿临时令牌,永远拿不到长效密钥;每个数据源是 `src/data/<layer>.js` 下的自包含模块;`docs/CURRENT-STATE.md` 被维护为权威运行时参考。
需要警惕之处同样写得明白:MIT 只覆盖源码。内置的 TeleGeography 海缆数据为 CC BY-NC-SA 3.0、禁止商用;OSM 提取的数据中心与大坝为 ODbL 1.0;Google Maps、OpenSky、adsb.lol、AISStream、CelesTrak、USGS、OSM Overpass、奥斯汀市、GBFS 等实时源在运行时按各自条款抓取、用你自己的凭据。本周期 1984 星、排名第 3,说明这种取舍正是大量用户想要的。
为什么现在变热
- README 直接把它定位为 500 万播放系列的开源化——走红的那套界面如今是可审查的代码,这种发布形态本身少见。
- 电影级的间谍卫星界面(FLIR/热成像、NVG、CRT 换肤、军用 HUD、跟随航班的座舱视角)叠加的是真实遥测:航班应答机、船舶信标、轨道根数、地震仪与奥斯汀公共摄像头。
- 建模或降级的视图全部打标签而非造假:`RECONSTRUCTED ESTIMATE` 的火箭回放、仿真的无密钥交通、逐图层的 partial/delayed/unavailable 状态。
- 3D 机库会在你逼近时把联系人符号换成分级模型——787、ATR-72、Citation、Bell 206、MQ-9——把让系列走红的演示镜头变成了代码。
- MIT 内核加上逐数据集的许可说明让这个仓库可以被放心转发;许可边界是写出来的,不是埋起来的。
解决什么问题
- 公开信号很多却散落在无数浏览器标签里——README 自己的表述是:瓶颈不在数据,而在界面。
- 好看的地球演示通常数据是假的,真实的数据看板通常长得像看板;这个项目试图同时做到真实与电影感。
- 实时数据源需要凭据,而粗糙的浏览器应用会把长效 API 密钥泄露到客户端。
- 内置地理数据常常把非 MIT 条款悄悄带进"MIT 许可"的仓库;这里每个数据集的条款都写在 LICENSE 与 DATA_SOURCES.md 里。
工作原理
- `vite.config.js` 里的 Vite 中间件代理所有含密钥的请求:浏览器永远看不到 `OPENAI_API_KEY`、`AISSTREAM_API_KEY` 或 OpenSky OAuth 凭据——只有如 `/api/realtime/token` 签发的临时会话令牌。
- 每个数据源是 `src/data/<layer>.js` 下实现 `init/enable/disable/update/destroy/getStats`(可选 `getDetectableObjects`)的自包含模块,图层可独立增删。
- CesiumJS 在原生 JS 中渲染 Google 写实 3D Tiles;面板、HUD 与控制门面在 `src/ui.js`,与图层逻辑严格分离。
- 航班联系人渲染在落后一个轮询间隔的位置,使客户端插值平滑而非跳变。
- 每个图层公开自己的来源与新鲜度状态(partial、delayed、simulated、unavailable),建模体验带明确标签。
- 语音工具在服务端声明为 `GEV_REALTIME_TOOLS`,在客户端 `src/voice/gevActions.js` 执行,响应只确认真正发生的动作。
产品演示与界面预览




上手路径:一段命令从克隆到地球
`package.json` 强制 Node.js 24.14.x 或 26.x。CONTRIBUTING 给出的标准路径:`git clone https://github.com/bilawalsidhu/gods-eye-view.git`、`cd gods-eye-view`、`nvm install 24.14.0`、`nvm use 24.14.0`、`npm install`,然后 `./scripts/dev-fresh.sh`——或 `GOOGLE_MAPS_API_KEY="…" npm run dev`。
你只需要一个启用了 Map Tiles API 的 Google Maps 密钥;多数数据图层无需其他账号。macOS 上启动器会从 Keychain 读取密钥;其他平台可用环境变量或从 `.env.example` 复制的 `.env`。应用跑在 `http://localhost:4173`。提交 PR 前,`npm run build`、`npm test`、`npm run test:track`(需 dev server 在线)三者必须全绿。
架构解读:无框架,每个数据源一个模块
- 无框架:原生 JavaScript + CesiumJS + Vite。
- UI 在 `src/ui.js`(面板、HUD、样式、控制门面);图层逻辑在 `src/data/<layer>.js`,刻意分离。
- 每个图层模块实现 `init/enable/disable/update/destroy/getStats`,可选 `getDetectableObjects`;新增数据源以现有图层为模板。
- 语音工具服务端声明(`vite.config.js` 中的 `GEV_REALTIME_TOOLS`),客户端在 `src/voice/gevActions.js` 执行。
- 视觉风格是 `src/styles/` 下的 GLSL 后处理着色器:CRT、NVG、FLIR/热成像、Noir、Snow。
- `docs/CURRENT-STATE.md` 是权威运行时参考;改动运行时行为的 PR 必须同步更新它。
集成面:三个服务端密钥,两个客户端密钥
- `OPENAI_API_KEY`——仅服务端;浏览器从 `/api/realtime/token` 获取临时 Realtime 会话令牌。
- `AISSTREAM_API_KEY`——仅服务端;服务端持有 AIS websocket,浏览器轮询同源 `/api/ais-live` 缓存。
- OpenSky OAuth(`OPENSKY_CLIENT_ID/SECRET`)——仅服务端;令牌在 `/api/opensky` 之后铸造并刷新。
- Google Maps API 密钥——设计上就在客户端(加载写实 3D Tiles),必须限制 HTTP referrer 并限定 Map Tiles API。
- `CESIUM_ION_TOKEN`——可选、客户端,仅用于 Bing 影像底图;托管部署用带 URL 限制的公开 `assets:read` 令牌。
- 可选的 FIRMS 密钥:按 2026-08-24 更新日志,缺少 FIRMS 密钥只显示 `KEY REQUIRED`,不再让整个 Environmental 任务失败——地震照常加载。
维护风险:节奏极快,记录纪律严格
更新日志仅在 2026-08-18 至 08-24 之间就记了三个未发布块:四源 Map Source 托盘、分享链接 v2 状态、AIS 喂料看门狗、语音成本控制、渲染治理器、L9 发布候选矩阵,以及确定性的首跑/地图源/楼层/跟踪回归测试装置。想基于它开发,先钉住某个 commit。
补偿控制是流程化的:PR 必须让 `npm run build`、`npm test`、`npm run test:track` 全绿;运行时行为变更必须在同一 PR 更新 `docs/CURRENT-STATE.md` 与 `CHANGELOG.md`;新数据源必须在 DATA_SOURCES.md 写明许可与署名。残余风险是单人维护者在如此快节奏下的巴士系数。
你实际分发的许可:MIT 代码 + 混合数据
- 源代码:MIT(版权 2026 Bilawal Sidhu)。
- `src/data/local_data/telegeography_submarine_cables/`:CC BY-NC-SA 3.0——商用前必须删除这些文件或向 TeleGeography 取得商业许可。
- 数据中心与大坝(OSM / Open Infrastructure Map 提取):ODbL 1.0——数据需署名与相同方式共享;2026-08-24 更新日志注明内置快照已剔除联系人向字段。
- NASA FIRMS 活火快照:CC0 / 美国公共领域。
- 实时源——Google Maps、OpenSky、adsb.lol、AISStream、CelesTrak、USGS、OSM Overpass、奥斯汀市、GBFS——运行时按各自条款抓取;部分限制商用并要求你自己的凭据。
- `public/models/` 下的 3D 模型各有自己的许可;逐文件的作者、来源与署名见 `public/models/README.md`。
谁适合关注
适合关注
- 想把航班、船舶、地震、火灾与摄像头装进一个可审查界面的 OSINT 实践者
- 想基于干净的"一个数据源一个模块"架构做扩展的地理空间开发者
- 需要用带置信度标签的实时公开数据做演示的教育者与创作者
- 想要一套 Vite 服务端代理密钥完整参考实现的开发者
可以先跳过
- 加固的生产级情报服务——SECURITY.md 明确该客户端面向探索、演示与学习,而非硬化生产服务
- 不愿删除 TeleGeography 海缆数据集(CC BY-NC-SA 3.0)或另行取得授权的商业产品
- 离线或物理隔离部署:数据源全部在运行时按服务商条款实时抓取
- 不愿意创建、限定并收紧 Google Maps API 密钥的人
风险与注意事项
代码为 MIT,生产依赖审计无已知公告漏洞,但运行时依赖外部 API 的条款、配额与计费,且内置数据集并非 MIT。
- Google Maps 密钥是必需的;SECURITY.md 警告公开部署中的未受限密钥可能被滥用并计费到你的账户。
- `src/data/local_data/telegeography_submarine_cables/` 为 CC BY-NC-SA 3.0,商用需删除文件或向 TeleGeography 取得许可。
- Google Maps、OpenSky 等实时源限制商用,并要求你自己的凭据。
- 更新日志在一周内(2026-08-18 至 08-24)出现多个未发布块;二次开发前应钉住某个 commit。
- 所有含密钥的凭据都留在服务端 Vite 代理之后;浏览器只拿临时令牌——如经 `/api/realtime/token` 的 OpenAI Realtime 会话与 `/api/ais-live` 的 AIS 缓存。
- 设计上只有两个密钥进入客户端——Google Maps 与可选的 Cesium ion 令牌——SECURITY.md 要求两者都做限制(HTTP referrer + Map Tiles API 限定;`assets:read` 加 URL 限制)。
- CCTV 帧代理只抓取服务端注册的摄像头/帧 URL,客户端无法把服务器变成开放中继(SSRF 缓解)。
- 电台代理只连白名单内的 Radio Browser 主机,拒绝重定向、拒绝解析到回环/私网/链路本地/元数据地址的结果,逐连接固定 TLS,且从不代理、缓存、录制或再分发音频。
- `.env` 被 gitignore;仓库只跟踪 `.env.example` 占位符;macOS 上启动器从 Keychain 读取密钥。
- 漏洞通过 GitHub 私密安全公告报告,不开公开 issue。
- 按 2026-08-24 更新日志,生产环境的传递依赖已解析到打过补丁的 DOMPurify 与 protobufjs 版本,生产依赖审计无已知公告漏洞。
替代方案比较
| 方案 | 适用场景 | 代价 |
|---|---|---|
CesiumJS | 你只想要底层 3D 地球引擎,自己从零搭建数据图层 | 开源引擎;可选的 Cesium ion 内容单独计费 |
Leaflet | 轻量 2D 切片地图已够用,追求最小依赖足迹 | 免费开源库 |
OpenSphere | 需要地理空间情报领域成熟的态势感知 Web 客户端 | 开源 |
Google Earth | 想要零配置、免接线的托管写实影像 | 消费端免费;商用另有条款 |
这个趋势说明了什么
发布一个城市摄像头包
CONTRIBUTING 指定奥斯汀为参考 CCTV 源,并称城市包是最好的首贡献通道:一份带坐标、署名与服务端注册帧 URL 的公开摄像头目录。
为你的城市整理公开摄像头目录,把每个帧 URL 在服务端注册(代理绝不抓取客户端提供的 URL),并按 PR 规则在 DATA_SOURCES.md 记录许可与署名。
用一个文件新增数据图层
每个数据源就是 `src/data/<layer>.js` 里实现六方法接口的单模块,以现有图层为模板是文档写明的路径。
复制现有图层模块,保持 `npm run build`、`npm test`、`npm run test:track` 全绿,同步更新 `docs/CURRENT-STATE.md` 与 `CHANGELOG.md`,并在 DATA_SOURCES.md 写明来源许可。
商业分支需要的是数据审计,不是代码审计
MIT 只覆盖源码。海缆数据集为非商用 CC BY-NC-SA 3.0,OSM 提取为 ODbL 1.0,实时源按各自条款要求你的凭据。
任何商业部署前,删除 `src/data/local_data/telegeography_submarine_cables/` 或向 TeleGeography 取得许可,核对数据中心/大坝提取的 ODbL 署名,并确认 Google Maps 与 OpenSky 对你用途的条款。
RepoDaily 判断
God's Eye View 是少见的"把真引擎开源"的爆款演示:原生 JS + Cesium 承载真实公开信号、诚实的状态标注、加固过的代理,以及写清楚的许可边界。中等风险全部来自数据侧——服务商条款、必需的 Google Maps 密钥、非 MIT 的内置数据集——而不是代码本身。