<?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: Dinindu Suriyamudali</title>
    <description>The latest articles on DEV Community by Dinindu Suriyamudali (@dinindu_suriyamudali_e604).</description>
    <link>https://dev.to/dinindu_suriyamudali_e604</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3418981%2F80d5c4d6-738f-498e-86c8-0ca7adf691c9.jpeg</url>
      <title>DEV Community: Dinindu Suriyamudali</title>
      <link>https://dev.to/dinindu_suriyamudali_e604</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dinindu_suriyamudali_e604"/>
    <language>en</language>
    <item>
      <title>How We Solve Problems (And How Agents Should Too)</title>
      <dc:creator>Dinindu Suriyamudali</dc:creator>
      <pubDate>Sun, 09 Nov 2025 13:52:23 +0000</pubDate>
      <link>https://dev.to/dinindu_suriyamudali_e604/how-we-solve-problems-and-how-agents-should-too-ce2</link>
      <guid>https://dev.to/dinindu_suriyamudali_e604/how-we-solve-problems-and-how-agents-should-too-ce2</guid>
      <description>&lt;p&gt;&lt;strong&gt;When we tackle any task such as debugging code, answering questions, analysing data, completing workflows, we're essentially problem-solving agents using tools at our disposal:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;If it's familiar:&lt;/strong&gt; We recall the steps from our memory or check our knowledge base&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If it's new:&lt;/strong&gt; We are googling error messages, scanning Stack Overflow, pinging colleagues on Slack, tailing logs, running diagnostic commands&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Learning Loop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Once we complete a task, one of two things or both happens:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;We document it&lt;/strong&gt; - Add it to the wiki, create a runbook, update the knowledge base&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It lives in our head&lt;/strong&gt; - We just remember "now I know how to do this"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Next time the same task appears:&lt;/strong&gt; We skip the research phase. We go straight to our documented solution or our memory. It's faster, more confident. Sometimes the old solution doesn't work anymore. The environment changed, dependencies updated, or the root cause shifted. Now we're back to research mode, but with context. We're not starting from zero. We're debugging why our known pattern failed. Once we find the new path, we update our mental model or (ideally) update the documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is exactly how AI agents with memory should work&lt;/strong&gt; Try the known pattern first, and if it fails, explore new paths while updating their knowledge base.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building Agents That Learn Like We Do
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Agents need the same learning loop we use, but systematised into layers:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1: The Ledger (Execution History)&lt;/strong&gt;&lt;br&gt;
Every action gets logged: which tool was called, what happened, did it work.&lt;/p&gt;

&lt;p&gt;What to store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent actions (which tool was called, when, why)&lt;/li&gt;
&lt;li&gt;Inputs (user queries, context, parameters)&lt;/li&gt;
&lt;li&gt;Outputs (tool results, agent responses, errors)&lt;/li&gt;
&lt;li&gt;Metadata (timestamps, latency, token usage, success/failure)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;trajectory_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;uuid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;timestamp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;iso_datetime&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;step&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{...},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{...},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reasoning&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;why this tool was chosen&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;context&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{...}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Layer 2: Smart Tool Selection (Retrieval Layer)&lt;/strong&gt;&lt;br&gt;
Instead of passing all available tools to the agent, dynamically serve only relevant tools.&lt;/p&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Embed tool descriptions using text embeddings&lt;/li&gt;
&lt;li&gt;At runtime, embed the user's task&lt;/li&gt;
&lt;li&gt;Retrieve top-k most relevant tools via vector similarity&lt;/li&gt;
&lt;li&gt;Pass only these tools to the agent
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Index tools
&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search the web for current information&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;calculator&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Perform mathematical calculations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="c1"&gt;# ... more tools
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Create embeddings
&lt;/span&gt;&lt;span class="n"&gt;tool_embeddings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;embed_texts&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;# At runtime
&lt;/span&gt;&lt;span class="n"&gt;task_embedding&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;embed_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_query&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;relevant_tool_indices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;vector_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task_embedding&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tool_embeddings&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top_k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;available_tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;relevant_tool_indices&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Layer 3: Tool Relationship Map (Knowledge Graph)&lt;/strong&gt;&lt;br&gt;
Model which tools work well together and in what sequences.&lt;/p&gt;

&lt;p&gt;What to capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool dependencies (tool A requires output from tool B)&lt;/li&gt;
&lt;li&gt;Sequential patterns (tool chains that succeed together)&lt;/li&gt;
&lt;li&gt;Conditional relationships (if X fails, try Y)&lt;/li&gt;
&lt;li&gt;Context requirements (tool C needs specific input types)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Analyse trajectories
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;trajectory&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;trajectories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trajectory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;current_tool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;trajectory&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;tool_name&lt;/span&gt;
        &lt;span class="n"&gt;next_tool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;trajectory&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;tool_name&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_node&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;current_tool&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_node&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;next_tool&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_edge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;current_tool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;next_tool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;success_rate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;The point:&lt;/strong&gt; Agents shouldn't just remember individual solutions. They should learn &lt;em&gt;patterns&lt;/em&gt; and &lt;em&gt;workflows&lt;/em&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Execution Flow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;User submits task&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Retrieve relevant tools based on task embedding from Layer 2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;→ Returns: [tool_a, tool_b, tool_c]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consult knowledge graph for tool relationships from Layer 3&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;→ Identifies: "When tool_a was used successfully, tool_d and tool_e were often needed"&lt;/li&gt;
