Skip to main content
A useful agent gets sharper the more you use it: generic patterns at first, your conventions after a few weeks of use, eventually anticipating what you need. That compounding behavior comes from LearningMachine. Three agents in the demo use it.

The shape

Four learning stores, each opt-in: LearningMode.ALWAYS runs the extractor on every turn. LearningMode.AGENTIC gives the agent tools to write learnings when it judges them worth keeping. See Learning Modes.

Why this beats vanilla memory

Vanilla enable_agentic_memory=True gives you one bucket. The agent dumps facts into it. Useful, but flat. LearningMachine separates concerns:
  • User profile is “this is who I’m talking to” (one record, updated in place).
  • Entity memory is “this is who/what they’re talking about” (graph of nodes and edges).
  • Session context is “this is the plan for this conversation” (scoped to one session).
  • Learned knowledge is “this is something I want to remember for next time” (general patterns).
Each store has its own retrieval path. The agent gets the right slice of memory at the right point in the run.

Dash’s learning loop

Dash uses learning differently. The Engineer agent runs SQL, hits errors, diagnoses them, and saves the fix as learned knowledge:
The agent gets save_learning(title, learning) and search_learnings(query) tools. Once. The next time the same error pattern shows up, it pulls the fix from learnings instead of rediscovering it. This is what makes the Dash team self-improving. After a few weeks of use, the same questions take fewer iterations because the right-shaped learnings are already in the store.

See it in action

Source: agents/contacts/, agents/dash/, Learning docs

Next

MCP →