[ ABORT TO HUD ]
SEQ. 1
SEQ. 2
SEQ. 3

Adding Memory & Persistence

🛠️ Build Your First Agent12 min100 BASE XP

Making Your Agent Remember

Our basic agent forgets everything between sessions. Let's fix that.

Level 1: In-Memory History

const sessions = new Map();

async function chat(sessionId: string, userMessage: string) {
  if (!sessions.has(sessionId)) sessions.set(sessionId, []);
  const messages = sessions.get(sessionId);
  messages.push({ role: "user", content: userMessage });
  
  const response = await runAgentLoop(messages, tools);
  messages.push({ role: "assistant", content: response });
  return response;
}

Level 2: Persistent Storage

import { readFileSync, writeFileSync } from "fs";

function saveSession(id: string, messages: any[]) {
  writeFileSync(`./sessions/${id}.json`, JSON.stringify(messages));
}
function loadSession(id: string): any[] {
  try { return JSON.parse(readFileSync(`./sessions/${id}.json`, "utf-8")); }
  catch { return []; }
}

Level 3: Semantic Memory (Vector DB)

// After each turn, store the key facts:
await vectorDB.add({
  text: `User asked about ${topic}. Key facts: ${facts}`,
  metadata: { userId, timestamp, sessionId }
});

// Before responding, recall relevant memories:
const memories = await vectorDB.query(userMessage, { topK: 3 });

Memory Decision Tree

NeedSolutionComplexity
Remember within a sessionIn-memory arrayLow
Resume after restartFile/DB persistenceLow-Medium
Recall from any past chatVector DB (Chroma)Medium
Learn preferences over timeUser profiles + vector searchMedium-High
🎯 Pro Tip: Start with Level 1. Only add persistence when needed. Over-engineering memory early is a common trap.
SYNAPSE VERIFICATION
QUERY 1 // 2
What is the simplest way to give an agent memory?
Vector database
In-memory message array passed on each turn
Fine-tuning
Graph database
Watch: 139x Rust Speedup
Adding Memory & Persistence | Build Your First Agent — AI Agents Academy