[{"data":1,"prerenderedAt":448},["ShallowReactive",2],{"docs-page-en-/usecase/blog/choosing_memos_integration":3,"surround-en-/usecase/blog/choosing_memos_integration":436},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":6,"description":13,"extension":430,"lead":6,"links":6,"meta":431,"navigation":6,"path":432,"seo":433,"stem":434,"__hash__":435},"docs/en/usecase/blog/choosing_memos_integration.md","Choosing a MemOS Integration for Your AI Agent",null,{"type":8,"value":9,"toc":420},"minimark",[10,14,17,28,31,36,39,121,129,137,140,142,146,149,158,167,175,178,187,189,193,200,212,224,231,252,260,262,266,279,294,311,314,316,320,323,344,356,359,361,365,368,402,405,408],[11,12,13],"p",{},"Imagine a customer returning three days after a replacement was approved. They want to know when it will ship, and they have a new delivery address. The agent handling this conversation needs the earlier approval, the updated address, and the current shipping status from the order system.",[11,15,16],{},"That gives you a useful starting point for choosing a memory system. You can follow a specific piece of information from the conversation where it first appeared to the task that needs it later.",[11,18,19,20,27],{},"We built MemOS to help applications ",[21,22,26],"a",{"href":23,"rel":24},"https://memos-docs.openmem.net/memos_cloud/getting_started/quick_start/",[25],"nofollow","carry context across conversations",". You can connect through a managed API, run the open-source service on your infrastructure, or add memory to a supported agent through a plugin. The right starting point depends on what you’re building and how you want to operate it.",[29,30],"br",{},[32,33,35],"h2",{"id":34},"choose-where-the-integration-will-run","Choose where the integration will run",[11,37,38],{},"For an application your team is developing, the first decision is whether to use our hosted service or manage the deployment yourself. If you’re adding memory to an existing agent environment, a plugin handles the connection between the agent and its memory.",[40,41,42,58],"table",{},[43,44,45],"thead",{},[46,47,48,52,55],"tr",{},[49,50,51],"th",{},"What you’re building",[49,53,54],{},"Where to start",[49,56,57],{},"What your team manages",[59,60,61,76,91,106],"tbody",{},[46,62,63,67,73],{},[64,65,66],"td",{},"An application that needs a hosted memory service",[64,68,69],{},[21,70,72],{"href":23,"rel":71},[25],"MemOS Cloud API",[64,74,75],{},"Application integration, user identity, and how recalled memories enter the model’s context",[46,77,78,81,88],{},[64,79,80],{},"A service running on your infrastructure",[64,82,83],{},[21,84,87],{"href":85,"rel":86},"https://github.com/MemTensor/MemOS",[25],"MemOS open-source framework",[64,89,90],{},"The service, storage dependencies, model configuration, and operations",[46,92,93,96,103],{},[64,94,95],{},"An OpenClaw or DeepSeek Harness setup using cloud memory",[64,97,98],{},[21,99,102],{"href":100,"rel":101},"https://memos-docs.openmem.net/openclaw/guide/",[25],"MemOS Cloud Plugin",[64,104,105],{},"The agent environment and plugin configuration",[46,107,108,111,118],{},[64,109,110],{},"An OpenClaw, Hermes Agent, or DeepSeek Harness setup with local memory storage",[64,112,113],{},[21,114,117],{"href":115,"rel":116},"https://docs.openmem.net/openclaw/local_plugin/",[25],"MemOS Local Plugin",[64,119,120],{},"The local runtime, model connections, and backups",[11,122,123,124,128],{},"With MemOS Cloud, we operate the memory service. Self-hosting gives you control over the code and infrastructure; our ",[21,125,127],{"href":85,"rel":126},[25],"reference Docker deployment"," runs the MemOS API alongside Neo4j and Qdrant.",[11,130,131,132,136],{},"The plugins connect memory to the agent’s normal execution. MemOS Cloud Plugin recalls relevant memories before a run and saves new messages afterward. MemOS Local Plugin maintains SQLite storage on the machine and combines vector and lexical retrieval. It also turns execution experience into reusable policies and Skills, with a Memory Viewer for inspecting the results. Its ",[21,133,135],{"href":115,"rel":134},[25],"local configuration"," includes model connections and optional team sharing, which you should review when deciding where data will be processed.",[11,138,139],{},"Once you’ve chosen a path, test the workflow you actually need. The examples below use MemOS Cloud’s interfaces.",[29,141],{},[32,143,145],{"id":144},"decide-what-the-next-conversation-needs-to-remember","Decide what the next conversation needs to remember",[11,147,148],{},"In the replacement case, the customer’s notification preference belongs with their personal history. The company’s replacement policy belongs in shared business knowledge. A procedure for checking an order and opening a replacement ticket may be useful across many customers.",[11,150,151,152,157],{},"Our ",[21,153,156],{"href":154,"rel":155},"https://memos-docs.openmem.net/usecase/customer_service_assistant/",[25],"customer service example"," separates these into user memories, Agent Skills, and a policy knowledge base. That lets the agent retrieve customer context alongside general procedures while continuing to consult the order and ticket systems for current business state.",[11,159,160,161,166],{},"MemOS Cloud provides ",[21,162,165],{"href":163,"rel":164},"https://memos-docs.openmem.net/memos_cloud/introduction/memory_types/",[25],"different memory categories"," for these purposes. Facts and preferences capture customer context. Event Memory preserves details about what happened, while Skills and Tool Memory capture reusable task experience. Profiles organize information into predefined fields when your application needs a structured view of a user.",[11,168,169,170,174],{},"The setup varies by category. A Profile requires a template bound to the user. Tool Memory needs tool-call information in the input, and a knowledge base needs uploaded content. Use ",[171,172,173],"code",{},"allow_memory_view"," to choose which categories may be generated from a write.",[11,176,177],{},"During development, inspect what the system extracts from a few representative conversations. “Please text me when it ships” is a preference. “If I move next month, I’ll need to change my address” is conditional. Your test should check whether that condition survives extraction.",[11,179,180,181,186],{},"For a closer look, our ",[21,182,185],{"href":183,"rel":184},"https://memos-docs.openmem.net/self_developed_model/extraction_usage_example/",[25],"memory extraction endpoint"," returns factual and preference candidates without writing them to the memory store. It supports synchronous extraction from text conversations, so your application can inspect the results or apply its own checks. After using the full write pipeline, inspect the stored records as well.",[29,188],{},[32,190,192],{"id":191},"make-the-returning-customer-easy-to-recognize","Make the returning customer easy to recognize",[11,194,195,196,199],{},"When the customer comes back through another channel, use the same ",[171,197,198],{},"user_id",". Your application should derive that identifier from its authenticated customer record.",[11,201,202,203,208,209,211],{},"MemOS Cloud’s ",[21,204,207],{"href":205,"rel":206},"https://memos-docs.openmem.net/memos_cloud/introduction/isolation_filters/",[25],"project and user scopes"," determine which personal memories a request searches. The API Key selects the project, and ",[171,210,198],{}," identifies the customer within it. Keep the API Key on your server and connect each request to your application’s access rules.",[11,213,214,215,218,219,223],{},"If several agents serve the same customer, you can tag memories with ",[171,216,217],{},"agent_id"," and filter by the agent that produced them. An agent can also have its own independent memory, for example to accumulate reusable support Skills. Enable ",[220,221,222],"strong",{},"Create Independent Memory for Agent"," in the project settings for that behavior; it is disabled by default.",[11,225,226,227,230],{},"A new conversation can still use the customer’s earlier memories. The ",[171,228,229],{},"conversation_id"," supplies conversational context and can influence relevance, but it does not automatically restrict retrieval to that session.",[11,232,233,234,239,240,243,244,247,248,251],{},"To find the information needed for the next response, our ",[21,235,238],{"href":236,"rel":237},"https://memos-docs.openmem.net/memos_cloud/mem_operations/search_memory/",[25],"Search Memory API"," combines keyword and vector retrieval with ranking, filtering, and deduplication. You can select memory categories with ",[171,241,242],{},"include_memory_view",", set the number of results with ",[171,245,246],{},"memory_limit_number",", and narrow the search using ",[171,249,250],{},"filter",".",[11,253,254,255,259],{},"In this case, inspect whether the search returns the replacement approval and relevant delivery details. Then check the context your application actually sends to the model. Our ",[21,256,258],{"href":23,"rel":257},[25],"application integration workflow"," shows where recalled memories are added to the prompt.",[29,261],{},[32,263,265],{"id":264},"handle-the-address-change","Handle the address change",[11,267,268,269,274,275,278],{},"Information that was accurate on Monday may need updating on Thursday. MemOS Cloud’s ",[21,270,273],{"href":271,"rel":272},"https://memos-docs.openmem.net/memos_cloud/introduction/time_awareness/",[25],"time-aware memory handling"," supports changing states and historical questions, so current information and earlier versions can serve different requests. When importing older conversations, provide ",[171,276,277],{},"chat_time"," to preserve when the information was recorded.",[11,280,281,282,287,288,293],{},"You also need a way to fix mistakes. If your support team knows which record is wrong, it can ",[21,283,286],{"href":284,"rel":285},"https://memos-docs.openmem.net/memos_cloud/mem_operations/update_memory/",[25],"update the memory by ID",", changing its content, title, or status. If the customer gives a correction in conversation, your backend can submit it through ",[21,289,292],{"href":290,"rel":291},"https://memos-docs.openmem.net/memos_cloud/mem_operations/add_feedback/",[25],"natural-language feedback"," with the relevant user and conversation context.",[11,295,296,297,302,303,306,307,310],{},"Follow the operation through to completion. Cloud writes use ",[21,298,301],{"href":299,"rel":300},"https://memos-docs.openmem.net/memos_cloud/features/async_mode/",[25],"asynchronous processing"," by default. Use the returned ",[171,304,305],{},"task_id"," to check ",[171,308,309],{},"get/status","; a completed task includes a summary of memory changes. Then retrieve the affected information again and confirm that the next response uses the updated address.",[11,312,313],{},"For the shipment itself, your application should still verify the address and order status through the business system before taking action.",[29,315],{},[32,317,319],{"id":318},"be-specific-about-deletion","Be specific about deletion",[11,321,322],{},"If the customer asks to remove their history, decide which records the request covers.",[11,324,151,325,333,334,337,338,340,341,343],{},[21,326,329,332],{"href":327,"rel":328},"https://memos-docs.openmem.net/memos_cloud/mem_operations/delete_memory/",[25],[171,330,331],{},"delete/memory"," endpoint"," accepts one of three targets per call: specific ",[171,335,336],{},"memory_ids",", a ",[171,339,198],{},", or an ",[171,342,217],{},". Each operation stays within the API Key’s project. Agent-wide deletion requires independent Agent memory to be enabled.",[11,345,346,347,352,353,251],{},"That endpoint does not accept a conversation ID or knowledge base ID as a deletion target. Knowledge Base files have a ",[21,348,351],{"href":349,"rel":350},"https://memos-docs.openmem.net/api_docs/knowledge/delete_kb_doc/",[25],"separate deletion endpoint"," that accepts ",[171,354,355],{},"file_ids",[11,357,358],{},"After deleting, repeat the relevant searches. Include any copies your application keeps in caches, exports, or logs when defining the full deletion workflow.",[29,360],{},[32,362,364],{"id":363},"try-the-whole-case-before-rolling-it-out","Try the whole case before rolling it out",[11,366,367],{},"Use the same replacement scenario throughout your pilot. A few variations will tell you more about the integration than a collection of unrelated prompts.",[369,370,371,378,384,390,396],"ol",{},[372,373,374,377],"li",{},[220,375,376],{},"Return in a new session."," Record the approval, then open another conversation for the same customer. Check whether the agent can continue the case without asking for information already provided.",[372,379,380,383],{},[220,381,382],{},"Change a detail."," Update the delivery address or switch the notification preference from email to text. Inspect the stored change and the next response.",[372,385,386,389],{},[220,387,388],{},"Include a conditional statement."," Try “If I move to Seattle, I’ll need to update my address.” Check that a possible move has not become a confirmed address change.",[372,391,392,395],{},[220,393,394],{},"Use another customer account."," Repeat the question as a different user. Inspect the request’s identity mapping and make sure the original customer’s personal information is absent.",[372,397,398,401],{},[220,399,400],{},"Remove the test records."," Delete the intended memories and search again. If the workflow uses Knowledge Base files, test their removal separately.",[11,403,404],{},"Track how long new information takes to become retrievable, along with p95 latency, token usage, and time spent investigating failures. Compare task outcomes with and without memory: whether the agent gives the correct next step, how often the customer has to repeat themselves, and whether corrections carry into later conversations.",[11,406,407],{},"Keep a short record of the configuration, results, and issues still to resolve. That record should make it clear why the chosen deployment fits your application.",[11,409,151,410,414,415,419],{},[21,411,413],{"href":23,"rel":412},[25],"Cloud quick start"," walks through the first write and retrieval. If you’re running the service yourself, begin with the ",[21,416,418],{"href":85,"rel":417},[25],"self-hosting instructions",". Bring one complete customer case through the integration before expanding to more workflows.",{"title":421,"searchDepth":422,"depth":422,"links":423},"",2,[424,425,426,427,428,429],{"id":34,"depth":422,"text":35},{"id":144,"depth":422,"text":145},{"id":191,"depth":422,"text":192},{"id":264,"depth":422,"text":265},{"id":318,"depth":422,"text":319},{"id":363,"depth":422,"text":364},"md",{},"/en/usecase/blog/choosing_memos_integration",{"title":5,"description":13},"en/usecase/blog/choosing_memos_integration","YZiXpO_Zqe0yJ2oJ7DLFqO9-HvqkwhbMFvlLryEyWUk",[437,443],{"title":438,"path":439,"stem":440,"framework":6,"module":6,"class":441,"target":-1,"active":442,"defaultOpen":442,"children":-1,"description":-1},"How to Keep Bad Assumptions Out of Agent Memory","/usecase/blog/keep_bad_assumptions_out_of_agent_memory","usecase/blog/keep_bad_assumptions_out_of_agent_memory",[],false,{"title":444,"path":445,"stem":446,"framework":6,"module":6,"class":447,"target":-1,"active":442,"defaultOpen":442,"children":-1,"description":-1},"Persistent Agent Memory Should Make the Next Task Easier","/usecase/blog/persistent_agent_memory_next_task","usecase/blog/persistent_agent_memory_next_task",[],1791891527012]