Class: Llmemory::Maintenance::CognitivePass

Inherits:
Object
  • Object
show all
Defined in:
lib/llmemory/maintenance/cognitive_pass.rb

Overview

The cognitive maintenance pass closes CoALA’s learning loop in one scheduled step. Independently, the gem exposes consolidation (short-term -> semantic), reflection (episodic -> insights), skill mining (episodic -> procedural) and TTL expiry. This pass orchestrates them so an agent learns from its experience and keeps its memory healthy without the consumer wiring each step by hand.

Designed to run as a maintenance task (cron / Rails Job), per user. Each step is isolated: a failure in one is captured in the returned report (‘:errors`) and never aborts the others.

Returns:

{
  consolidated: true/false/nil,   # nil when no `memory:` was supplied
  insights: [insight_id, ...],
  mined: [proposal_or_skill_id, ...],
  expired: { episodic: N, procedural: M },
  errors: { reflect: "...", mine: "...", ... }   # only failed steps
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user_id, memory: nil, episodic: nil, procedural: nil, semantic: nil, llm: nil, reflect: true, mine_skills: nil, expire: true, reflection_window: 10, mining_window: Llmemory::SkillMining::Miner::DEFAULT_WINDOW) ⇒ CognitivePass

Returns a new instance of CognitivePass.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/llmemory/maintenance/cognitive_pass.rb', line 29

def initialize(user_id, memory: nil, episodic: nil, procedural: nil, semantic: nil,
               llm: nil, reflect: true, mine_skills: nil, expire: true,
               reflection_window: 10, mining_window: Llmemory::SkillMining::Miner::DEFAULT_WINDOW)
  @user_id = user_id
  @memory = memory
  @episodic = episodic
  @procedural = procedural
  @semantic = semantic
  @llm = llm
  @reflect = reflect
  @mine_skills = mine_skills.nil? ? Llmemory.configuration.skill_mining_enabled : mine_skills
  @expire = expire
  @reflection_window = reflection_window
  @mining_window = mining_window
end

Class Method Details

.run!(user_id, **kwargs) ⇒ Object



25
26
27
# File 'lib/llmemory/maintenance/cognitive_pass.rb', line 25

def self.run!(user_id, **kwargs)
  new(user_id, **kwargs).run!
end

Instance Method Details

#run!Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/llmemory/maintenance/cognitive_pass.rb', line 45

def run!
  report = { consolidated: nil, insights: [], mined: [], expired: { episodic: 0, procedural: 0 }, errors: {} }

  step(report, :consolidate) { report[:consolidated] = consolidate } if @memory
  step(report, :reflect)     { report[:insights] = reflect } if @reflect
  step(report, :mine)        { report[:mined] = mine } if @mine_skills
  step(report, :expire)      { report[:expired] = expire } if @expire

  report
end