-
Notifications
You must be signed in to change notification settings - Fork 1
Web Access zh
上游 web 搜索和页面抓取能力在 Edge 中的适配。
Web 访问子系统为模型提供两个从互联网获取信息的工具:
-
web_search— 向配置的提供者发送搜索查询,返回答案摘要 + 排序的来源 URL。支持多查询(每次工具调用最多 5 个并发查询)。 -
web_fetch— 获取 URL 的完整内容,将 HTML 转换为模型可读文本,截断到可配置的字符上限。处理重定向、被阻止的 URL 和内容类型检测。
三个包组成该能力:
-
WebRuntime(
ctx.web)— 搜索和抓取的提供者注册表能力接缝。 - DeepSeekWebSearch — 调用 DeepSeek 搜索 API 的搜索提供者。
-
ToolWeb — 注册模型工具。
{ search: boolean, fetch: boolean }控制暴露哪些工具。
installEdgeWebSearch() 安装全部三个包,配置 { search: true, fetch: false }:
-
WebRuntime— 搜索提供者设为 DeepSeek -
DeepSeekWebSearch— 可通过DEEPSEEK_SEARCH_BASE_URL环境变量配置 base URL -
ToolCallTimeoutPolicy— 强制执行单次调用超时 -
ToolWeb— 注册web_search,不注册web_fetch
web_fetch 通过配置禁用(fetch: false)。技术阻碍是策略问题而非平台限制:
-
SSRF 风险:Workers 的
fetch()可以访问内部 Cloudflare 服务,需要 URL 验证规则 - 出口成本:抓取的页面计入 Workers 的子请求限制和带宽
- 内容渲染:复杂页面(SPA、JS 渲染)需要浏览器引擎,不仅仅是 HTTP fetch
- WebRuntime 能力接缝(提供者选择、取消、错误处理)
- DeepSeek 搜索提供者实现
-
web_search工具 schema、多查询支持、来源格式化 - ToolCallTimeoutPolicy 执行
每次 web_search 调用向 DeepSeek 搜索 API 发 HTTP 请求。延迟由外部 API 响应时间决定(通常 500ms–2s)。一次工具调用内的多个查询并发执行(最多 5 个)。
| 方案 | 能力 | Plan | 复杂度 |
|---|---|---|---|
Workers fetch()
|
基础 HTTP:HTML 页面、JSON API、文本文件 | 免费 | 低——启用 fetch: true,加 SSRF 防护 |
| Browser Rendering API | 完整页面渲染:SPA、JS 重度站点、截图 | Workers Paid | 中——需要包装 Rendering API 的 fetch 提供者 |
最简路径是启用 Workers fetch() + SSRF 防护——上游的 HTML 解析器是纯 JS,已经能在 Worker 运行时中工作。Browser Rendering 增加完整页面能力但需要付费 plan 和自定义 fetch 提供者。
| 组件 | 分类 | Edge 代码 |
|---|---|---|
| WebRuntime | 复用 | 一行 ctx.plugin() 调用 |
| DeepSeekWebSearch | 复用 | 一行 ctx.plugin() 调用 |
| ToolWeb(仅搜索) | 复用 | { search: true, fetch: false } |
web_fetch |
配置开关——未删除代码 |
关键观察:Web 搜索完全是上游代码——除配置开关外零 Edge 适配。启用
web_fetch是配置变更 + SSRF 策略决策,不是平台限制。
**启用
web_fetch并加 SSRF 防护。**上游的 HTML 转文本转换器是纯 JS,在 Workers 中可用。主要工作是添加 URL 验证规则防止访问本地网络和内部服务。将{ search: true, fetch: false }改为{ search: true, fetch: true }并注册基于 Workersfetch()的 fetch 提供者。免费 plan 可用。
**评估 Browser Rendering 用于富页面内容。**对于 Workers
fetch()无法处理的 JS 渲染页面,Cloudflare 的 Browser Rendering API 提供无头 Chromium。需要 Workers Paid plan。需要自定义WebFetchProvider来渲染页面并提取文本。
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发