最近几年,开源智能助手框架 OpenClaw 因为结构清晰、能在本地运行,被很多开发者使用。这个框架允许通过插件方式添加各种功能(通常叫“技能”),比如查天气、做翻译或者上网找信息。本文会一步步说明怎么在 OpenClaw 里加入一个能用百度搜索网页的功能(也就是 baidu-web-search skill),让助手可以帮你从网上找内容。
OpenClaw 框架简单介绍
OpenClaw 是一个轻量又容易扩展的本地 AI 助手平台,它最大的优点是注重保护用户隐私,并且不需要依赖远程服务器。所有操作默认都在你自己的电脑上完成,同时它也提供了统一的接口,方便大家自己开发新功能,对想动手改进或研究的人来说非常友好。
开发前要准备的东西
开始之前,请先确认你已经装好了 Python 3.9 或更新的版本,已经把 OpenClaw 的代码下载下来并且能跑通基本例子,还会写一点简单的 Python 代码,知道 OpenClaw 是怎么加载技能的。如果你还没配好环境,建议先照着官方文档把基础设置做完。
百度网页搜索功能是怎么做的
在 OpenClaw 里,每个功能都是一个继承自 BaseSkill 的 Python 类,需要写两个方法:一个是 match(),用来判断用户说的话是不是要触发这个功能;另一个是 execute(),用来真正执行任务。下面我们就来看怎么写出这个能调用百度搜索的功能。
创建功能文件
在项目里的 skills/ 文件夹中,新建一个叫 baidu_web_search.py 的文件,里面写上下面这段代码:
import requests
from urllib.parse import quote_plus
from bs4 import BeautifulSoup
from openclaw.skills.base import BaseSkill
class BaiduWebSearchSkill(BaseSkill):
name = "baidu-web-search"
def match(self, query: str) -> bool:
# 判断用户输入是否以这些关键词开头
return query.strip().startswith(("百度搜索", "用百度查", "baidu "))
def execute(self, query: str) -> str:
# 提取出实际要搜的内容
if query.startswith("百度搜索"):
keyword = query[len("百度搜索"):].strip()
elif query.startswith("用百度查"):
keyword = query[len("用百度查"):].strip()
else:
keyword = query[len("baidu "):].strip()
if not keyword:
return "请提供有效的搜索关键词。"
# 拼出百度的搜索链接
encoded_keyword = quote_plus(keyword)
search_url = f"https://www.baidu.com/s?wd={encoded_keyword}"
try:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0 Safari/537.36"
}
response = requests.get(search_url, headers=headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
results = []
# 抓取前三个搜索条目
for item in soup.select('#content_left .result h3 a')[:3]:
title = item.get_text(strip=True)
link = item.get('href', '')
if title and link:
results.append(f"【{title}】\n{link}")
if results:
return "百度搜索结果:\n\n" + "\n\n".join(results)
else:
return "没找到相关的内容。"
except Exception as e:
return f"搜索过程中出错了:{str(e)}"要注意的是,这段代码是靠分析百度网页的 HTML 来拿结果的。虽然到 2026 年初为止,选择器 #content_left .result h3 a 还能用,但以后百度如果改了页面结构,这段代码可能就失效了,到时候得跟着调整。
让系统认出这个新功能
OpenClaw 一般会自动加载 skills/ 目录下的所有功能,也可能需要你手动导入。你需要确保这个新写的技能已经被加进去了,比如像这样:
from skills.baidu_web_search import BaiduWebSearchSkill
skill_registry.register(BaiduWebSearchSkill())具体怎么做可能会因为 OpenClaw 的版本不一样而有差别,所以最好看看你用的那个版本的说明文档。
测试能不能用
启动助手之后,你可以试着输入:
百度搜索 人工智能最新进展
如果它返回了带标题和网址的结果,那就说明功能已经成功加上了。
实际使用时要注意的问题
- 百度有防爬机制,如果你短时间内发太多请求,可能会被暂时挡住。所以在真实使用的时候,最好在每次请求之间加一点等待时间,或者换不同的网络出口。
- 虽然这个功能是在你自己的电脑上运行的,但搜索请求还是会发到百度的服务器上,也就是说你搜了什么,百度是知道的。你应该提前告诉用户这一点,让他们清楚数据是怎么流动的。
- 因为这个方法依赖网页的结构,一旦百度改版,代码很可能就拿不到结果了。如果有官方提供的搜索接口,用那个会更可靠,也更容易维护。
总结
这篇文章讲了怎么在 OpenClaw 里加上一个能用百度搜索网页的功能。有了这个能力之后,本地运行的 AI 助手就能实时从网上找信息,变得更有用。同样的思路也可以用在其他搜索引擎上。开源的好处就是你可以自己动手改、自己加东西,不断让你的助手变得更聪明、更好用。