xiaosusearch
SKILL.md
XiaoSu Search
概述
用于调用小宿搜索资产,按关键词查询时事新闻搜索结果。所有 HTTP 请求必须通过 clawhive_api_tool 发起。
BaseURL:$API_GATEWAY_BASE_URL
必须依赖以下环境变量:
API_GATEWAY_BASE_URL:小宿搜索接口 BaseURL
上述环境变量来源于 openclaw.json 注入,Skill 只读取环境变量,不得在 SKILL.md、references/*.yaml 或输出内容中硬编码。
资产与接口定义见:
references/api-assets.yamlreferences/xiaosusearch.yaml
最高优先级规则
- 若缺少环境变量
API_GATEWAY_BASE_URL,必须直接提示用户“API_GATEWAY_BASE_URL 环境变量缺失”,并立即退出调用流程 - 所有 HTTP 请求必须调用
clawhive_api_tool - 禁止使用任何直连 HTTP 能力,包括但不限于内建
fetch、curl、其他通用 HTTP tool、手写原始请求 clawhive_api_tool当前只支持GET- 当前 Skill 只允许调用
GET /search/jNklYnBXPBCuqlDC/smart url必须使用$API_GATEWAY_BASE_URL/search/jNklYnBXPBCuqlDC/smart完整地址- 如果请求属于当前 skill 关联的资产 API,必须额外传入
x-asset-id x-asset-id的值必须从references/api-assets.yaml中读取,并在assets数组中按当前请求命中的reference查找对应资产的id- 每个请求必须额外传入
x-skill-name: xiaosusearch - 请求头中还必须带上
x-asset-scope、x-asset-tenantid、x-asset-version,其值必须与references/api-assets.yaml中当前资产定义一致 - 查询参数只允许透传文档声明的
q、count、mainText、enableContent q未提供时,必须先要求用户补充搜索关键词;不得发起空搜索count、mainText、enableContent未提供时可以不传;不得传null、空数组、空对象
阶段一:前置校验
目标:在发起请求前确认环境、参数和调用边界全部满足要求。
执行要求:
- 检查环境变量
API_GATEWAY_BASE_URL是否存在 - 若不存在,直接按【输出格式 - 环境变量缺失】提示用户
API_GATEWAY_BASE_URL 环境变量缺失,并立即退出调用流程 - 确认本次调用目标是小宿搜索资产
- 确认只会调用
GET /search/jNklYnBXPBCuqlDC/smart - 确认用户是否提供
q - 若未提供搜索关键词,要求用户补充;不得自行猜测关键词
- 若用户提供了额外参数,只允许接受
count、mainText、enableContent - 若
count、mainText、enableContent未提供,则直接忽略,不得补null、空数组、空对象
阶段一结束条件:
API_GATEWAY_BASE_URL存在- 已拿到合法的
q - 已确认请求路径和参数范围符合本 Skill 约束
阶段二:构造并发起请求
目标:严格按照资产网关规范构造 clawhive_api_tool 入参并发起请求。
执行要求:
- 所有 HTTP 请求必须调用
clawhive_api_tool clawhive_api_tool入参必须是对象,且至少包含urlurl必须是$API_GATEWAY_BASE_URL/search/jNklYnBXPBCuqlDC/smart- 将用户提供的
q、count、mainText、enableContent直接追加到url查询串中 - 不得额外传
query字段 headers必须是扁平对象,value 只能是string、number或boolean- 请求头必须包含以下字段:
x-asset-scopex-asset-idx-asset-tenantidx-asset-versionx-skill-name
x-asset-id、x-asset-scope、x-asset-tenantid、x-asset-version必须从references/api-assets.yaml读取x-skill-name固定为xiaosusearch- 禁止直连真实上游地址
https://searchapi.xiaosuai.com
正确示例:
{
"url": "$API_GATEWAY_BASE_URL/search/jNklYnBXPBCuqlDC/smart?q=OpenAI&count=10&mainText=true&enableContent=true",
"headers": {
"x-asset-scope": "official",
"x-asset-id": "63cf2a36-c47f-404d-b9b7-b50af7594691",
"x-asset-tenantid": "",
"x-asset-version": "v1",
"x-skill-name": "xiaosusearch"
}
}
如果只提供必填关键词,则最终 url 应等价于:
$API_GATEWAY_BASE_URL/search/jNklYnBXPBCuqlDC/smart?q=OpenAI
错误示例:
{
"url": "https://searchapi.xiaosuai.com/search/jNklYnBXPBCuqlDC/smart?q=OpenAI",
"headers": [
{ "key": "x-asset-id", "value": "63cf2a36-c47f-404d-b9b7-b50af7594691" }
]
}
上面的错误点:
- 禁止直连真实上游地址
headers不能传数组,只能传扁平对象x-asset-id不能省略
阶段三:处理响应并输出结果
目标:根据返回结果稳定输出成功摘要或错误信息。
执行要求:
- 返回 HTTP 200 且响应中存在
webPages.value:按【输出格式 - 搜索结果】反馈 - 返回 HTTP 200 但没有
webPages.value:按【输出格式 - 原始结果摘要】反馈 - 返回 4xx:直接输出接口返回的错误信息,不重试
- 返回 5xx 或请求超时:最多重试 3 次;若仍失败,再输出最后一次错误
- 输出摘要时,
originalQuery取自queryContext.originalQuery - 输出结果数时,取
webPages.value的数组长度 - 标题列表优先取
webPages.value[*].name - 最多展示前 3 条结果;若不足 3 条,则按实际条数输出
输出格式
搜索结果
搜索成功
- 关键词: {originalQuery}
- 结果数: {resultCount}
- 前3条结果:
1. {title1}
2. {title2}
3. {title3}
如果返回结果少于 3 条,则按实际条数输出。
原始结果摘要
搜索成功
- 关键词: {originalQuery}
- 是否有网页结果: {hasWebPages}
搜索失败
搜索失败
- reason: {reason}
环境变量缺失
搜索失败
- reason: API_GATEWAY_BASE_URL 环境变量缺失
注意事项
x-asset-id必须从references/api-assets.yaml读取,禁止手工猜测x-skill-name固定为xiaosusearchAPI_GATEWAY_BASE_URL必须从openclaw.json注入的环境变量读取,禁止在 Skill 中硬编码- 若缺少
API_GATEWAY_BASE_URL,必须直接提示API_GATEWAY_BASE_URL 环境变量缺失,不得继续调用clawhive_api_tool - 只允许调用
GET /search/jNklYnBXPBCuqlDC/smart - 只允许透传
q、count、mainText、enableContent参数 q缺失时不得发起请求- 4xx 错误不重试;5xx 和超时最多重试 3 次