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.md、references/*.yaml 或输出内容中硬编码。
必须依赖以下约束:
- 所有 HTTP 请求必须调用
clawhive_api_tool clawhive_api_tool当前只支持GET- 当前 Skill 只允许调用
GET /v3/weather/weatherInfo
资产与接口定义见:
references/api-assets.yamlreferences/weather-query.yaml
最高优先级规则
所有请求都必须严格遵守以下工具与参数规则:
- 若缺少环境变量
API_GATEWAY_BASE_URL,必须直接提示用户“API_GATEWAY_BASE_URL 环境变量缺失”,并立即退出调用流程 - 所有 HTTP 请求必须调用
clawhive_api_tool - 禁止使用任何直连 HTTP 能力,包括但不限于内建
fetch、curl、其他通用 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-scope、x-asset-tenantid、x-asset-version,其值必须与references/api-assets.yaml中当前资产定义一致 - 查询参数只允许透传文档声明的
city city未提供时可以不传;不得传null、空数组、空对象
Tool 调用 Demo
clawhive_api_tool 的入参必须是对象,且至少包含 url。其中:
url必须是字符串headers必须是对象,key 为 header 名称,value 只能是string、number或boolean- 若传
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不能省略
执行步骤
查询天气
- 先检查环境变量
API_GATEWAY_BASE_URL是否存在 - 若不存在,直接按【输出格式 - 环境变量缺失】提示用户
API_GATEWAY_BASE_URL 环境变量缺失,并立即退出调用流程 - 确认用户是否提供
city - 若用户给出城市名称而不是城市代码,先要求用户补充高德行政区划
adcode;不得自行猜测代码 - 调用
clawhive_api_tool url使用$API_GATEWAY_BASE_URL/v3/weather/weatherInfo- 严格遵守【最高优先级规则】设置请求头
- 若用户提供了
city,则把它追加到url查询串中;若未提供则直接请求基础 URL - 返回 HTTP 200 且响应中存在
lives[0]:按【输出格式 - 实时天气】反馈 - 返回 HTTP 200 但没有
lives[0]:按【输出格式 - 原始结果摘要】反馈 - 返回 4xx:直接输出接口返回的错误信息,不重试
- 返回 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-queryAPI_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 次