Skip to content

recall: proactive recall silently no-ops on a default install (embeddings opt-in, no lexical fallback, no user signal) #338

Description

@kaghni

Proactive recall is semantic-onlybae7bbb1 dropped the ILIKE fallback because unindexed scans blew the 1500ms blocking budget (src/hooks/recall.ts:13-17). That was the right call for latency.

But embeddings are opt-in: a fresh marketplace install has no @huggingface/transformers, so detectStatus() returns no-transformers (src/embeddings/disable.ts:18-22) and SEMANTIC_ENABLED is false (src/hooks/recall.ts:60).

Net effect: on a default install, proactive recall does nothing, forever, with no user-visible signal. The hook runs, gates, finds no embeddings, emits nothing. Nothing tells the user the headline feature is inactive or how to turn it on.

Degradation today:

embeddings ON embeddings OFF (default)
Proactive recall semantic, top-1 completely off
Reactive (VFS grep) lexical + semantic UNION lexical — still works
Capture writes vectors writes NULL embedding

Suggested fixes, cheapest first:

  1. One-time notice via the existing notifications framework: "Proactive recall is off — run hivemind embeddings install to enable it." Fires once, at SessionStart, same channel as the referral nudge.
  2. Server-side query embedding — Deeplake embeds the query; no local deps, one extra hop inside the existing budget.
  3. Ship a small quantized model in the default bundle, upgrade to nomic on explicit install.

Related but distinct: #184 (upgraders get enabled=false from an unset env var) and #296 (hook hangs when the launcher is missing despite embeddings enabled). This one is about a fresh, correctly-configured install where the feature is simply absent and silent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions