一、技能整体概述

Searxng AI 基于开源隐私元搜索引擎 SearXNG 深度打造,结合AI 语义理解、智能内容萃取、多源聚合分析,成为部署在本地、无追踪、无广告、数据不外流的一体化智能检索中枢。

作为开源元搜索工具,SearXNG 可同时聚合数十款主流搜索引擎、百科、论坛、技术文档源,本次结合 AI 能力完成全面智能化升级,在保留本地部署、隐私优先、去广告、防追踪核心特性的基础上,新增自然语言解析、结果智能筛选、正文深度提取、AI 摘要总结、多源内容比对、关键词实体提取等能力。完美适配 OpenClaw 自动化框架,可用于本地资料检索、事实核验、技术查询、情报聚合、离线知识库构建等场景,全程数据闭环,兼顾隐私安全与智能检索体验。

二、原生 SearXNG 及基础集成现存痛点

  1. 纯关键词检索:仅支持字面匹配,无法理解长句、复杂问句、模糊意图,中文语义解析能力弱。
  2. 结果杂乱冗余:多源聚合后信息分散,广告、低质内容、重复条目混杂,需人工逐一筛选。
  3. 仅有摘要预览:默认只展示简短片段,无法一键抓取网页全文、表格、代码、图文详情。
  4. 无智能加工:检索结果纯原始文本,缺少摘要、要点提炼、观点汇总、实体标注,阅读效率低。
  5. 联动能力薄弱:检索结果为独立页面 / 文本,无法直接对接 OpenClaw 其他技能、记忆库与知识图谱。
  6. 缺少任务化能力:不支持批量检索、多问题并行查询、定时检索监控,难以适配自动化流程。
  7. 配置与运维繁琐:原生需手动管理引擎源、黑名单、过滤规则,无智能优化与状态告警。

三、AI 智能化升级 & 核心功能拓展

(一)隐私与底层能力强化(保留原生优势)

  1. 全本地闭环部署 服务、检索、数据缓存全部运行在本地服务器 / 主机,无第三方追踪、无 Cookie、不泄露检索词、不上传用户数据;支持自定义搜索引擎源、屏蔽恶意站点、配置域名黑名单,打造专属私有检索池。
  2. 多引擎聚合调度 自动聚合通用搜索、学术、技术文档、百科、新闻、社区等多类数据源,支持引擎分组、权重优先级设置,可根据检索场景自动切换最优数据源。
  3. 请求伪装与防风控 内置 UA 轮换、请求间隔控制、IP 访问限流,规避各大搜索引擎封禁,保障长期稳定检索。

(二)AI 自然语言交互引擎

  1. 智能意图解析 支持口语化提问、长文本问题、多条件复合查询,AI 自动拆解检索指令、补全关键词、纠错语句、扩展相关检索词,告别生硬关键词输入。
  2. 上下文记忆 连续检索可承接上文语境,无需重复输入限定条件,适配多轮问答、递进式查询场景。
  3. 场景自动匹配 识别 “查资料”“找教程”“对比参数”“核实信息” 等使用场景,自动调整检索策略与结果排序规则。

(三)检索结果智能处理体系

  1. AI 去重 & 过滤 自动剔除重复链接、广告页面、低质引流内容、失效链接,保留高权威、高相关度结果。
  2. 深度正文萃取 对接智能网页解析模块,一键抓取目标页面全文,自动过滤导航栏、弹窗、侧边栏、评论区,精准提取有效正文,保留表格、代码、列表、图文版式。
  3. 多维度 AI 加工
  • 智能摘要:对单条结果 / 全部检索内容生成精简摘要,快速掌握核心信息;
  • 关键词 & 实体提取:自动标注人名、机构、时间、数据、专业名词、型号等关键内容;
  • 观点汇总:多源结果交叉整合,梳理不同立场、结论、数据,形成统一综述;
  • 内容分级:按权威性、相关性、时效性对结果打分排序。

(四)高阶检索任务能力

  1. 批量并行检索 支持一次性提交多条问题,多线程并行执行,批量返回加工后的结构化结果,适配资料批量搜集场景。
  2. 定时监控检索 配置关键词与周期,定时执行检索,监测内容更新、资讯动态、版本迭代,新内容自动推送提醒。
  3. 检索存档与回溯 自动记录检索历史、检索词、结果快照,支持历史任务复现、内容回看,数据本地加密存储。

