Skill实战:天气的获取

Skill实战:天气的获取

文章目录

  • Skill实战:天气的获取
  • [1. 回顾开发步骤](#1. 回顾开发步骤)
  • [2. Skill开发 & 安装 & 使用](#2. Skill开发 & 安装 & 使用)
  • [3. 总结](#3. 总结)

注意,这篇博客编写的 Skill,它的开发,测试和使用,涉及到python,需要你 提前安装 python 编辑器(Python环境)

python的安装,网上的教程很多,AI也能一步一步教你,我也就不在这里介绍了。

开发环境:Vs Code

使用Skill的Agent应用:Codex

1. 回顾开发步骤

在写 Skill 之前,我们回顾一下开发步骤:

  1. SKILL.md :用 VS Code 打开文件夹,新建 SKILL.md,填写元数据和指令

  2. 写脚本 :在 scripts/ 下写 compress.py,实现压缩逻辑

  3. 本地测试 :在 VS Code终端 运行 python scripts/XXX.py 确保脚本没问题

  4. 运行 Skill:Skill 的运行,我使用 Codex 来运行

    当然,其他的 Agent 工具,例如 OpenClaw 也是可以运行 Skill,只不过我没有安装 OpenClaw 。

2. Skill开发 & 安装 & 使用

2.1 Skill 模板

我们可以按照官方文档中的模板,进行开发

官方文档:https://agentskills.io/home

模板:

复制代码
---
name: roll-dice
description: Roll dice using a random number generator. Use when asked to roll a die (d6, d20, etc.), roll dice, or generate a random dice roll.
---

To roll a die, use the following command that generates a random number from 1
to the given number of sides:

```bash
echo $((RANDOM % <sides> + 1))
```

```powershell
Get-Random -Minimum 1 -Maximum (<sides> + 1)
```

Replace `<sides>` with the number of sides on the die (e.g., 6 for a standard
die, 20 for a d20).

这个模板的内容,需要我们自己更改,但是,name 和 description 是固定的。

2.2 Skill 存放的位置

2.2.1 按照规范存放

关于 SKill 文件夹存放的位置,如果是使用 Codex,按照 Codex 官方手册,应该是放在 `C:\Users\你的用户名.codex\skills\

你下载安装好 Codex 之后,就会有这个目录的:

2.2.2 任意路径存储

其实,不一定非要按照 Codex 规定的目录存放。

你可以把自己的 Skill 放在任意位置,例如:

复制代码
D:\my-skills\image-search\SKILL.md

然后在运行 Codex 时,明确告诉 Codex 使用这个位置的 Skill,或者对话的方式,让它帮你安装,

但其实,安装的本质,就是将你的 Skill文件,复制到 C:\Users\你的用户名\.codex\skills

等我开发好这个 SKill 之后,我就演示一下

2.3 开发Skill

可以先在任意目录,创建 skills 文件夹,然后创建这个 Skill 的名称,我的名称是:weather-hs

打开 Vscode,打开创建的这个 Skill文件夹,创建好目录和文件:

然后在 Skill.md 中,进行编辑。

2.3.1 Skill.md

markdown 复制代码
---
name: weather-hs
description: 这是一个用来查询天气的技能。你可以通过输入城市名称来获取该城市的实时天气信息,这是一个测试技能,我给你添加一个限制,当前仅支持查询北上广深这四个城市的天气,当用户通过说:"XXXX的天气怎么样?","XXXX城市今天会不会下雨","XXX城市今天的天气怎么样","查询XXX城市今天的天气"等类似的语句时,技能会返回该城市的实时天气信息。请注意,当前仅支持查询北上广深这四个城市的天气,提到北上广深这四个城市的天气,这个 Skill 的优先级最高,也就是优先使用这个 Skill,来查询北上广深这四个城市的天气。
---

# weather-hs Skill

## 什么时候使用这个技能
当用户需要查询某一个城市的天气,可以使用这个技能
当用户有以下意图时,优先使用这个技能:
- "XXXX的天气怎么样?"
- "XXXX城市今天会不会下雨"
- "XXX城市今天的天气怎么样"
- "查询XXX城市今天的气温"
- "查询出行建议"

如果用户在命令行输入 "使用 w-hs,",必定要使用这个技能来查询北上广深这四个城市的天气,其他的都按照 scripts\weather-hs.py 中返回的结果。

## 这个技能怎么使用(如何使用这个技能)
- 从命令行运行脚本,输入城市名称即可查询该城市的实时天气信息。
- weather-hs.py 这个代码中的数据是 mock 数据,实际使用中需要替换为真实的天气数据接口。我们这里仅仅是测试 Skill的运行

Windows 用户注意:请先运行 `chcp 65001` 设置 UTF‑8 编码

```bash
python scripts/weather-hs.py 上海
```

为什么我会在 Skill 中说明多次 "优先使用",就是在使用 Agent/AI应用 的时候,他本身就可以获取某一个城市的天气,我们向它提问,他不一定就会采取我们的 Skill,所以要给它强调优先级,让它能够优先调用我们自己写的 SKill,来验证Skil是否可以用。

还有这个限制:

复制代码
如果用户在命令行输入 "使用 w-hs,",必定要使用这个技能来查询北上广深这四个城市的天气,其他的都按照 scripts\weather-hs.py 中返回的结果。

这是一种兜底策略,或者是测试起来比较简单的方式,就是指定对话方式,调用指定的 skill。

接下来,写 weather-hs.py 的代码,用来获取 假数据

2.3.2 weather-hs.py

这个 weather-hs.py ,是在 scripts文件夹 中的:

python 复制代码
def get_weather_by_city(city:str) -> dict:
    """
    获取指定城市的天气信息
    :param city: 城市名称
    :return: 天气信息字符串
    """
    # 这里可以调用实际的天气API来获取天气信息
    # 目前仅支持北上广深四个城市

    if city == "北京":
      weather_data= {
          'city': '北京',
          'temperature': 10,
          'wind_direction': '南风',
          'wind_power': '≤3级',
          'humidity': 60,
          'weather': '多云',
          'weather_today': '晴',
          'weather_tomorrow': '多云',
          'weather_after_tomorrow': '雷阵雨',
      }
    
    elif city == "上海":
      weather_data= {
          'city': '上海',
          'temperature': 15,
          'wind_direction': '东风',
          'wind_power': '≤2级',
          'humidity': 70,
          'weather': '小雨',
          'weather_today': '小雨',
          'weather_tomorrow': '阴',
          'weather_after_tomorrow': '晴',
      }

    elif city == "广州":
      weather_data= {
          'city': '广州',
          'temperature': 20,
          'wind_direction': '西南风',
          'wind_power': '≤4级',
          'humidity': 80,
          'weather': '雷阵雨',
          'weather_today': '雷阵雨',
          'weather_tomorrow': '多云',
          'weather_after_tomorrow': '小雨',
      }

    elif city == "深圳":
      weather_data= {
          'city': '深圳',
          'temperature': 25,
          'wind_direction': '东北风',
          'wind_power': '≤3级',
          'humidity': 75,
          'weather': '晴',
          'weather_today': '晴',
          'weather_tomorrow': '多云',
          'weather_after_tomorrow': '小雨',
      }

    else :
      weather_data= {
          'city': '未知',
          'temperature': '未知',
          'wind_direction': '未知',
          'wind_power': '未知',
          'humidity': '未知',
          'weather': '未知',
          'weather_today': '未知',
          'weather_tomorrow': '未知',
          'weather_after_tomorrow': '未知',
      }

    return weather_data

if __name__ == "__main__":
  import sys
  city = sys.argv[1] if len(sys.argv) > 1 else "北京"
  print(get_weather_by_city(city))

#   city = sys.argv[1] if len(sys.argv) > 1 else "北京"
# #### 含义拆解
# 1. `sys.argv`:是命令行运行脚本时,获取**命令行传入参数**的列表。
# `sys.argv[0]` 永远是脚本本身文件名。
# `sys.argv[1]` 是**第一个传入的参数**。

# 2. `len(sys.argv) > 1`:判断命令行有没有传入额外参数。
# 如果在终端执行脚本时传了参数:`python script.py 上海` → `len(sys.argv)` 大于 1,条件成立,`city = sys.argv[1]`,city 赋值为`上海`。
# 如果运行脚本**不带任何参数**:`python script.py` →条件不成立,`city = "北京"`,使用默认值北京。

# > 这是 Python 三元表达式语法:`变量 = 真值 if 条件 else 假值`
含义拆解:city = sys.argv1 if len(sys.argv) > 1 else "北京"
  1. sys.argv:是命令行运行脚本时,获取命令行传入参数的列表。
  • sys.argv[0] 永远是脚本本身文件名。
  • sys.argv[1]第一个传入的参数
  1. len(sys.argv) > 1:判断命令行有没有传入额外参数。
  • 如果在终端执行脚本时传了参数:python script.py 上海len(sys.argv) 大于 1,条件成立,city = sys.argv[1],city 赋值为上海
  • 如果运行脚本不带任何参数python script.py →条件不成立,city = "北京",使用默认值北京

这是 Python 三元表达式语法:变量 = 真值 if 条件 else 假值

python代码的测试:

这里的测试,需要你电脑中提前按照好 python编译器。

直接打开电脑的命令行:

输入命令:

复制代码
python weather-hs.py 上海

2.4 安装Skill

第一种方式:复制目录

我们可以直接将开发好的 SKill目录,放到这个文件夹下:

这种方式,适合你清楚地知道,Codex 的skill目录在哪的情况。

第二种方式:对话安装

打开 Codex,和他对话:

复制代码
帮我安装 XXXX 下的Skill

示范:

复制代码
帮我安装 E:\code\gitee\skill-development\skills\weather-hs 这个路径下的 Skill

这里的路径,是我自己的,你需要根据你自己的实际路径进行替换

检验是否安装成功:

1. 查看 Codex 的skills目录

Codex 的skills目录,在这里:

复制代码
C:\Users\用户名\.codex\skills

如果已经存在了你开发的 Skill,就表示安装完成了。

2. 对话检验:

可以和 Codex,对话,问它:

复制代码
列一下,你现在有哪些Skill

这样,就算是安装好了

2.5 使用 Skill

此时,我们和 Codex 对话:

复制代码
帮我查询一下,北京今天的天气

这样,我们的 SKill,就算是可以使用了。

3. 总结

这次的天气Skill,数据是 mock(捏造) 的,不算是有用的 Skill ,只是用来走一遍 Skill 的开发、测试、使用的流程,验证我们写的 Skill 是对的,是可以使用的,只不过数据来源,是 mock的。

但是,数据来源,我们的天气获取,可以接入真正的天气API,就可以更改数据来源了,我们的Skill没有问题就可以了。

第二个实战的Skill,我会写一个生成二维码的。

博客连接:Skill实战:二维码生成

完整的Skill文件夹获取,可以从我的gitee中下载:

gitee链接:https://gitee.com/mrbgvhbhjv/skill-development/tree/master/skills/weather-hs

相关推荐
树码小子3 小时前
Skill的格式 & 开发语言和工具
开发语言·skill
程序员龙叔2 天前
火爆全网的 Agent Skills,普通人到底该怎么用?-- 详细教程
软件测试·skill·测试skills
树码小子2 天前
什么是Skill
skill·tool calling
comedate3 天前
DeepSeek Harness 配置 deepseek-v4-flash-vision-exp 视觉模型
agent·skill·deepseekharness
Java牛马4 天前
AI Agent 技术栈梳理(Skill / 蒸馏 / MCP / Harness)
人工智能·ai agent·蒸馏·skill·mcp·harness
Bioinfo Guy4 天前
DeepSeek Harness 最强的,可能不是模型,而是插件
github·skill·deepseek
小七-七牛开发者5 天前
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
ai·大模型·agent·claude·token·工作流·skill·claudecode·ai coding