--- id: e94ae963-9bf9-4adc-b0d7-ec18d9e70999 type: decision title: "Semantic search enabled by default for memory recall" tags: [cognitive-memory, decision, semantic-search, configuration] importance: 0.7 confidence: 0.8 created: "2026-02-19T22:03:22.589620+00:00" updated: "2026-02-19T22:03:22.589620+00:00" --- Changed `recall()` default from `semantic=False` to `semantic=True`. All recall calls now use semantic+keyword merge when embeddings exist. **Rationale:** With mtime-based embeddings caching, warm semantic recall takes ~200ms — imperceptible within Claude Code sessions where API roundtrips are measured in seconds. The quality improvement from conceptual matching justifies the small overhead. **Changes made:** - `client.py`: `recall()` parameter default `semantic=True` - `client.py`: CLI flag changed from `--semantic` (opt-in) to `--no-semantic` (opt-out) - `mcp_server.py`: `arguments.get("semantic", True)`, updated tool description - `SKILL.md`: Updated all examples and documentation **Merge weights:** 60% semantic, 40% keyword. Use `semantic=false` / `--no-semantic` when speed matters more than depth (~3ms vs ~200ms).