Class: Mneme::PassiveRecall
- Inherits:
-
Object
- Object
- Mneme::PassiveRecall
- Defined in:
- lib/mneme/passive_recall.rb
Overview
Passive recall — automatic memory surfacing triggered by Goal updates. When goals are created or updated, searches message history for related context and enqueues phantom tool_call/tool_response pairs via the PendingMessage pipeline.
Phantom pairs are promoted into real Message records by Session#promote_pending_messages! between agent loop rounds, then ride the conveyor belt like regular messages — cached as part of the stable prefix, compressed by Mneme on eviction.
Constant Summary collapse
- TOOL_PAIR_OVERHEAD_TOKENS =
Estimated token overhead for a tool_use wrapper (name + input fields).
50
Instance Method Summary collapse
-
#call ⇒ Integer
Searches message history using active goal descriptions as queries.
-
#initialize(session) ⇒ PassiveRecall
constructor
A new instance of PassiveRecall.
Constructor Details
#initialize(session) ⇒ PassiveRecall
Returns a new instance of PassiveRecall.
21 22 23 |
# File 'lib/mneme/passive_recall.rb', line 21 def initialize(session) @session = session end |
Instance Method Details
#call ⇒ Integer
Searches message history using active goal descriptions as queries. Enqueues phantom recall pairs for new results not already recalled.
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/mneme/passive_recall.rb', line 29 def call goals = @session.goals.active.root.includes(:sub_goals) return 0 if goals.empty? search_terms = build_search_terms(goals) return 0 if search_terms.blank? results = Mneme::Search.query(search_terms, limit: Anima::Settings.recall_max_results) results = filter_duplicates(results) (results) end |