服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- 需要Agents SDK 0.28.0或更高版本;HTML和文档转换用Workers AI绑定,本地开发的转换也调用云端账号。
- 默认每次给模型最多20,000个正文字符,读取响应体上限5,000,000字节;两个数字管的是不同环节。
- 内置来源每次工具调用重新GET;复用WebFetchPage才能对同一份内容继续分页。
- 域名过滤和默认私网限制有明确边界;JavaScript渲染、登录、截图和交互应选浏览器工具。
它读的是页面和文档,不是完整浏览器
Cloudflare在10月12日的当前公告中提供了Agents SDK web_fetch。模型给出URL,工具返回内容、最终URL、HTTP状态、内容类型及续读位置。公告路径含10月11日,但页面显示10月12日;不能把路径日期当作准确上线钟点。
工具优先请求Markdown;直接得到Markdown、JSON或普通文本时,跳过Workers AI转换。HTML、PDF和支持的Office文档则通过Workers AI转成Markdown。转换不会证明资料正确,仍要核内容是否回答了任务。
它发出GET,不携带浏览器Cookie、凭据或自定义请求头。需要执行JavaScript、已有登录会话、截图或点击时,选适用的浏览器工具;遇到挑战页也不能靠格式转换获得访问资格。
接入先核版本、AI绑定和注册位置
先核项目实际使用的agents版本,至少为0.28.0,并已有对应harness。文档示例在Wrangler中配置名为AI的Workers AI绑定,remote设为true。本地开发的HTML与文档转换仍在Cloudflare账号上远程执行;已读资料未给出准确费用、免费额度或逐地区资格,不能按本地运行推定免费。
Pi Durable从agents/webfetch/pi导入webFetchTool,把webFetchTool({ binding: this.env.AI })安装进registry,再调用Harness.open()。先注册再打开,才能让harness拿到工具;这不是给所有harness自动加工具。
AI SDK和TanStack AI分别有自己的适配入口。其他harness可在工具处理函数中使用fetchWeb()、windowWebFetchPage()和renderWebFetchPage();这些底层函数不要求Durable Object、浏览器或Worker Loader绑定。具体模型和执行环境仍由应用准备。
长文分五次读,默认就会发五次GET
默认每次工具结果包含最多20,000个正文字符。用结果给出的offset续读,不自己机械加20,000,因为窗口可能在换行处结束;结构化结果nextOffset为null时,表示已经读到末尾。
内置来源每次工具调用都会重新抓URL。假设一份报告需要五个窗口,默认会发五次请求,期间源页面也可能变化。这个未执行的例子说明:分页不是已下载文档的缓存,也不保证五段来自同一版本。
需要复用一次抓取时,保存fetchWeb()返回的WebFetchPage,再用后续offset调用windowWebFetchPage()。Pi的会话恢复是另一个机制:已完成结果会保留;被驱逐中断的抓取会重跑,不能因此认为普通续读也只抓一次。
先设主机,再把字符、字节和时间分开限
应用创建工具时设置请求策略,模型只选择url、offset和format。allowedHosts默认允许公共主机;任务只读已批准文档时,可列出具体主机。blockedHosts先于允许名单检查,*.example.com只包含子域,不包含example.com根域。
pageChars控制每次交给模型的字符窗口;maxBytes默认5,000,000,控制读取响应体的字节上限。timeoutMs默认30,000毫秒,包含重定向与转换;maxRedirects默认5,可设0至20。按任务收窄这些值。
内置来源检查每个URL与重定向目标,拒绝非HTTP协议、URL内凭据、超过2,000字符的URL及HTTPS降级到HTTP。默认拦本地名称和私有IP字面量,但不解析公共主机背后的DNS地址来检查私网IP;这不是完整的私网隔离保证。
失败时看结构化错误,再决定下一步
可读的HTTP错误页面会连同状态返回。抓取失败有WebFetchError代码,例如web_fetch_timeout、web_fetch_too_large和web_fetch_unsupported_content_type,并带retryable字段。先分清超时、响应过大、类型不支持与页面本身的错误,避免把HTTP返回当成有效答案。
Pi把失败放进details,ok为false;AI SDK和TanStack AI适配器抛WebFetchError。取消会传播为abort,而不是普通抓取失败。被检测到的机器人挑战会产生web_fetch_blocked,提示选择浏览器或其他来源;应继续遵守原站权限和规则。
先用一份获准读取的文档核接入结果
可按一个未执行的接入流程核对:确认版本和AI绑定,注册对应适配器,再给工具一份获准读取的公开文档URL。检查最终URL、状态、类型、正文与nextOffset是否符合预期;长文需要一致版本时再核WebFetchPage复用。本文没有安装SDK、部署Worker或调用模型。
结果包装把外部内容标为资料,不能保证防住提示注入。AI SDK若自行转换UI消息,要把同一tools传给convertToModelMessages(messages, { tools }),保留历史结果的格式和包装;网页文字不能替用户批准新的操作。
资料来源
常见问题
format设为raw,就能读取PDF、图片或视频吗?
不能。raw用于不转换的文本正文,不能返回PDF或其他二进制文档内容;图片、音频和视频不受支持。需要PDF内容时走支持的文档转换,并核账号绑定与实际费用。
改用自己的WebFetchSource,原来的请求限制还在吗?
自定义source负责URL校验、主机限制、字节上限和重定向处理;工具仍应用pageChars与timeoutMs。想保留内置请求策略,可包装createDirectWebFetch(),不要把换来源理解成原有全部控制自动继承。