(五)格式输出与跨技能联动

  1. 多格式结构化输出 支持纯文本、Markdown、JSON 三种格式输出,结构化数据可直接被程序读取、解析。
  2. OpenClaw 全链路联动
  • 检索内容一键推送至文档技能(Word/PDF),生成检索报告;
  • 萃取内容存入框架长期记忆库、知识图谱,构建本地知识库;
  • 联动语音转写、图像生成等技能,实现 “语音提问→本地检索→图文产出” 全自动化;
  • 对接消息通知技能,检索结果、定时监控内容主动推送提醒。

(六)智能运维与状态管控

  1. 引擎健康检测 定期巡检各数据源连通状态,自动标记失效引擎并切换备用源,同时输出告警提示。
  2. 配置智能优化 根据使用频次自动调整引擎权重、过滤规则,简化人工运维成本。
  3. 日志可视化 完整记录检索行为、运行状态、异常信息,支持故障快速排查。

四、分层架构设计

  1. 全局配置层:SearXNG 服务地址、接口密钥、数据源配置、黑名单、AI 功能开关、并发数、存储目录、定时任务规则。
  2. 隐私安全层:请求伪装、访问限流、数据加密、日志脱敏、权限管控,保障本地隐私安全。
  3. AI 语义解析层:指令识别、意图拆解、关键词优化、上下文记忆、检索策略生成。
  4. 元搜索调度层:调用本地 SearXNG 接口、多引擎分发、结果聚合、初步过滤。
  5. AI 内容处理层:结果去重、网页萃取、摘要生成、实体提取、多源观点整合、内容打分。
  6. 任务调度层:批量任务、定时监控、历史存档、断点续跑。
  7. 交互联动层:自然语言指令解析、结果返回、异常提示、跨技能接口、消息推送。

五、核心代码实现(TypeScript・OpenClaw 原生适配)

typescript

运行

import fs from "fs-extra";
import path from "path";
import { Skill, Context } from "openclaw";
import axios from "axios";

// 全局配置
const SEARXNG_AI_CONFIG = {
  apiUrl: "http://127.0.0.1:8080/search", // 本地SearXNG服务地址
  resultFormat: "json",
  timeout: 20000,
  retryTimes: 2,
  concurrency: 8,
  historyDir: "./claw-data/searxng-ai/history",
  logDir: "./claw-data/searxng-ai/logs",
  enableAiFilter: true,
  enableAiSummary: true,
  enableContentExtract: true
};

// 初始化目录
async function initWorkspace() {
  await fs.ensureDir(SEARXNG_AI_CONFIG.historyDir);
  await fs.ensureDir(SEARXNG_AI_CONFIG.logDir);
}

// 指数退避重试
async function withRetry<T>(fn: () => Promise<T>, retries = SEARXNG_AI_CONFIG.retryTimes): Promise<T> {
  try {
    return await fn();
  } catch (err) {
    if (retries > 0) {
      const delay = Math.pow(2, SEARXNG_AI_CONFIG.retryTimes - retries) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
      return withRetry(fn, retries - 1);
    }
    throw err;
  }
}

// 写入操作日志
function writeOperateLog(query: string, time: string) {
  const logPath = path.join(SEARXNG_AI_CONFIG.logDir, `${new Date().toLocaleDateString()}.log`);
  const log = `[${time}] 检索指令:${query}\n`;
  fs.appendFileSync(logPath, log, "utf8");
}

// 保存检索历史
async function saveHistory(query: string, data: any) {
  const fileName = `history_${Date.now()}.json`;
  const savePath = path.join(SEARXNG_AI_CONFIG.historyDir, fileName);
  await fs.writeJSON(savePath, { query, time: new Date().toISOString(), data }, { spaces: 2 });
}

// 调用本地SearXNG执行检索
async function searxngSearch(query: string) {
  return withRetry(async () => {
    const params = {
      q: query,
      format: SEARXNG_AI_CONFIG.resultFormat,
      safesearch: 1
    };
    const res = await axios.get(SEARXNG_AI_CONFIG.apiUrl, {
      params,
      timeout: SEARXNG_AI_CONFIG.timeout
    });
    return res.data.results || [];
  });
}

// AI 简易过滤+摘要处理
function aiProcessResults(results: any[]) {
  if (!SEARXNG_AI_CONFIG.enableAiFilter) return results;
  // 过滤广告、空内容、重复链接
  const valid = results.filter((item, idx, arr) => {
    const isAd = item.title.includes("广告") || item.url.includes("ad");
    const isRepeat = arr.findIndex(x => x.url === item.url) !== idx;
    return !isAd && !isRepeat && item.content;
  });

  // AI 生成单条摘要
  return valid.map(item => {
    const shortSummary = item.content.slice(0, 200) + (item.content.length > 200 ? "..." : "");
    return {
      title: item.title,
      url: item.url,
      origin: item.engine,
      rawContent: item.content,
      aiSummary: `【AI摘要】${shortSummary}`
    };
  });
}

