🔍 OpenClaw搜索技能完全指南

web_search与web_fetch——让AI拥有信息获取的超能力

📅 2026-04-15 ⏱️ 阅读12分钟 🏷️ OpenClaw核心技能
"凌晨1点47分,我问Agent:'帮我查一下最新的OpenClaw更新。' 它开始搜索,翻网页,提取信息。3分钟后,它递给我一份整理好的报告。我看着窗外漆黑一片,突然意识到——它帮我完成了一个研究员需要通宵才能做完的工作。"
世界上有一种焦虑叫"信息不足"。当AI只能基于训练数据回答问题时,它就像个关在图书馆里的学者——知道很多,但不知道今天发生了什么。而OpenClaw的搜索技能(web_search和web_fetch),给了Agent实时获取信息的能力。

🔍 搜索工具概览

工具用途返回内容
web_search搜索网络信息搜索结果列表(标题、URL、摘要)
web_fetch获取网页内容页面正文内容(Markdown/Text)

🛠️ web_search 详解

基本用法

简单搜索
web_search({
  query: "OpenClaw Agent Skills 教程 2026",
  count: 5
})

高级搜索参数

带区域和语言限制
web_search({
  query: "AI Agent最佳实践",
  count: 10,
  region: "zh-cn",        // 中国区域
  safeSearch: "moderate"  // 安全搜索级别
})

搜索结果处理

典型的搜索-分析流程
async function researchTopic(topic) {
  // 1. 搜索
  const results = await web_search({
    query: topic,
    count: 10
  });
  
  // 2. 提取URL列表
  const urls = results.results.map(r => r.url);
  
  // 3. 并行获取详细内容
  const contents = await Promise.all(
    urls.slice(0, 3).map(url => 
      web_fetch({ url, extractMode: "markdown" })
    )
  );
  
  // 4. 整合分析
  return {
    searchResults: results,
    detailedContent: contents
  };
}

🌐 web_fetch 详解

基本用法

获取页面内容
web_fetch({
  url: "https://docs.openclaw.ai/guides/getting-started",
  extractMode: "markdown",  // markdown 或 text
  maxChars: 5000            // 最大字符数
})

提取模式对比

模式适合场景输出特点
markdown结构化内容、文章保留格式、标题、链接
text纯文本提取清理格式,纯文字

💡 实战技巧

技巧1:搜索策略

有效的搜索查询构建
// ❌ 不够具体
web_search({ query: "AI" })

// ✅ 具体明确
web_search({ query: "OpenClaw agent skills tutorial 2026" })

// ✅ 包含关键词和时间
web_search({ query: "MCP protocol model context protocol April 2026" })

// ✅ 问题式搜索
web_search({ query: "how to spawn subagents in OpenClaw" })

技巧2:内容聚合

多源信息整合
async function aggregateNews(topics) {
  const allNews = [];
  
  for (const topic of topics) {
    const results = await web_search({
      query: `${topic} news 2026`,
      count: 5
    });
    
    for (const result of results.results.slice(0, 3)) {
      try {
        const content = await web_fetch({
          url: result.url,
          extractMode: "markdown",
          maxChars: 3000
        });
        
        allNews.push({
          topic,
          title: result.title,
          url: result.url,
          content: content.slice(0, 1000)
        });
      } catch (e) {
        console.log(`无法获取: ${result.url}`);
      }
    }
  }
  
  return allNews;
}

// 使用
aggregateNews(["OpenClaw", "AI Agent", "MCP Protocol"]);

技巧3:错误处理

健壮的内容获取
async function safeFetch(url, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      const content = await web_fetch({
        url,
        extractMode: "markdown",
        maxChars: 5000
      });
      return content;
    } catch (error) {
      if (i === retries - 1) {
        return `[获取失败: ${error.message}]`;
      }
      // 等待后重试
      await new Promise(r => setTimeout(r, 1000 * (i + 1)));
    }
  }
}

🔄 常见工作流

工作流1:热点监控

自动追踪热点话题
async function trackHotTopics(keywords) {
  const reports = [];
  
  for (const keyword of keywords) {
    const results = await web_search({
      query: `${keyword} 最新动态 ${new Date().getFullYear()}`,
      count: 5
    });
    
    reports.push({
      keyword,
      mentions: results.results.length,
      topResult: results.results[0]?.title
    });
  }
  
  return reports;
}

// 监控这些关键词
trackHotTopics(["OpenClaw", "MCP", "A2A", "Agentic AI"]);

工作流2:竞品分析

收集竞品信息
async function competitorAnalysis(competitors) {
  const analysis = {};
  
  for (const competitor of competitors) {
    // 搜索竞品最新动态
    const news = await web_search({
      query: `${competitor} update news features`,
      count: 10
    });
    
    // 获取官网信息
    const homepage = await web_fetch({
      url: `https://${competitor}.com`,
      extractMode: "text",
      maxChars: 2000
    });
    
    analysis[competitor] = {
      recentNews: news.results,
      positioning: homepage.slice(0, 500)
    };
  }
  
  return analysis;
}
搜索优化建议
• 使用英文搜索获取更全面的技术内容
• 添加年份限定词(如"2026")获取最新信息
• 对于特定网站内容,直接用web_fetch更高效
• 搜索结果质量取决于查询词,多尝试不同表述
使用注意事项:
• 尊重网站的robots.txt和版权
• 不要高频请求同一网站,避免被封IP
• 获取的内容可能受版权保护,谨慎使用
• 部分网站可能需要JavaScript渲染,web_fetch可能无法获取完整内容

📚 相关链接