Skip to content

blog: One Bank or Many? A Field Guide to Structuring Agent Memory#2747

Merged
benfrank241 merged 4 commits into
mainfrom
feat/bank-strategy-blog
Jul 16, 2026
Merged

blog: One Bank or Many? A Field Guide to Structuring Agent Memory#2747
benfrank241 merged 4 commits into
mainfrom
feat/bank-strategy-blog

Conversation

@benfrank241

Copy link
Copy Markdown
Member

New non-integration feature/concept post: how to decide what a Hindsight bank should represent.

The idea

A bank is a recall boundaryrecall/retain/reflect all stay inside one bank and there is no cross-bank query. So every scoping decision reduces to: if A retains a memory, should B be able to recall it?

What it covers

  • The recall-boundary mental model + lazy bank creation (a new bank_id = an empty bank)
  • Axis 1 — what one bank represents: global / per-user / per-repo / per-agent / shared, each with where it bites
  • Axis 2tags + tags_match as a within-bank partition, and why any (includes untagged) makes tags a soft partition, not a security control
  • The built-in config surface: dynamicBankId / dynamicBankGranularity (Claude Code), bankGranularity (Paperclip), oh-my-pi's global / per-project / per-project-tagged
  • Anti-patterns (bank-per-conversation as a strategy, one global bank in multi-tenant, over-fragmentation, unstable ids) + a decision checklist

Grounding

Every claim was verified against the source (bank model, per-bank query scoping, no cross-bank recall, tag SQL semantics) and the integration configs. Companion to Inside retain().

Cover: editorial family (matches Inside retain()), 1600x900.

🤖 Generated with Claude Code

A field guide to bank strategy in Hindsight: a bank is a recall
boundary, when to use separate banks vs tags within one bank, the
dynamicBankId/granularity config, anti-patterns, and a decision
checklist. All claims grounded in the source.
Tone down the opening 'one architectural choice' claim, and add a
'Does one bank or many affect performance?' section: memories live in
one table with bank_id as a column (per-bank vector index on the
default Postgres backend), so one-vs-many is a correctness decision,
not a performance one.
Soften the description's 'one architectural decision / useful or a
liability' framing, and make the performance section modest: number of
banks is usually not the lever for recall speed, rather than asserting
either shape always performs well.
@benfrank241
benfrank241 merged commit 685e50b into main Jul 16, 2026
86 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant