---
name: "weather-forecast"
description: "获取任意城市当前天气及未来3天预报。当用户询问天气、气温、下雨、空气质量等气象信息时使用此技能。支持中文和英文城市名。"
---

# 天气预报 Skill

此技能提供全球任意城市的当前天气及未来3天预报查询功能。

## 触发词

当用户提出以下类型的问题时，应使用此技能：

**中文触发词：**
- "XX天气怎么样"
- "XX今天天气"
- "XX未来几天天气"
- "帮我查一下XX的天气"
- "XX下雨吗"
- "XX气温多少度"
- "深圳天气" / "北京天气" 等任意城市

**英文触发词：**
- "weather in XX"
- "what's the weather in XX"
- "forecast for XX"

## 执行逻辑

### 步骤1：识别城市名称

从用户输入中提取城市名称。常见模式：
- 直接提及城市："深圳天气" → 城市：深圳
- 问题中包含城市："北京今天下雨吗" → 城市：北京
- 未指定城市：使用默认城市（深圳）

**默认城市：** 深圳

### 步骤2：调用天气 API

使用 `wttr.in` 免费天气服务，无需 API Key。

**API 端点：**
```
https://wttr.in/{城市}?format=j1&lang=zh
```

**示例请求：**
```bash
curl "https://wttr.in/深圳?format=j1&lang=zh"
```

**Python 调用方式（推荐）：**
```python
import requests

city = "深圳"
url = f"https://wttr.in/{city}?format=j1&lang=zh"
response = requests.get(url)
data = response.json()
```

### 步骤3：解析天气数据

API 返回 JSON 格式，关键字段：

**当前天气（current_condition）：**
- `temp_C`：当前气温（摄氏度）
- `FeelsLikeC`：体感温度
- `humidity`：湿度（%）
- `windspeedKmph`：风速（公里/小时）
- `winddir16Point`：风向
- `weatherDesc[0].value`：天气描述（晴、阴、雨等）
- `uvIndex`：紫外线指数
- `visibility`：能见度（公里）

**未来预报（weather）：**
数组，包含今天及未来2天，每天有：
- `date`：日期
- `maxtempC` / `mintempC`：最高/最低气温
- `hourly`：每小时详细预报
- `hourly[0].weatherDesc[0].value`：天气描述

### 步骤4：格式化输出

输出应简洁、易读，包含：

1. **当前天气摘要**（2-3 句话）
2. **详细数据表格**（气温、体感、湿度、风向风速、紫外线）
3. **未来3天预报**（日期、天气、温度范围）
4. **生活建议**（根据天气给出，如带伞、防晒等）

**输出模板：**

```
📍 {城市} 天气预报

【当前天气】
{天气描述}，气温 {temp_C}°C，体感 {feels_like_C}°C
湿度 {humidity}%，{风向}风 {风速} km/h

【未来预报】
{date1}：{天气}，{min_temp} ~ {max_temp}°C
{date2}：{天气}，{min_temp} ~ {max_temp}°C
{date3}：{天气}，{min_temp} ~ {max_temp}°C

💡 温馨提示：{根据天气给出的建议}
```

## 使用 scripts/weather.py

执行 `scripts/weather.py` 脚本获取天气数据：

```bash
python scripts/weather.py [城市名称]
```

**示例：**
```bash
python scripts/weather.py 深圳
python scripts/weather.py Beijing
```

如果不提供城市参数，默认查询深圳天气。

## 注意事项

1. **城市名称支持：**
   - 中文城市名（深圳、北京、上海等）
   - 英文城市名（Shenzhen、Beijing、Shanghai等）
   - 拼音（Shenzhen 等同 Shenzhen）

2. **网络错误处理：**
   如果 wttr.in 访问失败，提示用户检查网络连接，建议稍后重试。

3. **城市不存在处理：**
   如果返回错误，提示用户确认城市名称是否正确，建议尝试使用英文城市名。

4. **语言设置：**
   - 默认使用 `lang=zh` 获取中文天气描述
   - 如果用户使用英文提问，可改为 `lang=en`

## 示例对话

**用户：** "深圳今天天气怎么样？"

**执行：**
1. 识别城市：深圳
2. 调用 API 获取天气数据
3. 格式化输出当前天气及未来预报

**用户：** "北京未来三天会下雨吗？"

**执行：**
1. 识别城市：北京
2. 获取未来3天预报
3. 重点检查 hourly 中是否有降雨描述
4. 输出降雨概率和具体时段

**用户：** "天气"

**执行：**
1. 未识别到城市，使用默认城市（深圳）
2. 查询深圳天气并输出
3. 提示用户可指定其他城市
