memory tools
use when durable recall or storage is useful
- memory_load: args query, optional threshold, limit, filter; search by meaning and metadata
- memory_save: args text, optional area and metadata; store durable information; returns a memory ID on success
- memory_delete: arg comma-separated ids; delete memories by exact ID
- memory_forget: args query, optional threshold, filter; find and remove matching memories
notes:
- threshold is similarity from 0 to 1
- filter is a metadata expression (e.g. area=='main')
- confirm destructive changes when accuracy matters
- memories usually include timestamp metadata; use it as a soft recency signal, not a hard TTL
- when the user updates a durable fact/preference, load related memories first, forget/delete superseded versions, then save one complete current version
- do not append a second memory for the same mutable subject when the new statement replaces the old one
- do not forget a memory only because it is old; forget it when current evidence shows it is stale, false, superseded, duplicated, or unwanted
- memory_forget also cleans exact matches and derived fragment/solution records related to removed memories
- use memory_save for stable current facts, not short-lived test markers, greetings, or one-off conversation events
example: ~~~json { "thoughts": ["I should search memory for relevant prior guidance."], "headline": "Loading related memories", "tool_name": "memory_load", "tool_args": { "query": "tool argument format", "threshold": 0.7, "limit": 3 } } ~~~