<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: boleo</title>
    <description>The latest articles on DEV Community by boleo (@mrbond6107).</description>
    <link>https://dev.to/mrbond6107</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4028786%2F6d7a2f6f-4853-487f-b2e1-b764dab91503.png</url>
      <title>DEV Community: boleo</title>
      <link>https://dev.to/mrbond6107</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrbond6107"/>
    <language>en</language>
    <item>
      <title>From ChatGPT to AI Agents: What Actually Changed Between 2022 and 2026</title>
      <dc:creator>boleo</dc:creator>
      <pubDate>Sat, 25 Jul 2026 14:12:33 +0000</pubDate>
      <link>https://dev.to/mrbond6107/from-chatgpt-to-ai-agents-what-actually-changed-between-2022-and-2026-1dmc</link>
      <guid>https://dev.to/mrbond6107/from-chatgpt-to-ai-agents-what-actually-changed-between-2022-and-2026-1dmc</guid>
      <description>&lt;p&gt;I recently gave this talk in English to my classmates at an English school in Baguio, the Philippines. Most of them had used ChatGPT. Almost none of them had used an AI agent. And the gap between those two experiences turned out to be much harder to explain than I expected.&lt;/p&gt;

&lt;p&gt;The problem is that if you don't understand how the pieces stack up, an AI agent looks like magic. And when a tool looks like magic, you can't get good at using it — you just poke at it and hope.&lt;/p&gt;

&lt;p&gt;So this is my attempt at the explanation I wish I'd had. It walks through what got invented, in the order it got invented, and what each layer made possible. I've traded some technical precision for intuition. The goal is that by the end, nothing an agent does should surprise you.&lt;/p&gt;

&lt;p&gt;Written for: anyone who has used ChatGPT but never used a coding agent, and anyone who has heard "LLM," "RAG," and "MCP" without ever getting a feel for what they actually are.&lt;/p&gt;

&lt;h2&gt;
  
  
  The timeline
&lt;/h2&gt;

&lt;p&gt;Here's the whole story in one view. Each row exists because the row above it wasn't enough.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;When&lt;/th&gt;
&lt;th&gt;What arrived&lt;/th&gt;
&lt;th&gt;What it made possible&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Nov 2022&lt;/td&gt;
&lt;td&gt;ChatGPT (GPT-3.5)&lt;/td&gt;
&lt;td&gt;Answers from what the model already learned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;RAG goes mainstream&lt;/td&gt;
&lt;td&gt;Answers grounded in &lt;em&gt;your&lt;/em&gt; documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jun 2023&lt;/td&gt;
&lt;td&gt;OpenAI function calling&lt;/td&gt;
&lt;td&gt;The model can trigger real actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sep 2024&lt;/td&gt;
&lt;td&gt;OpenAI o1 (reasoning models)&lt;/td&gt;
&lt;td&gt;Plan first, then execute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nov 2024&lt;/td&gt;
&lt;td&gt;Anthropic's MCP&lt;/td&gt;
&lt;td&gt;Tool access becomes an open standard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;The year of AI agents&lt;/td&gt;
&lt;td&gt;Autonomous multi-step work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oct 2025&lt;/td&gt;
&lt;td&gt;Agent Skills&lt;/td&gt;
&lt;td&gt;Reusable expertise, written in Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026&lt;/td&gt;
&lt;td&gt;Agents as infrastructure&lt;/td&gt;
&lt;td&gt;Hosted, scheduled, long-running agents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now let's go layer by layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The LLM itself
&lt;/h2&gt;

&lt;p&gt;A large language model is trained on an enormous amount of text, and it answers by predicting what comes next, one token at a time.&lt;/p&gt;

&lt;p&gt;That's it. That's the whole trick. When ChatGPT launched in November 2022 and hit a million users in five days, what people were reacting to was a system that had read most of the internet and could talk about it. You ask, and it answers out of what it already absorbed during training.&lt;/p&gt;

