Universal agents require universal memory

ashumz1 pts0 comments

How we built Slack agents with unified memory | Blog<br>Table of contents<br>Explorations of approaches to building memoryVector embedded memoryFilesystem / Graph memoryStoring semantic memory in vector DB isn’t enoughCompany wide memoryWhat’s next

Share this article<br>X IconLinkedIn Icon

Sign up and get free credits when you add Adapt to Slack.<br>Sign up

Product

Jun 29, 2026<br>How we built Slack agents with unified memory

Matthew Wang<br>Product Engineer

Table of contentsExplorations of approaches to building memoryVector embedded memoryFilesystem / Graph memoryStoring semantic memory in vector DB isn’t enoughCompany wide memoryWhat’s next

li]:marker:font-medium [&_table]:w-full [&_th]:border [&_th]:border-border-subtle [&_th]:px-12 [&_th]:py-10 [&_th]:text-body-regular [&_th]:font-medium [&_th]:text-content-primary [&_th]:text-left [&_td]:border [&_td]:border-border-subtle [&_td]:px-12 [&_td]:py-10 [&_td]:text-body-regular [&_td]:text-content-secondary [&_td]:text-left [&_pre]:bg-bg-secondary [&_pre]:border [&_pre]:border-border-subtle [&_pre]:rounded-md [&_pre]:p-16 [&_pre]:overflow-x-auto [&_code]:font-mono [&_code]:text-body-regular [&_.payload-richtext>*]:mb-[2.4rem] [&_.lexical-table-container]:overflow-x-auto [&_.lexical-table-container]:rounded-md [&_.lexical-table-container]:border [&_.lexical-table-container]:border-border-subtle [&_thead]:bg-bg-secondary [&_th]:!border [&_th]:!border-border-subtle [&_th]:!px-12 [&_th]:!py-10 [&_th_p]:!text-body-regular [&_th_p]:!font-medium [&_td]:!border [&_td]:!border-border-subtle [&_td]:!px-12 [&_td]:!py-10 [&_td]:font-normal [&_td_p]:!text-body-regular [&_td_p]:!font-normal">Hi I’m Matt, I’m one of the product engineers at Adapt building the Adapt agent. We’ve been building a Slack AI agent that connects across all of your apps and interacts with them through tools. Our customers use Adapt to query data, automate actions across apps they use.<br>We wanted the Adapt agent to be shared. This means everyone in a company uses the same agent. Context is shared across your organization and Adapt does get smarter for everyone the more you use it.<br>To achieve this, we researched building long term memory for agents. We want Adapt to learn your business process, information, and decisions. If Adapt sees a repeat instruction, it will recognize that pattern and know what to do. We recently shipped out improvements to our memory system, and I wanted to share some techniques we tried.<br>Explorations of approaches to building memory<br>We did some initial exploration by reading about how others are thinking about implementing memory. This article from IBM does a great job describing the different forms of memory. The article called out different subcategories of long term memory (LTM):<br>Episodic memory: the ability to remember decisions in the past, and recall that to make decisions in the future.<br>Semantic memory: Storing factual information, events, information. Memory of the knowledge base.<br>Procedural memory: Store and recall skills, rules, and workflows to help the agent improve efficiency. Remembering the ‘how’ not ‘what’.<br>Here are some of today’s most popular approaches to implementing a memory system:<br>Vector embedded memory<br>One way of building memory is through using a vector database. When we want to store a piece of memory, it is stored as a semantic embedding in the vector database. On retrieval time, the agent will query that vector database with a similarity search such as cosine similarity.<br>Vector embedding storage and retrieval is very cheap to run and scales, which is why this approach is popular. It falls short on understanding memory relationships, and expiring outdated information.<br>Filesystem / Graph memory<br>Agents are given read, write, traversal tools that they can use to browse through a filesystem and search for context. When an agent creates or updates a memory, it finds a relevant file in the filesystem and creates / updates a markdown file. Information has a hierarchy and is relational instead of fragmented.<br>Filesystems don’t scale to millions of records, and retrieval is more expensive as the agent has to traverse the filesystem to find and read the relevant memories.<br>Storing semantic memory in vector DB isn’t enough<br>Our first attempt at company-wide memory was storing semantic memory. We did this through a vector embedding store.

Here’s the flow of how memory is retrieved:<br>The user query is converted into chunks for retrieval.<br>Using those user query chunks, we run a cosine similarity search on the vector DB to retrieve the top k similar knowledge results. We filter out knowledge that does not meet a similarity threshold.<br>We load the remaining knowledge chunks into the conversation context.<br>Here’s the flow for memory storage:<br>The agent has a `save_knowledge` tool that it can use to save knowledge snippets, with guidance on how to generate keywords for the embedding, and creating the content to save. The agent also has guidance in its system prompt on what to save...

memory border vector agent text adapt

Related Articles