tinyhumansai/openhuman · error

memory_hybrid_search: {e}

Error message

memory_hybrid_search: {e}

What it means

Wrapper around active_memory_guard() in hybrid search: the bound driver could not be acquired. The comment notes this path deliberately avoids constructing a second engine over the workspace — reads go through the module-owned driver only.

Source

Thrown at src/openhuman/memory/tools/search/hybrid_search.rs:137

            )
        })?;
        let limit = parsed.limit.clamp(1, 50);

        log::debug!(
            "[tool][memory_hybrid_search] query_len={} ns={} mode={} limit={}",
            parsed.query.len(),
            parsed.namespace,
            parsed.mode,
            limit,
        );

        // Reads through the bound driver. This used to call
        // `UnifiedMemory::new(&config.workspace_dir, …)` — constructing a
        // *whole second engine* over the workspace the loaded module already
        // owns, the most severe instance of the split brain this port removes.
        let guard = active_memory_guard()
            .await
            .map_err(|e| anyhow::anyhow!("memory_hybrid_search: {e}"))?;
        let retrieval = guard.as_retrieval().ok_or_else(|| {
            anyhow::anyhow!(
                "memory_hybrid_search: memory driver does not support the retrieval family"
            )
        })?;

        // Self-echo guard (agent-agnostic, mirrors `UnifiedMemory::recall`):
        // exclude documents auto-saved for the ambient chat thread (set by
        // the web channel around the turn) so a search issued mid-turn
        // never retrieves the very request that triggered it. `None`
        // outside a chat turn — unchanged behavior for cron/CLI/tests.
        let exclude_session_id =
            crate::openhuman::agent::tinyagents::thread_context::current_thread_id();
        if let Some(ref excluded) = exclude_session_id {
            log::debug!(
                "[tool][memory_hybrid_search] applying same-session exclusion exclude_session_id={excluded}"
            );
        }

View on GitHub (pinned to 7491200858)

Solutions

  1. Retry after driver binding
  2. Check the chained acquisition error
  3. Verify the memory module is loaded and healthy
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/memory/tools/search/hybrid_search.rs:137 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/89ee5973b24b61c4. Report an issue: GitHub.