&lt;p&gt;Two consequences follow immediately, and they explain most of what came next:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn't know your stuff.&lt;/strong&gt; Your company's internal wiki, your codebase, yesterday's news — none of that was in the training data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn't know that it doesn't know.&lt;/strong&gt; Because the model generates the most &lt;em&gt;plausible&lt;/em&gt; next token rather than looking anything up, it will produce a confident, fluent, completely fabricated answer just as readily as a correct one. This is what people mean by hallucination, and it's not a bug that got patched — it's a direct consequence of how the thing works. Everything in the rest of this article is, in one way or another, an attempt to compensate for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The context window
&lt;/h2&gt;

&lt;p&gt;The context window is how much text the model can hold in view at once — your prompt, the conversation history, any documents you pasted in, and its own answer, all counted together in tokens.&lt;/p&gt;

&lt;p&gt;As of mid-2026, the ceiling has moved a lot:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Context window&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 4.8&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 5&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3 Pro&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.2&lt;/td&gt;
&lt;td&gt;256K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
&lt;td&gt;200K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A million tokens is roughly a few thousand pages. That sounds like enough to stop worrying — but it isn't, for two reasons.&lt;/p&gt;

&lt;p&gt;First, a bigger window costs more and runs slower. Every token in the window gets processed on every single turn.&lt;/p&gt;

&lt;p&gt;Second, and more importantly: &lt;strong&gt;a model with a huge context window still doesn't attend equally well to everything in it.&lt;/strong&gt; Bury the one line that matters in the middle of 900,000 tokens of noise and the model may well miss it. More context is not automatically better context.&lt;/p&gt;

&lt;p&gt;This is why "just paste in everything" is a losing strategy, and it's the seed of the idea that closes out this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. RAG: giving the model knowledge it never learned
&lt;/h2&gt;

&lt;p&gt;So the model doesn't know your stuff. There are two ways to fix that, and they're often confused with each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: fine-tuning.&lt;/strong&gt; Continue training the model on your data so the knowledge is baked into its weights. This genuinely works, but it's expensive, it needs a large clean dataset, evaluating whether you made the model better or worse is its own research problem, and the moment your data changes you have to do it again. For "the model should know our internal docs," it's almost always the wrong tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: RAG (Retrieval-Augmented Generation).&lt;/strong&gt; Leave the model alone. Keep your knowledge in a separate searchable store. When a question comes in, search the store first, then hand the model &lt;em&gt;both&lt;/em&gt; the question and the search results, and ask it to answer using them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "How do I request paid leave?"
   ↓
App: searches the internal knowledge base
   ↓
App: sends the LLM → the question + the retrieved passages
   ↓
LLM: reads the passages, answers from them
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;RAG won. Not because it's more elegant, but because it's &lt;em&gt;operational&lt;/em&gt; — update a document and the system's knowledge updates instantly, with no retraining. And crucially, the model is now answering from text you actually put in front of it, rather than from memory. That's the first real dent in hallucination.&lt;/p&gt;

&lt;p&gt;The idea to hold onto: &lt;strong&gt;the model gained an external memory it could look things up in.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Function calling → MCP: giving the model hands
&lt;/h2&gt;

&lt;p&gt;RAG lets a model &lt;em&gt;read&lt;/em&gt; the world. It still can't &lt;em&gt;touch&lt;/em&gt; it.&lt;/p&gt;

&lt;p&gt;In June 2023, OpenAI shipped function calling, and the shape of it is simpler than most people expect. You describe your tools to the model in plain text. The model can't execute anything — it just says which tool it wants and with what arguments. &lt;strong&gt;Your code runs it.&lt;/strong&gt; Then you hand the result back.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "What's the weather in Tokyo?"    (+ a get_weather tool description)
   ↓
LLM: "I'd like to call get_weather(city='Tokyo')"
   ↓
App: actually calls the weather API      ← your code, not the model
   ↓
App: sends the result back to the LLM
   ↓
