Web 工具 · 搜网页与抓网页

grok 伸到代码库之外靠两个工具:web_search 走服务端(xAI Responses API 的搜索能力),web_fetch 走客户端(reqwest 抓页面、htmd 转 markdown、还带 SSRF 防护)。这一章讲清两者的分工与那些安全细节。

作者 David更新于 第 25 篇(共 60 篇)

Web 工具 · 搜网页与抓网页

有时候答案不在代码库里,在网上——查个 API 文档、看个报错。grok 伸到外面靠两个工具,一个走服务端、一个走客户端,分工清楚。

web_search:服务端搜索

id web_search(kind WebSearch,只读)。参数 query + 可选 allowed_domains。关键:它不是本地爬虫,而是调 xAI 的 Responses API 的 web-search 能力——搜索在服务端做,回来带 content 和 citations(引用)。这也呼应了三种 API 流里提到的后端托管工具:模型请求里带上 web-search,结果由服务端 agentic sampler 执行。

web_fetch:客户端抓取

id web_fetch(kind WebFetch,只读)。参数就一个 url。这个走客户端:reqwest 抓页面 → 用 htmd 把 HTML 转成 markdown(剥掉 <script>/<style>),对文档站还会优先带 text/markdown 的 Accept 头以跳过转换。

它的安全细节值得看:

  • SSRF 防护(ssrf.rs):防模型被诱导去抓内网地址(169.254.169.254 这类元数据端点)。默认挡掉一切非公网地址(回环、RFC 1918、链路本地、CGNAT……),只有显式打开 allow_local 才放行明确的回环主机。这是「让 agent 访问任意 URL」时必须堵的洞。
  • HTTP 自动升 HTTPS、长页面截断、DomainMatcher 域名控制、结果缓存。
  • 对需要登录的 URL 会失败并明说——它不带你的 cookie。

一个诚实的观察:开源的 grok 仍没有可用的「computer use / 浏览器操作」工具。有意思的是,仓库里已经出现一份 browser_tab / browser_network_details 工具的端到端测试(tests/browser_tab_chrome_e2e.rs,驱动真 Chrome),但它依赖的 xai-grok-browser-tools crate 和 browser feature 都不在公开仓库里。所以对外的触手仍是这两个 web 工具(加上服务端的 x_search)——知道一个系统没做什么(或者没放出来什么),和知道它做了什么同样重要。

和《从 LLM 到 Coding Agent》对照

对照 tool-use:教学实现里加个 web 工具就是 fetch(url)。grok 的增量在两处:一是把搜索做成服务端托管(省得客户端维护搜索基建、还能用上服务端的实时索引),二是抓取侧的 SSRF 防护 + HTML→markdown 清洗——让「读网页」既安全又对模型友好。

至此工具能力盘完。Part 2 最后一章看一个我觉得最有意思的设计:grok 怎么假装成别家 agent,好让你的现成配置直接能用。


上一篇:LSP 代码智能 · 下一篇:与别家 agent 互通

本页目录