{"id":180695,"date":"2026-07-19T18:49:20","date_gmt":"2026-07-19T18:49:20","guid":{"rendered":"https:\/\/ktromedia.com\/?p=180695"},"modified":"2026-07-19T18:49:20","modified_gmt":"2026-07-19T18:49:20","slug":"context-vs-memory-engineering-in-agentic-ai-systems","status":"publish","type":"post","link":"https:\/\/ktromedia.com\/?p=180695","title":{"rendered":"Context vs. Memory Engineering in Agentic AI Systems"},"content":{"rendered":"<div id=\"\">\n<p>In this article, you will learn how context engineering and memory engineering solve different problems in agentic AI systems, and how the two disciplines meet at the point where retrieved memory enters the context window.<\/p>\n<p>Topics we will cover include:<\/p>\n<ul>\n<li>What context engineering involves, including selective inclusion, structural placement, and compression, and why it matters for reasoning quality within a single inference call.<\/li>\n<li>What memory engineering involves, including write policy design, storage layer selection, retrieval strategy, and maintenance, and how these shape long-term reliability.<\/li>\n<li>How memory and context engineering meet at the retrieval boundary, and the two most common failure modes that occur when this boundary is not managed well.<\/li>\n<\/ul>\n<p>With that framing in place, here\u2019s how each discipline works.<\/p>\n<p><\/p>\n<h2>Introduction<\/h2>\n<p>As <a href=\"https:\/\/cloud.google.com\/discover\/what-are-ai-agents\" target=\"_blank\">AI agents<\/a> move into longer workflows and multi-session use cases, a familiar pattern emerges. Constraints get dropped mid-task, retrieved information resurfaces when it shouldn\u2019t, and context from an earlier step bleeds into the current one. The failures are hard to pinpoint because no single component is obviously at fault.<\/p>\n<p>Most of the time, the problem lies in two areas that get built together, conflated, or skipped: <a href=\"https:\/\/www.anthropic.com\/engineering\/effective-context-engineering-for-ai-agents\" target=\"_blank\">context engineering<\/a> and <a href=\"https:\/\/www.mongodb.com\/company\/blog\/technical\/why-multi-agent-systems-need-memory-engineering\" target=\"_blank\">memory engineering<\/a>. They are related but distinct, fail in different ways, and require different systems to get right.<\/p>\n<p>This article covers the core decisions behind each discipline and where they interact:<\/p>\n<ul>\n<li>What context engineering involves and the specific decisions that determine whether an agent reasons well within a single call<\/li>\n<li>What memory engineering involves and how write policy, storage, retrieval, and maintenance each affect long-term reliability<\/li>\n<li>How the two disciplines share a boundary at retrieval time and what it takes to manage that boundary well<\/li>\n<\/ul>\n<p>Understanding both, separately and together, is what determines whether an agent holds up across real workloads.<\/p>\n<h2>An Overview of Context and Memory Engineering<\/h2>\n<p><a href=\"https:\/\/www.anthropic.com\/engineering\/effective-context-engineering-for-ai-agents\" target=\"_blank\">Context engineering<\/a> covers the design of a single inference call: what to include, what to compress, where to place things, and what to discard. Everything in scope is ephemeral; when the call ends, the window clears.<\/p>\n<p><a href=\"https:\/\/www.mongodb.com\/company\/blog\/technical\/why-multi-agent-systems-need-memory-engineering\" target=\"_blank\">Memory engineering<\/a> focuses on what survives beyond a single interaction with a model. It encompasses the systems and policies responsible for writing, storing, retrieving, updating, and governing information so that future interactions can make use of it. When an agent recalls information from a previous session, coordinates with another agent, or applies a user preference learned days or weeks earlier, it is relying on memory engineering rather than context engineering.<\/p>\n<p>While context engineering determines what information is available to the model during a specific request, memory engineering determines what information persists across requests and how that information is maintained, retrieved, and trusted over time. Here\u2019s an overview:<\/p>\n<table style=\"width: 100%;border-collapse: collapse;font-family: Arial, sans-serif;font-size: 14px;color: #333\">\n  <!-- Table Header --><\/p>\n<thead>\n<tr>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">Aspect<\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">Context Engineering<\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">Memory Engineering<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Scope<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">One inference call<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Across calls, sessions, agents<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Where data lives<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Inside the model\u2019s active window<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">External stores: vector DB, K\/V, relational<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Primary problem<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">What to include and how to arrange it<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">What to persist, retrieve, and trust<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Fails when<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Window fills, placement is wrong, noise overwhelms signal<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Retrieval misses, staleness, poisoning, no write policy<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Engineering surface<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Prompt structure, compression, token budgeting<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Storage schema, retrieval strategy, write and update policies<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Lifespan of data<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Duration of one LLM call<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Depends on the memory type<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Context Engineering: Assembling the Optimal Context Window<\/h2>\n<p><a href=\"https:\/\/www.anthropic.com\/engineering\/effective-context-engineering-for-ai-agents#the-anatomy-of-effective-context#why-context-engineering-is-important-to-building-capable-agents\" target=\"_blank\">For an agent running a multi-step workflow, every inference call assembles a context window from multiple sources<\/a>: system prompt, task description, conversation history, tool outputs, retrieved documents, subagent summaries. Context engineering is the set of decisions that determine what each component contributes, in what form, and in what position.<\/p>\n<h3>Selective Inclusion<\/h3>\n<p><a href=\"https:\/\/weaviate.io\/blog\/context-engineering#the-context-window-challenge\" target=\"_blank\">Not everything available should enter the context<\/a>. A database query returning hundreds of rows, a web search returning five complete articles, a code executor logging verbose output \u2014 all of these bloat the window and reduce reasoning quality before the token limit is reached. The decision about what gets included verbatim, what gets compressed to key facts, and what gets dropped is a design choice, not a default.<\/p>\n<h3>Structural Placement<\/h3>\n<p><a href=\"https:\/\/www.anthropic.com\/engineering\/effective-context-engineering-for-ai-agents#the-anatomy-of-effective-context\" target=\"_blank\">Where information sits in the window affects how reliably the model uses it<\/a>. Models attend more strongly to content at the beginning and end of long contexts, with material in the middle receiving significantly less weight. This is known as the <a href=\"https:\/\/arxiv.org\/abs\/2307.03172\" target=\"_blank\">\u201clost in the middle\u201d effect<\/a>.<\/p>\n<p>Hard constraints and task-critical instructions belong at the top of the window. Retrieved information that is most relevant to the current task should be placed near the end of the context window.<\/p>\n<p>The current user query or task should typically follow the retrieved information, positioning both the relevant context and the immediate objective as close as possible to the generation point. This arrangement increases the likelihood that the model will effectively use the retrieved information when producing its response.<\/p>\n<div style=\"width: 810px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486958_915_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\" alt=\"Context Engineering Overview\" width=\"800\" height=\"706\"\/><\/p>\n<p class=\"wp-caption-text\">Context Engineering Overview<\/p>\n<\/div>\n<h3>Compression on Arrival<\/h3>\n<p>Tool outputs should be compressed after a call returns, not after the window fills. A raw API response carrying 3,000 tokens, of which the agent needs only 150, should be summarized before it enters context for the next step. Waiting until the window is full and then scrambling to truncate is reactive management of a problem that compression at the source prevents.<\/p>\n<h3>Conversation History Management<\/h3>\n<p><a href=\"https:\/\/www.langchain.com\/blog\/context-management-for-deepagents#summarization\" target=\"_blank\">Conversation history<\/a> grows faster than any other context component. For long-running agents, carrying the full history into every call makes every subsequent inference more expensive and less reliable. A compression strategy \u2014 rolling window, hierarchical summarization, or structured state extraction \u2014 should be applied at defined intervals, not when the window overflows.<\/p>\n<h2>Memory Engineering: Designing Persistent AI Memory Systems<\/h2>\n<p>Once an inference call completes, memory engineering determines what deserves to persist and under what conditions it gets used again. This covers four distinct concerns: what to write, where to store it, how to retrieve it, and how to keep it accurate over time.<\/p>\n<h3>Write Policy Design<\/h3>\n<p>Write policy design is one of the most overlooked aspects of memory engineering, yet it has a disproportionate impact on memory quality over time. While retrieval systems often receive the most attention, retrieval quality is ultimately constrained by what enters the memory store in the first place.<\/p>\n<p>A well-defined write policy specifies:<\/p>\n<ul>\n<li>What events trigger a write to memory<\/li>\n<li>Which information is eligible for storage<\/li>\n<li>The format in which information is stored, such as raw text, structured records, extracted facts, or summaries<\/li>\n<li>The confidence or validation requirements for accepting new entries<\/li>\n<li>Which agents, tools, or system components are permitted to write to specific memory namespaces<\/li>\n<li>How updates, corrections, and conflicting information are handled<\/li>\n<li>Retention rules, expiration policies, and time-to-live (TTL) requirements for different memory types<\/li>\n<\/ul>\n<p>Without explicit write policies, systems often default to storing too much information, assigning equal trust to all entries, and retaining data indefinitely. Over time, low-value and outdated memories accumulate, signal-to-noise ratios decline, and retrieval quality degrades. The result is a memory system that grows continuously while becoming progressively less useful.<\/p>\n<h3>Storage Layer Selection<\/h3>\n<p>Different memory types serve different purposes and require different storage backends. The choice of backend also constrains which retrieval strategies are available.<\/p>\n<table style=\"width: 100%;border-collapse: collapse;font-family: Arial, sans-serif;font-size: 14px;color: #333\">\n  <!-- Table Header --><\/p>\n<thead>\n<tr>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        Memory Type\n      <\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        What It Stores\n      <\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        Storage Backend\n      <\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        Retrieval Method\n      <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Working<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Active task state, intermediate results<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">In-memory or short-lived K\/V (Redis)<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Direct key lookup<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Episodic<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Past interactions, task runs, decisions<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Vector store (Pinecone, Weaviate, Chroma)<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Semantic similarity search<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Semantic<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Persistent facts, user preferences, domain knowledge<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Vector store + K\/V hybrid<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Semantic search or exact key<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Procedural<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Learned workflows, successful action patterns<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Structured store or prompt injection<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Pattern match, direct retrieval<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/developers.openai.com\/cookbook\/examples\/agents_sdk\/context_personalization\" target=\"_blank\">OpenAI\u2019s context personalization cookbook<\/a> makes a useful distinction between retrieval-based memory and state-based memory for use cases requiring continuity. Retrieval-based memory treats past interactions as loosely related documents and is brittle to phrasing variation and conflicting updates. Structured state extraction \u2014 writing typed, validated facts rather than embedding raw conversation chunks \u2014 produces more consistent results for facts that need to be applied reliably across sessions.<\/p>\n<div style=\"width: 810px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" src=\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486958_60_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\" alt=\"Memory Engineering Overview\" width=\"800\" height=\"706\"\/><\/p>\n<p class=\"wp-caption-text\">Memory Engineering Overview<\/p>\n<\/div>\n<h3>Retrieval Strategy<\/h3>\n<p>Reading from memory is not a single operation. A well-designed retrieval layer checks working memory first (fast, cheap, exact key lookup), falls back to semantic search in episodic or semantic memory when nothing relevant surfaces, applies metadata filters for recency and trust level before returning results, and injects only what the current step needs.<\/p>\n<h3>Memory Maintenance<\/h3>\n<p>A store with no maintenance policy degrades over time. The entries accumulate, stale facts compete with current ones, and retrieval quality falls as signal-to-noise ratio drops. The following maintenance routines matter in practice: confidence decay on volatile facts, deduplication of semantically similar entries, TTL-based expiry on working memory and time-sensitive data, and periodic compression of old episodic records into session-level summaries.<\/p>\n<p>A <code>MemoryEntry<\/code> schema that encodes these concerns directly makes write and maintenance logic easier to reason about:<\/p>\n<div id=\"urvanov-syntax-highlighter-6a550f3c38d30215993679\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p><textarea wrap=\"soft\" class=\"urvanov-syntax-highlighter-plain print-no\" data-settings=\"dblclick\" readonly=\"readonly\" style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"><br \/>\nclass MemoryEntry(BaseModel):&#13;<br \/>\n    content: str&#13;<br \/>\n    memory_type: str           # working | episodic | semantic | procedural&#13;<br \/>\n    importance: float          # 0.0\u20131.0, gates long-term storage&#13;<br \/>\n    confidence: float          # decays over time for volatile facts&#13;<br \/>\n    trust_level: float         # 1.0 internal system, 0.5 user input, 0.0 external&#13;<br \/>\n    created_at: datetime&#13;<br \/>\n    expires_at: datetime | None&#13;<br \/>\n    provenance: dict           # agent_id, tool_name, session_id, input_hash&#13;<br \/>\n&#13;<br \/>\ndef should_write_to_long_term(entry: MemoryEntry) -&gt; bool:&#13;<br \/>\n    return (&#13;<br \/>\n        entry.importance &gt;= 0.6&#13;<br \/>\n        and entry.confidence &gt;= 0.7&#13;<br \/>\n        and entry.trust_level &gt;= 0.5&#13;<br \/>\n    )<\/textarea><\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"urvanov-syntax-highlighter-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<\/td>\n<td class=\"urvanov-syntax-highlighter-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-t\">class<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">MemoryEntry<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">BaseModel<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">content<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">str<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">memory_type<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">str<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-p\"># working | episodic | semantic | procedural<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">importance<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">float<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># 0.0\u20131.0, gates long-term storage<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">confidence<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">float<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># decays over time for volatile facts<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">trust_level<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">float<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-p\"># 1.0 internal system, 0.5 user input, 0.0 external<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">created_at<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">datetime<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">expires_at<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">|<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">None<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">provenance<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">dict<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-p\"># agent_id, tool_name, session_id, input_hash<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">should_write_to_long_term<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">entry<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">MemoryEntry<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">bool<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">entry<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">importance<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0.6<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">and<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">entry<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">confidence<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0.7<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">and<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">entry<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">trust_level<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0.5<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p><a href=\"https:\/\/hidekazu-konishi.com\/entry\/ai_agent_memory_design_guide.html\" target=\"_blank\">AI Agent Memory Design Guide \u2013 Working, Long-Term, and Procedural Memory with Forgetting and Staleness Management<\/a> and <a href=\"https:\/\/machinelearningmastery.com\/7-steps-to-mastering-memory-in-agentic-ai-systems\/\" target=\"_blank\">7 Steps to Mastering Memory in Agentic AI Systems<\/a> are useful overviews of agent memory design.<\/p>\n<h2>The Retrieval Boundary: Connecting Memory and Context Engineering<\/h2>\n<p>Memory engineering and context engineering are often discussed as separate disciplines, but in practice they are deeply interconnected. Both exist to solve the same fundamental problem: ensuring that a model has access to the right information at the right time.<\/p>\n<p>At a high level:<\/p>\n<ul>\n<li>Memory engineering focuses on persistence: what information should be stored, updated, retained, or forgotten over time.<\/li>\n<li>Context engineering focuses on utilization: what information should enter the active context window for a specific task and how it should be organized.<\/li>\n<li>Retrieval is the boundary where these two disciplines meet.<\/li>\n<\/ul>\n<p>Memory systems produce candidate information. Context assembly then decides:<\/p>\n<ul>\n<li>Whether that information should enter the prompt<\/li>\n<li>How much of it should be included<\/li>\n<li>Where it should be placed within the context window<\/li>\n<\/ul>\n<p>Managing this boundary well is what transforms a collection of memory components into a coherent agent system.<\/p>\n<h3>Failure Mode #1: Retrieval Without a Context Budget<\/h3>\n<p>One of the most common failures occurs when retrieval is treated independently from context assembly.<\/p>\n<p>A memory search returns a set of relevant entries, and the context assembler injects all of them into the prompt. As more memories are added, the context window gradually fills with retrieved content, leaving less room for instructions, tool outputs, reasoning traces, and task-specific information.<\/p>\n<p>The resulting symptoms are often misleading:<\/p>\n<ul>\n<li>Retrieval quality appears high<\/li>\n<li>Relevant memories are successfully found<\/li>\n<li>System performance still degrades<\/li>\n<\/ul>\n<p>In many cases, the memory system has done its job correctly. The failure occurs because context assembly lacks a budgeting mechanism.<\/p>\n<p>A better approach is retrieval-aware context assembly. Instead of retrieving first and budgeting later, the context layer allocates a token budget before retrieval begins. The retrieval layer then returns only the highest-value memories that fit within that budget.<\/p>\n<div id=\"urvanov-syntax-highlighter-6a550f3c38d4c132489347\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p><textarea wrap=\"soft\" class=\"urvanov-syntax-highlighter-plain print-no\" data-settings=\"dblclick\" readonly=\"readonly\" style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"><br \/>\nasync def retrieve_for_step(&#13;<br \/>\n   self,&#13;<br \/>\n   step: AgentStep,&#13;<br \/>\n   max_tokens: int&#13;<br \/>\n) -&gt; str:&#13;<br \/>\n   candidates = await self.memory.search(&#13;<br \/>\n       query=step.retrieval_query,&#13;<br \/>\n       max_results=10,&#13;<br \/>\n       filters={&#13;<br \/>\n           &#8220;trust_level&#8221;: {&#8220;gte&#8221;: 0.5},&#13;<br \/>\n           &#8220;expires_at&#8221;: {&#8220;gt&#8221;: datetime.now()}&#13;<br \/>\n       }&#13;<br \/>\n   )&#13;<br \/>\n&#13;<br \/>\n   selected = []&#13;<br \/>\n   used = 0&#13;<br \/>\n&#13;<br \/>\n   for entry in sorted(&#13;<br \/>\n       candidates,&#13;<br \/>\n       key=lambda e: e.relevance_score,&#13;<br \/>\n       reverse=True&#13;<br \/>\n   ):&#13;<br \/>\n       cost = self.token_count(entry.content)&#13;<br \/>\n&#13;<br \/>\n       if used + cost &gt; max_tokens:&#13;<br \/>\n           break&#13;<br \/>\n&#13;<br \/>\n       selected.append(entry.content)&#13;<br \/>\n       used += cost&#13;<br \/>\n&#13;<br \/>\n   return &#8220;\\n\\n&#8221;.join(selected)<\/textarea><\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<table class=\"crayon-table\">\n<tr class=\"urvanov-syntax-highlighter-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"urvanov-syntax-highlighter-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<p>1<\/p>\n<p>2<\/p>\n<p>3<\/p>\n<p>4<\/p>\n<p>5<\/p>\n<p>6<\/p>\n<p>7<\/p>\n<p>8<\/p>\n<p>9<\/p>\n<p>10<\/p>\n<p>11<\/p>\n<p>12<\/p>\n<p>13<\/p>\n<p>14<\/p>\n<p>15<\/p>\n<p>16<\/p>\n<p>17<\/p>\n<p>18<\/p>\n<p>19<\/p>\n<p>20<\/p>\n<p>21<\/p>\n<p>22<\/p>\n<p>23<\/p>\n<p>24<\/p>\n<p>25<\/p>\n<p>26<\/p>\n<p>27<\/p>\n<p>28<\/p>\n<p>29<\/p>\n<p>30<\/p>\n<p>31<\/p>\n<\/div>\n<\/td>\n<td class=\"urvanov-syntax-highlighter-code\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-e\">async <\/span><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">retrieve_for_step<\/span><span class=\"crayon-sy\">(<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">step<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">AgentStep<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">max_tokens<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><\/p>\n<p><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">candidates<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">await <\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">memory<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">search<\/span><span class=\"crayon-sy\">(<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">query<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-v\">step<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">retrieval_query<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">max_results<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-cn\">10<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">filters<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-s\">&#8220;trust_level&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><span class=\"crayon-s\">&#8220;gte&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0.5<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-s\">&#8220;expires_at&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><span class=\"crayon-s\">&#8220;gt&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">datetime<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">now<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">}<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">}<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">selected<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">used<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">0<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">entry <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">sorted<\/span><span class=\"crayon-sy\">(<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">candidates<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">key<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-i\">lambda<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">e<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">e<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">relevance_score<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">reverse<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-t\">True<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">cost<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-r\">self<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">token_count<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">entry<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">content<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">used<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">cost<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">max_tokens<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-st\">break<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">selected<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">append<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">entry<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">content<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-v\">used<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">cost<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0 <\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;\\n\\n&#8221;<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">join<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">selected<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/table><\/div>\n<\/p><\/div>\n<p>The key idea is simple: retrieval must operate within context constraints, not assume unlimited space downstream.<\/p>\n<h3>Failure Mode #2: Poor Placement of Retrieved Information<\/h3>\n<p>Retrieval quality alone is not sufficient. Even highly relevant memories can fail if they are placed incorrectly inside the context window.<\/p>\n<p>A common issue is treating retrieval purely as a search problem while ignoring placement. Retrieved memories are appended wherever they arrive, without considering their role in the current reasoning step.<\/p>\n<p>This becomes more impactful in long contexts. Attention is not uniformly distributed across the prompt. Information placed deep inside a long context can receive significantly less influence than information positioned near the beginning or end. This leads to a subtle failure mode:<\/p>\n<ul>\n<li>The correct information is retrieved<\/li>\n<li>The information is inserted into context<\/li>\n<li>The model behaves as if it is missing<\/li>\n<\/ul>\n<p>The retrieval succeeded but the placement failed. Context assembly should therefore optimize both:<\/p>\n<ul>\n<li>Selection: what enters the context window<\/li>\n<li>Placement: where it appears within the context window<\/li>\n<\/ul>\n<p>Retrieved information that must influence the current step should be positioned near the active reasoning region rather than appended arbitrarily.<\/p>\n<h3>Retrieval as a Step in Context Construction<\/h3>\n<p>Retrieval is the first step in turning stored memory into usable context. The goal is not only to retrieve relevant information, but to ensure it is the right information for the current step, in the right amount to fit within the context budget, and placed in the right location where the model can effectively use it.<\/p>\n<p>When memory engineering and context engineering are treated as a single retrieval-to-context pipeline, rather than isolated components, agent systems become more reliable, efficient, and scalable.<\/p>\n<p><a href=\"https:\/\/weaviate.io\/blog\/context-engineering\" target=\"_blank\">Context Engineering \u2013 LLM Memory and Retrieval for AI Agents by Weaviate<\/a> is a great reference.<\/p>\n<h2>Summary<\/h2>\n<p>Context and memory engineering are two layers of a single system that controls what the model knows, when it knows it, and how that knowledge is used.<\/p>\n<p>Context engineering operates at inference time, shaping the active information window. Memory engineering operates across time, shaping what information persists and how it can be retrieved later.<\/p>\n<table style=\"width: 100%;border-collapse: collapse;font-family: Arial, sans-serif;font-size: 14px;color: #333\">\n  <!-- Table Header --><\/p>\n<thead>\n<tr>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        Dimension\n      <\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        Context Engineering\n      <\/th>\n<th style=\"padding: 12px;border: 1px solid #ddd;text-align: left;background-color: #add3ed\">\n        Memory Engineering\n      <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Core question<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">What should the model see right now, and how?<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">What should the system retain, and for how long?<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Primary artifact<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Assembled context window per inference call<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Persisted memory entries across calls and sessions<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Token management<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Budget allocation per window component<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Storage cost per entry type; retrieval cost per query<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Compression<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Tool outputs summarized before injection; history rolled or extracted<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Old episodic records compressed; stale facts decayed or pruned<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Freshness<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Rolling history window; stale turns dropped<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">TTL on volatile facts; confidence decay over time<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Trust<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Source hierarchy governs assembly order<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Provenance tracked per entry; low-trust content sanitized before write<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Multi-agent<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Each agent assembles its own window independently<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Scoped namespaces per agent; shared namespace for cross-agent facts<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Failure mode<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Overflow, attention degradation, noisy assembly<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Poisoning, staleness, retrieval miss, unbounded growth<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Maintenance<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Proactive compression at defined intervals<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">TTL expiry, deduplication, confidence decay, episodic archiving<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Where they meet<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Retrieved memory enters context: budget and placement govern how<\/td>\n<td style=\"padding: 12px;border: 1px solid #ddd\">Context assembly requests retrieval within a token budget constraint<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To sum up, an agentic system only works when both layers are aligned: memory determines what is available, and context determines what becomes actionable.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this article, you will learn how context engineering and memory engineering solve different problems in agentic AI systems, and how the two disciplines meet at the point where retrieved memory enters the context window. Topics we will cover include: What context engineering involves, including selective inclusion, structural placement, and compression, and why it matters<\/p>\n","protected":false},"author":1,"featured_media":180696,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42],"tags":[],"class_list":{"0":"post-180695","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ai"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Context vs. Memory Engineering in Agentic AI Systems - Ktromedia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ktromedia.com\/?p=180695\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Context vs. Memory Engineering in Agentic AI Systems - Ktromedia\" \/>\n<meta property=\"og:description\" content=\"In this article, you will learn how context engineering and memory engineering solve different problems in agentic AI systems, and how the two disciplines meet at the point where retrieved memory enters the context window. Topics we will cover include: What context engineering involves, including selective inclusion, structural placement, and compression, and why it matters\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ktromedia.com\/?p=180695\" \/>\n<meta property=\"og:site_name\" content=\"Ktromedia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/KTROMedia\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-19T18:49:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"KTRO TEAM\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"KTRO TEAM\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/ktromedia.com\/?p=180695#article\",\"isPartOf\":{\"@id\":\"https:\/\/ktromedia.com\/?p=180695\"},\"author\":{\"name\":\"KTRO TEAM\",\"@id\":\"https:\/\/ktromedia.com\/#\/schema\/person\/612bf2fbac107722ea365932cdd35f5b\"},\"headline\":\"Context vs. Memory Engineering in Agentic AI Systems\",\"datePublished\":\"2026-07-19T18:49:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ktromedia.com\/?p=180695\"},\"wordCount\":2593,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ktromedia.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/ktromedia.com\/?p=180695#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\",\"articleSection\":[\"\u4eba\u5de5\u667a\u80fd\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ktromedia.com\/?p=180695#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ktromedia.com\/?p=180695\",\"url\":\"https:\/\/ktromedia.com\/?p=180695\",\"name\":\"Context vs. Memory Engineering in Agentic AI Systems - Ktromedia\",\"isPartOf\":{\"@id\":\"https:\/\/ktromedia.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ktromedia.com\/?p=180695#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ktromedia.com\/?p=180695#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\",\"datePublished\":\"2026-07-19T18:49:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ktromedia.com\/?p=180695#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ktromedia.com\/?p=180695\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ktromedia.com\/?p=180695#primaryimage\",\"url\":\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\",\"contentUrl\":\"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png\",\"width\":1024,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ktromedia.com\/?p=180695#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ktromedia.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Context vs. Memory Engineering in Agentic AI Systems\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ktromedia.com\/#website\",\"url\":\"https:\/\/ktromedia.com\/\",\"name\":\"Ktromedia\",\"description\":\"KTRO MEDIA Crypto News\",\"publisher\":{\"@id\":\"https:\/\/ktromedia.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ktromedia.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ktromedia.com\/#organization\",\"name\":\"Ktromedia\",\"url\":\"https:\/\/ktromedia.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ktromedia.com\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/ktromedia.com\/wp-content\/uploads\/2025\/11\/ktroicon.png\",\"contentUrl\":\"http:\/\/ktromedia.com\/wp-content\/uploads\/2025\/11\/ktroicon.png\",\"width\":250,\"height\":250,\"caption\":\"Ktromedia\"},\"image\":{\"@id\":\"https:\/\/ktromedia.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/KTROMedia\/\",\"https:\/\/www.linkedin.com\/company\/ktro-media\/\",\"https:\/\/t.me\/ktrogroup\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ktromedia.com\/#\/schema\/person\/612bf2fbac107722ea365932cdd35f5b\",\"name\":\"KTRO TEAM\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ktromedia.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ktromedia.com\/wp-content\/uploads\/2025\/10\/cropped-Untitled-design-7-1-150x150.png\",\"contentUrl\":\"https:\/\/ktromedia.com\/wp-content\/uploads\/2025\/10\/cropped-Untitled-design-7-1-150x150.png\",\"caption\":\"KTRO TEAM\"},\"description\":\"KTRO MEDIA \u662f\u4e00\u5bb6\u5168\u7403\u6027\u7684\u534e\u6587WEB3\u5a92\u4f53\u516c\u53f8\u3002\u6211\u4eec\u81f4\u529b\u4e8e\u4e3a\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u9886\u57df\u63d0\u4f9b\u6700\u65b0\u7684\u65b0\u95fb\u3001\u89c1\u89e3\u548c\u8d8b\u52bf\u5206\u6790\u3002\u6211\u4eec\u7684\u5b97\u65e8\u662f\u4e3a\u5168\u7403\u7528\u6237\u63d0\u4f9b\u9ad8\u8d28\u91cf\u3001\u5168\u9762\u7684\u8d44\u8baf\u670d\u52a1\uff0c\u8ba9\u4ed6\u4eec\u66f4\u597d\u5730\u4e86\u89e3\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u884c\u4e1a\u7684\u6700\u65b0\u52a8\u6001\u3002\u6211\u4eec\u4e5f\u5e0c\u671b\u80fd\u5e2e\u5230\u66f4\u591a\u4f18\u79c0\u7684WEB3\u4ea7\u54c1\u627e\u5230\u66f4\u591a\u66f4\u597d\u7684\u8d44\u6e90\u597d\u8ba9\u8fd9\u9886\u57df\u53d8\u5f97\u66f4\u6210\u719f\u3002 \u6211\u4eec\u7684\u62a5\u9053\u8303\u56f4\u6db5\u76d6\u4e86\u533a\u5757\u94fe\u3001\u52a0\u5bc6\u8d27\u5e01\u3001\u667a\u80fd\u5408\u7ea6\u3001DeFi\u3001NFT \u548c Web3 \u751f\u6001\u7cfb\u7edf\u7b49\u9886\u57df\u3002\u6211\u4eec\u7684\u62a5\u9053\u4e0d\u4ec5\u6765\u81ea\u884c\u4e1a\u5185\u7684\u4e13\u5bb6\uff0c\u5148\u950b\u8005\u4e5f\u5305\u62ec\u4e86\u6211\u4eec\u81ea\u5df1\u7684\u5206\u6790\u548c\u89c2\u70b9\u3002\u6211\u4eec\u5728\u5404\u4e2a\u56fd\u5bb6\u548c\u5730\u533a\u90fd\u8bbe\u6709\u56e2\u961f\uff0c\u4e3a\u8bfb\u8005\u63d0\u4f9b\u672c\u5730\u5316\u7684\u62a5\u9053\u548c\u5206\u6790\u3002 \u9664\u4e86\u65b0\u95fb\u62a5\u9053\uff0c\u6211\u4eec\u8fd8\u63d0\u4f9b\u5e02\u573a\u7814\u7a76\u548c\u54a8\u8be2\u670d\u52a1\u3002\u6211\u4eec\u7684\u4e13\u4e1a\u56e2\u961f\u53ef\u4ee5\u4e3a\u60a8\u63d0\u4f9b\u6709\u5173\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u884c\u4e1a\u7684\u6df1\u5165\u5206\u6790\u548c\u5e02\u573a\u8d8b\u52bf\uff0c\u5e2e\u52a9\u60a8\u505a\u51fa\u66f4\u660e\u667a\u7684\u6295\u8d44\u51b3\u7b56\u3002 \u6211\u4eec\u7684\u4f7f\u547d\u662f\u6210\u4e3a\u5168\u7403\u534e\u6587\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u884c\u4e1a\u6700\u53d7\u4fe1\u8d56\u7684\u4fe1\u606f\u6765\u6e90\u4e4b\u4e00\u3002\u6211\u4eec\u5c06\u7ee7\u7eed\u4e0d\u65ad\u52aa\u529b\uff0c\u4e3a\u8bfb\u8005\u63d0\u4f9b\u6700\u65b0\u3001\u6700\u5168\u9762\u3001\u6700\u53ef\u9760\u7684\u4fe1\u606f\u670d\u52a1\u3002\",\"sameAs\":[\"https:\/\/ktromedia.com\"],\"url\":\"https:\/\/ktromedia.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Context vs. Memory Engineering in Agentic AI Systems - Ktromedia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ktromedia.com\/?p=180695","og_locale":"en_US","og_type":"article","og_title":"Context vs. Memory Engineering in Agentic AI Systems - Ktromedia","og_description":"In this article, you will learn how context engineering and memory engineering solve different problems in agentic AI systems, and how the two disciplines meet at the point where retrieved memory enters the context window. Topics we will cover include: What context engineering involves, including selective inclusion, structural placement, and compression, and why it matters","og_url":"https:\/\/ktromedia.com\/?p=180695","og_site_name":"Ktromedia","article_publisher":"https:\/\/www.facebook.com\/KTROMedia\/","article_published_time":"2026-07-19T18:49:20+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png","type":"image\/png"}],"author":"KTRO TEAM","twitter_card":"summary_large_image","twitter_misc":{"Written by":"KTRO TEAM","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/ktromedia.com\/?p=180695#article","isPartOf":{"@id":"https:\/\/ktromedia.com\/?p=180695"},"author":{"name":"KTRO TEAM","@id":"https:\/\/ktromedia.com\/#\/schema\/person\/612bf2fbac107722ea365932cdd35f5b"},"headline":"Context vs. Memory Engineering in Agentic AI Systems","datePublished":"2026-07-19T18:49:20+00:00","mainEntityOfPage":{"@id":"https:\/\/ktromedia.com\/?p=180695"},"wordCount":2593,"commentCount":0,"publisher":{"@id":"https:\/\/ktromedia.com\/#organization"},"image":{"@id":"https:\/\/ktromedia.com\/?p=180695#primaryimage"},"thumbnailUrl":"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png","articleSection":["\u4eba\u5de5\u667a\u80fd"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ktromedia.com\/?p=180695#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ktromedia.com\/?p=180695","url":"https:\/\/ktromedia.com\/?p=180695","name":"Context vs. Memory Engineering in Agentic AI Systems - Ktromedia","isPartOf":{"@id":"https:\/\/ktromedia.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ktromedia.com\/?p=180695#primaryimage"},"image":{"@id":"https:\/\/ktromedia.com\/?p=180695#primaryimage"},"thumbnailUrl":"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png","datePublished":"2026-07-19T18:49:20+00:00","breadcrumb":{"@id":"https:\/\/ktromedia.com\/?p=180695#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ktromedia.com\/?p=180695"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ktromedia.com\/?p=180695#primaryimage","url":"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png","contentUrl":"https:\/\/ktromedia.com\/wp-content\/uploads\/2026\/07\/1784486959_Context-vs-Memory-Engineering-in-Agentic-AI-Systems.png","width":1024,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/ktromedia.com\/?p=180695#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ktromedia.com\/"},{"@type":"ListItem","position":2,"name":"Context vs. Memory Engineering in Agentic AI Systems"}]},{"@type":"WebSite","@id":"https:\/\/ktromedia.com\/#website","url":"https:\/\/ktromedia.com\/","name":"Ktromedia","description":"KTRO MEDIA Crypto News","publisher":{"@id":"https:\/\/ktromedia.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ktromedia.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ktromedia.com\/#organization","name":"Ktromedia","url":"https:\/\/ktromedia.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ktromedia.com\/#\/schema\/logo\/image\/","url":"http:\/\/ktromedia.com\/wp-content\/uploads\/2025\/11\/ktroicon.png","contentUrl":"http:\/\/ktromedia.com\/wp-content\/uploads\/2025\/11\/ktroicon.png","width":250,"height":250,"caption":"Ktromedia"},"image":{"@id":"https:\/\/ktromedia.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/KTROMedia\/","https:\/\/www.linkedin.com\/company\/ktro-media\/","https:\/\/t.me\/ktrogroup"]},{"@type":"Person","@id":"https:\/\/ktromedia.com\/#\/schema\/person\/612bf2fbac107722ea365932cdd35f5b","name":"KTRO TEAM","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ktromedia.com\/#\/schema\/person\/image\/","url":"https:\/\/ktromedia.com\/wp-content\/uploads\/2025\/10\/cropped-Untitled-design-7-1-150x150.png","contentUrl":"https:\/\/ktromedia.com\/wp-content\/uploads\/2025\/10\/cropped-Untitled-design-7-1-150x150.png","caption":"KTRO TEAM"},"description":"KTRO MEDIA \u662f\u4e00\u5bb6\u5168\u7403\u6027\u7684\u534e\u6587WEB3\u5a92\u4f53\u516c\u53f8\u3002\u6211\u4eec\u81f4\u529b\u4e8e\u4e3a\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u9886\u57df\u63d0\u4f9b\u6700\u65b0\u7684\u65b0\u95fb\u3001\u89c1\u89e3\u548c\u8d8b\u52bf\u5206\u6790\u3002\u6211\u4eec\u7684\u5b97\u65e8\u662f\u4e3a\u5168\u7403\u7528\u6237\u63d0\u4f9b\u9ad8\u8d28\u91cf\u3001\u5168\u9762\u7684\u8d44\u8baf\u670d\u52a1\uff0c\u8ba9\u4ed6\u4eec\u66f4\u597d\u5730\u4e86\u89e3\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u884c\u4e1a\u7684\u6700\u65b0\u52a8\u6001\u3002\u6211\u4eec\u4e5f\u5e0c\u671b\u80fd\u5e2e\u5230\u66f4\u591a\u4f18\u79c0\u7684WEB3\u4ea7\u54c1\u627e\u5230\u66f4\u591a\u66f4\u597d\u7684\u8d44\u6e90\u597d\u8ba9\u8fd9\u9886\u57df\u53d8\u5f97\u66f4\u6210\u719f\u3002 \u6211\u4eec\u7684\u62a5\u9053\u8303\u56f4\u6db5\u76d6\u4e86\u533a\u5757\u94fe\u3001\u52a0\u5bc6\u8d27\u5e01\u3001\u667a\u80fd\u5408\u7ea6\u3001DeFi\u3001NFT \u548c Web3 \u751f\u6001\u7cfb\u7edf\u7b49\u9886\u57df\u3002\u6211\u4eec\u7684\u62a5\u9053\u4e0d\u4ec5\u6765\u81ea\u884c\u4e1a\u5185\u7684\u4e13\u5bb6\uff0c\u5148\u950b\u8005\u4e5f\u5305\u62ec\u4e86\u6211\u4eec\u81ea\u5df1\u7684\u5206\u6790\u548c\u89c2\u70b9\u3002\u6211\u4eec\u5728\u5404\u4e2a\u56fd\u5bb6\u548c\u5730\u533a\u90fd\u8bbe\u6709\u56e2\u961f\uff0c\u4e3a\u8bfb\u8005\u63d0\u4f9b\u672c\u5730\u5316\u7684\u62a5\u9053\u548c\u5206\u6790\u3002 \u9664\u4e86\u65b0\u95fb\u62a5\u9053\uff0c\u6211\u4eec\u8fd8\u63d0\u4f9b\u5e02\u573a\u7814\u7a76\u548c\u54a8\u8be2\u670d\u52a1\u3002\u6211\u4eec\u7684\u4e13\u4e1a\u56e2\u961f\u53ef\u4ee5\u4e3a\u60a8\u63d0\u4f9b\u6709\u5173\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u884c\u4e1a\u7684\u6df1\u5165\u5206\u6790\u548c\u5e02\u573a\u8d8b\u52bf\uff0c\u5e2e\u52a9\u60a8\u505a\u51fa\u66f4\u660e\u667a\u7684\u6295\u8d44\u51b3\u7b56\u3002 \u6211\u4eec\u7684\u4f7f\u547d\u662f\u6210\u4e3a\u5168\u7403\u534e\u6587\u533a\u5757\u94fe\u548c\u91d1\u878d\u79d1\u6280\u884c\u4e1a\u6700\u53d7\u4fe1\u8d56\u7684\u4fe1\u606f\u6765\u6e90\u4e4b\u4e00\u3002\u6211\u4eec\u5c06\u7ee7\u7eed\u4e0d\u65ad\u52aa\u529b\uff0c\u4e3a\u8bfb\u8005\u63d0\u4f9b\u6700\u65b0\u3001\u6700\u5168\u9762\u3001\u6700\u53ef\u9760\u7684\u4fe1\u606f\u670d\u52a1\u3002","sameAs":["https:\/\/ktromedia.com"],"url":"https:\/\/ktromedia.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/posts\/180695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ktromedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=180695"}],"version-history":[{"count":1,"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/posts\/180695\/revisions"}],"predecessor-version":[{"id":180697,"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/posts\/180695\/revisions\/180697"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ktromedia.com\/index.php?rest_route=\/wp\/v2\/media\/180696"}],"wp:attachment":[{"href":"https:\/\/ktromedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=180695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ktromedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=180695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ktromedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=180695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}