openclaw源码改造对接百度搜索引擎
·
传送门:
Moltbot(Clawdbot)对接本地大模型完整配置指南(一)
Moltbot(Clawdbot)对接飞书channel(二)
背景
openclaw默认的搜索工具只支持Brave和Perplexity,这两个都是国外的搜索工具,而是需要注册key才能使用,本篇改造代码Brave,用baidu搜索引擎来替代。
模拟Brave服务端接口
利用python框架baidusearch封装为Brave格式的接口,代码如下:
from flask import Flask, request, jsonify, Response
from baidusearch.baidusearch import search
import json
import logging
# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
app = Flask(__name__)
# 确保JSON输出中中文正常显示,而不是Unicode编码
app.config['JSON_AS_ASCII'] = False
@app.route('/brave-search', methods=['GET'])
def brave_search():
"""
Brave风格搜索API接口 - 支持TS客户端调用
参数:
query: 搜索关键词 (必填)
count: 返回结果数量 (可选,默认10)
country: 国家代码 (可选)
search_lang: 搜索语言 (可选)
ui_lang: 用户界面语言 (可选)
freshness: 内容新鲜度 (可选)
"""
# 获取请求参数
query = request.args.get('q')
count = request.args.get('count', 10, type=int)
country = request.args.get('country')
search_lang = request.args.get('search_lang')
ui_lang = request.args.get('ui_lang')
freshness = request.args.get('freshness')
# 参数校验
if not query:
return jsonify({
"error": "缺少必要的参数: query",
"code": 400
}), 400
try:
# 执行搜索
results = search(query, num_results=count, debug=0)
# 格式化结果以匹配BraveSearchResponse结构
formatted_results = []
for result in results:
# 清理摘要中的空白字符
abstract = result.get("abstract", "")
if abstract:
abstract = abstract.translate(str.maketrans('', '', ' \r\n'))
formatted_result = {
"title": result.get("title", ""),
"url": result.get("url", ""),
"description": abstract,
"age": result.get("rank", "") # 假设rank字段表示内容的新鲜度
}
formatted_results.append(formatted_result)
# 构建最终返回的JSON结果
final_result = {
"web": {
"results": formatted_results
}
}
return Response(json.dumps(final_result, ensure_ascii=False),
mimetype='application/json; charset=utf-8')
except Exception as e:
logger.error(f"Brave搜索过程中发生错误: {str(e)}")
return jsonify({
"error": f"Brave搜索过程中发生错误: {str(e)}",
"code": 500
}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=25000, debug=True)
从openclaw源码修改brave的接口地址
源码位置在openclaw-2026.2.2\src\agents\tools\web-search.ts。注释原有的BRAVE_SEARCH_ENDPOINT语句,修改为const BRAVE_SEARCH_ENDPOINT = “http://localhost:25000/brave-search”;
const SEARCH_PROVIDERS = ["brave", "perplexity"] as const;
const DEFAULT_SEARCH_COUNT = 5;
const MAX_SEARCH_COUNT = 10;
// const BRAVE_SEARCH_ENDPOINT = "https://api.search.brave.com/res/v1/web/search";
const BRAVE_SEARCH_ENDPOINT = "http://localhost:25000/brave-search";
const DEFAULT_PERPLEXITY_BASE_URL = "https://openrouter.ai/api/v1";
const PERPLEXITY_DIRECT_BASE_URL = "https://api.perplexity.ai";
const DEFAULT_PERPLEXITY_MODEL = "perplexity/sonar-pro";
从源码编译安装openclaw
参考官方文档https://docs.openclaw.ai/install中的源码安装步骤,执行命令
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
openclaw onboard --install-daemon
演示效果
安装完毕后,我们可以在对话询问最新的消息,看是否通过百度搜索。
可以看到web_search工具已经通过baidu进行搜索结果,再交给大模型回答。
飞书中的执行效果如下:

更多推荐


所有评论(0)