name: brain-query description: Semantic two-tier retrieval over the personal brain at ~/brain/. Queries brain_wiki (synthesized pages) first, falls back to brain_raw (raw source chunks) if confidence is low, and always reports which layer answered with a confidence score. Use when the user says "/brain-query", "search the brain", "semantic search", or asks a factual question about Harsha, his clients, projects, or any topic covered by the brain where exact slugs aren't known.
brain-query
Two-tier retrieval + synthesis over ~/brain/.
Workflow
Run the query script via Bash (must
cdinto brain root for the package import to resolve):cd /Users/HAR5HA/brain && .venv/bin/python -m scripts.query "<question>" --k 5Parse the JSON output. Important fields:
layer—"brain_wiki"or"brain_raw"— which collection answered.providerandthreshold— for reporting.top_score— cosine similarity of the best result (0–1).results[]— ordered by score. Each hassource_rel,heading_path,chunk_idx,text(the chunk preview, possibly truncated to the token budget).wiki_top_if_fallback— present only whenlayer == "brain_raw"; the nearest wiki misses, for transparency.
For each high-scoring result (top 2–3), Read the cited file (
~/brain/<source_rel>) to get the full page — the preview is truncated to fit the token budget.Synthesize an answer using only those sources. Cite the wiki slug when
layer == "brain_wiki"(e.g.[[ghl-teli-integration-flow]]); citeraw/<filename>whenlayer == "brain_raw".Always report which layer answered, verbatim on its own line:
Answered from: brain_wiki (score 0.82)Answered from: brain_raw (score 0.71)
If
layer == "brain_raw", offer to promote the answer into a wiki page via/wiki-ingestor/wiki-saveso the next query hits the cheaper layer.If
top_score < 0.60(both layers effectively missed), fall back to training memory and label the answer[NOT IN BRAIN — training data]on its own line.Append a one-line entry to
~/brain/wiki/log.md:## [YYYY-MM-DD] brain-query | <short question> Layer: brain_wiki|brain_raw Score: 0.XX Sources: <slugs or raw filenames>
Rules
- Do not bypass the script and Grep directly. The point is semantic retrieval.
- Do not override the
--thresholdunless the user asks — it's resolved per-provider in config. - Respect the context budget; the script already trims previews. If the truncation hurts, the Read in step 3 fills the gap.
- If the script exits non-zero, report the error to the user — do not silently fall back to training data.