Appearance
功能规格说明:WebFetch 工具
创建日期:2026-03-31
更新日期:2026-04-21
用户场景与测试 (必填)
用户故事:基本网页内容提取(优先级:P1)
作为用户,我希望能够从 URL 获取内容并提问,以便在不离开终端的情况下快速获取网页信息。
为什么是这个优先级:这是工具的核心功能。
独立测试:可以通过使用简单 URL 和提示调用 WebFetch 工具,并验证工具基于页面内容返回相关响应来测试。
验收场景:
- 假设URL
https://example.com和提示"What is the title of this page?",当WebFetch工具执行时,则它应该返回包含"Example Domain"的响应 - 假设URL 不可达,当
WebFetch工具执行时,则它应该返回 success: false 结果和适当的错误消息
用户故事:重定向处理(优先级:P2)
作为用户,我希望在 URL 重定向到不同主机时被通知,并且同主机重定向被自动跟随,这样我不必为每次重定向手动重新获取。
为什么是这个优先级:这确保访问网页内容时的透明度和安全性,同时减少不必要的工具调用。
验收场景:
- 假设URL
http://short.url重定向到https://another-domain.com/page,当WebFetch工具执行时,则它应该返回以REDIRECT_TO: https://another-domain.com/page开头的消息并通知用户主机变更 - 假设URL 重定向到同一主机的不同路径,当
WebFetch工具执行时,则它应该自动跟随重定向并返回页面内容,不带REDIRECT_TO消息 - 假设URL 从
example.com重定向到www.example.com,当WebFetch工具执行时,则它应该自动跟随重定向
用户故事:GitHub URL 处理(优先级:P2)
作为用户,我希望在尝试获取 GitHub URL 时被建议使用 gh CLI,以便我可以使用更专业和认证的 GitHub 内容工具。
为什么是这个优先级:GitHub 内容通常通过其官方 CLI 访问更好,它比通用网页获取器更好地处理认证和结构化数据。
验收场景:
- 假设GitHub URL
https://github.com/netease-lcap/wave-agent,当WebFetch工具执行时,则它应该返回建议使用Bash工具的ghCLI 的错误消息
用户故事:缓存(优先级:P3)
作为用户,我希望重复请求同一 URL 时速度更快,这样我不会浪费时间和 token 重新获取和处理相同内容。
为什么是这个优先级:提高性能并减少资源使用。
验收场景:
- 假设URL 已被获取一次,当它在 15 分钟内再次被获取,使用相同或不同的提示时,则工具应该使用缓存的 Markdown 内容而不是发起新的网络请求
用户故事:安全性与健壮性(优先级:P2)
作为用户,我希望工具防止过度资源使用并提供清晰的错误消息,这样我不会遇到挂起或内存问题。
为什么是这个优先级:防止工具消耗过多资源或无限挂起。
验收场景:
- 假设URL 超过 2000 个字符,当
WebFetch工具执行时,则它应该返回关于 URL 长度的错误 - 假设URL 包含用户名/密码凭证,当
WebFetch工具执行时,则它应该拒绝该 URL - 假设
localhostURL,当WebFetch工具执行时,则它应该拒绝该 URL - 假设响应超过 10MB,当
WebFetch工具执行时,则它应该拒绝该响应 - 假设获取时间超过 60 秒,当达到超时时,则请求应该被中止
- 假设重定向循环,当重定向计数超过 10 时,则工具应该返回错误
非功能需求
- 工具必须是只读的,不修改任何文件
- 工具必须快速高效
- 工具必须通过截断和必要时总结来处理大内容
- 工具必须提供清晰的错误消息和诊断输出(HTTP 状态码、内容大小)
- 缓存必须使用 LRU 驱逐策略和自动过期(无手动清理间隔)