用途:根据用户自然语言请求,查询全球任意地点的当前天气与预报,并在检测到出行意图时给出穿衣建议。
主要能力:使用两个免费 API——Nominatim(OpenStreetMap)做地理编码,Open-Meteo 提供天气数据。脚本 scripts/geocode.py 将地点字符串转为坐标,返回 display_name、lat、lon、importance 和 ambiguous 标志;若 ambiguous 为 true 会附带候选列表,需向用户确认。scripts/fetch_weather.py 按坐标取数,支持 --resolution current/hourly/daily、--timezone(默认 auto)、--past-days(0..92,仅用于历史天气)。预报固定请求 16 天。返回 JSON 含 meta、current、hourly、daily 等部分。
使用方式:先运行 python scripts/geocode.py "<location>" 获取坐标,再运行 python scripts/fetch_weather.py --lat <lat> --lon <lon> --resolution <current|hourly|daily>。无时间指定时默认当前天气加未来 24 小时逐小时;3 天以上范围用 daily,短窗口用 hourly。检测到 pack、wear、travel 等出行关键词时,读取 references/clothing_guide.md 并附穿衣建议。
适用场景:即时天气、周末或未来一周预报、特定日期风力等条件查询、出行打包建议、过去天气回顾。
限制:预报上限 16 天,超出需说明;历史数据最多 92 天。地点缺失或歧义需向用户追问。网络不可用时脚本返回错误信封(如 NETWORK_UNAVAILABLE),退出码 0 成功、1 输入错误、2 网络或上游 API 失败;沙箱中需开放外网或提升权限。极端天气阈值(高温≥40°C、低温≤-10°C、强风≥50 km/h、大雨≥20mm)会给出警告。