在 OpenClaw 中安装 baidu-web-search skill(百度网页搜索技能)

· 前端开发教程

最近几年,开源智能助手框架 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 的版本不一样而有差别,所以最好看看你用的那个版本的说明文档。

测试能不能用

启动助手之后,你可以试着输入:

百度搜索 人工智能最新进展

如果它返回了带标题和网址的结果,那就说明功能已经成功加上了。

实际使用时要注意的问题

  1. 百度有防爬机制,如果你短时间内发太多请求,可能会被暂时挡住。所以在真实使用的时候,最好在每次请求之间加一点等待时间,或者换不同的网络出口。
  2. 虽然这个功能是在你自己的电脑上运行的,但搜索请求还是会发到百度的服务器上,也就是说你搜了什么,百度是知道的。你应该提前告诉用户这一点,让他们清楚数据是怎么流动的。
  3. 因为这个方法依赖网页的结构,一旦百度改版,代码很可能就拿不到结果了。如果有官方提供的搜索接口,用那个会更可靠,也更容易维护。

总结

这篇文章讲了怎么在 OpenClaw 里加上一个能用百度搜索网页的功能。有了这个能力之后,本地运行的 AI 助手就能实时从网上找信息,变得更有用。同样的思路也可以用在其他搜索引擎上。开源的好处就是你可以自己动手改、自己加东西,不断让你的助手变得更聪明、更好用。