Skip to content

v3.3.0

Latest

Choose a tag to compare

@robbyczgw-cla robbyczgw-cla released this 25 Jul 21:39
f0f4b0c

Web Search Plus OpenClaw plugin v3.3.0

OpenClaw build of Web Search Plus with the Hermes v3.0–v3.2 source-only engine port, plus a round of release-blocking fixes and two behaviour corrections that bring extract output back in line with the Hermes reference.

What you can do now that you could not on v3.2.0

New tools

  • web_search_health_plus — read-only view of provider health samples and passive shadow-quality aggregates collected in the current host process. It reports process start/scope metadata. Nothing is stored across restarts; nothing is served on a network port.
  • web_extract_benchmark_plus — explicit-only extract benchmark. Caps at 1–3 provider calls, bypasses the extract cache, and returns a process-local priority recommendation. Hound is included only if you already allowed it via routing auto_allow.

Search and extract calls

  • routing_override_provider on web_search_plus and web_extract_plus forces one configured provider for that call (no env-var switch). The routing report surfaces the override.
  • Full-text continuation: a successful extract can return full_content_ref. Call web_extract_plus again with that reference plus content_start / content_end (max 60 000 Unicode codepoints per read). If the provider also returned distinct raw_content, its length is reported on first read; fetch it with raw_content_start / raw_content_end (separate range from the main content offsets). Both ranges die when the process-local LRU entry is evicted or the host restarts.
  • Request budget preflight for research fan-out (max three providers), extract URL/context ceilings, and extract provider-start deadlines. There is still no daily quota ledger.
  • Bounded extract context with operator ceilings (extractMaxUrls, extractMaxContextChars, extractDeadlineSeconds, cache size limits), fair-share allocation, and honest truncation/omission metadata.
  • Optional semantic spans (spans / spans_query) with NFC codepoint offsets and within_preview flags.
  • Diversity diagnostics on result sets; optional research re-ranking of near-duplicates via config qualityDiversityRerank.
  • self_hosted routing profile for SearXNG/Keenable-oriented setups.
  • Hound local MCP sidecar (loopback-only transport): search + extract adapters, off auto routing until you set auto_allow for hound. See docs/HOUND.md.
  • Brave is in the default Classic auto pool (opt out with auto_allow.brave=false).
  • Independent extract provider priority via routing config (extract_provider_priority / set_extract_provider_priority).

Call-site changes

Area v3.2.0 v3.3.0
Tools web_search_plus, web_extract_plus, web_routing_config_plus same three, plus web_search_health_plus, web_extract_benchmark_plus
provider / research provider enums included perplexity, kilo-perplexity those values are gone; use source-only providers (incl. optional hound)
Config keys perplexityApiKey, kilocodeApiKey accepted removed — configure Hound/other source providers instead
Extract continuation not available content_ref + content_start/content_end; optional raw_content_*
Forced provider for one call only provider=... also routing_override_provider — strict, no fallback, with routing-report provenance

Default search/extract behaviour for existing source-only providers stays the same path unless you opt into the new arguments, profiles, or Hound.

Breaking

  • Perplexity direct and Kilo Perplexity gateway are removed from the public provider schema, runtime, and config. They were not source-only evidence providers. Migration: pick any remaining search/extract provider; do not pass provider: "perplexity" / "kilo-perplexity" or the old API key fields.

Behaviour changes in extract output

Two things changed in what an inline web_extract_plus result contains, both to match the Hermes reference implementation:

  • Inline raw_content now mirrors the returned content. Previously an over-budget page returned the budgeted content and a second, full-length raw_content, so the payload could be about twice the size context_chars_returned reported. Distinct provider raw text is unaffected on the continuation path: it is still held behind full_content_ref and read with raw_content_start / raw_content_end.
  • Both size limits now apply, in that order. The aggregate context budget takes a deterministic prefix, and extractCharLimit then windows that prefix into head and tail with the literal truncation marker. Previously an over-budget page skipped the per-result window entirely and returned a bare prefix with no tail.

Fixed

  • Made routing_override_provider strict for extraction and Research source extraction, including in the cache identity, so a forced provider that fails can no longer fall back to a different provider while the routing report still claims the override.
  • Bounded Hound response streams while reading chunked bodies, so an oversized response without a Content-Length header is rejected during the read instead of after it is fully buffered; session teardown is detached behind a 250 ms abort deadline so an unresponsive sidecar cannot hold up a completed call.
  • Pointed the npm entrypoint at the bundled runtime (dist/index.js) and packaged the source modules the declared OpenClaw source entry imports — the previously declared entrypoint could not resolve. A packaging test now walks every packaged source file and fails if any relative import is left unpackaged.
  • Added the documented extractCacheMaxChars field to the manifest schema; the documented value was previously rejected by additionalProperties: false.
  • Corrected routing and extraction tool metadata to describe the real process-local lifetime — routing preferences live in process memory and are lost on host restart; no routing file is read or written.
  • Removed the internal porting plan from the published package and completed the five-tool README/SKILL inventory.
  • Extract cache eviction respects a full-text character budget (extractCacheMaxChars), so large pages cannot blow the process-local cache without bound.
  • raw_content ranges on the continuation path are validated and served on their own offset space, not mixed with main content offsets.
  • Operator deadline ceilings are validated the same way for direct callers as for config-normalized values (non-integers rejected with a parameter-specific error).
  • Cache size accounting is incremental (no full rescan of every entry on each write); hit and eviction behaviour is unchanged, cost is lower.

Install / package identity

  • GitHub: robbyczgw-cla/web-search-plus-plugin tag v3.3.0
  • ClawHub: web-search-plus-plugin-v2@3.3.0
  • npm package name in the tarball: web-search-plus-plugin-v2 (registry publication of that name is separate; see release NOTES)