Agent: search_memory missing from preamble — proactive recall dead by discovery gap #14
Closed
opened 2026-05-12 19:03:35 +00:00 by KofTwentyTwo
·
1 comment
No Branch/Tag Specified
develop
ci/secrets-historical-baseline
feature/security-findings-2026-10
dependabot/npm_and_yarn/webview/npm_and_yarn-3ac77625be
dependabot/npm_and_yarn/webview/packages/bus/npm_and_yarn-c86b58a346
dependabot/npm_and_yarn/webview/vitejs/plugin-react-6.0.2
dependabot/npm_and_yarn/webview/vite-8.0.13
dependabot/npm_and_yarn/webview/zustand-5.0.13
dependabot/npm_and_yarn/webview/types/node-25.9.1
dependabot/npm_and_yarn/webview/vitest-4.1.6
dependabot/github_actions/actions/setup-node-6
dependabot/github_actions/github/codeql-action-4
dependabot/github_actions/actions/checkout-6
dependabot/github_actions/actions/cache-5
dependabot/github_actions/pnpm/action-setup-6
feat/local-first-llm-routing
docs/local-first-llm-routing-spec
fix/v0.2-wave-1-code-fixes
docs/v0.2-wave-1-doc-drift
docs/handoff-2026-05-14
docs/multi-runner-inventory
docs/ollama-baseline-58
fix/ci-env-harness-sqlite-voice-warmup
fix/ci-xcode-26-and-batcher-timing
chore/typecheck-blocking
fix/hud-typecheck-strict-undefined
wip/voice-log-menu-stash4
v0.1.0-dev.71
v0.1.0-dev.68
v0.1.0-dev.64
v0.1.0-dev.50
Labels
Clear labels
area:agent
area:build
area:bus
area:devtool
area:hud
area:logging
area:mcp
area:memory
area:vision
area:voice
audit-finding
bug
carry-forward
comment-cleanup
dependencies
documentation
duplicate
enhancement
epic
good first issue
help wanted
invalid
javascript
migration
question
severity:critical
severity:high
severity:low
severity:medium
wontfix
Something isn't working
Comment / docstring cleanup per .planning/code-commenting-guide.md
Dependency updates
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
This doesn't seem right
Pull requests that update javascript code
Further information is requested
This will not be worked on
Milestone
No items
No Milestone
v0.1 — It actually works (basic capabilities)
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: KofTwentyTwo/Jarvis#14
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Agent has no preamble cue to call
search_memory— proactive recall is dead by discovery gap. The tool is registered (10 tools probed ok) but the agent never calls it. Today's session reproduced it perfectly: user said "what is my dog's name?", agent answered "I don't have anything in memory about your dog" without callingsearch_memory. ZerosearchFacts:log lines across all sessions.Evidence
packages/AgentCore/Sources/AgentCore/ContextBuilder.swift:64-74(selfAwarePreamble)App/AppDelegate.swift:1685—systemPrompt: ContextBuilder.systemPrompt(for: .empty)—memoryHydrationalways emptysystem.2026-05-12.logconfirmssearch_memoryregistered via BootHealthmemory.*logfiles have zero[memory.search]channel emissionseventstable shows 19tool_call_requestedrows today — allget_time/get_self_state/etc; zerosearch_memoryRoot cause / hypothesis
The preamble enumerates 7 introspection tools by name (
list_audio_devices, get_active_audio_route, get_self_state, list_camera_devices, get_time, get_clipboard, run_applescript) but omits bothsearch_memoryandforget_fact. The Anthropic tools array is canonical, but the model's preference is shaped by the preamble's explicit "always prefer calling those tools" rule. Without a name in the preamble,search_memoryfalls into "tools the agent technically has access to but won't think to use."The
TurnContext.memoryHydrationfield exists (ContextBuilder.swift:41) but the only production call site passes.empty. No glue pre-populates from aHybridSearchpass before each turn.Recommended fix
Add
search_memory(and arguablyforget_fact) to the preamble's named-tool list with a specific cue:The
SearchMemoryTool.toolDescriptionalready contains that sentence — it's just not in the preamble where the cache-locked early-prompt nudge actually lives. Optionally wireTurnContext.memoryHydrationto callHybridSearch.searchFacts(query: input.userText, k: 5)before each turn, but the named-tool fix is much cheaper.Test
search_memorytool call before assistant text responsesearch_memoryappears in compiled preamble textSource
.planning/audit-2026-05-12/memory-audit.md(2026-05-12) — finding M-3 CRITICALCross-references
search_memoryactually firesClosed by v0.1 cluster merges on 2026-05-13. Develop now at
a8c7f1a0.