有人做了一个叫 NightSky 的开源项目,想让人对夜空产生兴趣,并在出门时有个可以寻找的目标。作者在说明里写了一句挺实在的话:还有什么比让人看到自己一直错过的东西,更能促使他们出门接触真实世界呢?
它的逻辑很简单:你不需要认识一百颗星星的名字,也不需要买望远镜。挑一个你感兴趣的星座,跟着指引走,花几分钟在天空里找它。
88个星座,每个都有故事和找法
NightSky 收录了 88 个星座。点开一个星图,你能读到它的故事、一段历史、怎么辨认它,以及附近还能看到什么。有些星座旁边标注了可以用双筒望远镜寻找的星系;有些则单纯因为形状或名字背后的故事值得一学。
项目作者的思路是让好奇心自己往前走一步:如果一个星座引起了你的注意,下一个问题自然就是——我怎么才能亲眼看到它?
这就是 Sky guide 存在的原因。设定你的位置和时间,Sky compass 会显示你地平线以上的星图。滚动的 Star Map 用来探索,指南针则给你指向真实天空的方向。
每个星座描述里都有一个「Plan to see it」按钮,点下去直接跳到观测计划器。你可以选择 10 分钟、15 分钟或 20 分钟的观测时长,并指定用肉眼、双筒望远镜还是天文望远镜。如果这个星座在当前位置和时间并不适合观测,应用会直接告诉你,而不是假装它能看到。
AI 只负责说人话,方向数据不交给模型
Gemma 模型负责把观测计划里的指令个性化。你可以把计划下载下来带出门。观测结束后,「My observations」标签页让你记录找到了什么、找到了一部分、还是打算改天再试。第一次没找到,仍然算你出门看了一眼。
技术实现上,交互式天空用 Three.js 和 WebGL 渲染,D3 Celestial 提供星座坐标和恒星数据,Astronomy Engine 负责天文计算——包括星座位置、方向,以及基于所选位置和时间的可见性。
开源模型通过 ollama 连接,根据计算出的目标和所选设备生成个性化观测指令。关键的一步是:生成的指令会与天文计算结果做校验,应用保留计算得出的方向和高度角,而不是让模型来提供这些数值。每个星座还有自己的寻找笔记,标注了具体的恒星和地标,帮用户辨认。
位置相关功能上,NightSky 用 Open-Meteo 做城市查询,用 SerpApi 找附近的观测点、天文活动和天文俱乐部。
模型可以换,数据留在本地
作者希望 AI 这部分是用户可以自己改的。Gemma 是开放权重模型,设置里允许你切换到自己的 Ollama 端点和已安装的模型。你不必被应用自带的连接或作者选的模型绑住。
如果用本地 Ollama 配置,模型请求可以留在你自己的机器上。观测笔记也留在浏览器里。无论用哪个模型,目标校验逻辑都一样,而且就算不用 AI,计算好的计划器照样能跑。
这个项目参加了 Hacktoberfest 开源 AI 挑战赛第一周,主题是「Touch Grass」。
他期待的反馈也很具体:一个平时路过夜空想都不会想的人,能认出其中一个星座。也许他会回来再找一个。也许他会拉上一个朋友一起找。
项目用 HTML、CSS、JavaScript、Canvas、WebGL 和 Three.js 构建,连接类功能跑在一个小型 Node 服务器上。代码托管在 GitHub 的 notlakshitha/NightSky 仓库。不分享位置也能浏览星座目录。
热门跟贴