tinyhumansai/openhuman · error · anyhow::Error

memory_recall: {e}

Error message

memory_recall: {e}

What it means

The driver's recall search failed after namespace/query/limit parsing. The search runs with the user query only (namespace rides in RecallOpts, not the query string); the chained {e} is the backend's reason.

Source

Thrown at src/openhuman/memory/tools/recall.rs:93

        }

        #[allow(clippy::cast_possible_truncation)]
        let limit = args
            .get("limit")
            .and_then(serde_json::Value::as_u64)
            .map_or(5, |v| v as usize);

        // Search with the user query only. Prefixing `namespace` into the query
        // string would add a redundant token matching almost every row. Instead,
        // namespace scoping belongs in RecallOpts so the backend restricts the
        // search to the correct namespace column.
        let recall_opts = crate::openhuman::memory::api::recall::OwnedRecallOpts {
            namespace: Some(namespace.to_string()),
            ..Default::default()
        };
        let guard = active_memory_guard()
            .await
            .map_err(|e| anyhow::anyhow!("memory_recall: {e}"))?;
        // `None` scope: the guard intersects it with the ambient per-turn
        // allowlist, so this can only ever be narrowed, never widened.
        match guard.recall(query, limit, &recall_opts, None).await {
            Ok(entries) if entries.is_empty() => Ok(ToolResult::success(
                "No memories found matching that query.",
            )),
            Ok(entries) => {
                let mut output = format!("Found {} memories:\n", entries.len());
                for entry in &entries {
                    let score = entry
                        .score
                        .map_or_else(String::new, |s| format!(" [{s:.0}%]"));
                    let _ = writeln!(
                        output,
                        "- [{}] {}: {}{score}",
                        entry.category, entry.key, entry.content
                    );
                }

View on GitHub (pinned to 7491200858)

Solutions

  1. Retry transient backend failures
  2. Check the chained error for store/embedding faults
  3. Verify the namespace exists in the recall store
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/memory/tools/recall.rs:93 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/ec51c554fd702433. Report an issue: GitHub.