LLM: "It's sunny in Tokyo, high of 15°C."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gap — the model &lt;em&gt;asks&lt;/em&gt;, your code &lt;em&gt;acts&lt;/em&gt; — is the single most important thing to internalize about agents. An agent has no hands of its own. Everything it does, it does by asking your program to do it. Which means every guardrail you want, you build there.&lt;/p&gt;

&lt;p&gt;Then came the integration problem. Every tool needed custom glue for every AI product. N tools times M apps.&lt;/p&gt;

&lt;p&gt;In November 2024, Anthropic released &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; and open-sourced it: one standard way for an AI application to connect to a tool or data source. Build an MCP server for your service once, and any MCP-speaking client can use it. People called it "USB-C for AI," which is a good enough analogy.&lt;/p&gt;

&lt;p&gt;It worked. By 2026 MCP has been adopted by OpenAI, Google, and Microsoft, with over 10,000 public servers in the wild. A protocol that ships from one vendor and gets adopted by its direct competitors is rare, and it happened because the alternative — everyone maintaining bespoke integrations forever — was worse for everybody.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Reasoning models: think first, then answer
&lt;/h2&gt;

&lt;p&gt;Everything so far still assumed one question in, one answer out. Ask, generate, done.&lt;/p&gt;

&lt;p&gt;OpenAI's o1 in September 2024 broke that assumption. A reasoning model thinks &lt;em&gt;before&lt;/em&gt; it answers — it works the problem out internally, sometimes at considerable length, and only then produces a response.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Non-reasoning&lt;/th&gt;
&lt;th&gt;Reasoning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ask → answer, in one shot&lt;/td&gt;
&lt;td&gt;Think → plan → execute → answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good for lookups and simple Q&amp;amp;A&lt;/td&gt;
&lt;td&gt;Good for genuinely hard problems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A vague prompt gives a vague answer&lt;/td&gt;
&lt;td&gt;A vague prompt often survives — the model works out what you meant&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the underrated one. Reasoning models made prompt-engineering &lt;em&gt;tricks&lt;/em&gt; much less necessary. The model has room to figure out your intent instead of needing it spelled out perfectly on the first try.&lt;/p&gt;

&lt;p&gt;By 2026 this has become adaptive: models decide for themselves how much thinking a given task deserves, and you steer it with a single "effort" dial rather than by hand-tuning a token budget. Cheap question, quick answer. Hard question, the model takes its time.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 2025: the pieces click together
&lt;/h2&gt;

&lt;p&gt;Nothing fundamentally new was needed for agents. Everything was already on the table. In 2025 it just got assembled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reasoning → &lt;strong&gt;the model can plan&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Function calling / MCP → &lt;strong&gt;it can act&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;RAG → &lt;strong&gt;it can look things up&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Large context → &lt;strong&gt;it can hold the whole task in view&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put those in a loop — plan, act, observe the result, adjust, act again — and you have an agent.&lt;/p&gt;

&lt;p&gt;The contrast that makes this concrete is early GitHub Copilot. Copilot autocompleted the next few lines. Single shot, no memory, no plan. Useful, but small.&lt;/p&gt;

&lt;p&gt;A modern coding agent will change code across a dozen files, run the test suite, read the failure, search the web for the error, form a hypothesis, fix it, and re-run the tests — without you in the loop. Same underlying model family. The difference is entirely the loop.&lt;/p&gt;

&lt;p&gt;Two things arrived on top of this that are worth knowing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent Skills (October 2025).&lt;/strong&gt; A skill is a folder with a Markdown file in it describing how to do something — a procedure, a house style, a checklist. The agent loads it only when the task calls for it. It's a way to hand an agent expertise without bloating every prompt.&lt;/p&gt;

