这是一个参加 Hacktoberfest 开源 AI 挑战赛第一周"去摸草"主题的提交作品。

Chhaya(孟加拉语和印地语里意为"阴凉")是一个面向加尔各答的实时开源"阴凉优先"步行地图与群组徒步平台。它用公制 UTM 坐标计算真实的建筑阴影,以双路径"日照分钟数"的方式为你规划穿过阴凉的路线,支持选择俱乐部/家庭/步道三种模式、选择任意路径、加入5个徒步小组、在地图上查看并上传照片故事卡片,并且——作为核心功能——通过 ElevenLabs 语音简报实现免手操作,让你可以把手机揣进口袋,真正去摸草。

打开网易新闻 查看精彩图片

代码:Chhaya(ছায়া)——加尔各答阴凉感知导航地图与智能体

Hacktoberfest 开源 AI 挑战赛 2026 · 第一周主题:去摸草

Chhaya(孟加拉语和印地语意为"阴凉")让建筑阴影跟着加尔各答的太阳移动,把步行者引到阴凉里,而不是最短的那条路上。

在线演示:正在通过 Render 上线——见下方部署说明。

它是什么

在加尔各答的酷热中,同样长度的两段路,因为阴凉不同,体感完全不同。主流地图应用只针对距离或车辆速度做优化。

Chhaya 接受的是大白话请求,比如:

"下午3点左右送爷爷去诊所,他不能晒太多太阳。"

一个开放模型会解析出步行约束(起点、终点、出发时间、对日照的回避程度)。

加尔各答最短的路,几乎从来不是最凉的路

在一个闷热的周二下午,我试着在下午2点15分从加尔各答的米德尔顿路走到贝尔维尤诊所。谷歌地图说沿主干道11分钟。它没有告诉你的是:这11分钟里有9分钟都暴露在38摄氏度的直射阳光下,脚下是沥青,头顶没有树冠。到达时我浑身湿透、头晕眼花,还得眯着眼看刺眼的屏幕。

每张地图优化的都是米数或汽车速度。对一个在热带城市步行的人来说,唯一重要的指标是你站在太阳下多久。走到马路背阴的一侧、钻进老图书馆后面的小巷、赶上一块正午就消失的下午3点建筑阴影——这些差别决定了你是热到虚脱,还是能舒服地散个步。

所以我做了 Chhaya:一个阴凉优先的导航引擎 + AI 语音智能体 + 实时群组步道俱乐部平台,它计算实时的建筑阴影、规划避晒路线、协调徒步、投放地理锁定的故事卡片,并且全程用语音引导你——无需盯着屏幕。

上图:阴凉工作室——带斜线的建筑阴影,绿色实线 = 阴凉路段,红色虚线 = 日照路段,日晷时间滑块 6 AM–6 PM,实时日照徽章。

我做了什么——一个完整的户外平台,而不只是一个路由器

Chhaya 是4个应用,共用一套纸色调的地图外壳(顶部导航:议程与信息流 · 实时步道与仪表盘 LIVE · 阴凉工作室 ️ · 草点 ):

  • 阴凉工作室——太阳物理 + 双路径规划 + 选择路径的两张票
  • 俱乐部/实时步道仪表盘——带雷达、聊天、路线修复、方向指引的群组徒步
  • 社区徒步信息流——浏览/筛选/发布任意徒步活动,5条精选路线
  • 地图卡片 + 故事——查看卡片、上传照片卡片、地理锁定的解锁内容、二维码行程
  • ElevenLabs 语音——贯穿以上所有功能的免手操作简报引擎
  • AI 底座——Tinker 微调 + TabPFN 最佳时间窗口 + Tiger Data 氛围搜索 + Mastra 智能体 + Sentry 链路追踪

让我像真实用户一样带你走一遍。

1. 个人旅程工作室:选择你的路径、时间和取舍

