AggRoot
文档目录

网络工具

AggRoot 提供三个核心网络工具,覆盖搜索、抓取和 HTTP 请求,外加图片搜索和文件下载工具。


WebSearch — 搜索网页

使用 Bing 搜索引擎查询网络信息,基于 Playwright 后端实现。

参数

参数 类型 必填 默认值 说明
query string 搜索关键词
intent string 搜索意图描述
expected string 期望结果及失败后的备选方案
num number 10 结果数量(最大 10)
tbs string 时间范围过滤器

时间范围过滤器(tbs)

含义
qdr:h 过去 1 小时
qdr:d 过去 1 天
qdr:d3 过去 3 天
qdr:w 过去 1 周
qdr:m 过去 1 个月
qdr:y 过去 1 年

搜索优化技巧

  1. 中文关键词不加空格"深圳天气预报15天" 而非 "深圳天气 15天"
  2. 避免泛泛关键词:用 "热点新闻排行榜" 而非 "热点新闻"(后者易返回知乎)
  3. 不要自动添加时间:时间过滤用 tbs 参数,不在 query 中加年份
  4. 搜索词要简洁:控制在 10 个字以内,不拼接多个同义词
  5. 使用 site: 限定网站site:sina.com.cn 限定新闻源

示例

// 基本搜索
WebSearch({"query": "TypeScript 5.0 新特性"})

// 限定时间范围
WebSearch({"query": "AI技术突破", "tbs": "qdr:w"})

// 限定权威网站
WebSearch({"query": "React 19 site:react.dev"})

// 带意图和期望
WebSearch({
  "query": "Node.js性能优化最佳实践",
  "intent": "寻找生产环境下的性能调优指南",
  "expected": "找到官方或权威博客的优化建议"
})

返回结果

每个结果包含:标题(title)、URL、摘要(snippet)。返回数据中 urls 字段可直接传递给 WebFetch。


WebFetch — 获取网页

获取网页内容,支持多 URL 自动重试,基于 Playwright 渲染 JavaScript。

参数

参数 类型 必填 说明
url string[] URL 数组,按顺序尝试直到成功
selector string CSS 选择器,提取页面特定区域
waitFor string CSS 选择器,等待特定元素加载完成

功能特性

  • 多 URL 重试:传入多个 URL,按顺序尝试,成功一个就返回
  • JS 渲染:使用 Playwright 渲染页面,支持 SPA 和动态内容
  • 内容清洗:自动移除 scriptstylenavheaderfooter、广告等噪声元素
  • 智能等待waitFor 参数等待特定元素出现后再抓取内容
  • 选择器提取selector 参数只提取页面指定区域的内容
  • 长度截断:超过 8000 字符的内容自动截断

示例

// 从搜索结果获取内容
WebFetch({"url": ["https://react.dev/blog", "https://react.dev/docs"]})

// 使用搜索结果 URL
WebSearch({"query": "React 19"})
// 然后使用 WebSearch 返回的 urls
WebFetch({"url": data.urls})

// 提取特定区域
WebFetch({"url": ["https://example.com"], "selector": ".article-content"})

// 等待动态内容加载
WebFetch({"url": ["https://spa-example.com"], "waitFor": ".loaded-content"})

最佳实践

  • 至少传入 2-3 个 URL,提高成功率
  • 搜索后立即 Fetch:WebFetch({"url": data.urls})
  • SPA 页面使用 waitFor 等待内容渲染完成
  • 长文章使用 selector 只提取正文区域

HttpRequest — HTTP 请求

发送 HTTP 请求,支持所有常用方法和自定义请求头。

参数

参数 类型 必填 默认值 说明
url string 请求 URL
method string GET HTTP 方法:GET/POST/PUT/DELETE/PATCH
headers object 自定义请求头(key-value)
body string 请求体(POST/PUT/PATCH 时使用)
timeout number 30 超时秒数

示例

// GET 请求
HttpRequest({"url": "https://api.example.com/users"})

// POST 请求
HttpRequest({
  "url": "https://api.example.com/users",
  "method": "POST",
  "headers": {"Authorization": "Bearer token123"},
  "body": "{\"name\": \"test\"}"
})

// PUT 请求更新资源
HttpRequest({
  "url": "https://api.example.com/users/1",
  "method": "PUT",
  "body": "{\"name\": \"updated\"}"
})

// DELETE 请求
HttpRequest({
  "url": "https://api.example.com/users/1",
  "method": "DELETE"
})

// 带自定义请求头
HttpRequest({
  "url": "https://api.example.com/data",
  "headers": {
    "Authorization": "Bearer abc123",
    "Accept": "application/json"
  }
})

返回结果

字段 说明
status HTTP 状态码
statusText 状态描述
headers 响应头
body 响应体(JSON 自动格式化,其他截断到 10KB)

注意事项

  • JSON 请求默认添加 Content-Type: application/json
  • 响应体超过 10KB 自动截断
  • 超时后返回错误信息

ImageSearch — 搜索图片

搜索网络图片,返回图片 URL 和缩略图。

参数

参数 类型 必填 默认值 说明
query string 搜索关键词
count number 5 图片数量(最大 10)
safeSearch boolean true 启用安全搜索

示例

ImageSearch({"query": "TypeScript logo"})
ImageSearch({"query": "架构图", "count": 3})

FileDownload — 下载文件

从 URL 下载文件到本地。

参数

参数 类型 必填 说明
url string 文件下载 URL
filename string 保存的文件名(不指定则自动获取)
saveDir string 保存目录(默认 ./downloads
headers object 自定义请求头

支持的文件类型

图片、文档(PDF/Word/Excel/PPT)、压缩包、音视频文件等。

示例

// 下载文件
FileDownload({"url": "https://example.com/report.pdf"})

// 指定文件名和目录
FileDownload({
  "url": "https://example.com/data.csv",
  "filename": "report.csv",
  "saveDir": "/projects/data"
})

// 带认证头下载
FileDownload({
  "url": "https://api.example.com/export",
  "headers": {"Authorization": "Bearer token123"}
})

工作流:搜索 + 获取

WebSearch 和 WebFetch 的典型搭配流程:

1. WebSearch → 获取搜索结果(标题 + URL + 摘要)
2. 分析相关性,选择最有价值的 URL
3. WebFetch → 获取完整页面内容
4. 根据内容决定是否需要补充搜索
// Step 1: 搜索
WebSearch({"query": "Next.js App Router 教程"})

// Step 2: 获取最佳结果
WebFetch({"url": ["https://nextjs.org/docs/app", "https://nextjs.org/learn"]})

// Step 3: 如果需要更多信息,补充搜索
WebSearch({"query": "Next.js App Router vs Pages Router site:nextjs.org"})

关键规则:搜索到结果后,必须立即调用 WebFetch 获取内容,不要在未 Fetch 的情况下连续调用 WebSearch。