&lt;li&gt;→ Returns: [tool_d, tool_e] - complementary tools from past successful trajectories&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agent executes with curated toolset&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;→ Available tools: [tool_a, tool_b, tool_c, tool_d, tool_e]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Store complete trajectory in Layer 1&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;→ Records which tools were actually used and in what order&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update Layer 3 based on success/failure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;→ Strengthens edges between tools that worked well together&lt;/li&gt;
&lt;li&gt;→ Weakens or removes edges for failed combinations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt; An agent that gets better with every problem it solves just like we do, but without forgetting and faster.&lt;/p&gt;


&lt;h2&gt;
  
  
  Handling the Cold Start Problem
&lt;/h2&gt;

&lt;p&gt;Layer 3 faces a classic bootstrapping challenge. It needs trajectories to learn patterns, but agents need patterns to select optimal tools. Here's how to address this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Pre-seed with Expert Knowledge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with manually curated tool relationships based on documentation and common workflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Pre-populate graph with known tool relationships
&lt;/span&gt;&lt;span class="n"&gt;expert_patterns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_fetch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;weight&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expert&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gdrive_get&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salesforce_update&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;weight&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expert&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;database_query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data_analysis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;weight&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expert&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;metadata&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;expert_patterns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_edge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This pre-seeding allows agent to skip the cold start phase entirely, beginning in "warm start" mode with baseline patterns that improve over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. System Maturity Phases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system adapts based on how much it has learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Warm Start (Initial Phase)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Layer 3 contains pre-seeded expert patterns&lt;/li&gt;
&lt;li&gt;Layer 2 remains primary, Layer 3 provides supplementary hints&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example&lt;/em&gt;: "User needs web_search → Layer 2 returns [web_search, api_call], Layer 3 weakly suggests [web_fetch] based on expert knowledge"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Hot Start (After Learning)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Layer 3 has rich, validated patterns from real trajectories&lt;/li&gt;
&lt;li&gt;Layer 3 provides strong suggestions based on proven workflows&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example&lt;/em&gt;: "User needs web_search → Layer 2 returns [web_search, api_call], Layer 3 strongly recommends [web_fetch, content_parser] based on 47 successful patterns"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Point:&lt;/strong&gt; Pre-seeded patterns serve as a starting baseline. As the agent executes tasks, real trajectories either validate and strengthen these patterns or reveal better alternatives.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Efficiency Gains
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Avoiding Tool Definitions Overload&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traditional agents load every available tool into their context. All 50+ tool descriptions, schemas, and examples. This burns through tokens before the agent even starts thinking.&lt;/p&gt;

&lt;p&gt;Layer 2 changes this. Instead of "here are all your tools" the system retrieves only the 3-5 relevant tools for the specific task.&lt;/p&gt;

&lt;p&gt;The result: smaller context windows, faster processing, lower costs, and agents that can scale to hundreds of tools without drowning in their own toolbox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Reducing Intermediate Tool Result Token Consumption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When Layer 3 knows "Tool B needs Tool A's output," the agent can write code to pipe data directly between tools without the LLM processing it twice.&lt;/p&gt;

&lt;p&gt;Traditional approach: Consider a task like "Download my meeting transcript from Google Drive and attach it to the Salesforce lead." The model makes calls like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TOOL CALL: gdrive.getDocument(documentId: "abc123")
→ returns "Discussed Q4 goals...\n[full transcript text]"
   (loaded into model context)

TOOL CALL: salesforce.updateRecord(
    objectType: "SalesMeeting",
    recordId: "00Q5f000001abcXYZ",
    data: { "Notes": "Discussed Q4 goals...\n[full transcript text]" }
)
(model needs to write entire transcript into context again)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Intermediate tool results flow through the model twice. Once when reading, once when writing to the next tool.&lt;/p&gt;

&lt;p&gt;Code execution approach: Agent writes code that passes Tool A's output directly to Tool B in the execution environment. The LLM never sees the intermediate data, only the final result.&lt;/p&gt;

&lt;p&gt;This can reduce token usage drastically for workflows involving large documents or datasets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Continuous Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every successful or failed trajectory refines the graph:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;trajectory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is_successful&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;strengthen_edges&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trajectory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool_sequence&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;weaken_edges&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trajectory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool_sequence&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pre-seeded expert patterns gradually evolve into data driven patterns based on actual performance. If an expert defined relationship doesn't work well in practice, the system learns to deprioritise it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We solve problems by trying known solutions first, then researching when we hit something new. We document our discoveries and build mental models of what works together. AI agents need the same learning loop.&lt;/p&gt;

