Repository navigation
Add Memory Mirror: hear, trace and correct what the assistant knows - #387
Merged
Merged
Conversation
…bout you Voice-first transparency for OpenHome's injected memory. Lists every .md note the platform feeds into the Agent prompt (including the platform-owned user_profile.md / user_summary.md), traces a belief to a verified quote from its source, and stores user-confirmed corrections and avoid-topics in its own memory_mirror_corrections.md file. Read-only toward other abilities' data and reserved files; writes only its own two namespaced files. No external APIs or keys.
Contributor
✅ Community PR Path Check — PassedAll changed files are inside the |
Contributor
🔀 Branch Merge CheckPR direction: ✅ Passed — |
Contributor
✅ Ability Validation Passed |
Contributor
🔍 Lint Results✅
|
- Store state in Context Storage (memory_mirror_state) with create_key
first and a success check, instead of a JSON file; roll back cleanly
if the key or the corrections file fails to save.
- Replace yes/no word lists with an LLM classifier (YES/NO/CHANGE/EXIT)
behind a whole-utterance fast path; the confirmation now accepts a
change ("no, make it pescatarian") and an exit at any prompt.
- Route browsing replies through the LLM router (adds a decline intent).
- README: describe storage accurately and the per-session note cap.
Added new attributes to MemoryMirrorCapability for state management. Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
uzair401
approved these changes
Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this Ability do?
Memory Mirror lets users ask by voice what the assistant knows about them, where it learned each thing, and correct it. It reads every
.mdnote OpenHome injects into the Agent prompt and traces a belief to a quote verified against its source. It saves user-confirmed corrections and topics to avoid in its ownmemory_mirror_corrections.md, which the Agent picks up within 60–90 seconds. Sources include the platform'suser_profile.md/user_summary.mdand notes from skills like Jarvis Prime, timers and Housemate.Why it's new: no existing ability inspects or curates the Agent's own memory.
Memory Mirror is voice-first, covers every injected source, and shows provenance.
Suggested Trigger Words
(Phrases starting with "forget …" or "remember that …" are deliberately avoided, to prevent collisions with Voice Memory Capture and Social Memory.)
Type
External APIs
Testing
resume_normal_flow()runs even after an unexpected error31 offline tests pass. Seventeen deliberate regressions were each caught by the suite:
successfieldChecklist
community/memory-mirror/main.pyfollows SDK pattern (extendsMatchingCapability, hasregister_capability+call)README.mdincluded with description, suggested triggers, and setupresume_normal_flow()called on every exit path (try/finally)print()— usingeditor_logging_handlerredis,user_config)asyncio.sleep()orasyncio.create_task()— usingsession_tasksAnything else?
Example conversation
Safety and privacy
user_profile.md/user_summary.md. It writes only its own Context Storage key (memory_mirror_state, savedcreate_key-first with asuccesscheck) and its ownmemory_mirror_corrections.md. Code refuses any other file target.does_matchoverride: trigger words live in the dashboard.Known limitation: a few abilities append to the personality prompt via
update_personality_agent_prompt, which can't be read back. When a belief can't be traced, Memory Mirror says so instead of guessing.