skills/skills.netease.im/weather-query-2

weather-query-2

SKILL.md

AMap Weather Query

概述

用于调用高德地图天气查询资产,按城市代码查询天气信息。所有 HTTP 请求必须通过 clawhive_api_tool 发起。

BaseURL:$API_GATEWAY_BASE_URL

必须依赖以下环境变量:

  • API_GATEWAY_BASE_URL:高德天气接口 BaseURL

上述环境变量来源于 openclaw.json 注入,Skill 只读取环境变量,不得在 SKILL.mdreferences/*.yaml 或输出内容中硬编码。

必须依赖以下约束:

  • 所有 HTTP 请求必须调用 clawhive_api_tool
  • clawhive_api_tool 当前只支持 GET
  • 当前 Skill 只允许调用 GET /v3/weather/weatherInfo

资产与接口定义见:

  • references/api-assets.yaml
  • references/weather-query.yaml

最高优先级规则

所有请求都必须严格遵守以下工具与参数规则:

  • 若缺少环境变量 API_GATEWAY_BASE_URL,必须直接提示用户“API_GATEWAY_BASE_URL 环境变量缺失”,并立即退出调用流程
  • 所有 HTTP 请求必须调用 clawhive_api_tool
  • 禁止使用任何直连 HTTP 能力,包括但不限于内建 fetchcurl、其他通用 HTTP tool、手写原始请求
  • url 必须使用 $API_GATEWAY_BASE_URL/v3/weather/weatherInfo 完整地址
  • 如果请求属于当前 skill 关联的资产 API,必须额外传入 x-asset-id
  • x-asset-id 的值必须从 references/api-assets.yaml 中读取,并在 assets 数组中按当前请求命中的 reference 查找对应资产的 id
  • 每个请求必须额外传入 x-skill-name: weather-query
  • 请求头中还必须带上 x-asset-scopex-asset-tenantidx-asset-version,其值必须与 references/api-assets.yaml 中当前资产定义一致
  • 查询参数只允许透传文档声明的 city
  • city 未提供时可以不传;不得传 null、空数组、空对象

Tool 调用 Demo

clawhive_api_tool 的入参必须是对象,且至少包含 url。其中:

  • url 必须是字符串
  • headers 必须是对象,key 为 header 名称,value 只能是 stringnumberboolean
  • 若传 city,必须直接体现在 url 查询串中;不要额外传 query 字段

正确示例:

{
  "url": "$API_GATEWAY_BASE_URL/v3/weather/weatherInfo",
  "headers": {
    "x-asset-scope": "official",
    "x-asset-id": "2595e5f8-0dd4-41c2-9a7b-db54005bd878",
    "x-asset-tenantid": "",
    "x-asset-version": "v1",
    "x-skill-name": "weather-query"
  }
}

如果使用环境变量拼接,应保证传入 tool 时的最终结构仍然等价于以下格式:

url = "$API_GATEWAY_BASE_URL/v3/weather/weatherInfo"
headers = {
  "x-asset-scope": "official",
  "x-asset-id": "2595e5f8-0dd4-41c2-9a7b-db54005bd878",
  "x-asset-tenantid": "",
  "x-asset-version": "v1",
  "x-skill-name": "weather-query"
}

如果用户提供 city=110000,则最终 url 应等价于:

$API_GATEWAY_BASE_URL/v3/weather/weatherInfo?city=110000

如果用户未提供 city,则传参应等价于:

{
  "url": "$API_GATEWAY_BASE_URL/v3/weather/weatherInfo",
  "headers": {
    "x-asset-scope": "official",
    "x-asset-id": "2595e5f8-0dd4-41c2-9a7b-db54005bd878",
    "x-asset-tenantid": "",
    "x-asset-version": "v1",
    "x-skill-name": "weather-query"
  }
}

错误示例:

{
  "url": "https://restapi.amap.com/v3/weather/weatherInfo?key=xxxx&city=110000",
  "headers": [
    { "key": "x-asset-id", "value": "2595e5f8-0dd4-41c2-9a7b-db54005bd878" }
  ]
}

上面的错误点:

  • 禁止手工把 key 拼进 URL
  • headers 不能传数组,只能传扁平对象
  • x-asset-id 不能省略

执行步骤

查询天气

  1. 先检查环境变量 API_GATEWAY_BASE_URL 是否存在
  2. 若不存在,直接按【输出格式 - 环境变量缺失】提示用户 API_GATEWAY_BASE_URL 环境变量缺失,并立即退出调用流程
  3. 确认用户是否提供 city
  4. 若用户给出城市名称而不是城市代码,先要求用户补充高德行政区划 adcode;不得自行猜测代码
  5. 调用 clawhive_api_tool
  6. url 使用 $API_GATEWAY_BASE_URL/v3/weather/weatherInfo
  7. 严格遵守【最高优先级规则】设置请求头
  8. 若用户提供了 city,则把它追加到 url 查询串中;若未提供则直接请求基础 URL
  9. 返回 HTTP 200 且响应中存在 lives[0]:按【输出格式 - 实时天气】反馈
  10. 返回 HTTP 200 但没有 lives[0]:按【输出格式 - 原始结果摘要】反馈
  11. 返回 4xx:直接输出接口返回的错误信息,不重试
  12. 返回 5xx 或请求超时:最多重试 3 次;若仍失败,再输出最后一次错误

输出格式

实时天气

天气查询成功
- 城市: {city}
- 天气: {weather}
- 温度: {temperature}
- 风向: {winddirection}
- 风力: {windpower}
- 湿度: {humidity}
- 发布时间: {reporttime}

原始结果摘要

天气查询成功
- status: {status}
- info: {info}
- count: {count}

查询失败

天气查询失败
- reason: {reason}

环境变量缺失

天气查询失败
- reason: API_GATEWAY_BASE_URL 环境变量缺失

注意事项

  • x-asset-id 必须从 references/api-assets.yaml 读取,禁止手工猜测
  • x-skill-name 固定为 weather-query
  • API_GATEWAY_BASE_URL 必须从 openclaw.json 注入的环境变量读取,禁止在 Skill 中硬编码
  • 若缺少 API_GATEWAY_BASE_URL,必须直接提示 API_GATEWAY_BASE_URL 环境变量缺失,不得继续调用 clawhive_api_tool
  • 只允许调用 GET /v3/weather/weatherInfo
  • 只允许透传 city 参数;未提供时不传
  • 4xx 错误不重试;5xx 和超时最多重试 3 次
Installs
2
First Seen
Apr 20, 2026