{"id":33292,"date":"2026-04-27T06:01:31","date_gmt":"2026-04-27T13:01:31","guid":{"rendered":"https:\/\/www.pingcap.com\/?p=33292"},"modified":"2026-04-30T13:15:11","modified_gmt":"2026-04-30T20:15:11","slug":"ai-agent-harness-state-layer","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/ai-agent-harness-state-layer\/","title":{"rendered":"What an AI Agent Harness Actually Needs Beyond a Model"},"content":{"rendered":"<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Takeaways\"><\/span><strong>Key Takeaways<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The harness, not the model, decides if agent state is portable, durable, and recoverable.<\/li>\n\n\n\n<li>Agent memory is runtime state. Treat it as architecture from the start, not a plugin added later.<\/li>\n\n\n\n<li>The real risk is state lock-in. Switching frameworks should not mean losing the agent\u2019s operating history.<\/li>\n\n\n\n<li>TiDB Cloud Zero gives you an independent, MySQL-compatible state substrate any harness can connect to. mem9 sits on top as a managed memory API. drive9 covers files and artifacts.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<p>For the first wave of <a href=\"https:\/\/www.pingcap.com\/ko\/ai\/\">AI applications<\/a>, the model was the only architectural question that mattered. Which model reasons better. Whose code is cleaner. Whose tool calls are more reliable. Where is the context window largest. What costs less per task.<\/p>\n\n\n\n<p>That conversation still matters. It is just no longer enough.<\/p>\n\n\n\n<p>The systems attracting serious infrastructure attention now are not just models. They are harnessed systems: Models surrounded by tools, memory, context management, sandboxes, files, permissions, recovery logic, evaluators, and feedback loops. A harness turns a model into a tool-using, long-running agent. Once that happens, the hardest question changes: Where does the agent\u2019s runtime state live, and who controls it?<\/p>\n\n\n\n<p>Two situations from production make the cost of getting this wrong concrete.<\/p>\n\n\n\n<p>You ship a working agent on LangGraph. Three months later, a stronger model lands and your team wants to switch frameworks to take advantage of it. The agent\u2019s memory (conversation history, user preferences, task checkpoints) lives inside LangGraph\u2019s internal state format. Switching means one of two things: Rewrite the memory layer to match the new harness, or start every user back at turn zero.<\/p>\n\n\n\n<p>Or: your coding agent runs a four-hour task and gets interrupted at hour two. On restart, it has no record of what it already tried, which files it modified, or what it decided to skip. It starts over and repeats the same failed paths.<\/p>\n\n\n\n<p>In both cases, the problem is not the model. It is where the agent\u2019s state lived.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_an_AI_Agent_Harness\"><\/span><strong>What is an AI Agent Harness?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>An AI agent harness is the application layer around a model. It decides what the model can see, which tools it can call, what prior work enters context, how tool outputs are represented, where intermediate artifacts go, when memory is retrieved, and how the agent resumes after interruption.<\/p>\n\n\n\n<p>OpenAI describes the <a href=\"https:\/\/openai.com\/index\/introducing-codex\/\">Codex harness<\/a> as the core agent loop and execution logic: The part that coordinates user input, model inference, tool calls, tool outputs, conversation history, and context window management. Anthropic\u2019s <a href=\"https:\/\/www.anthropic.com\/research\">work on agent evaluations<\/a> makes a similar distinction: when you evaluate an agent, you are evaluating the model and the harness together.<\/p>\n\n\n\n<p>That distinction matters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A model produces tokens.<\/li>\n\n\n\n<li>A harness produces behavior.<\/li>\n<\/ul>\n\n\n\n<p>The model is where reasoning happens. The harness is where reasoning becomes work. Reading files, invoking tools, calling MCP servers, testing outputs, writing summaries, deciding what carries forward. Stronger models do not eliminate the harness. They raise the ceiling on what the harness can coordinate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Long-Running_Agents_Create_State_Whether_You_Plan_for_It_or_Not\"><\/span><strong>Long-Running Agents Create State Whether You Plan for It or Not<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Every useful harness produces state. Some of it is obvious:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Conversation history.<\/li>\n\n\n\n<li>Retrieved context.<\/li>\n\n\n\n<li>Tool outputs and execution logs.<\/li>\n\n\n\n<li>Task plans and generated files.<\/li>\n\n\n\n<li>User preferences and memory records.<\/li>\n<\/ul>\n\n\n\n<p>Some of it is less obvious, and this is where teams usually get caught:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What the agent already tried, and what it abandoned.<\/li>\n\n\n\n<li>What assumptions were true at the time of a decision.<\/li>\n\n\n\n<li>What was compressed out of context.<\/li>\n\n\n\n<li>Which artifacts belong to which decision.<\/li>\n\n\n\n<li>What should be visible to the next session.<\/li>\n<\/ul>\n\n\n\n<p>In demos, that state lives wherever it is easiest to put it. Markdown files, JSON blobs, SQLite, a vector store, a hidden harness directory, a provider-managed thread, a progress file in the repo. For early prototypes, that is often fine. The problem starts when temporary state becomes runtime state.<\/p>\n\n\n\n<p>Anthropic\u2019s writing on <a href=\"https:\/\/www.anthropic.com\/engineering\/effective-harnesses-for-long-running-agents\">long-running agents<\/a> shows the failure mode clearly. Their coding agents needed progress files, feature lists, git history, initialization scripts, and structured handoff artifacts so that each new session could understand what happened before. Without that, each context window began with too little usable memory of the previous one. The issue was not model intelligence. The runtime did not preserve enough usable state.<\/p>\n\n\n\n<p>That is the shift production teams are now facing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Why_Memory_Cannot_Be_Added_to_an_AI_Agent_as_a_Plugin\"><\/span><strong>Why Memory Cannot Be Added to an AI Agent as a Plugin<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Memory is not a plugin you bolt on after the rest of the harness is working. It sits in the path between the system and the model on every turn. Before the model acts, the harness decides what to retrieve, summarize, filter, compress, and include. After the model acts, the harness decides what to store, update, discard, or expose to future runs.<\/p>\n\n\n\n<p>LangChain\u2019s <a href=\"https:\/\/blog.langchain.com\/\">analysis of harness architecture<\/a> makes a related point: Memory is tightly coupled to how the harness manages context and state. If memory lives inside a closed harness or proprietary API, developers lose control of the state that makes their agent useful.<\/p>\n\n\n\n<p>But once you see memory this way, the word starts to feel too narrow. The harness is not just managing memory. It is managing runtime state: Session state, task history, user profiles, permissions, retrieval metadata, tool outputs, workspace files, generated artifacts, recovery checkpoints.<\/p>\n\n\n\n<p>That is why \u201cjust add a vector database\u201d is an <a href=\"https:\/\/www.pingcap.com\/ko\/compare\/best-database-for-ai-agents\/\">incomplete answer<\/a>. Vector search is useful for semantic recall. Agent state is not purely semantic. A production agent also needs:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Exact filters and chronology<\/strong>. What happened, in what order, at what time.<\/li>\n\n\n\n<li><strong>Ownership and transactions<\/strong>. Which session wrote which record, and what depends on what.<\/li>\n\n\n\n<li><strong>Permissions and auditability<\/strong>. Who can read which records, and who did read them.<\/li>\n\n\n\n<li><strong>Structured querying<\/strong>. Inspection and reporting across history, users, and tools.<\/li>\n<\/ul>\n\n\n\n<p>The tier most often missing is structured, queryable, control-plane state: Task history, permissions, user profiles, audit trails, and recovery checkpoints. These are the records that make an agent\u2019s operating history inspectable and portable across harnesses.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Real_Risk_Is_Agent_State_Lock-In_Not_Open_vs_Closed\"><\/span><strong>The Real Risk Is Agent State Lock-In, Not Open vs. Closed<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>It is tempting to frame the harness debate as open source versus closed source. That framing is too simple. The deeper issue is state lock-in.<\/p>\n\n\n\n<p>For CTOs, architectural tech leads, and platform engineers, the practical questions are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Can we inspect what the agent stored?<\/li>\n\n\n\n<li>Can we query memory across users, sessions, tools, and workspaces?<\/li>\n\n\n\n<li>Can we migrate state from one harness to another?<\/li>\n\n\n\n<li>Can we separate model choice from memory ownership?<\/li>\n\n\n\n<li>Can we keep using the state if we change model providers?<\/li>\n<\/ul>\n\n\n\n<p>If the answer is no, the harness is not only orchestrating the agent. It is becoming the system of record for the agent\u2019s operating history. That may be acceptable for early experiments. It is much harder to accept once agents participate in engineering, support, research, data operations, or customer-facing workflows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Tool-Calling_AI_Agents_Make_State_Governance_Visible\"><\/span><strong>Tool-Calling AI Agents Make State Governance Visible<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Once agents call external tools at scale, the platform needs clear answers for identity, authorization, audit trails, policy enforcement, and backend persistence. <a href=\"https:\/\/www.pingcap.com\/ko\/blog\/ai-native-database\/\">Agent workloads<\/a> are shaped by runtime inputs, not just static code, which means infrastructure-level controls matter.<\/p>\n\n\n\n<p>A better design treats state as a first-class substrate beneath the harness. Which agent called which tool, under which identity, with which input, visible to which future run. Without that record, debugging and compliance both become guesswork.<\/p>\n\n\n\n<p>This is also where the MCP server pattern shows its limits. An MCP server that proxies a tool call without writing a durable record of who called what and why will work in a demo and break under audit. Backend persistence is not optional once tool calls become part of how real work gets done.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_Memory_Benchmarks_Like_LoCoMo_Confirm\"><\/span><strong>What Memory Benchmarks Like LoCoMo Confirm<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Memory benchmarks like <a href=\"https:\/\/snap-research.github.io\/locomo\/\">LoCoMo<\/a> confirm empirically what production teams already report: Memory quality depends heavily on how the agent manages context and uses tools, not only on the retrieval mechanism. LoCoMo evaluates agents on multi-session conversations averaging 300 turns and 9K tokens over up to 35 sessions, and the systems that win on it are not the ones with the biggest context window. They are the ones with the most disciplined state management.<\/p>\n\n\n\n<p>The implication is direct. Improving agent memory means improving the harness, and the harness needs a durable, queryable, portable place to keep the state it manages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_an_Independent_AI_Agent_State_Substrate_Looks_Like\"><\/span><strong>What an Independent AI Agent State Substrate Looks Like<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The answer is not to make every agent prototype heavy. It is to make the state explicit earlier.<\/p>\n\n\n\n<p>A useful state substrate has four properties:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Fast to create<\/strong>. Provisioning measured in seconds, not weeks.<\/li>\n\n\n\n<li><strong>Queryable with standard SQL<\/strong>. So memory can be inspected, joined, and filtered like any other data.<\/li>\n\n\n\n<li><strong>Independent from any single harness<\/strong>. Switching frameworks does not require rebuilding state.<\/li>\n\n\n\n<li><strong>Accessible from standard MySQL-compatible drivers<\/strong>. So any language, any harness, any tool can connect.<\/li>\n<\/ol>\n\n\n\n<p>The point is portability. The harness can evolve, the model can change, and the state the agent accumulated stays in a place that is inspectable and queryable.<\/p>\n\n\n\n<p>This is what <a href=\"https:\/\/www.pingcap.com\/ko\/tidb-cloud\/\">TiDB Cloud Zero<\/a> is designed to be in the agent state stack: An instant, MySQL-compatible SQL substrate that any harness can connect to and migrate away from without data loss if the architecture changes. For agents that need persistent memory across sessions, <a href=\"https:\/\/mem9.ai\/\">mem9<\/a> sits on top of that substrate as a managed memory API for coding agents and custom tools. Where agents also produce files, artifacts, and documents, <a href=\"https:\/\/github.com\/mem9-ai\/drive9\">drive9<\/a> extends the stack to cover those too.<\/p>\n\n\n\n<p>No single layer solves the whole problem. Treating state as a separable substrate is the architectural decision worth making before the harness becomes the system of record.<\/p>\n\n\n\n<p>The two failure modes from the opening illustrate this directly. In the framework migration case: If memory lives in a standard, queryable substrate rather than inside the harness\u2019s internal format, it does not need to be rebuilt when the harness changes. It stays legible and portable. In the interrupted-task case: A durable state layer means the agent\u2019s progress is a record it can read on restart, not session history it has to reconstruct from scratch.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"When_a_Dedicated_Agent_State_Substrate_Becomes_Necessary\"><\/span><strong>When a Dedicated Agent State Substrate Becomes Necessary<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Not every agent needs this on day one. A dedicated state substrate becomes important when the agent crosses one or more of these lines:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It must resume across sessions or machines.<\/li>\n\n\n\n<li>Memory must follow users across devices.<\/li>\n\n\n\n<li>Multiple agents need shared context.<\/li>\n\n\n\n<li>MCP tools need backend persistence.<\/li>\n\n\n\n<li>Tool outputs need to be queried later.<\/li>\n\n\n\n<li>The agent must survive a model or harness change.<\/li>\n\n\n\n<li>Provider-managed memory has become a lock-in concern.<\/li>\n<\/ul>\n\n\n\n<p>If none of those apply, local files and a simple store may be enough. Once one applies, the architecture debt starts compounding.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Question_to_Ask_Before_Choosing_Your_Next_AI_Agent_Harness\"><\/span><strong>The Question to Ask Before Choosing Your Next AI Agent Harness<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>As the harness becomes the application layer, it needs an independent state substrate to match. Before choosing the next agent framework or MCP architecture, ask \u201cWhat state will this agent create, and will we still control it three months from now?\u201d<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the state lives only inside a closed API, you may move quickly but lose portability.<\/li>\n\n\n\n<li>If it lives only in local files, you may preserve visibility but lose durability.<\/li>\n\n\n\n<li>If it lives in an independent, queryable substrate, the harness can evolve, the model can change, and the agent\u2019s operating history remains under your control.<\/li>\n<\/ul>\n\n\n\n<p>That is what an AI agent harness actually needs beyond a model. Not more glue, but a state layer the builder can own.<\/p>\n\n\n\n<p><em>Want to move past the strategy and into the database tradeoffs? Read <\/em><a href=\"https:\/\/www.pingcap.com\/ko\/blog\/ai-agent-memory-outgrows-sqlite\/\">When AI Agent Memory Outgrows SQLite<\/a><em>. It picks up exactly where this post leaves off, with the specific signals that tell you your agent has outgrown local memory and what to move to next.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"FAQ\"><\/span><strong>FAQ<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is an AI agent harness?<\/strong><\/h3>\n\n\n\n<p>An AI agent harness is the application-layer code around a model that decides what the model sees, which tools it can call, how tool outputs are handled, when memory is retrieved, and how the agent resumes after interruption. The model produces tokens. The harness turns those tokens into work by coordinating tools, context, and state across many turns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is the difference between a model and a harness?<\/strong><\/h3>\n\n\n\n<p>A model is a single inference engine. It takes a prompt and produces a response. A harness is the surrounding system that runs many model calls in sequence, manages conversation history and tool outputs, decides what to remember, and recovers from interruption. Stronger models do not replace the harness. They raise the ceiling on what the harness can coordinate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is agent state lock-in?<\/strong><\/h3>\n\n\n\n<p>Agent state lock-in is what happens when an agent\u2019s runtime state (memory, task history, user preferences, tool outputs) lives inside a specific harness or provider\u2019s internal format. Switching to a different framework or model provider then requires either rebuilding the memory layer or starting users back at turn zero. The cost compounds as the agent accumulates more operating history.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why isn\u2019t a vector database enough for agent memory?<\/strong><\/h3>\n\n\n\n<p>Vector search handles semantic recall, but agents also need exact filtering on metadata, ownership and transactional guarantees, permissions and audit trails, and structured queries across users, sessions, and tools. A vector-only store cannot answer questions like \u201cwhat did this user request yesterday\u201d or \u201cwhich agent called which tool under whose identity.\u201d Production agent state needs both vector and SQL semantics in the same backend.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What does an independent agent state substrate need to provide?<\/strong><\/h3>\n\n\n\n<p>Four properties: Fast provisioning so prototypes are not blocked, standard SQL so memory is inspectable and joinable, independence from any single harness so frameworks can change without losing state, and standard driver support (such as MySQL compatibility) so any language or tool can connect. The point is portability across harness, model, and provider changes.<\/p>","protected":false},"excerpt":{"rendered":"<p>For the first wave of AI applications, the model was the only architectural question that mattered. Which model reasons better. Whose code is cleaner. Whose tool calls are more reliable. Where is the context window largest. What costs less per task. That conversation still matters. It is just no longer enough. The systems attracting serious [&hellip;]<\/p>\n","protected":false},"author":343,"featured_media":33377,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[145],"tags":[487,138,489,488,481],"class_list":["post-33292","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-thought-leadership","tag-agent-state-stack","tag-ai","tag-drive9","tag-mem9","tag-tidb-cloud-zero"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png","author_info":{"display_name":"Ian Zhai","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/ian-zhai\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AI Agent Harness Architecture: Why State Belongs Outside It<\/title>\n<meta name=\"description\" content=\"An AI agent harness needs more than a strong model. It needs an independent state substrate so agent memory survives harness changes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/ai-agent-harness-state-layer\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI Agent Harness Architecture: Why State Belongs Outside It\" \/>\n<meta property=\"og:description\" content=\"An AI agent harness needs more than a strong model. It needs an independent state substrate so agent memory survives harness changes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/ai-agent-harness-state-layer\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-27T13:01:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-30T20:15:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112229\/Copy-of-Blog-LinkedIn-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ian Zhai\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112355\/Blog-Twitter-Banner-2.png\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ian Zhai\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/\"},\"author\":{\"name\":\"Ian Zhai\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/f62277af6e9cdbe2c8273460e62df12c\"},\"headline\":\"What an AI Agent Harness Actually Needs Beyond a Model\",\"datePublished\":\"2026-04-27T13:01:31+00:00\",\"dateModified\":\"2026-04-30T20:15:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/\"},\"wordCount\":2289,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png\",\"keywords\":[\"Agent State Stack\",\"AI\",\"Drive9\",\"Mem9\",\"TiDB Cloud Zero\"],\"articleSection\":[\"Thought Leadership\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/\",\"name\":\"AI Agent Harness Architecture: Why State Belongs Outside It\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png\",\"datePublished\":\"2026-04-27T13:01:31+00:00\",\"dateModified\":\"2026-04-30T20:15:11+00:00\",\"description\":\"An AI agent harness needs more than a strong model. It needs an independent state substrate so agent memory survives harness changes.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png\",\"width\":1800,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What an AI Agent Harness Actually Needs Beyond a Model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/f62277af6e9cdbe2c8273460e62df12c\",\"name\":\"Ian Zhai\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"Ian Zhai\"},\"description\":\"AI Engineer\",\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/ian-zhai\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI Agent Harness Architecture: Why State Belongs Outside It","description":"An AI agent harness needs more than a strong model. It needs an independent state substrate so agent memory survives harness changes.","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:\/\/www.pingcap.com\/ko\/blog\/ai-agent-harness-state-layer\/","og_locale":"ko_KR","og_type":"article","og_title":"AI Agent Harness Architecture: Why State Belongs Outside It","og_description":"An AI agent harness needs more than a strong model. It needs an independent state substrate so agent memory survives harness changes.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/ai-agent-harness-state-layer\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2026-04-27T13:01:31+00:00","article_modified_time":"2026-04-30T20:15:11+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112229\/Copy-of-Blog-LinkedIn-1.png","type":"image\/png"}],"author":"Ian Zhai","twitter_card":"summary_large_image","twitter_image":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112355\/Blog-Twitter-Banner-2.png","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"Written by":"Ian Zhai","Est. reading time":"11\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/"},"author":{"name":"Ian Zhai","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/f62277af6e9cdbe2c8273460e62df12c"},"headline":"What an AI Agent Harness Actually Needs Beyond a Model","datePublished":"2026-04-27T13:01:31+00:00","dateModified":"2026-04-30T20:15:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/"},"wordCount":2289,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png","keywords":["Agent State Stack","AI","Drive9","Mem9","TiDB Cloud Zero"],"articleSection":["Thought Leadership"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/","url":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/","name":"AI Agent Harness Architecture: Why State Belongs Outside It","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png","datePublished":"2026-04-27T13:01:31+00:00","dateModified":"2026-04-30T20:15:11+00:00","description":"An AI agent harness needs more than a strong model. It needs an independent state substrate so agent memory survives harness changes.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png","width":1800,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/ai-agent-harness-state-layer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"What an AI Agent Harness Actually Needs Beyond a Model"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/f62277af6e9cdbe2c8273460e62df12c","name":"Ian Zhai","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"Ian Zhai"},"description":"AI Engineer","url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/ian-zhai\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/ai-agent-harness-state-layer\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"Blog - Feature\" src=\"https:\/\/static.pingcap.com\/files\/2026\/04\/30112033\/Blog-Feature-2.png\" loading=\"lazy\" width=1800 height=600 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Thought Leadership<\/div><\/div><h5 class=\"card-resource__title\">What an AI Agent Harness Actually Needs Beyond a Model<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/33292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/343"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=33292"}],"version-history":[{"count":13,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/33292\/revisions"}],"predecessor-version":[{"id":33409,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/33292\/revisions\/33409"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/33377"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=33292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=33292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=33292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}