"凌晨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可能无法获取完整内容
• 尊重网站的robots.txt和版权
• 不要高频请求同一网站,避免被封IP
• 获取的内容可能受版权保护,谨慎使用
• 部分网站可能需要JavaScript渲染,web_fetch可能无法获取完整内容