Hierarchical Store
Three-tier memory matching how humans actually use memory. Each tier has different retention, retrieval cost, and query semantics.
Tiers
| Tier | Retention | Use for |
|---|---|---|
| working | minutes (auto-expires) | The current task's scratch — files open, hypotheses, in-flight decisions |
| short | hours-days | Recent session context — what was decided this morning |
| long | indefinite (until pruned) | Cross-session facts, patterns, lessons |
API
agentdb_hierarchical_store(
key: <namespace key> // e.g. 'task:auth-refactor:hypothesis'
tier: 'working' | 'short' | 'long'
value: <stringified content>
ttl?: <seconds> // overrides tier default
metadata?: { topic, project, ... }
)
agentdb_hierarchical_recall(
query: <semantic or exact key>
tier?: <filter> // omit to search all tiers
k?: 5
)
agentdb_hierarchical_delete(
key: <namespace key>
tier?: <filter>
)
The delete tool was added in agentdb 3.0.0-alpha.13. Before that, there was no first-class way to remove an entry — re-indexing workflows like ruflo's /adr-index couldn't purge stale ADRs. Now they can.
Recall flow
- Query
workingfirst — it's smallest, freshest, highest signal for "what am I doing right now." - Fall back to
shortif working returns nothing. - Search
longlast for established knowledge. - Or search all three with
tier=undefinedand let the bandit weight by tier × similarity.
Don't
- Don't put long-term facts in
working— they expire and you lose them. - Don't put session scratch in
long— it pollutes searches forever. - Don't forget to set TTL when overriding tier defaults; the engine won't infer it.
Source: ruvnet/agentdb — distributed by TomeVault.