feat(web): add Serper search provider plugin - #41015
Closed
ViezeVingertjes wants to merge 2 commits into
Closed
Conversation
- add bundled web-serper plugin (provider, register hook, metadata) - wire serper into backend availability + fallback selection - extend registry/docs + web tool comments for serper - add and update provider/config/plugin tests
|
why closed? |
Author
Cleaned up the fork on my end; so i think that auto-closed it (would assume so). |
11 tasks
Icather
added a commit
to Icather/hermes-agent
that referenced
this pull request
Jun 26, 2026
…u-baidu, serpapi, jina, google-cse, sogou, 360-search) v0.17 removed the Parallel free MCP fallback (NousResearch#46350), sharply reducing free search options. This adds 9 new providers as plugins following the existing brave-free/ddgs pattern, registered in backend_candidates in composite quality-score order after the existing backends. New functional providers (search-only): - serper — Google SERP, 2,500 free queries, no credit card - baidu — Baidu AI Search, 100/day free, native Chinese content - bocha — Chinese market leader, 1,000 free starter queries - qiniu-baidu — Qiniu Cloud Baidu, 3M tokens for new users - serpapi — Multi-engine, 100/month free - jina — Full-page extraction, 10M tokens free (blocked in China) - google-cse — Google Custom Search, 100/day (blocked in China) Registry-only entries (no public API, listed for completeness): - sogou, 360-search Two prior attempts (NousResearch#41015 Serper by ViezeVingertjes, NousResearch#35690 fallback by jonathanwxh-cell) were self-closed without review. This salages their approach with a complete provider surface covering both Western and Chinese search engines. Changes: - plugins/web/*/ — 27 new files (provider.py, plugin.yaml, __init__.py per backend) - tools/web_tools.py — +9 entries in _KNOWN_WEB_BACKENDS set, +9 in backend_candidates tuple, +_check_provider_available() helper, generic plugin probe in _is_backend_available()
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds a bundled
serperweb provider plugin so Hermes can use Serper.dev as a search backend in the existing plugin-based web provider architecture.The provider is search-only (matching Serper’s role here) and normalizes Serper API responses into Hermes’ existing web result contract.
Type of Change
Changes Made
plugins/web/serper/plugin.yamlplugins/web/serper/__init__.pyplugins/web/serper/provider.pyserperSERPER_API_KEYPOST {SERPER_BASE_URL|https://google.serper.dev}/searchqandnumorganic[]→{title,url,description,position}supports_search=True,supports_extract=False)_get_backend()accepts and can auto-detectserper_is_backend_available("serper")check_web_api_key()recognizes configured/availableserperserperin provider lists and legacy preference order.tests/tools/test_web_providers_serper.pytests/plugins/web/test_web_search_provider_plugins.pytests/tools/conftest.pytests/tools/test_web_tools_config.pyHow to Test
# Focused provider + wiring coverage scripts/run_tests.sh \ tests/tools/test_web_providers_serper.py \ tests/plugins/web/test_web_search_provider_plugins.py \ tests/tools/test_web_tools_config.py \ tests/tools/test_web_providers.pyExpected result:
Checklist
Code
fix(scope):,feat(scope):, etc.)Documentation & Housekeeping
cli-config.yaml.examplerequired (uses existingweb.backend)CONTRIBUTING.md/AGENTS.md