The Improviser · Lesson 2 — The Setlist ← Course

The setlist — memory across sessions.

Start a new session and the window is wiped clean. So how does the model ever "remember" you at all?

The last two pages kept everything inside one session's window. Here's what surprises people: close that session, open a new one, and the window is wiped blank. The model has no idea what you played yesterday — or even a minute ago, in the session you just left.

So by default, the model does not remember you between sessions. Every new one is a fresh, silent stage. It's the same for a house band: the stage is cleared after every gig. If the bandleader wants to recall that you take it in B♭ next time, they have to write it on a setlist they carry between gigs.

That setlist is the trick — and it matters that the model itself never changes between sessions; nothing you say is learned into it. What persists is a small store of chosen facts saved outside the window: a name, a preference, a detail or two. At the start of a new session, a few are quietly loaded back into the fresh window, present from the very first note.

Tell the model a few things, then start a new session — on the left with the setlist off, on the right with it on. Watch what survives the wipe.

Session 1 — you've told the model three things. Start a new session with the setlist OFF or ON.
the setlist · saved outside the session
plays alto sax keys: B♭ feel: mellow
Setlist OFFthis session
window
Setlist ONthis session
window
Start a new session with the setlist…

Memory is just a list, loaded back in.

Remembering isn't the model holding on to your old sessions. It's a short list of facts, kept on the side and re-loaded into each new window at the start.

# a new session starts with an empty window — it remembers nothing on its own
window = [ {"role": "system", "content": brief} ]

# the setlist is a SEPARATE store that lives outside any single session
setlist = load_saved_facts(user)        # e.g. ["alto sax", "B♭", "mellow"]

# at the start of a new session, a few saved facts are loaded back in
if setlist:
    window.append({"role": "system",
                   "content": "About this player: " + "; ".join(setlist)})

# only now does the new session "know" you — the facts were re-loaded, not remembered
reply = model.play(window + [{"role": "user", "content": request}])

Two kinds of memory.

The session window is working memory — wiped clean the moment a session ends. The model only recognises you across sessions if it keeps a separate setlist of saved facts and loads them back into each new window. No setlist, no recognition.

So "remembering" isn't the model clinging to your past sessions. It's a small, deliberate list of facts, saved outside the window and re-loaded at the start — something you can usually see, edit, and delete.

Quick check · your ear
With the setlist ON, how does the new session "know" you take it in B♭?
Go deeper — how memory really works optional

It's retrieval, not recall

The setlist doesn't make the model's memory bigger — it hands the model a few facts as ordinary text at the start of a new window, exactly as if you'd typed them yourself. The model isn't reaching back into the past; something outside it is choosing what to put in front of it now. That "fetch the right notes and drop them into the window" pattern is a whole later lesson.

Who decides what's worth saving

Systems differ. Some let you write the setlist by hand; some try to spot save-worthy facts automatically; some do both. Because it's a plain list outside the window, it can usually be shown, edited, and deleted — which is why "what does it remember about me?" is a question you can actually answer.

The limits are the same limits

Reloaded facts still have to fit inside the window along with everything else — so a setlist can't be endless either. It's a small, curated handful, not a transcript of your whole history. The fixed ceiling from the last two pages never went away; the setlist just spends a little of it wisely.