在前一篇測試中我已將 OpenClaw 助理使用的模型從 GPT 5.6 改為 Gemini 2.5 Flash, 這樣往後測試就不用擔心一直燒 token 了. 但是問它今日台北股市卻說它無法搜尋網路 :
但之前使用 GPT 5.6 時是可以搜尋網路的啊! 這不是 OpenClaw 本身的能力嗎? 怎會跟模型有關? 我問 Gemini 這是何故, 它回答說連網搜尋確實在 OpenClaw 的架構中屬於系統工具 (web_search), 但具體由誰提供搜尋能力 (Search Provider) 則與模型後端有直接關聯, OpenAI API 內建或綁定了原生搜尋通道, 因此當底層是 OpenAI 時, OpenClaw 會預設借道 OpenAI 的搜尋介面完成查詢; 切換至 Google Gemini 後, 雖然它支援 Google 搜尋接地 (Grounding), 但在 OpenClaw 中需要明確啟用 Google 搜尋或指定專屬的 Provider (例如 Google 接地, 或獨立的 Brave, DuckDuckGo 搜尋引擎) 才行. 本篇旨在解決此網路搜尋問題.
最快且穩定的解決辦法是使用 OpenClaw 內建且完全不需要任何 API Key, 也不用 CX (Search engine index) 的 DuckDuckGo 搜尋引擎, 關於 DuckDuckGo 參考 :
因 OpenClaw 已內建 DuckDuckGo 搜尋引擎的 API 套件 (因 OpenClaw 是用 Node.js 寫的, 所以搜尋套件為 duck-duck-scrape 而非 Python 的 duckduckgo-search), 只要做一些設定後重啟 Session 即可啟用搜尋功能, 作法如下 :
1. 切換工具授權模板為全功能 (Full) 模式 :
因 OpenClaw 內部有工具過濾機制 (Profile), 這是用來限制 Agent 可以呼叫的工具範圍, 預設的 "coding" 模式只開放終端機指令 (bash), 檔案存取與程式碼執行, 但會直接過濾並封鎖所有對外網路工具, 改為 "full" 模式後就解除了對外連網與其他擴充工具的限制, 讓模型在接收到查詢請求時, 有權限調用 web_search 工具 :
pi@pi4b:~ $ openclaw config set tools.profile "full"
│
◇
OpenClaw 2026.7.1-2 (0790d9f)
I'll butter your workflow like a lobster roll: messy, delicious, effective.
Updated tools.profile. Restart the gateway to apply.
2. 指定網路搜尋的底層提供者為 DuckDuckGo :
OpenClaw 的搜尋模組支援多種後端 (例如 Google, Brave, DuckDuckGo 等), 下列指令告訴 OpenClaw 的搜尋排程器 : 當需要進行網頁檢索時一律使用 DuckDuckGo 的查詢介面 :
pi@pi4b:~ $ openclaw config set tools.web.search.provider "duckduckgo"
│
◇
OpenClaw 2026.7.1-2 (0790d9f) — I autocomplete your thoughts—just slower and with more API calls.
Updated tools.web.search.provider. No gateway restart needed.
選擇 duckduckgo 的優勢在於它不需要配置任何 API Key 或搜尋引擎 ID, 開箱即用, 毋須認證即可抓取網頁內容或即時新聞.
3. 開啟網路搜尋功能的總開關 :
這是搜尋模組本身的布林值開關, 即使在上面第 1 步開放了權限, 在第 2 步指定了搜尋引擎, 但若這個開關處於 false 或未定一狀態, 系統仍會將搜尋工具標記為禁用. 必須將其設為 true, 搜尋工具才會正式註冊並注入到模型的 Tool 清單中 :
pi@pi4b:~ $ openclaw config set tools.web.search.enabled true
│
◇
OpenClaw 2026.7.1-2 (0790d9f) — Finally, a use for that always-on Mac Mini under your desk.
Updated tools.web.search.enabled. Restart the gateway to apply.
4. 重啟背景 Gateway 服務 :
由於守護行程 (PID 為 1 的核心系統管理者 systemd) 位於系統層級, 需使用正確權限重啟才會生效, 用下列使用者層級重啟指令是沒作用的 :
pi@pi4b:~ $ systemctl --user restart openclaw-gateway.service
正確做法是透過系統層級服務來重啟, 指令如下 :
pi@pi4b:~ $ sudo systemctl restart openclaw-gateway.service
完成以上設定了, 在 Telegram, LINE, 或 Web UI 上先用 /reset 指令重啟對話, 然後詢問股市表現就會用 DuckDuckGo 去網路搜尋資料了 :
其實在改用 DuckDuckGo 之前我曾嘗試使用 Google Custom Search 但不成功, 原因是 OpenClaw 根本未實作 Google Custom Search Provider, 搜尋提供者 (Provider) 支援的是 brave, duckduckgo, tavily, 與 perplexity 等. 即使強行透過編輯 openclaw.json 檔, 塞入 API Key 與 CX, 重啟後 Gateway 依然認不得它, 搜尋排程器在找不到對應 Provider 的情況下依然會回報 no provider is available 錯誤.




沒有留言 :
張貼留言