Tools

ค้นหาเว็บ

เครื่องมือ web_search ค้นหาเว็บโดยใช้ผู้ให้บริการที่คุณกำหนดค่าไว้และ ส่งคืนผลลัพธ์ ผลลัพธ์จะถูกแคชตามคำค้นหาเป็นเวลา 15 นาที (กำหนดค่าได้)

OpenClaw ยังมี x_search สำหรับโพสต์ X (เดิมคือ Twitter) และ web_fetch สำหรับการดึง URL แบบเบา ในระยะนี้ web_fetch จะยังคงทำงาน ภายในเครื่อง ขณะที่ web_search และ x_search สามารถใช้ xAI Responses เบื้องหลังได้

เริ่มต้นอย่างรวดเร็ว

  • Choose a provider

    เลือกผู้ให้บริการและตั้งค่าที่จำเป็นให้เสร็จ ผู้ให้บริการบางราย ไม่ต้องใช้คีย์ ขณะที่บางรายใช้ API keys ดูรายละเอียดได้จากหน้าผู้ให้บริการ ด้านล่าง

  • Configure

    openclaw configure --section web
    

    คำสั่งนี้จะจัดเก็บผู้ให้บริการและข้อมูลรับรองที่จำเป็น คุณยังสามารถตั้งค่า env var (เช่น BRAVE_API_KEY) และข้ามขั้นตอนนี้สำหรับผู้ให้บริการที่รองรับด้วย API

  • Use it

    ตอนนี้เอเจนต์สามารถเรียก web_search ได้แล้ว:

    await web_search({ query: "OpenClaw plugin SDK" });
    

    สำหรับโพสต์ X ให้ใช้:

    await x_search({ query: "dinner recipes" });
    
  • การเลือกผู้ให้บริการ

    Brave Search

    ผลลัพธ์แบบมีโครงสร้างพร้อมตัวอย่างข้อความ รองรับโหมด llm-context และตัวกรองประเทศ/ภาษา มีระดับใช้งานฟรี

    DuckDuckGo

    ตัวเลือกสำรองที่ไม่ต้องใช้คีย์ ไม่ต้องใช้ API key การผสานรวมแบบไม่เป็นทางการที่อิง HTML

    Exa

    การค้นหาแบบนิวรัล + คีย์เวิร์ด พร้อมการดึงเนื้อหา (ไฮไลต์ ข้อความ สรุป)

    Firecrawl

    ผลลัพธ์แบบมีโครงสร้าง เหมาะที่สุดเมื่อใช้คู่กับ firecrawl_search และ firecrawl_scrape สำหรับการดึงข้อมูลเชิงลึก

    Gemini

    คำตอบที่ AI สังเคราะห์พร้อมการอ้างอิงผ่านการยึดโยงกับ Google Search

    Grok

    คำตอบที่ AI สังเคราะห์พร้อมการอ้างอิงผ่านการยึดโยงเว็บของ xAI

    Kimi

    คำตอบที่ AI สังเคราะห์พร้อมการอ้างอิงผ่านการค้นหาเว็บของ Moonshot; การสำรองเป็นแชทที่ไม่ยึดโยงจะล้มเหลวอย่างชัดเจน

    MiniMax Search

    ผลลัพธ์แบบมีโครงสร้างผ่าน MiniMax Token Plan search API

    Ollama Web Search

    ค้นหาผ่านโฮสต์ Ollama ภายในเครื่องที่ลงชื่อเข้าใช้แล้ว หรือ Ollama API ที่โฮสต์ไว้

    Perplexity

    ผลลัพธ์แบบมีโครงสร้างพร้อมการควบคุมการดึงเนื้อหาและการกรองโดเมน

    SearXNG

    เมตาเสิร์ชที่โฮสต์เอง ไม่ต้องใช้ API key รวมผลจาก Google, Bing, DuckDuckGo และอื่นๆ

    Tavily

    ผลลัพธ์แบบมีโครงสร้างพร้อมความลึกในการค้นหา การกรองหัวข้อ และ tavily_extract สำหรับการดึงข้อมูล URL

    การเปรียบเทียบผู้ให้บริการ

    ผู้ให้บริการ รูปแบบผลลัพธ์ ตัวกรอง API key
    Brave ตัวอย่างข้อความแบบมีโครงสร้าง ประเทศ ภาษา เวลา โหมด llm-context BRAVE_API_KEY
    DuckDuckGo ตัวอย่างข้อความแบบมีโครงสร้าง -- ไม่มี (ไม่ต้องใช้คีย์)
    Exa แบบมีโครงสร้าง + ดึงข้อมูลแล้ว โหมดนิวรัล/คีย์เวิร์ด วันที่ การดึงเนื้อหา EXA_API_KEY
    Firecrawl ตัวอย่างข้อความแบบมีโครงสร้าง ผ่านเครื่องมือ firecrawl_search FIRECRAWL_API_KEY
    Gemini AI สังเคราะห์ + การอ้างอิง -- GEMINI_API_KEY
    Grok AI สังเคราะห์ + การอ้างอิง -- XAI_API_KEY
    Kimi AI สังเคราะห์ + การอ้างอิง; ล้มเหลวเมื่อสำรองเป็นแชทที่ไม่ยึดโยง -- KIMI_API_KEY / MOONSHOT_API_KEY
    MiniMax Search ตัวอย่างข้อความแบบมีโครงสร้าง ภูมิภาค (global / cn) MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN
    Ollama Web Search ตัวอย่างข้อความแบบมีโครงสร้าง -- ไม่มีสำหรับโฮสต์ภายในเครื่องที่ลงชื่อเข้าใช้แล้ว; OLLAMA_API_KEY สำหรับการค้นหา https://ollama.com โดยตรง
    Perplexity ตัวอย่างข้อความแบบมีโครงสร้าง ประเทศ ภาษา เวลา โดเมน ขีดจำกัดเนื้อหา PERPLEXITY_API_KEY / OPENROUTER_API_KEY
    SearXNG ตัวอย่างข้อความแบบมีโครงสร้าง หมวดหมู่ ภาษา ไม่มี (โฮสต์เอง)
    Tavily ตัวอย่างข้อความแบบมีโครงสร้าง ผ่านเครื่องมือ tavily_search TAVILY_API_KEY

    การตรวจจับอัตโนมัติ

    การค้นหาเว็บ OpenAI แบบเนทีฟ

    โมเดล OpenAI Responses โดยตรงจะใช้เครื่องมือ web_search ที่ OpenAI โฮสต์ให้อัตโนมัติเมื่อเปิดใช้งานการค้นหาเว็บของ OpenClaw และไม่ได้ปักหมุดผู้ให้บริการที่จัดการไว้ นี่เป็นพฤติกรรมที่ผู้ให้บริการเป็นเจ้าของใน Plugin OpenAI ที่บันเดิลมา และใช้กับทราฟฟิก OpenAI API แบบเนทีฟเท่านั้น ไม่รวม URL ฐานของพร็อกซีที่เข้ากันได้กับ OpenAI หรือเส้นทาง Azure ตั้งค่า tools.web.search.provider เป็นผู้ให้บริการรายอื่น เช่น brave เพื่อคงเครื่องมือ web_search ที่จัดการไว้สำหรับโมเดล OpenAI หรือกำหนด tools.web.search.enabled: false เพื่อปิดใช้งานทั้งการค้นหาที่จัดการไว้และการค้นหา OpenAI แบบเนทีฟ

    การค้นหาเว็บ Codex แบบเนทีฟ

    โมเดลที่รองรับ Codex สามารถเลือกใช้เครื่องมือ web_search ของ Responses แบบเนทีฟจากผู้ให้บริการแทนฟังก์ชัน web_search ที่ OpenClaw จัดการได้

    • กำหนดค่าไว้ใต้ tools.web.search.openaiCodex
    • เปิดใช้งานเฉพาะกับโมเดลที่รองรับ Codex (openai-codex/* หรือผู้ให้บริการที่ใช้ api: "openai-codex-responses")
    • web_search ที่จัดการไว้ยังคงใช้กับโมเดลที่ไม่ใช่ Codex
    • mode: "cached" เป็นค่าเริ่มต้นและเป็นการตั้งค่าที่แนะนำ
    • tools.web.search.enabled: false ปิดใช้งานทั้งการค้นหาที่จัดการไว้และการค้นหาแบบเนทีฟ
    {
      tools: {
        web: {
          search: {
            enabled: true,
            openaiCodex: {
              enabled: true,
              mode: "cached",
              allowedDomains: ["example.com"],
              contextSize: "high",
              userLocation: {
                country: "US",
                city: "New York",
                timezone: "America/New_York",
              },
            },
          },
        },
      },
    }
    

    หากเปิดใช้งานการค้นหา Codex แบบเนทีฟ แต่โมเดลปัจจุบันไม่รองรับ Codex, OpenClaw จะคงพฤติกรรม web_search ที่จัดการไว้ตามปกติ

    ความปลอดภัยของเครือข่าย

    การเรียกผู้ให้บริการ web_search ที่จัดการไว้จะใช้เส้นทาง fetch ที่มีการป้องกันของ OpenClaw สำหรับ โฮสต์ API ของผู้ให้บริการที่เชื่อถือได้ OpenClaw อนุญาตคำตอบ DNS แบบ fake-IP ของ Surge, Clash และ sing-box ใน 198.18.0.0/15 และ fc00::/7 เฉพาะสำหรับชื่อโฮสต์ ของผู้ให้บริการนั้นเท่านั้น ปลายทางส่วนตัว local loopback link-local และ metadata อื่นๆ ยังคงถูกบล็อก

    การอนุญาตอัตโนมัตินี้ไม่มีผลกับ URL web_fetch ใดๆ สำหรับ web_fetch ให้เปิดใช้งาน tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange และ tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange อย่างชัดเจนเฉพาะเมื่อ พร็อกซีที่คุณเชื่อถือเป็นเจ้าของช่วงสังเคราะห์เหล่านั้น

    การตั้งค่าการค้นหาเว็บ

    รายชื่อผู้ให้บริการในเอกสารและโฟลว์การตั้งค่าจะเรียงตามตัวอักษร การตรวจจับอัตโนมัติจะใช้ ลำดับความสำคัญแยกต่างหาก

    หากไม่ได้ตั้งค่า provider, OpenClaw จะตรวจสอบผู้ให้บริการตามลำดับนี้และใช้ รายแรกที่พร้อมใช้งาน:

    ผู้ให้บริการที่รองรับด้วย API ก่อน:

    1. Brave -- BRAVE_API_KEY หรือ plugins.entries.brave.config.webSearch.apiKey (ลำดับ 10)
    2. MiniMax Search -- MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN / MINIMAX_API_KEY หรือ plugins.entries.minimax.config.webSearch.apiKey (ลำดับ 15)
    3. Gemini -- plugins.entries.google.config.webSearch.apiKey, GEMINI_API_KEY, หรือ models.providers.google.apiKey (ลำดับ 20)
    4. Grok -- XAI_API_KEY หรือ plugins.entries.xai.config.webSearch.apiKey (ลำดับ 30)
    5. Kimi -- KIMI_API_KEY / MOONSHOT_API_KEY หรือ plugins.entries.moonshot.config.webSearch.apiKey (ลำดับ 40)
    6. Perplexity -- PERPLEXITY_API_KEY / OPENROUTER_API_KEY หรือ plugins.entries.perplexity.config.webSearch.apiKey (ลำดับ 50)
    7. Firecrawl -- FIRECRAWL_API_KEY หรือ plugins.entries.firecrawl.config.webSearch.apiKey (ลำดับ 60)
    8. Exa -- EXA_API_KEY หรือ plugins.entries.exa.config.webSearch.apiKey; plugins.entries.exa.config.webSearch.baseUrl ที่เป็นตัวเลือกจะแทนที่ปลายทาง Exa (ลำดับ 65)
    9. Tavily -- TAVILY_API_KEY หรือ plugins.entries.tavily.config.webSearch.apiKey (ลำดับ 70)

    ตัวเลือกสำรองที่ไม่ต้องใช้คีย์หลังจากนั้น:

    1. DuckDuckGo -- ตัวเลือกสำรองแบบ HTML ที่ไม่ต้องใช้คีย์ โดยไม่ต้องมีบัญชีหรือ API key (ลำดับ 100)
    2. Ollama Web Search -- ตัวเลือกสำรองที่ไม่ต้องใช้คีย์ผ่านโฮสต์ Ollama ภายในเครื่องที่คุณกำหนดค่าไว้เมื่อเข้าถึงได้และลงชื่อเข้าใช้ด้วย ollama signin; สามารถนำ bearer auth ของผู้ให้บริการ Ollama มาใช้ซ้ำเมื่อโฮสต์ต้องใช้ และสามารถเรียกการค้นหา https://ollama.com โดยตรงเมื่อกำหนดค่าด้วย OLLAMA_API_KEY (ลำดับ 110)
    3. SearXNG -- SEARXNG_BASE_URL หรือ plugins.entries.searxng.config.webSearch.baseUrl (ลำดับ 200)

    หากตรวจไม่พบผู้ให้บริการ ระบบจะถอยกลับไปใช้ Brave (คุณจะได้รับข้อผิดพลาดว่าไม่มีคีย์ พร้อมแจ้งให้คุณกำหนดค่าคีย์)

    การกำหนดค่า

    {
      tools: {
        web: {
          search: {
            enabled: true, // default: true
            provider: "brave", // or omit for auto-detection
            maxResults: 5,
            timeoutSeconds: 30,
            cacheTtlMinutes: 15,
          },
        },
      },
    }
    

    การกำหนดค่าเฉพาะผู้ให้บริการ (API keys, base URLs, modes) อยู่ภายใต้ plugins.entries.<plugin>.config.webSearch.* Gemini ยังสามารถใช้ models.providers.google.apiKey และ models.providers.google.baseUrl ซ้ำเป็น fallback ลำดับความสำคัญต่ำกว่า หลังจากการกำหนดค่า web-search เฉพาะของตัวเองและ GEMINI_API_KEY ดูตัวอย่างได้ใน หน้าผู้ให้บริการ

    tools.web.search.provider ถูกตรวจสอบกับ id ของผู้ให้บริการ web-search ที่ประกาศโดย manifest ของ Plugin ที่มาพร้อมชุดและที่ติดตั้งไว้ รวมถึง Plugin ผู้ให้บริการที่ทราบว่าสามารถติดตั้งได้ การพิมพ์ผิด เช่น "brvae" จะทำให้ การตรวจสอบการกำหนดค่าล้มเหลว แทนที่จะ fallback ไปใช้การตรวจจับอัตโนมัติแบบเงียบ ๆ หากผู้ให้บริการที่กำหนดค่าไว้เป็นที่รู้จัก แต่ Plugin เจ้าของไม่พร้อมใช้งาน OpenClaw จะทำให้การเริ่มต้นยังทนทานและรายงาน คำเตือน เพื่อให้คุณเรียกใช้ openclaw doctor --fix เพื่อติดตั้งหรือเปิดใช้งาน Plugin ได้ พฤติกรรมคำเตือนแบบเดียวกันนี้ใช้กับหลักฐาน Plugin ที่ล้าสมัยด้วย เช่น บล็อก plugins.entries.<plugin> ที่เหลืออยู่หลังถอนการติดตั้ง Plugin ภายนอก

    การเลือกผู้ให้บริการ fallback ของ web_fetch แยกกันต่างหาก:

    • เลือกด้วย tools.web.fetch.provider
    • หรือไม่ระบุฟิลด์นั้น แล้วให้ OpenClaw ตรวจจับผู้ให้บริการ web-fetch รายแรก ที่พร้อมใช้งานจาก credentials ที่มีโดยอัตโนมัติ
    • web_fetch ที่ไม่อยู่ใน sandbox สามารถใช้ผู้ให้บริการ Plugin ที่ติดตั้งไว้ซึ่งประกาศ contracts.webFetchProviders; การ fetch แบบ sandbox จะใช้ได้เฉพาะตัวที่มาพร้อมชุดเท่านั้น
    • ปัจจุบันผู้ให้บริการ web-fetch ที่มาพร้อมชุดคือ Firecrawl ซึ่งกำหนดค่าภายใต้ plugins.entries.firecrawl.config.webFetch.*

    เมื่อคุณเลือก Kimi ระหว่าง openclaw onboard หรือ openclaw configure --section web OpenClaw ยังสามารถถามหา:

    • ภูมิภาค Moonshot API (https://api.moonshot.ai/v1 หรือ https://api.moonshot.cn/v1)
    • โมเดล web-search เริ่มต้นของ Kimi (ค่าเริ่มต้นคือ kimi-k2.6)

    สำหรับ x_search ให้กำหนดค่า plugins.entries.xai.config.xSearch.* โดยใช้ fallback XAI_API_KEY เดียวกับการค้นหาเว็บของ Grok การกำหนดค่าเดิม tools.web.x_search.* จะถูกย้ายอัตโนมัติโดย openclaw doctor --fix เมื่อคุณเลือก Grok ระหว่าง openclaw onboard หรือ openclaw configure --section web OpenClaw ยังสามารถเสนอการตั้งค่า x_search แบบไม่บังคับด้วยคีย์เดียวกันได้ นี่เป็นขั้นตอนต่อเนื่องที่แยกอยู่ภายในเส้นทาง Grok ไม่ใช่ตัวเลือกผู้ให้บริการ web-search ระดับบนสุดที่แยกต่างหาก หากคุณเลือกผู้ให้บริการอื่น OpenClaw จะไม่ แสดง prompt ของ x_search

    การจัดเก็บ API keys

    ไฟล์กำหนดค่า

    เรียกใช้ openclaw configure --section web หรือตั้งค่าคีย์โดยตรง:

    {
      plugins: {
        entries: {
          brave: {
            config: {
              webSearch: {
                apiKey: "YOUR_KEY", // pragma: allowlist secret
              },
            },
          },
        },
      },
    }
    

    ตัวแปรสภาพแวดล้อม

    ตั้งค่าตัวแปรสภาพแวดล้อมของผู้ให้บริการในสภาพแวดล้อมของกระบวนการ Gateway:

    export BRAVE_API_KEY="YOUR_KEY"
    

    สำหรับการติดตั้ง Gateway ให้ใส่ไว้ใน ~/.openclaw/.env ดู ตัวแปรสภาพแวดล้อม

    พารามิเตอร์ของเครื่องมือ

    พารามิเตอร์ คำอธิบาย
    query คำค้นหา (จำเป็น)
    count จำนวนผลลัพธ์ที่จะส่งคืน (1-10, ค่าเริ่มต้น: 5)
    country รหัสประเทศ ISO 2 ตัวอักษร (เช่น "US", "DE")
    language รหัสภาษา ISO 639-1 (เช่น "en", "de")
    search_lang รหัสภาษาสำหรับการค้นหา (เฉพาะ Brave)
    freshness ตัวกรองเวลา: day, week, month หรือ year
    date_after ผลลัพธ์หลังวันที่นี้ (YYYY-MM-DD)
    date_before ผลลัพธ์ก่อนวันที่นี้ (YYYY-MM-DD)
    ui_lang รหัสภาษาของ UI (เฉพาะ Brave)
    domain_filter อาร์เรย์ allowlist/denylist ของโดเมน (เฉพาะ Perplexity)
    max_tokens งบประมาณเนื้อหารวม ค่าเริ่มต้น 25000 (เฉพาะ Perplexity)
    max_tokens_per_page ขีดจำกัด token ต่อหน้า ค่าเริ่มต้น 2048 (เฉพาะ Perplexity)

    x_search ค้นหาโพสต์ X (เดิมคือ Twitter) โดยใช้ xAI และส่งคืน คำตอบที่ AI สังเคราะห์พร้อม citations โดยรับ query ภาษาธรรมชาติและ ตัวกรองแบบมีโครงสร้างที่ไม่บังคับ OpenClaw เปิดใช้งานเครื่องมือ x_search ของ xAI ที่มีมาในตัวเฉพาะในคำขอที่ให้บริการการเรียกเครื่องมือนี้เท่านั้น

    {
      plugins: {
        entries: {
          xai: {
            config: {
              xSearch: {
                enabled: true,
                model: "grok-4-1-fast-non-reasoning",
                baseUrl: "https://api.x.ai/v1", // optional, overrides webSearch.baseUrl
                inlineCitations: false,
                maxTurns: 2,
                timeoutSeconds: 30,
                cacheTtlMinutes: 15,
              },
              webSearch: {
                apiKey: "xai-...", // optional if XAI_API_KEY is set
                baseUrl: "https://api.x.ai/v1", // optional shared xAI Responses base URL
              },
            },
          },
        },
      },
    }
    

    x_search จะ post ไปที่ <baseUrl>/responses เมื่อ plugins.entries.xai.config.xSearch.baseUrl ถูกตั้งค่า หากละเว้นฟิลด์นั้น จะ fallback ไปที่ plugins.entries.xai.config.webSearch.baseUrl จากนั้นไปที่ tools.web.search.grok.baseUrl แบบเดิม และสุดท้ายไปที่ endpoint สาธารณะของ xAI

    พารามิเตอร์ คำอธิบาย
    query คำค้นหา (จำเป็น)
    allowed_x_handles จำกัดผลลัพธ์ให้เป็น X handles ที่ระบุ
    excluded_x_handles ยกเว้น X handles ที่ระบุ
    from_date รวมเฉพาะโพสต์ในวันที่นี้หรือหลังจากวันที่นี้ (YYYY-MM-DD)
    to_date รวมเฉพาะโพสต์ในวันที่นี้หรือก่อนวันที่นี้ (YYYY-MM-DD)
    enable_image_understanding ให้ xAI ตรวจสอบรูปภาพที่แนบมากับโพสต์ที่ตรงกัน
    enable_video_understanding ให้ xAI ตรวจสอบวิดีโอที่แนบมากับโพสต์ที่ตรงกัน
    await x_search({
      query: "dinner recipes",
      allowed_x_handles: ["nytfood"],
      from_date: "2026-03-01",
    });
    
    // Per-post stats: use the exact status URL or status ID when possible
    await x_search({
      query: "https://x.com/huntharo/status/1905678901234567890",
    });
    

    ตัวอย่าง

    // Basic search
    await web_search({ query: "OpenClaw plugin SDK" });
    
    // German-specific search
    await web_search({ query: "TV online schauen", country: "DE", language: "de" });
    
    // Recent results (past week)
    await web_search({ query: "AI developments", freshness: "week" });
    
    // Date range
    await web_search({
      query: "climate research",
      date_after: "2024-01-01",
      date_before: "2024-06-30",
    });
    
    // Domain filtering (Perplexity only)
    await web_search({
      query: "product reviews",
      domain_filter: ["-reddit.com", "-pinterest.com"],
    });
    

    โปรไฟล์เครื่องมือ

    หากคุณใช้โปรไฟล์เครื่องมือหรือ allowlists ให้เพิ่ม web_search, x_search หรือ group:web:

    {
      tools: {
        allow: ["web_search", "x_search"],
        // or: allow: ["group:web"]  (includes web_search, x_search, and web_fetch)
      },
    }
    

    ที่เกี่ยวข้อง

    • Web Fetch -- fetch URL และดึงเนื้อหาที่อ่านได้
    • Web Browser -- การทำงานอัตโนมัติของเบราว์เซอร์เต็มรูปแบบสำหรับไซต์ที่ใช้ JS หนัก
    • Grok Search -- Grok เป็นผู้ให้บริการ web_search
    • Ollama Web Search -- การค้นหาเว็บโดยไม่ใช้คีย์ผ่านโฮสต์ Ollama ของคุณ