&lt;p&gt;A common misconception is that Skills replaced MCP. They didn't, and the distinction is worth getting right: &lt;strong&gt;MCP connects an agent to the outside world. Skills teach an agent how to do a job.&lt;/strong&gt; You use both. Skills also happen to be plain Markdown, which means the person who owns the process can maintain it — no engineer required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agents as infrastructure (2026).&lt;/strong&gt; Agents now run as hosted services: long-lived, scheduled, with persistent memory across sessions and a managed sandbox to work in. An agent that runs every night and reports in the morning is now ordinary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that actually matters
&lt;/h2&gt;

&lt;p&gt;Now the mindset shift — because everything above is the &lt;em&gt;what&lt;/em&gt;, and this is the &lt;em&gt;so what&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  From prompt engineering to context engineering
&lt;/h3&gt;

&lt;p&gt;The old game was writing the perfect prompt. Find the magic phrasing, discover the incantation, collect templates.&lt;/p&gt;

&lt;p&gt;That game is mostly over. Reasoning models are good enough at inferring intent that clever phrasing has stopped being the bottleneck.&lt;/p&gt;

&lt;p&gt;The new game is deciding &lt;strong&gt;what the model gets to see.&lt;/strong&gt; Its context window is finite, and everything competing for space in it is a tradeoff:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What goes in the window&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instructions&lt;/td&gt;
&lt;td&gt;Project rules, conventions, a &lt;code&gt;CLAUDE.md&lt;/code&gt;-style file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tools&lt;/td&gt;
&lt;td&gt;Which MCP servers and skills are available right now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;History&lt;/td&gt;
&lt;td&gt;The conversation so far&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retrieved knowledge&lt;/td&gt;
&lt;td&gt;Whatever RAG pulled in&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every token you spend on one is a token you can't spend on another. And as we saw in section 2, a full context window is not a well-used one.&lt;/p&gt;

&lt;p&gt;So the skill is no longer &lt;em&gt;phrasing&lt;/em&gt;. It's &lt;strong&gt;curation&lt;/strong&gt; — deciding what's relevant, what's noise, and what to leave out. That's an engineering problem, and it's a much more interesting one.&lt;/p&gt;

&lt;h3&gt;
  
  
  From "instructing AI" to "thinking with AI"
&lt;/h3&gt;

&lt;p&gt;The old loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Human instructs → AI produces → Human judges → repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You do the thinking. The AI does the typing. You grade the output.&lt;/p&gt;

&lt;p&gt;The new loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Human ⟷ AI: think together
Human ⟷ AI: converge on a direction
Human ⟷ AI: build it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Then&lt;/th&gt;
&lt;th&gt;Now&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Human's role&lt;/td&gt;
&lt;td&gt;Instructor, judge&lt;/td&gt;
&lt;td&gt;Collaborator, navigator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI's role&lt;/td&gt;
&lt;td&gt;Executor&lt;/td&gt;
&lt;td&gt;Thinking partner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interaction&lt;/td&gt;
&lt;td&gt;One-way&lt;/td&gt;
&lt;td&gt;Back and forth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Goal&lt;/td&gt;
&lt;td&gt;The perfect one-shot output&lt;/td&gt;
&lt;td&gt;A good result, arrived at together&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;When it fails&lt;/td&gt;
&lt;td&gt;"My prompt was bad"&lt;/td&gt;
&lt;td&gt;"I didn't share enough context"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the whole article in one line. When an agent goes wrong today, the fix is almost never a better-worded prompt. It's that the agent didn't have something it needed — a file, a constraint, a reason, a piece of the picture that was in your head and never made it into the window.&lt;/p&gt;

&lt;p&gt;Which is exactly the problem that closed out the last section. The two are the same problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;If you've read this far and never driven an agent, the next move is not to read more. It's to open one and give it a real task from your actual work — not a toy. Watch what it does. Watch where it goes wrong. Then ask yourself the diagnostic question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did I know that it didn't?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Answer that, put the answer in front of it, and go again. That loop is the skill. Everything else in this article is just background for it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by a Japanese software engineer relocating to Canada. I write about AI engineering, and about what it's like to rebuild a career in a second language. Corrections and disagreement are very welcome in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