&lt;p&gt;This three layer memory architecture transforms agents from stateless tools into learning systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Layer 1&lt;/strong&gt; remembers what happened&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer 2&lt;/strong&gt; finds relevant tools efficiently
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer 3&lt;/strong&gt; learns which tools complement each other&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with expert curated tool relationships to overcome the cold start problem, then let the agent learn from real trajectories. Each successful (or failed) workflow strengthens the graph's understanding of tool relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The payoff:&lt;/strong&gt; Agents that handle hundreds of tools without drowning in context, reduce token usage in complex workflows, and continuously improve with every problem they solve, just like we do.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://xange.cdn.prismic.io/xange/aOky5J5xUNkB11S7_XAnge_Seed_Blueprint_A_European_Founders_Path_from_Zero_to_Funded.10.10_Published.pdf" rel="noopener noreferrer"&gt;Agent-as-a-Service: The Blueprint for the Next Generation of SaaS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/engineering/code-execution-with-mcp" rel="noopener noreferrer"&gt;Anthropic - Code execution with MCP&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
    </item>
    <item>
      <title>Sky Agent: A Universal Interface for Multi-Cloud Operations</title>
      <dc:creator>Dinindu Suriyamudali</dc:creator>
      <pubDate>Tue, 30 Sep 2025 06:42:52 +0000</pubDate>
      <link>https://dev.to/dinindu_suriyamudali_e604/sky-agent-a-universal-interface-for-multi-cloud-operations-mi5</link>
      <guid>https://dev.to/dinindu_suriyamudali_e604/sky-agent-a-universal-interface-for-multi-cloud-operations-mi5</guid>
      <description>&lt;p&gt;Managing infrastructure across multiple cloud providers presents a unique challenge. Each platform has its own CLI, APIs, and operational patterns. What if you could interact with all your cloud infrastructure through a single, intelligent interface that understands context, coordinates complex operations, and delegates tasks to specialist agents?&lt;/p&gt;

&lt;p&gt;That's exactly what I built with Sky Agent. A multi-cloud orchestration platform that combines Strand's multi-agent capabilities with Claude Code SDK's coding capabilities to create a unified cloud operations experience. This system goes beyond simple command forwarding. It's an intelligent coordinator that analyses tasks, delegates to specialised agents, and manages complex cross-cloud workflows through natural conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sky Agent (Coordinator)&lt;/strong&gt; - The intelligent entry point positioned above all cloud operations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analyses incoming requests to identify required cloud providers&lt;/li&gt;
&lt;li&gt;Routes tasks to appropriate specialist agents&lt;/li&gt;
&lt;li&gt;Coordinates multi-cloud operations spanning multiple providers&lt;/li&gt;
&lt;li&gt;Manages cross-cloud resource dependencies and workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Specialist Agents:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Agent - Amazon Web Services operations using AWS Strand's "use_aws" tool&lt;/li&gt;
&lt;li&gt;Azure Agent - Microsoft Azure operations via Azure CLI wrapper&lt;/li&gt;
&lt;li&gt;GCP Agent - Google Cloud Platform management through gcloud wrapper&lt;/li&gt;
&lt;li&gt;Coding Agent - Software development tasks leveraging Claude Code SDK&lt;/li&gt;
&lt;li&gt;Atlassian Agent - Jira and Confluence operations via MCP integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MCP Servers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;Atlassian&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sky Agent in Action
&lt;/h3&gt;

&lt;p&gt;The CLI provides an interactive experience for terminal-based workflows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8pzm52llyk17nmfdcad.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8pzm52llyk17nmfdcad.png" alt=" " width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The web interface through Open WebUI offers a familiar chat experience:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslck9k035znrbv6ityge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslck9k035znrbv6ityge.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Architectural Decisions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Why AWS Strands Swarm for Coordination?
&lt;/h4&gt;

&lt;p&gt;AWS Strands offers multiple multi-agent orchestration patterns, Workflow and Graph architectures alongside Swarm. After evaluating all three, Swarm emerged as the optimal choice for Sky Agent's dynamic coordination needs.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Swarm over Workflow or Graph?
&lt;/h4&gt;

