WebFetch 工具深度分析
概述
WebFetch 工具 (packages/core/src/tools/web-fetch.ts) 是 Gemini CLI 项目中的一个核心工具,用于从 URL 获取和处理网页内容。该工具结合了 AI 能力和传统网页抓取技术,提供了智能的内容获取和处理功能。
核心架构
主要组件
WebFetchTool(主工具类) ├── WebFetchToolInvocation(工具调用实现)
├── parsePrompt(URL 解析函数)
└── GroundingMetadata(引用和元数据接口)
继承关系
WebFetchTool继承自BaseDeclarativeTool<WebFetchToolParams, ToolResult>WebFetchToolInvocation继承自BaseToolInvocation<WebFetchToolParams, ToolResult>
核心功能分析
1. URL 解析和验证 (parsePrompt)
位置: lines 41-74
export function parsePrompt(text: string): { validUrls: string[]; errors: string[]; }
功能特点:
- 从输入文本中提取包含
://的 tokens - 使用
new URL()验证 URL 格式 - 协议白名单:仅支持
http:和https: - 返回有效 URL 列表和错误信息
安全考虑:
- 拒绝非标准协议(如
file:,ftp:等) - 严格的 URL 格式验证
2. 双重执行策略
主执行路径 (execute)
位置: lines 240-380
执行流程:
- 解析输入 prompt 中的 URLs
- 检查私有 IP 地址
- 调用 Gemini AI 的
urlContext工具