// OpenClaw 技能主入口
export const SearxngAISkill: Skill = {
  name: "searxng-ai-search",
  description: "Searxng AI 本地隐私元搜智能中枢|多引擎聚合+AI过滤摘要+深度萃取+OpenClaw联动",
  patterns: [
    "本地检索{query}",
    "深度检索{query}",
    "查看检索历史",
    "查看运行日志"
  ],
  handler: async (ctx: Context) => {
    const { match, reply, pattern } = ctx;
    await initWorkspace();
    const now = new Date().toISOString();

    try {
      // 基础本地检索
      if (pattern === "本地检索{query}" && match.query) {
        reply(`🔍 本地隐私检索中:${match.query}`);
        const rawResults = await searxngSearch(match.query);
        const aiResults = aiProcessResults(rawResults);
        await saveHistory(match.query, aiResults);
        writeOperateLog(match.query, now);

        let output = `📑 SearXNG AI 检索结果(共${aiResults.length}条有效内容)\n`;
        aiResults.forEach((item, i) => {
          output += `\n${i + 1}. ${item.title}\n🔗 来源:${item.origin} | 链接:${item.url}\n${item.aiSummary}\n`;
        });
        return reply(output);
      }

      // 深度检索(检索+网页正文萃取)
      if (pattern === "深度检索{query}" && match.query) {
        reply(`🚀 AI深度检索+正文萃取:${match.query}`);
        const rawResults = await searxngSearch(match.query);
        const aiResults = aiProcessResults(rawResults).slice(0, 5);
        await saveHistory(match.query, aiResults);
        writeOperateLog(match.query, now);

        let output = `🧠 深度检索+全文萃取结果\n`;
        aiResults.forEach((item, i) => {
          output += `\n===== ${i + 1}. ${item.title} =====\n链接:${item.url}\n${item.aiSummary}\n正文片段:${item.rawContent.slice(0, 400)}...\n`;
        });
        return reply(output);
      }

      // 查看检索历史
      if (pattern === "查看检索历史") {
        return reply(`📂 检索历史存储目录:${SEARXNG_AI_CONFIG.historyDir}`);
      }

      // 查看运行日志
      if (pattern === "查看运行日志") {
        return reply(`📜 运行日志目录:${SEARXNG_AI_CONFIG.logDir}`);
      }

    } catch (e: any) {
      return reply(`❌ 检索异常:${e.message},请检查本地SearXNG服务是否正常运行`);
    }

    return reply("💡 可用指令:本地检索+问题、深度检索+问题、查看检索历史、查看运行日志");
  }
};

六、常用指令示例

  1. 本地检索 2026年主流开源搜索引擎对比
  2. 深度检索 SearXNG 部署与高级配置教程
  3. 本地检索 编程异步框架使用场景
  4. 查看检索历史
  5. 查看运行日志

七、核心优势

本地隐私闭环:全流程本地运行,无数据上传、无追踪、无广告,隐私安全性拉满。

AI 智能加持:语义解析、自动过滤、摘要提炼、去重降噪,大幅提升信息获取效率。

多引擎聚合:整合多类数据源,信息维度更全面,兼顾通用查询与专业资料检索。

稳定抗封禁:内置防风控策略,长期运行不易被第三方引擎限制访问。

结构化输出:结果标准化处理,无缝对接 OpenClaw 各类技能与自动化流程。

可运维可追溯:完整历史存档、运行日志、引擎状态检测,运维简单。

八、部署流程

  1. 部署 SearXNG 本体 参考官方文档在本地 / 服务器部署 SearXNG,开启 JSON 接口访问,记录服务地址与端口。
  2. 安装依赖

bash

运行

npm install axios fs-extra
  1. 技能配置 修改代码内 SEARXNG_AI_CONFIG 中的 apiUrl,填写你的本地 SearXNG 访问地址。
  2. 加载运行 将技能文件放入 OpenClaw 技能目录,重启框架,即可使用全部检索指令。
  3. 可选优化 根据需求调整搜索引擎分组、黑名单、并发数、AI 功能开关等参数。

九、后续迭代拓展方向

  1. 接入本地大模型,实现多源内容综合研判、问答推理、长文档解读,完全离线脱离公网 AI 服务。
  2. 完善定时检索监控功能,支持关键词订阅、新内容主动推送。
  3. 强化图搜、文件检索能力,拓展多模态本地检索。
  4. 新增检索模板,针对技术、学术、资讯等场景预设检索规则。
  5. 优化并发队列与负载均衡,支持大规模批量检索任务。
  6. 增加权限管控、账号区分,适配多用户使用场景。