每段步行都从这里开始。没有空白提示框——而是一张引导式的"规划你自己的阴凉旅程"卡片:

  • 起点/终点选择:爷爷的住所(米德尔顿路)→ 贝尔维尤诊所、Flurys 茶室 → 卡马克街商场、牛津书店 → 拉塞尔市场,以及在地图上任意点击,所选位置会吸附到最近的小巷。
  • 议程类型选择: 帮助/家庭(慢速、有阴凉、有长椅)· 徒步(群体结伴)· 自行出行(独自跋涉)——同一个引擎,三种预设,不同的步速、日照预算和休息点节奏。
  • 选择时间标签(实时看阴凉如何变化): 08:30 · 82% 遮阴 · ️ 10:30 · 70% · ☀️ 12:30 · 52% 正午警告 · 15:30 · 78% 建筑阴影 · 17:00 · 88% 日落微风。点一下标签,阴影和路线立刻重算。
  • 实时对比横幅:距离:948米 · 日照:2.8分钟 · 休息点:2张长椅,外加一句取舍说明——例如"在08:30,连续的榕树树冠为爷爷遮挡了5.7分钟的直射阳光。"
  • ▶ 开始我的旅程 → 创建一个真实行程(/api/plan → trip-XXXX),按姓名为你登记,并用这些确切的路线打开实时步道。

选择路径:阴凉 vs 最短的两张票

在路线面板的"路线"标签里,有两张可点击的票:

  • 阴凉路径——选择/已选 ✓(绿色实线):日照2.4分钟 · 步行14分钟(710米)· 74% 阴凉路段
  • 最短——直达(墨色虚线):日照8.8分钟 · 步行12分钟(620米)· 基准对照

选择会切换当前路线的样式,并改写继续按钮的说明文字:"沿米德尔顿路 → 贝尔维尤,15:00 走阴凉路径——实时步道将用这些确切的路线打开"对比"直达是一条暴露在阳光下的基准预览"。你永远不会走一条过时的路线——继续按钮会把你屏幕上显示的那条路线原样带入实时步道。

围绕它还有:日照预算仪表(从万寿菊色到朱红色指针,0 / 4.0 日照分钟)、逐路段的暴露清单(米德尔顿路——85米—— 阴凉实线/卡马克路口——40米——☀️ 日照虚线 + ✎ 社区校准标记)、出发时间扫描(每10分钟一次的日照暴露曲线、最佳出发时间戳、预算警告)、停靠护照(每到一站一张票,到达时盖章)、修复(排序后的重新集合票 + 可复制的群组提醒)、分享(行程单据 + 行程码 + 二维码)。

日晷滑块(6:00–18:00,30分钟一档,播放/暂停自动扫描,晷针阴影跟随)驱动 GET /shadows?time=HH:MM 并重算路线。正午你会收到诚实的提示:"中午12点太阳几乎在头顶约60度。阴影缩短到身高的0.56倍。要么10点前出发,要么2点半之后再说。"

2. 俱乐部模式 + 实时步道仪表盘:一起徒步,绝不丢下任何人

把顶部模式标签切到 俱乐部,或直接进入实时步道与仪表盘(LIVE)。这是群组徒步的操作系统:

群组切换器(选择任意徒步小组):

  • 公园街防晒智能步道俱乐部(5名步行者 · 74% 遮阴)
  • 爷爷的晨间诊所步行
  • 鲍巴拉克遗产美食

面板里还有雷达、聊天、路线修复和方向指引。社区徒步信息流可以浏览、筛选和发布任意徒步活动,内置5条精选路线。地图卡片支持上传照片故事卡片,以及地理锁定的解锁内容和二维码行程。

整个项目由4个应用组成,共用一套纸色调的地图外壳:议程与信息流、实时步道与仪表盘、阴凉工作室、草点。技术底座上,它用了 Tinker 微调、TabPFN 找最佳时间窗口、Tiger Data 做氛围搜索、Mastra 智能体,以及 Sentry 做链路追踪。

代码已经开源,演示站点正在通过 Render 上线。