tinyhumansai/openhuman · error · anyhow::Error
memory_hybrid_search: query cannot be empty
Error message
memory_hybrid_search: query cannot be empty
What it means
Empty-value guard in the memory_hybrid_search tool's execute: the deserialized `query` was blank/empty. The hybrid search fuses vector, lexical and graph signals, none of which are meaningful for an empty query, so it is refused before any retrieval; supply a non-empty query string.
Source
Thrown at src/openhuman/memory/tools/search/hybrid_search.rs:101
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Max results (default 10)."
},
"include_breakdown": {
"type": "boolean",
"description": "Show per-signal score breakdown for each result (default false)."
}
}
})
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
let parsed: Args = serde_json::from_value(args)
.map_err(|e| anyhow::anyhow!("invalid arguments for memory_hybrid_search: {e}"))?;
if parsed.query.trim().is_empty() {
return Err(anyhow::anyhow!(
"memory_hybrid_search: query cannot be empty"
));
}
if parsed.namespace.trim().is_empty() {
return Err(anyhow::anyhow!(
"memory_hybrid_search: namespace cannot be empty"
));
}
let profile = WeightProfile::by_name(&parsed.mode).ok_or_else(|| {
log::warn!(
"[tool][memory_hybrid_search] rejected unknown mode={}",
parsed.mode
);
anyhow::anyhow!(
"memory_hybrid_search: unknown mode '{}'; expected balanced, semantic, lexical, or graph_first",
parsed.mode
)View on GitHub (pinned to 7491200858)
Solutions
- Provide a non-blank search query
- Avoid templated prompts that can emit empty queries
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/memory/tools/search/hybrid_search.rs:101 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/a528372a8c1f2ac8.
Report an issue: GitHub.