xiaosusearch

SKILL.md

XiaoSu Search

概述

用于调用小宿搜索资产,按关键词查询时事新闻搜索结果。所有 HTTP 请求必须通过 clawhive_api_tool 发起。

BaseURL:$API_GATEWAY_BASE_URL

必须依赖以下环境变量:

  • API_GATEWAY_BASE_URL:小宿搜索接口 BaseURL

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

资产与接口定义见:

  • references/api-assets.yaml
  • references/xiaosusearch.yaml

最高优先级规则

  • 若缺少环境变量 API_GATEWAY_BASE_URL,必须直接提示用户“API_GATEWAY_BASE_URL 环境变量缺失”,并立即退出调用流程
  • 所有 HTTP 请求必须调用 clawhive_api_tool
  • 禁止使用任何直连 HTTP 能力,包括但不限于内建 fetchcurl、其他通用 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-scopex-asset-tenantidx-asset-version,其值必须与 references/api-assets.yaml 中当前资产定义一致
  • 查询参数只允许透传文档声明的 qcountmainTextenableContent
  • q 未提供时,必须先要求用户补充搜索关键词;不得发起空搜索
  • countmainTextenableContent 未提供时可以不传;不得传 null、空数组、空对象

阶段一:前置校验

目标:在发起请求前确认环境、参数和调用边界全部满足要求。

执行要求:

  1. 检查环境变量 API_GATEWAY_BASE_URL 是否存在
  2. 若不存在,直接按【输出格式 - 环境变量缺失】提示用户 API_GATEWAY_BASE_URL 环境变量缺失,并立即退出调用流程
  3. 确认本次调用目标是小宿搜索资产
  4. 确认只会调用 GET /search/jNklYnBXPBCuqlDC/smart
  5. 确认用户是否提供 q
  6. 若未提供搜索关键词,要求用户补充;不得自行猜测关键词
  7. 若用户提供了额外参数,只允许接受 countmainTextenableContent
  8. countmainTextenableContent 未提供,则直接忽略,不得补 null、空数组、空对象

阶段一结束条件:

  • API_GATEWAY_BASE_URL 存在
  • 已拿到合法的 q
  • 已确认请求路径和参数范围符合本 Skill 约束

阶段二:构造并发起请求

目标:严格按照资产网关规范构造 clawhive_api_tool 入参并发起请求。

执行要求:

  1. 所有 HTTP 请求必须调用 clawhive_api_tool
  2. clawhive_api_tool 入参必须是对象,且至少包含 url
  3. url 必须是 $API_GATEWAY_BASE_URL/search/jNklYnBXPBCuqlDC/smart
  4. 将用户提供的 qcountmainTextenableContent 直接追加到 url 查询串中
  5. 不得额外传 query 字段
  6. headers 必须是扁平对象,value 只能是 stringnumberboolean
  7. 请求头必须包含以下字段:
    • x-asset-scope
    • x-asset-id
    • x-asset-tenantid
    • x-asset-version
    • x-skill-name
  8. x-asset-idx-asset-scopex-asset-tenantidx-asset-version 必须从 references/api-assets.yaml 读取
  9. x-skill-name 固定为 xiaosusearch
  10. 禁止直连真实上游地址 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 不能省略

阶段三:处理响应并输出结果

目标:根据返回结果稳定输出成功摘要或错误信息。

执行要求:

  1. 返回 HTTP 200 且响应中存在 webPages.value:按【输出格式 - 搜索结果】反馈
  2. 返回 HTTP 200 但没有 webPages.value:按【输出格式 - 原始结果摘要】反馈
  3. 返回 4xx:直接输出接口返回的错误信息,不重试
  4. 返回 5xx 或请求超时:最多重试 3 次;若仍失败,再输出最后一次错误
  5. 输出摘要时,originalQuery 取自 queryContext.originalQuery
  6. 输出结果数时,取 webPages.value 的数组长度
  7. 标题列表优先取 webPages.value[*].name
  8. 最多展示前 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 固定为 xiaosusearch
  • API_GATEWAY_BASE_URL 必须从 openclaw.json 注入的环境变量读取,禁止在 Skill 中硬编码
  • 若缺少 API_GATEWAY_BASE_URL,必须直接提示 API_GATEWAY_BASE_URL 环境变量缺失,不得继续调用 clawhive_api_tool
  • 只允许调用 GET /search/jNklYnBXPBCuqlDC/smart
  • 只允许透传 qcountmainTextenableContent 参数
  • q 缺失时不得发起请求
  • 4xx 错误不重试;5xx 和超时最多重试 3 次
Installs
5
First Seen
Apr 18, 2026