&lt;p&gt;Swarm enables the coordinator to analyse tasks and delegate to specialists on-the-fly, without predefined paths or rigid workflows. Whether handling a simple single-cloud query or orchestrating complex multi-cloud operations, the same architecture adapts seamlessly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;swarm = Swarm(
    [sky_agent, aws_agent, azure_agent, gcp_agent, coding_agent, atlassian_agent],
    entry_point=sky_agent,
    max_handoffs=20,
    repetitive_handoff_detection_window=8
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Why Dedicated Cloud Wrappers?
&lt;/h4&gt;

&lt;p&gt;Rather than forcing uniform patterns, each cloud provider gets a focused wrapper that embraces native CLI tools and authentication mechanisms. This design respects each provider's optimal patterns while maintaining a consistent interface for the coordinator.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Containers?
&lt;/h4&gt;

&lt;p&gt;The entire system runs in containers, enabling deployment anywhere - your local machine, AWS, Azure, GCP, or any combination.&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Enables
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Unified Operations:&lt;/strong&gt; One interface for all cloud providers, eliminating the need to remember provider-specific commands and syntax.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coordinated Workflows:&lt;/strong&gt; Complex operations spanning multiple clouds become simple natural language requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development Integration:&lt;/strong&gt; Code generation, fixes, and Infrastructure as Code workflows integrated alongside cloud operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automated Documentation:&lt;/strong&gt; Project management integration ensures all operations are tracked and documented automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Sky Agent demonstrates that managing multiple cloud providers doesn't require multiple tools and contexts. By combining intelligent coordination with specialist agents and surgical precision development workflows, it provides a unified interface across your entire cloud infrastructure.&lt;/p&gt;

&lt;p&gt;The architecture offers an elevated perspective, coordinating specialist agents who have a deep understanding of their domains. Whether managing one cloud or three, the system adapts to your infrastructure while maintaining consistent operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/dinindunz/sky-agent" rel="noopener noreferrer"&gt;Sky Agent GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://strandsagents.com/latest/documentation/docs/" rel="noopener noreferrer"&gt;AWS Strands Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code/sdk/sdk-python" rel="noopener noreferrer"&gt;Claude Code SDK&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>gcp</category>
      <category>azure</category>
      <category>aiops</category>
    </item>
    <item>
      <title>When Your AI Agent Needs to be a Scalpel, Not a Sledgehammer</title>
      <dc:creator>Dinindu Suriyamudali</dc:creator>
      <pubDate>Tue, 02 Sep 2025 13:00:16 +0000</pubDate>
      <link>https://dev.to/dinindu_suriyamudali_e604/when-your-ai-agent-needs-a-scalpel-not-a-sledgehammer-claude-code-sdk-vs-aws-strands-for-surgical-468l</link>
      <guid>https://dev.to/dinindu_suriyamudali_e604/when-your-ai-agent-needs-a-scalpel-not-a-sledgehammer-claude-code-sdk-vs-aws-strands-for-surgical-468l</guid>
      <description>&lt;h3&gt;
  
  
  The Problem: When "Minimal Fix" Means "Complete Refactor"
&lt;/h3&gt;

&lt;p&gt;In my previous &lt;a href="https://dev.to/dinindu_suriyamudali_e604/building-an-ai-powered-cloud-engineer-agent-11me"&gt;blog&lt;/a&gt;, I shared how I built a cloud engineer agent using AWS Strands that could automatically detect CloudWatch log errors and raise PRs with potential fixes. While the concept worked, I encountered a critical issue: &lt;strong&gt;the agent consistently made drastic changes when simple fixes were needed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Picture this scenario: Your Lambda function fails because it's missing a single IAM permission. The fix? Add one line to your IAM policy. But instead, your agent decides to refactor your entire infrastructure, reorganise your code structure, and "improve" things you never asked it to touch.&lt;/p&gt;

&lt;p&gt;Despite countless iterations of my system prompt, emphasising:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply ONLY the specific fix needed&lt;/li&gt;
&lt;li&gt;No broader improvements beyond fixing the specific error&lt;/li&gt;
&lt;li&gt;Your role is automated incident response with minimal, targeted fixes only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS Strands kept making those broad, sweeping changes. The surgical precision I needed just wasn't there.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 The Solution: Testing Claude Code SDK with Bedrock AgentCore
&lt;/h3&gt;

&lt;p&gt;Frustrated with this limitation, I decided to test the &lt;strong&gt;Claude Code SDK integrated with Bedrock AgentCore.&lt;/strong&gt; The results were immediately promising. It successfully applied the precise, surgical fixes I was looking for.&lt;/p&gt;

&lt;p&gt;But I wanted to be thorough. So I built a comprehensive POC with three different setups to test various combinations of how Claude Code can work with Bedrock AgentCore:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Running the Claude Code command-line interface directly within the Bedrock AgentCore framework.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrating the Claude Code SDK directly into Bedrock AgentCore for more programmatic control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using the Claude Code SDK as a specialised tool while keeping AWS Strands as the orchestrator agent.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Architectural Differences That Matter
&lt;/h3&gt;

&lt;h4&gt;
  
  
  AWS Strands: The Over-Eager Optimiser
&lt;/h4&gt;

&lt;p&gt;Strands seemed to treat every incident as an opportunity for comprehensive optimisation. Even with explicit constraints in the prompt, it would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactor code beyond the error scope&lt;/li&gt;
&lt;li&gt;Suggest architectural improvements&lt;/li&gt;
&lt;li&gt;Make style and formatting changes&lt;/li&gt;
&lt;li&gt;Add "helpful" features nobody requested&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Claude Code SDK + Bedrock AgentCore: The Surgical Specialist
&lt;/h4&gt;

&lt;p&gt;The Claude Code SDK approach demonstrated much better constraint adherence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identified the exact root cause&lt;/li&gt;
&lt;li&gt;Applied minimal viable fixes&lt;/li&gt;
&lt;li&gt;Respected the existing codebase structure&lt;/li&gt;
&lt;li&gt;Maintained focus on incident response, not improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Example: The IAM Permission Fix
&lt;/h3&gt;

&lt;p&gt;The Scenario: Lambda function fails with "Access Denied" error when trying to publish a message to SQS.&lt;br&gt;
The Required Fix: Grant SNS publish permission to the Lambda function.&lt;/p&gt;

&lt;h4&gt;
  
  
  😅 AWS Strands Response:
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;"Oh, you have a permission issue? Let me fix EVERYTHING!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0sdwa5pytpqwum6kw523.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0sdwa5pytpqwum6kw523.png" alt=" " width="800" height="818"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Claude Code SDK Response:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrbr06kq7qqjxsyb8xji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrbr06kq7qqjxsyb8xji.png" alt=" " width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Learnings: Why This Matters for Production Systems
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Blast Radius Control&lt;/strong&gt;&lt;br&gt;
In production incident response, you want the smallest possible change to restore service. Every additional modification increases risk and potential for new issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Audit and Compliance&lt;/strong&gt;&lt;br&gt;
When changes are minimal and targeted, they're easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review and approve&lt;/li&gt;
&lt;li&gt;Audit for compliance&lt;/li&gt;
&lt;li&gt;Roll back if needed&lt;/li&gt;
&lt;li&gt;Understand the impact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Team Confidence&lt;/strong&gt;&lt;br&gt;
Teams are more likely to trust and adopt automated incident response when they know it won't make unexpected changes to their carefully crafted systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementation Insights
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What Worked Well with Claude Code SDK
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Better constraint understanding:&lt;/strong&gt; Claude Code SDK consistently respected boundaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual awareness:&lt;/strong&gt; Better at understanding what NOT to change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging precision:&lt;/strong&gt; More accurate root cause identification&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Challenges with AWS Strands
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope creep tendency:&lt;/strong&gt; Natural inclination to "improve" beyond requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt instruction drift:&lt;/strong&gt; Difficulty maintaining a narrow focus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context bleeding:&lt;/strong&gt; Unable to separate "fixing" from "improving"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion: The Right Tool for the Right Job
&lt;/h3&gt;

&lt;p&gt;While AWS Strands excels at comprehensive analysis and broad improvements, the &lt;strong&gt;Claude Code SDK with Bedrock AgentCore proved superior for surgical and incident-response scenarios&lt;/strong&gt; where precision and constraint adherence are paramount.&lt;br&gt;
The key insight? Not all AI agents are created equal for every task. Sometimes you need a scalpel, not a sledgehammer.&lt;/p&gt;

&lt;p&gt;What's your experience with AI agent precision in production environments? Have you found similar challenges with scope creep in automated systems? Share your thoughts in the comments below!&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/dinindunz/claude-agentcore" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.anthropic.com/en/docs/claude-code/sdk/sdk-python" rel="noopener noreferrer"&gt;Claude Code SDK Documentation&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/blogs/aws/introducing-amazon-bedrock-agentcore-securely-deploy-and-operate-ai-agents-at-any-scale/" rel="noopener noreferrer"&gt;AWS Bedrock AgentCore&lt;/a&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>claude</category>
      <category>agentcore</category>
      <category>aws</category>
    </item>
    <item>
      <title>Building an AI-Powered Cloud Engineer Agent</title>
      <dc:creator>Dinindu Suriyamudali</dc:creator>
      <pubDate>Fri, 08 Aug 2025 08:48:22 +0000</pubDate>
      <link>https://dev.to/dinindu_suriyamudali_e604/building-an-ai-powered-cloud-engineer-agent-11me</link>
      <guid>https://dev.to/dinindu_suriyamudali_e604/building-an-ai-powered-cloud-engineer-agent-11me</guid>
      <description>&lt;p&gt;&lt;em&gt;How I built a comprehensive cloud engineering solution powered by Amazon Bedrock, MCP servers, and AWS Strands for automated operations, cost optimisation, root cause analysis, and intelligent infrastructure management&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing cloud infrastructure at scale requires constant monitoring, rapid response to issues, deep expertise across multiple AWS services, proactive cost optimisation, and comprehensive architectural guidance. What if you could have an AI-powered cloud engineer that never sleeps, automatically responds to errors, creates Jira tickets, generates pull requests, performs Well-Architected reviews, conducts root cause analysis, optimises costs, and provides expert guidance 24/7?&lt;/p&gt;

&lt;p&gt;That's exactly what I built - a comprehensive Cloud Engineer Agent that combines the power of Amazon Bedrock's Claude model, Model Context Protocol (MCP) servers, and AWS Strands to create an intelligent, automated cloud operations platform accessible through Slack. This system goes far beyond simple error response - it's a complete cloud engineering companion that handles everything from routine operations to complex architectural assessments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Our solution represents a sophisticated multi-component architecture that seamlessly integrates various AWS services, external APIs, and AI capabilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────┐    ┌─────────────────┐    ┌─────────────────────────────────────────────────────┐         ┌─────────────────┐
│    Slack    │───▶│   API Gateway   │───▶│                    Lambda Function                  │────────▶│    S3 Vectors?  │  
│  Interface  │    │                 │    │                     (AWS Strands)                   │         └─────────────────┘
└─────────────┘    └─────────────────┘    │                                                     │
                                          │ ┌───────────────┐ ┌───────────────┐ ┌─────────────┐ │
                   ┌─────────────────┐    │ │ aws_doc_tools │ │ aws_cdk_tools | │ github_tools│ │
                   │ CloudWatch Logs │───▶│ └───────────────┘ └───────────────┘ └─────────────┘ │
                   └─────────────────┘    │ ┌────────────────┐ ┌──────────────┐ ┌─────────────┐ │
                                          │ │ atlassian_tools│ │   use_aws    │ │    memory   │ │
                                          │ └────────────────┘ └──────────────┘ └─────────────┘ │
                                          └─────────────────────────────────────────────────────┘
                                                                 │
                            ┌────────────────────────────────────┼───────────────────────────────────────────┐
                            │                                    │                                           │
                            ▼                                    ▼                                           ▼
                  ┌─────────────────┐            ┌──────────────────────────────────┐    ┌──────────────────────────────────────┐
                  │ MCP Proxy (ALB) │            │          Amazon Bedrock          │    │            Cost Metrics              │
                  │ ┌─────────────┐ │            │                                  │    │                                      │  
                  │ │ Forgate     │ │            │ ┌─────────────┐  ┌─────────────┐ │    │  ┌───────────────┐ ┌───────────────┐ │
                  │ │ Task        │ │            │ │   Model     │  │  Knowledge  │ │    │  │ Cost Explorer │ │  CloudWatch   │ │
                  │ └─────────────┘ │            │ └─────────────┘  │  Base (RAG)?│ │    │  └───────────────┘ │  Dashboard    │ │
                  └─────────────────┘            │                  └─────────────┘ │    │                    └───────────────┘ │
                            │                    │ ┌─────────────┐                  │    └──────────────────────────────────────┘  
                            │                    │ │ Guardrails  │                  │       
                            │                    │ └─────────────┘                  │    
                            ▼                    └──────────────────────────────────┘  
    ┌───────────────────────────────────────────────────┐                               
    │                   MCP Servers                     │             
    │                                                   │         ┌─────────────────┐           
    │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │         │    External     │           
    │ │AWS Docs MCP │ │  Atlassian  │ │   AWS CDK   │   │         │    Services     │         
    │ │     Srv     │ │   MCP Srv   │ │   MCP Srv   │   │         │                 │           
    │ │             │ │             │ │             │   │         │ ┌─────────────┐ │                              
    │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │   │         │ │   GitHub    │ │                              
    │ │ │Fargate  │ │ │ │Fargate  │ │ │ │Fargate  │ │   │         │ │    API      │ │        
    │ │ │Task     │ │ │ │Task     │ │ │ │Task     │ │   │         │ └─────────────┘ │      
    │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │   │────────▶│                 │       
    │ └─────────────┘ └─────────────┘ └─────────────┘   │         │ ┌─────────────┐ │       
    │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │         │ │  Atlassian  │ │        
    │ │   GitHub    │ │             │ │             │   │         │ │    API      │ │      
    │ │  MCP Srv    │ │             │ │             │   │         │ └─────────────┘ │     
    │ │             │ │             │ │             │   │         │                 │ 
    │ │ ┌─────────┐ │ │             │ │             │   │         │ ┌─────────────┐ │                   
    │ │ │Fargate  │ │ │             │ │             │   │         │ │    AWS      │ │
    │ │ │Task     │ │ │             │ │             │   │         │ │Documentation│ │        
    │ │ └─────────┘ │ │             │ │             │   │         │ │             │ │        
    │ └─────────────┘ └─────────────┘ └─────────────┘   │         │ └─────────────┘ │         
    └───────────────────────────────────────────────────┘         └─────────────────┘    
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Components Deep Dive
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Multi-Input Architecture
&lt;/h3&gt;

&lt;p&gt;Our system is designed to handle two primary input sources:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slack Interface&lt;/strong&gt;: Users can interact naturally with the Cloud Engineer Agent through Slack channels, asking questions about AWS services, requesting infrastructure changes, or seeking troubleshooting assistance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CloudWatch Log Events&lt;/strong&gt;: The system automatically monitors CloudWatch logs for errors and anomalies, triggering automated response workflows without human intervention.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. AWS Strands Integration
&lt;/h3&gt;

&lt;p&gt;At the heart of our Lambda function lies AWS Strands, which provides a powerful toolkit of integrated capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;aws_doc_tools&lt;/strong&gt;: Real-time access to AWS documentation and best practices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;aws_cdk_tools&lt;/strong&gt;: CDK-specific operations and infrastructure as code guidance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;github_tools&lt;/strong&gt;: Repository management and pull request automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;atlassian_tools&lt;/strong&gt;: Jira integration for issue tracking and project management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;use_aws&lt;/strong&gt;: Direct AWS service interactions and resource management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;memory&lt;/strong&gt;: Context retention and conversation history across sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. MCP Server Architecture
&lt;/h3&gt;

&lt;p&gt;Model Context Protocol (MCP) servers run as containerised Fargate tasks, providing specialised capabilities:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Documentation MCP Server&lt;/strong&gt;: Maintains up-to-date access to AWS documentation, architectural patterns, and technical guides.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS CDK MCP Server&lt;/strong&gt;: Offers CDK-specific operations, template generation, and infrastructure as code best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub MCP Server&lt;/strong&gt;: Enables seamless repository management, automated pull request creation, and version control integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atlassian MCP Server&lt;/strong&gt;: Provides comprehensive Jira integration for automated ticket creation, project management, and workflow orchestration.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Amazon Bedrock Integration
&lt;/h3&gt;

&lt;p&gt;Our AI capabilities are powered by Amazon Bedrock's comprehensive suite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Model&lt;/strong&gt;: Advanced language understanding and generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails&lt;/strong&gt;: Content filtering and safety validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Base&lt;/strong&gt;: RAG implementation for internal knowledge repository&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Enhanced Data Flow
&lt;/h2&gt;

&lt;p&gt;The system follows a sophisticated data flow pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Input Processing&lt;/strong&gt;: Slack messages or CloudWatch log events trigger API Gateway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lambda Orchestration&lt;/strong&gt;: AWS Strands-powered Lambda processes requests using integrated tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Integration&lt;/strong&gt;: MCP Proxy (ALB) provides load-balanced access to Fargate-hosted MCP servers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Processing&lt;/strong&gt;: Amazon Bedrock processes requests with Claude model and safety guardrails&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response Aggregation&lt;/strong&gt;: Lambda combines responses from all integrated services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output Delivery&lt;/strong&gt;: Processed responses return to Slack, with automated Jira ticket creation and GitHub PR generation&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Capabilities Showcase
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Automated Error Response Workflow
&lt;/h3&gt;

&lt;p&gt;When CloudWatch detects an error:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log event triggers Lambda function&lt;/li&gt;
&lt;li&gt;Agent analyses error context and impact&lt;/li&gt;
&lt;li&gt;Automated Jira ticket creation with detailed analysis&lt;/li&gt;
&lt;li&gt;GitHub pull request generated with proposed fixes&lt;/li&gt;
&lt;li&gt;Slack notification sent to relevant team channels&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Real-Time AWS Operations
&lt;/h3&gt;

&lt;p&gt;Users can perform complex AWS operations through natural language:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Scale up the production ECS cluster to handle increased traffic"&lt;/li&gt;
&lt;li&gt;"Check the cost optimisation opportunities for our S3 buckets"&lt;/li&gt;
&lt;li&gt;"Review security group configurations for the web tier"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Intelligent Documentation Lookup
&lt;/h3&gt;

&lt;p&gt;The agent provides contextual AWS documentation and best practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service-specific technical references&lt;/li&gt;
&lt;li&gt;Architectural guidance and recommendations&lt;/li&gt;
&lt;li&gt;Troubleshooting guides and solutions&lt;/li&gt;
&lt;li&gt;Cost optimisation strategies&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Development Journey: Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The AI Tooling Revolution
&lt;/h3&gt;

&lt;p&gt;This project showcased the power of modern AI development tools:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Development &amp;amp; Planning&lt;/strong&gt;: Claude assisted with PRD creation and architectural planning&lt;br&gt;
&lt;strong&gt;Large-Scale Development&lt;/strong&gt;: Cline + Mantel API Gateway enabled rapid codebase development and refactoring&lt;br&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: Gemini generated comprehensive documentation from demo screenshots&lt;br&gt;
&lt;strong&gt;Visual Assets&lt;/strong&gt;: aws-diagram-mcp automated architecture diagram creation&lt;br&gt;
&lt;strong&gt;Surgical Code Fixes&lt;/strong&gt;: Amazon Q provided precise, targeted problem resolution&lt;br&gt;
&lt;strong&gt;Development Acceleration&lt;/strong&gt;: GitHub Copilot delivered real-time completions and commit message generation&lt;/p&gt;

&lt;h3&gt;
  
  
  System Prompt Engineering Challenges
&lt;/h3&gt;

&lt;p&gt;Achieving surgical precision in automated responses required extensive system prompt refinement. The challenge was balancing comprehensive capabilities with focused execution - ensuring the agent could handle complex scenarios while maintaining minimal, targeted fixes for specific issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Agent vs. Single-Agent Architecture
&lt;/h3&gt;

&lt;p&gt;Initial exploration of a multi-agent architecture revealed significant limitations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-Agent Challenges&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context fragmentation across specialised agents&lt;/li&gt;
&lt;li&gt;Over-specialisation leading to broader changes than necessary&lt;/li&gt;
&lt;li&gt;Communication overhead and information loss during handoffs&lt;/li&gt;
&lt;li&gt;Competing objectives between different agents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Single-Agent Superiority&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete context awareness without information fragmentation&lt;/li&gt;
&lt;li&gt;Clear single objective focused on specific problem resolution&lt;/li&gt;
&lt;li&gt;Simplified execution path eliminating orchestration overhead&lt;/li&gt;
&lt;li&gt;Consistent precision in delivering minimal, targeted changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This architectural insight proved crucial for achieving surgical precision in automated error response workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security &amp;amp; Compliance
&lt;/h2&gt;

&lt;p&gt;Security is built into every layer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lambda execution environment isolation&lt;/li&gt;
&lt;li&gt;Bedrock Guardrails for content safety and compliance&lt;/li&gt;
&lt;li&gt;AWS IAM for granular access control and least privilege&lt;/li&gt;
&lt;li&gt;Comprehensive audit logging for all operations and decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Scalability &amp;amp; Performance
&lt;/h2&gt;

&lt;p&gt;The architecture is designed for enterprise scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-scaling Lambda functions handle variable workloads&lt;/li&gt;
&lt;li&gt;Distributed MCP server architecture on Fargate provides horizontal scalability&lt;/li&gt;
&lt;li&gt;Application Load Balancer ensures high availability and fault tolerance&lt;/li&gt;
&lt;li&gt;CloudWatch monitoring provides real-time performance insights&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo Capabilities
&lt;/h2&gt;

&lt;p&gt;The system demonstrates its capabilities through comprehensive scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dinindunz/cloud-engineer/tree/main/demos/automated-error-response" rel="noopener noreferrer"&gt;Automated Error Response&lt;/a&gt;&lt;/strong&gt;: Complete workflow from error detection to resolution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dinindunz/cloud-engineer/tree/main/demos/root-cause-analysis" rel="noopener noreferrer"&gt;Root Cause Analysis&lt;/a&gt;&lt;/strong&gt;: Systematic investigation of complex infrastructure issues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dinindunz/cloud-engineer/tree/main/demos/well-architected-review" rel="noopener noreferrer"&gt;AWS Well-Architected Review&lt;/a&gt;&lt;/strong&gt;: Comprehensive infrastructure assessment across all five pillars&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dinindunz/cloud-engineer/tree/main/demos/cloud-ops" rel="noopener noreferrer"&gt;Cloud Operations&lt;/a&gt;&lt;/strong&gt;: Direct AWS service interactions and resource management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dinindunz/cloud-engineer/tree/main/demos/general-queries" rel="noopener noreferrer"&gt;General Queries&lt;/a&gt;&lt;/strong&gt;: Expert guidance and best practices recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Future Roadmap
&lt;/h2&gt;

&lt;p&gt;Planned enhancements include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced RAG Implementation&lt;/strong&gt;: Bedrock Knowledge Base or S3 Vector integration for improved contextual responses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Memory Management&lt;/strong&gt;: Memory Strands tool for sophisticated context retention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Intelligence&lt;/strong&gt;: CloudWatch Dashboard integration for comprehensive cost monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise Security&lt;/strong&gt;: Advanced API security and authentication mechanisms&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building an AI-powered Cloud Engineer Agent represents a significant leap forward in cloud operations automation. By combining Amazon Bedrock's AI capabilities, MCP servers, and AWS Strands, I've created a system that not only responds to infrastructure issues but proactively manages and optimises cloud environments.&lt;/p&gt;

&lt;p&gt;The key lessons learned - particularly around single-agent architecture superiority and the power of modern AI development tools - provide valuable insights for anyone building similar systems. The result is a comprehensive solution that transforms how teams interact with and manage their AWS infrastructure.&lt;/p&gt;

&lt;p&gt;The future of cloud engineering lies in intelligent automation, and this architecture provides a robust foundation for organisations looking to scale their cloud operations while maintaining reliability, security, and cost effectiveness.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;Ready to build your own AI-powered cloud engineer? Check out the complete source code and implementation details:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://github.com/dinindunz/cloud-engineer" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/strong&gt; - Full source code, deployment guides, and documentation&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stay tuned for future improvements including enhanced RAG implementation, advanced memory management, and comprehensive cost intelligence features. Follow me for more insights on cloud architecture, AI integration, and DevOps automation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>agentic</category>
      <category>cloudengineering</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
