Memory¶
DSAgt gives the agent two kinds of persistent memory backed by the project's vector store: explicit memory, facts the user confirms, and opt-in episodic memory, an automatic record of session turns. The agent retrieves them with the kb_get_memories and kb_search tools.

Explicit memory¶
Explicit memories are facts the user confirms during a session. The agent saves them via kb_remember, which writes to both the ChromaDB collection and <project>/.dsagt/explicit_memories.yaml. It fetches them via kb_get_memories on demand, typically when you ask it to recall something, so a session starts with none of them in context.
Episodic memory¶
When episodic memory is enabled, DSAgt reads the agent's transcript as the session runs and captures each completed turn into the session_memory collection, a local chunk-and-embed pass that reuses the embedder of the rest of the knowledge base.
Retrieval over session_memory filters first to a session, then by regex over the query's key terms, before a final recency-weighted semantic ranking: a newer turn gets a bounded boost, so a corrected fact wins by recency while a strongly relevant old turn still ranks.
Comparison with platform-native memory¶
Agent platforms provide their own memory: instruction files such as CLAUDE.md and .goosehints, and on some platforms notes the agent saves for itself. That memory is agent-curated (the model decides what is worth saving), stored as prose files loaded whole into context, and tied to one platform's format. DSAgt memory differs on each point:
- Mechanical capture. Episodic memory records every completed turn from the transcript; nothing depends on the model choosing to save it.
- Retrieval on demand. Memories are recalled by search with recency weighting, not loaded whole into context, so the record can grow without consuming the context window.
- One store across agents. The same collections and YAML files serve all five supported platforms, so memory persists across a switch of agent.
- Auditable facts. Explicit memories are user-confirmed and durable, with superseded entries kept in a history file.
Try it¶
dsagt init # name it `demo`; answer "yes" to "Enable episodic memory?" to also capture turns
dsagt start demo
Then, in the agent, explicit memory (you confirm a fact to store):
-
Remember that
samples.csvhas null values in the status and timestamp columns. -
(later, or in a new session) What do you remember about the samples dataset?
Confirm it persisted to disk:
And episodic memory (captured without a remember step):
-
For this dataset, treat any column with over 5% nulls as unusable.
-
(later, or in a new session) What null threshold did we agree on for unusable columns?
The agent recalls the decision from session_memory although you never stored it explicitly. Confirm the collection exists: