{"slug": "universal-agents-require-universal-memory", "title": "Universal agents require universal memory", "summary": "Adapt, a company building AI agents for Slack, has developed a unified memory system that allows its agent to learn and share context across an entire organization. The system stores semantic memory in a vector database, enabling the agent to recall past decisions and automate repeated tasks. This approach aims to make the agent smarter for everyone as it is used more.", "body_md": "Product Engineer\n\nProduct\n\n# How we built Slack agents with unified memory\n\nHi 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.\n\nWe 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.\n\nTo 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.\n\n## Explorations of approaches to building memory\n\nWe did some initial exploration by reading about how others are thinking about implementing memory. This [article from IBM](https://www.ibm.com/think/topics/ai-agent-memory) does a great job describing the different forms of memory. The article called out different subcategories of long term memory (LTM):\n\n- Episodic memory: the ability to remember decisions in the past, and recall that to make decisions in the future.\n- Semantic memory: Storing factual information, events, information. Memory of the knowledge base.\n- Procedural memory: Store and recall skills, rules, and workflows to help the agent improve efficiency. Remembering the ‘how’ not ‘what’.\n\nHere are some of today’s most popular approaches to implementing a memory system:\n\n### Vector embedded memory\n\nOne 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.\n\nVector 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.\n\n### Filesystem / Graph memory\n\nAgents 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.\n\nFilesystems 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.\n\n## Storing semantic memory in vector DB isn’t enough\n\nOur first attempt at company-wide memory was storing semantic memory. We did this through a vector embedding store.\n\nHere’s the flow of how memory is retrieved:\n\n- The user query is converted into chunks for retrieval.\n- 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.\n- We load the remaining knowledge chunks into the conversation context.\n\nHere’s the flow for memory storage:\n\n- 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 / not save.\n- On every turn, the Adapt agent can choose whether or not to save knowledge. When it wants to save knowledge, it will call the tool. The tool then creates a new org-wide knowledge entry with the embeddings.\n\nA semantic memory system like works great as a memory cache. Rather than having to call integrations to fetch information at every turn, this system loads up relevant memory on the fly, saving tokens and speeding up turns.\n\nThere are two main weaknesses to this memory approach. First is that the information stored in this memory cache can be outdated. We have no way of knowing whether or not a piece of memory is up to date, unless we re-fetch that information from the source. The second is that vector embeddings don’t always pull up relevant results. A cosine similarity search returns the top N best guesses, but there’s no guarantee that these results are relevant. We’ve seen instances where memory retrieved is completely irrelevant from the original request.\n\n## Company wide memory\n\nRecently, we’ve been experimenting with the concept of global company-wide memory. It’s a single markdown-like file that is shared and always injected into the context. The Adapt agent deployed in your company are accumulating knowledge about how you run your company, then building a mapping of that in the company-wide memory.\n\nWe considered context implications when storing company-wide memory. Since it’s a shared doc and always loaded into context, we have to be picky about what knowledge we choose to store. The knowledge must be durable (true for months), useful context for company operations, and guide the Adapt agent to provide the correct answers.\n\nWe decided on the following categories on what to store:\n\n- Org structure - Who does what, who is in charge of what\n- Processes - How the company operates\n- Data and systems topology\n- Vocabulary\n- Decisions and policies\n\nA full company wide knowledge doc might look like the following:\n\n`# Adapt global knowledge`\n\n`This is shared tribal knowledge of how Adapt's company operates. Anything not in here, use the tools / integrations you have for lookup.`\n\n`## Policies (always apply)`\n\n`- External customer comms must be reviewed by Marketing before sending.`\n\n`- #general is announcements-only. Never post there.`\n\n`- Issue tracking is Linear. Do not suggest or use Jira.`\n\n`- Never paste customer PII or secrets into a chat. Pull it live, reference by ID.`\n\n`- Production DB writes require sign-off from the owning team's eng lead.`\n\n`## Org map (who owns what / who to ask)`\n\n`- Payments — billing, invoicing, Stripe integration. Lead: Sarah Chen (eng).`\n\n`- Metering — usage ingestion + aggregation pipeline. Lead: Diego Park (eng).`\n\n`- Growth — acquisition, onboarding, lifecycle email. Lead: Priya Nair.`\n\n`- Data — owns the Snowflake warehouse and all analytics models.`\n\n`- Escalation: production incidents -> on-call in #incidents; billing disputes -> Finance.`\n\n`## Where things live (source of truth)`\n\n`- Revenue & finance metrics: Snowflake `finance.*` (query live; do not cache numbers).`\n\n`- Usage/metering data: Snowflake `metering.events`, rolled up in `metering.daily`.`\n\n`- Issues & incidents: Linear (incidents use the `incident` label).`\n\n`- Product specs & PRDs: Notion \"Product\" space.`\n\n`- Support tickets: Zendesk. Account health & contract terms: Salesforce.`\n\n`- Release announcements: #eng-releases. Customer-facing changelog: Notion \"Changelog\".`\n\n`## Definitions & vocabulary`\n\n`- ARR = committed annual contract value, excluding one-time and usage overages.`\n\n`- Active org = an org with at least one API call in the last 28 days.`\n\n`- Project Atlas = the in-progress billing-engine migration (target Q3).`\n\n`- Fiscal year starts in February.`\n\n`## How we operate (key recurring processes)`\n\n`- Deploy: merge to main -> CI -> manual approve in #eng-releases. Owner: eng lead of the service.`\n\n`- Incident: open a Linear issue with `incident`, post in #incidents, assign on-call.`\n\n`- Weekly metrics review: Mondays; numbers pulled fresh from Snowflake `finance.*`.`\n\n`(Full step-by-step procedures live as individual entries — look them up when running one.)`\n\n## What’s next\n\nToday, both memory systems work in tangent together to make up Adapt’s memory system. Some of the future improvements to memory that we are exploring at the moment:\n\n- We're looking into creating a background job that is constantly running, scanning through your data sources to make sure that the memory cache layer is up to date. This would consist of looking at old memory pieces, spinning up a background agent to scan and verify whether or not that snippet of knowledge is up to date.\n- For company-wide knowledge, creating a database that stores company-wide knowledge indexed on the creator and category, over using a single markdown-like file. This will help with handling collisions when it comes to editing company-wide knowledge and granular controls on what should be retrieved into the context from the knowledge.\n\n## You might also like\n\n[Product](/blog/loops-agentic-workflows-for-teams)\n\n### Loops for the whole team: agentic workflows beyond the coding agent\n\nLoops are goal-directed AI workflows that run without constant prompting. What they really are, where the hype breaks down, and how teams can apply them well.\n\n[Product](/blog/chasing-fable)\n\n### Chasing Fable\n\nA long, long time ago, about 2 weeks to be precise, in a land called San Francisco a new model was dropped by a company named Anthropic.\n\n[Work AI](/blog/best-ai-tools-for-marketing-2026)\n\n### Our favorite AI tools for marketing\n\nOur favorite AI marketing tools that integrate with AI agents.\n\n## Every company will have a brain.\n\nIt's inevitable.\n\nGet started in minutes, not months.", "url": "https://wpnews.pro/news/universal-agents-require-universal-memory", "canonical_source": "https://adapt.com/blog/unified-memory", "published_at": "2026-06-30 06:21:32+00:00", "updated_at": "2026-06-30 06:50:26.654896+00:00", "lang": "en", "topics": ["ai-agents", "large-language-models", "ai-products", "ai-tools", "ai-infrastructure"], "entities": ["Adapt", "Slack", "IBM", "Matt"], "alternates": {"html": "https://wpnews.pro/news/universal-agents-require-universal-memory", "markdown": "https://wpnews.pro/news/universal-agents-require-universal-memory.md", "text": "https://wpnews.pro/news/universal-agents-require-universal-memory.txt", "jsonld": "https://wpnews.pro/news/universal-agents-require-universal-memory.jsonld"}}