Intermediate~28 minHazelJS
Memory Layers in HazelJS
Wire enableMemory / MemoryModule peers without collapsing every store into the prompt—with execute examples.
- Authors
- editorial-team
- Published
- Last reviewed
Progress is stored locally in this browser.
Direct answer
Use MemoryModule / MemoryService / documented stores for long-term memory peers; toggle enableMemory per execute and pass a stable sessionId. Keep working context assembled per step—do not dump the entire store into every prompt.
Pattern: /patterns/memory-layers. Docs: Memory, guide.
Note: AgentMemoryGraph appears in capability tables but lacks full usage docs—do not depend on it until documented.
Worked example — session memory on execute
typescript
@Agent({
name: 'concierge',
enableMemory: true,
maxSteps: 8,
})
export class ConciergeAgent {
@Tool({ description: 'Save a short preference note' })
async rememberPreference(input: { key: string; value: string }) {
// Prefer MemoryService APIs from @hazeljs/memory when wired in DI
return { ok: true, key: input.key };
}
}
// Same user across turns — sessionId correlates memory
await runtime.execute('concierge', 'I prefer email over SMS', {
sessionId: 'user-42',
userId: 'user-42',
enableMemory: true,
maxSteps: 6,
});
await runtime.execute('concierge', 'How should we notify you?', {
sessionId: 'user-42',
enableMemory: true,
});
Layer map
| Layer | Lives in | Example |
|---|---|---|
| Working | Assembled per step | Goal + last tool obs |
| Session | Memory peer + sessionId | “prefers email” |
| Long-term | Persistent memory store | Account facts |
| Artifacts | Object store / URLs | PDF invoice pointer |
Next
Artifact: Layer map: working / session / long-term / artifacts for one agent