词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!

webfetch(获取网页)默认可用,不需要额外配置。websearch(搜索网络)需要满足以下条件之一才能使用:OPENCODE_ENABLE_EXA=trueOPENCODE_EXPERIMENTAL=true(会同时启用多个实验性功能)| 工具 | 做什么 | 类比 |
|---|---|---|
websearch | 搜索互联网,返回结果列表 | 像用 Google 搜索 |
webfetch | 获取指定 URL 的网页内容 | 像在浏览器里打开一个页面 |
你:帮我查一下 React 19 有什么新特性
AI 的操作:
1. websearch "React 19 new features" → 拿到一堆搜索结果
2. webfetch 某个结果的 URL → 读取具体页面内容
3. 整理后回复你# Windows PowerShell
$env:OPENCODE_ENABLE_EXA = "true"帮我查一下 Bun 最新版本有什么新特性websearch 工具,输出类似这样的过程:⠋ websearch("Bun latest version new features 2026")
Web search: Bun latest version new features 2026
1. Bun v1.x: What's New
URL: https://bun.sh/blog/...
...
2. Bun Release Notes
URL: https://github.com/oven-sh/bun/releases
...帮我读一下这个页面的内容:https://bun.sh/docs/installationwebfetch 工具,获取页面内容后给你总结。我遇到了 "TypeError: Cannot read properties of undefined" 这个错误,
帮我搜一下最新的解决方案,找到最相关的文章后帮我总结要点| 参数 | 说明 | 默认值 |
|---|---|---|
query | 搜索关键词 | 必填 |
numResults | 返回几条结果 | 8 |
type | 搜索深度 | auto |
livecrawl | 实时爬取:fallback(缓存不可用时爬取)/ preferred(优先实时爬取) | fallback |
contextMaxCharacters | 上下文最大字符数 | 10000(Exa API 默认) |
| 类型 | 说明 | 适合场景 |
|---|---|---|
auto | 平衡模式(默认) | 大多数情况 |
fast | 快速返回 | 简单问题,要速度 |
deep | 深度搜索 | 复杂问题,要全面 |
fastdeep| 参数 | 说明 | 默认值 |
|---|---|---|
url | 要获取的网页地址 | 必填 |
format | 输出格式 | markdown |
timeout | 超时时间(秒) | 30(最大 120) |
| 格式 | 说明 | 适合场景 |
|---|---|---|
markdown | 转成 Markdown(默认) | 文档、博客、README |
text | 纯文本 | 只要文字内容,不要格式 |
html | 原始 HTML | 需要分析页面结构 |
markdown 就够了。AI 会自动把 HTML 页面转成 结构清晰的 Markdown。websearch 搜索互联网返回结果列表,webfetch 获取指定 URL 的网页内容OPENCODE_ENABLE_EXA=true(或 OPENCODE_EXPERIMENTAL=true)markdown(默认)、text、html| 你的情况 | 解决方案 |
|---|---|
| 用 Zen 托管模型 | 应该自动可用,检查网络连接 |
| 用自己的 API Key | 设置 OPENCODE_ENABLE_EXA=true 后重启 |
| 设了环境变量还是不行 | 确认变量生效:echo $OPENCODE_ENABLE_EXA |
帮我读一下 example.com/page帮我读一下 https://example.com/pagehttp:// 或 https:// 开头。Response too large。帮我搜一下 React帮我搜一下 React 19 useOptimistic hook 的用法和示例| 工具 | 做什么 | 默认可用 |
|---|---|---|
webfetch | 获取指定网页内容 | ✅ 是 |
websearch | 搜索互联网 | ⚠️ 需要 Zen 或设置环境变量 |
下一课我们学习 CLI 自动化。 你会学到: 在脚本里调用 OpenCode,无需人工干预 启动远程服务器,让团队共享 AI 会话 把 OpenCode 嵌入 CI/CD 流水线
更新时间:2026-02-14
| 功能 | 文件路径 | 行号 |
|---|---|---|
| websearch 工具定义 | src/tool/websearch.ts | 40-150 |
| websearch 参数 Schema | src/tool/websearch.ts | 45-64 |
| webfetch 工具定义 | src/tool/webfetch.ts | 12-166 |
| webfetch 参数 Schema | src/tool/webfetch.ts | 14-21 |
| webfetch 大小和超时限制 | src/tool/webfetch.ts | 8-10 |
| websearch/codesearch 启用条件 | src/tool/registry.ts | 137-139 |
| OPENCODE_ENABLE_EXA 标志 | src/flag/flag.ts | 44-45 |
| Cloudflare 403 重试逻辑 | src/tool/webfetch.ts | 68-72 |
| HTML 转 Markdown | src/tool/webfetch.ts | 200-210 |
API_CONFIG.BASE_URL = "https://mcp.exa.ai" — Exa 搜索 API 地址API_CONFIG.DEFAULT_NUM_RESULTS = 8 — 默认搜索结果数MAX_RESPONSE_SIZE = 5 * 1024 * 1024 — webfetch 最大响应 5MBDEFAULT_TIMEOUT = 30 * 1000 — webfetch 默认超时 30 秒MAX_TIMEOUT = 120 * 1000 — webfetch 最大超时 120 秒abortAfterAny(timeout, signal) — 超时控制(websearch 25 秒,webfetch 可配置)convertHTMLToMarkdown(html) — 用 Turndown 将 HTML 转为 MarkdownextractTextFromHTML(html) — 用 HTMLRewriter 提取纯文本registry.ts L137-139):websearch/codesearch 可用条件:
model.providerID === "opencode"(Zen 用户)
OR Flag.OPENCODE_ENABLE_EXA === trueOPENCODE_ENABLE_EXA 的触发方式(flag.ts L44-45):OPENCODE_ENABLE_EXA=trueOPENCODE_EXPERIMENTAL=true(启用所有实验性功能)OPENCODE_EXPERIMENTAL_EXA=true