<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Justin3go</title>
        <link>https://justin3go.com</link>
        <description>A T-shaped front-end developer who is committed to deepening expertise in the technical field, focuses on independent development, enjoys working with Vue.js and Nest.js, and has some knowledge of Python, search engines, NLP, Web3, and back-end development.</description>
        <lastBuildDate>Sun, 12 Apr 2026 07:03:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en-US</language>
        <image>
            <title>Justin3go</title>
            <url>https://oss.justin3go.com/justin3goAvatar.jpg</url>
            <link>https://justin3go.com</link>
        </image>
        <copyright>Copyright© 2021-present Justin3go</copyright>
        <item>
            <title><![CDATA[Shedding Heavy Memories: Context Compaction in Codex, Claude Code, and OpenCode]]></title>
            <link>https://justin3go.com/en/posts/2026/04/09-context-compaction-in-codex-claude-code-and-opencode</link>
            <guid>https://justin3go.com/en/posts/2026/04/09-context-compaction-in-codex-claude-code-and-opencode</guid>
            <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<h1 id="shedding-heavy-memories-context-compaction-in-codex-claude-code-and-opencode" tabindex="-1">Shedding Heavy Memories: Context Compaction in Codex, Claude Code, and OpenCode <a class="header-anchor" href="#shedding-heavy-memories-context-compaction-in-codex-claude-code-and-opencode" aria-label="Permalink to &quot;Shedding Heavy Memories: Context Compaction in Codex, Claude Code, and OpenCode&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<blockquote></blockquote>
<p>This article uses a 15,400-token login bug fix scenario to dissect the context compaction strategies of three mainstream CLI agents: <strong>Codex CLI</strong>, <strong>Claude Code</strong>, and <strong>OpenCode</strong>. Codex CLI takes a single-layer &quot;handoff summary&quot; approach; Claude Code employs a three-tier progressive mechanism — tool result trimming, <strong>Prompt Cache-friendly strategies</strong>, and a 9-section structured LLM summary; OpenCode implements &quot;stepped governance&quot; through non-destructive timestamp-based message hiding paired with a 5-heading LLM summary. The article reveals a core insight: the best context management isn't about endlessly expanding memory capacity, but learning to <strong>forget with precision</strong>.</p>
<blockquote></blockquote>
<!-- DESC SEP -->
<p>When using AI agents for deep programming tasks, you've surely encountered this predicament: at first, the AI is sharp and responsive, hitting every mark; but as conversation turns accumulate, it seems to get progressively dumber.</p>
<p>When context is nearly exhausted, the AI rushes to finish, leading to poor results — the community calls this Context Anxiety, and just like us humans, haste makes waste. To keep the conversation going, the agent must shed some memories (compress — compact). But how to shed, what to shed, and how to recover afterward have become key markers of whether an agent runtime is truly mature.</p>
<p>Today, let's tear apart three mainstream CLI agents — <strong>Codex CLI</strong>, <strong>Claude Code</strong>, and <strong>OpenCode</strong> — and see how each performs their &quot;compression magic&quot; when facing the same login bug.</p>
<blockquote>
<p>Note: This analysis is based on the open-source repository logic of Codex CLI and OpenCode, along with community reverse engineering and leaked source code verification of the Claude Code runtime.</p>
</blockquote>
<h2 id="scenario-replay-a-15-400-token-login-bug-fix" tabindex="-1">Scenario Replay: A 15,400-Token Login Bug Fix <a class="header-anchor" href="#scenario-replay-a-15-400-token-login-bug-fix" aria-label="Permalink to &quot;Scenario Replay: A 15,400-Token Login Bug Fix&quot;">&ZeroWidthSpace;</a></h2>
<p>Imagine you're fixing a login endpoint returning 401 Unauthorized. You summon your AI agent and embark on an intense debugging session.</p>
<p>Here's the complete conversation log:</p>
<p>| # | Role | Summary | Est. Tokens |
| :</p>
]]></description>
            <content:encoded><![CDATA[<h1 id="shedding-heavy-memories-context-compaction-in-codex-claude-code-and-opencode" tabindex="-1">Shedding Heavy Memories: Context Compaction in Codex, Claude Code, and OpenCode <a class="header-anchor" href="#shedding-heavy-memories-context-compaction-in-codex-claude-code-and-opencode" aria-label="Permalink to &quot;Shedding Heavy Memories: Context Compaction in Codex, Claude Code, and OpenCode&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<blockquote></blockquote>
<p>This article uses a 15,400-token login bug fix scenario to dissect the context compaction strategies of three mainstream CLI agents: <strong>Codex CLI</strong>, <strong>Claude Code</strong>, and <strong>OpenCode</strong>. Codex CLI takes a single-layer &quot;handoff summary&quot; approach; Claude Code employs a three-tier progressive mechanism — tool result trimming, <strong>Prompt Cache-friendly strategies</strong>, and a 9-section structured LLM summary; OpenCode implements &quot;stepped governance&quot; through non-destructive timestamp-based message hiding paired with a 5-heading LLM summary. The article reveals a core insight: the best context management isn't about endlessly expanding memory capacity, but learning to <strong>forget with precision</strong>.</p>
<blockquote></blockquote>
<!-- DESC SEP -->
<p>When using AI agents for deep programming tasks, you've surely encountered this predicament: at first, the AI is sharp and responsive, hitting every mark; but as conversation turns accumulate, it seems to get progressively dumber.</p>
<p>When context is nearly exhausted, the AI rushes to finish, leading to poor results — the community calls this Context Anxiety, and just like us humans, haste makes waste. To keep the conversation going, the agent must shed some memories (compress — compact). But how to shed, what to shed, and how to recover afterward have become key markers of whether an agent runtime is truly mature.</p>
<p>Today, let's tear apart three mainstream CLI agents — <strong>Codex CLI</strong>, <strong>Claude Code</strong>, and <strong>OpenCode</strong> — and see how each performs their &quot;compression magic&quot; when facing the same login bug.</p>
<blockquote>
<p>Note: This analysis is based on the open-source repository logic of Codex CLI and OpenCode, along with community reverse engineering and leaked source code verification of the Claude Code runtime.</p>
</blockquote>
<h2 id="scenario-replay-a-15-400-token-login-bug-fix" tabindex="-1">Scenario Replay: A 15,400-Token Login Bug Fix <a class="header-anchor" href="#scenario-replay-a-15-400-token-login-bug-fix" aria-label="Permalink to &quot;Scenario Replay: A 15,400-Token Login Bug Fix&quot;">&ZeroWidthSpace;</a></h2>
<p>Imagine you're fixing a login endpoint returning 401 Unauthorized. You summon your AI agent and embark on an intense debugging session.</p>
<p>Here's the complete conversation log:</p>
<table tabindex="0">
<thead>
<tr>
<th style="text-align:left">#</th>
<th style="text-align:left">Role</th>
<th style="text-align:left">Summary</th>
<th style="text-align:left">Est. Tokens</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">#1</td>
<td style="text-align:left">System</td>
<td style="text-align:left">System prompt (40+ tool definitions)</td>
<td style="text-align:left">~800</td>
</tr>
<tr>
<td style="text-align:left">#2</td>
<td style="text-align:left">User</td>
<td style="text-align:left">&quot;Login page returns 401, help me debug&quot;</td>
<td style="text-align:left">~100</td>
</tr>
<tr>
<td style="text-align:left">#3</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;Let me search for auth-related logic&quot;</td>
<td style="text-align:left">~150</td>
</tr>
<tr>
<td style="text-align:left">#4</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>grep &quot;auth&quot; --include=&quot;*.ts&quot;</code></td>
<td style="text-align:left">~50</td>
</tr>
<tr>
<td style="text-align:left">#5</td>
<td style="text-align:left"><strong>Tool Result</strong></td>
<td style="text-align:left"><strong>(50 search results returned)</strong></td>
<td style="text-align:left"><strong>~2,000</strong></td>
</tr>
<tr>
<td style="text-align:left">#6</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;Found several hits, let me check auth.ts&quot;</td>
<td style="text-align:left">~150</td>
</tr>
<tr>
<td style="text-align:left">#7</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>read_file &quot;src/auth.ts&quot;</code></td>
<td style="text-align:left">~50</td>
</tr>
<tr>
<td style="text-align:left">#8</td>
<td style="text-align:left"><strong>Tool Result</strong></td>
<td style="text-align:left"><strong>(Full file content, ~300 lines)</strong></td>
<td style="text-align:left"><strong>~3,500</strong></td>
</tr>
<tr>
<td style="text-align:left">#9</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;Found it — token validation doesn't handle expiry&quot;</td>
<td style="text-align:left">~300</td>
</tr>
<tr>
<td style="text-align:left">#10</td>
<td style="text-align:left">User</td>
<td style="text-align:left">&quot;OK, but keep backward compatibility with old sessions&quot;</td>
<td style="text-align:left">~80</td>
</tr>
<tr>
<td style="text-align:left">#11</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;Got it, let me also check the middleware&quot;</td>
<td style="text-align:left">~150</td>
</tr>
<tr>
<td style="text-align:left">#12</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>read_file &quot;src/middleware.ts&quot;</code></td>
<td style="text-align:left">~50</td>
</tr>
<tr>
<td style="text-align:left">#13</td>
<td style="text-align:left"><strong>Tool Result</strong></td>
<td style="text-align:left"><strong>(Full middleware content)</strong></td>
<td style="text-align:left"><strong>~2,500</strong></td>
</tr>
<tr>
<td style="text-align:left">#14</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;Middleware needs changes too, I'll handle it&quot;</td>
<td style="text-align:left">~200</td>
</tr>
<tr>
<td style="text-align:left">#15</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>edit_file &quot;src/auth.ts&quot; (patch)</code></td>
<td style="text-align:left">~100</td>
</tr>
<tr>
<td style="text-align:left">#16</td>
<td style="text-align:left">Tool Result</td>
<td style="text-align:left">&quot;Successfully applied.&quot;</td>
<td style="text-align:left">~30</td>
</tr>
<tr>
<td style="text-align:left">#17</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>edit_file &quot;src/middleware.ts&quot; (patch)</code></td>
<td style="text-align:left">~100</td>
</tr>
<tr>
<td style="text-align:left">#18</td>
<td style="text-align:left">Tool Result</td>
<td style="text-align:left">&quot;Successfully applied.&quot;</td>
<td style="text-align:left">~30</td>
</tr>
<tr>
<td style="text-align:left">#19</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;Code changes done, let me run the tests&quot;</td>
<td style="text-align:left">~100</td>
</tr>
<tr>
<td style="text-align:left">#20</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>bash &quot;npm test&quot;</code></td>
<td style="text-align:left">~50</td>
</tr>
<tr>
<td style="text-align:left">#21</td>
<td style="text-align:left"><strong>Tool Result</strong></td>
<td style="text-align:left"><strong>(3 tests failed with stack traces)</strong></td>
<td style="text-align:left"><strong>~3,000</strong></td>
</tr>
<tr>
<td style="text-align:left">#22</td>
<td style="text-align:left">Assistant</td>
<td style="text-align:left">&quot;3 tests failed, let me fix the test cases&quot;</td>
<td style="text-align:left">~200</td>
</tr>
<tr>
<td style="text-align:left">#23</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>edit_file &quot;src/auth.test.ts&quot; (patch)</code></td>
<td style="text-align:left">~150</td>
</tr>
<tr>
<td style="text-align:left">#24</td>
<td style="text-align:left">Tool Result</td>
<td style="text-align:left">&quot;Successfully applied.&quot;</td>
<td style="text-align:left">~30</td>
</tr>
<tr>
<td style="text-align:left">#25</td>
<td style="text-align:left">Tool Call</td>
<td style="text-align:left"><code>bash &quot;npm test&quot;</code></td>
<td style="text-align:left">~50</td>
</tr>
<tr>
<td style="text-align:left">#26</td>
<td style="text-align:left"><strong>Tool Result</strong></td>
<td style="text-align:left"><strong>(All tests passing, full output)</strong></td>
<td style="text-align:left"><strong>~1,500</strong></td>
</tr>
</tbody>
</table>
<p>Just 26 messages, yet they've consumed roughly <strong>15,400 tokens</strong>. The five bolded tool results (#5, #8, #13, #21, #26) alone total about <strong>12,500 tokens</strong> — <strong>81%</strong> of the total. This data was critical during debugging, but once the bug is fixed, it becomes dead weight in the context. If left uncleaned, the next conversation turn might overflow the window and lose the system prompt or the user's core requirements.</p>
<h2 id="codex-cli-writing-a-crisp-handoff-memo" tabindex="-1">Codex CLI: Writing a Crisp &quot;Handoff Memo&quot; <a class="header-anchor" href="#codex-cli-writing-a-crisp-handoff-memo" aria-label="Permalink to &quot;Codex CLI: Writing a Crisp &quot;Handoff Memo&quot;&quot;">&ZeroWidthSpace;</a></h2>
<p>OpenAI's Codex CLI (<a href="https://github.com/openai/codex" target="_blank" rel="noreferrer">source</a>, Rust implementation) takes an approach that feels very intuitive to humans: <strong>summarize and replace</strong>.</p>
<p>Its core idea can be captured in one sentence: <strong>hand the entire conversation to an LLM to write a &quot;handoff summary,&quot; then replace the original history with that summary.</strong></p>
<h3 id="dual-path-design" tabindex="-1">Dual-Path Design <a class="header-anchor" href="#dual-path-design" aria-label="Permalink to &quot;Dual-Path Design&quot;">&ZeroWidthSpace;</a></h3>
<p>Codex offers two compression paths:</p>
<ol>
<li><strong>Local path</strong> (<code>compact.rs</code>): The client calls an LLM to generate the summary, compatible with any model provider.</li>
<li><strong>Remote path</strong> (<code>compact_remote.rs</code>): Directly calls OpenAI's internal API endpoint <code>responses/compact</code>, letting the server handle compression. OpenAI models only.</li>
</ol>
<p>Note that &quot;local&quot; and &quot;remote&quot; here don't refer to whether an LLM call is needed — both paths require LLM involvement. The difference is <strong>where the core &quot;generate summary&quot; step runs</strong>. In the local path, the client constructs the summarization prompt (loaded from the built-in template <code>templates/compact/prompt.md</code>), streams the LLM API call via <code>ModelClientSession</code>, and processes the returned result — the entire orchestration happens on your machine, so it works with any model provider. In the remote path, the client sends the prepared conversation history and tool definitions to OpenAI's <code>compact_conversation_history</code> endpoint for server-side summary generation — but the client is far from hands-off. Before the call, it trims overly long function call histories and builds the complete prompt object including tool specifications and system instructions; after the call, it filters the results (e.g., discarding stale <code>developer</code> role messages, keeping only genuine user and assistant content), restores ghost snapshots for <code>/undo</code> functionality, and recalculates token usage.</p>
<p>In short, the remote path only outsources <strong>the &quot;compression&quot; step</strong> to OpenAI's server — pre-processing and post-processing remain client-side. The advantage is that OpenAI's server likely has dedicated optimizations for this endpoint (such as more economical models or internal caching) that aren't available through the generic API. This reflects OpenAI's vertical integration of their own infrastructure.</p>
<h3 id="the-compression-flow-in-detail" tabindex="-1">The Compression Flow in Detail <a class="header-anchor" href="#the-compression-flow-in-detail" aria-label="Permalink to &quot;The Compression Flow in Detail&quot;">&ZeroWidthSpace;</a></h3>
<p>When taking the local path, Codex first extracts recent user messages (hard-capped at ~20,000 tokens), then sends a brief summarization prompt to the LLM. This prompt has just 4 core points:</p>
<blockquote>
<p>You are performing a &quot;context checkpoint compression.&quot; Generate a handoff summary for another LLM that will continue the task, including: current progress and key decisions, important constraints and user preferences, remaining TODOs, and critical data needed to continue work.</p>
</blockquote>
<p>The keyword is <strong>&quot;handoff&quot;</strong> — it's not writing meeting minutes, but a briefing that lets the next person (model) hit the ground running.</p>
<p>Applied to our login bug scenario:</p>
<p><img src="https://oss.justin3go.com/blogs/codex-compression.png" alt="Codex CLI before and after compression"></p>
<p><strong>Breaking it down:</strong></p>
<p>Notice the before-and-after — all messages collapse to just 4. Codex deeply respects &quot;user intent&quot;: it physically deletes all assistant replies and tool-related messages, but <strong>preserves all user messages verbatim</strong> (#2 and #10).</p>
<p>It then inserts a fabricated assistant message containing a structured handoff summary. This summary includes the task objective, completed items, key architectural decisions, and remaining TODOs. For the new model, it doesn't need to see those massive file dumps and test stack traces — it just needs to know &quot;the tests are fixed&quot; and that's enough.</p>
<h3 id="auto-trigger-and-fallback" tabindex="-1">Auto-Trigger and Fallback <a class="header-anchor" href="#auto-trigger-and-fallback" aria-label="Permalink to &quot;Auto-Trigger and Fallback&quot;">&ZeroWidthSpace;</a></h3>
<p>When token usage approaches the model's context window limit, Codex automatically triggers compression (no need for manual <code>/compact</code>). If space is still insufficient after compression, it falls back to more aggressive &quot;head trimming&quot; — chopping from the earliest messages to ensure the conversation can continue.</p>
<p>The biggest advantage of Codex's approach is its <strong>intuitiveness</strong>: the handoff summary concept is something every working professional understands. The downside is it's rather &quot;all-or-nothing&quot; — all AI replies and tool results get replaced by a summary, and if that summary misses a critical detail, it's truly gone forever.</p>
<h2 id="claude-code-three-tier-precision-forgetting" tabindex="-1">Claude Code: Three-Tier &quot;Precision Forgetting&quot; <a class="header-anchor" href="#claude-code-three-tier-precision-forgetting" aria-label="Permalink to &quot;Claude Code: Three-Tier &quot;Precision Forgetting&quot;&quot;">&ZeroWidthSpace;</a></h2>
<p>Anthropic's Claude Code takes a more nuanced approach. Rather than pursuing one-shot physical deletion, it designs <strong>three progressively stronger cleanup mechanisms</strong> — from light to heavy, avoiding LLM calls whenever possible.</p>
<blockquote>
<p>Note: Claude Code is not open source. The following analysis is based on community reverse engineering and public materials; actual implementation may vary across versions.</p>
</blockquote>
<h3 id="layer-1-tool-result-trimming-zero-llm-cost" tabindex="-1">Layer 1: Tool Result Trimming (Zero LLM Cost) <a class="header-anchor" href="#layer-1-tool-result-trimming-zero-llm-cost" aria-label="Permalink to &quot;Layer 1: Tool Result Trimming (Zero LLM Cost)&quot;">&ZeroWidthSpace;</a></h3>
<p>This is the most frequent and lightweight layer. <strong>No LLM call needed</strong> — it's purely a local rules engine that runs automatically before every request.</p>
<p>The logic is simple:</p>
<ul>
<li>Always protect the results of the most recent tool calls (active data can't be deleted)</li>
<li>Older tool results beyond the protection window → replaced with <code>[Old tool result content cleared]</code> placeholder</li>
</ul>
<p>Applied to our scenario:</p>
<p><img src="https://oss.justin3go.com/blogs/claude-layer1.png" alt="Claude Code Layer 1 compression"></p>
<p>This approach is remarkably clever: it maintains the AI's &quot;flow state.&quot; The AI remembers it searched the code (#4's tool_call is still there), and remembers it read files (#7's tool_call is still there) — it just doesn't remember what the search returned or what the file contained. If it truly needs to look again, it will simply re-issue a <code>read_file</code>.</p>
<p>I find this layer's design exquisitely elegant — it achieves <strong>&quot;selective amnesia&quot; rather than &quot;total forgetting.&quot;</strong> Like remembering you read a great book last year but forgetting the specifics — you can always flip through it again when needed.</p>
<h3 id="layer-2-cache-friendly-strategy-prompt-cache" tabindex="-1">Layer 2: Cache-Friendly Strategy (Prompt Cache) <a class="header-anchor" href="#layer-2-cache-friendly-strategy-prompt-cache" aria-label="Permalink to &quot;Layer 2: Cache-Friendly Strategy (Prompt Cache)&quot;">&ZeroWidthSpace;</a></h3>
<p>This is Claude Code's signature move, and the <strong>unique differentiating advantage</strong> among the three.</p>
<p>Anthropic's API supports Prompt Cache — if the prefix of your message to the API matches the previous request, the server can reuse prior computation results, dramatically reducing cost and latency.</p>
<p>What does this mean? When cleaning messages, Claude Code strives to avoid modifying the first half of the message sequence. It takes a &quot;surgical&quot; approach: trimming only at the tail, ensuring the beginning of the message sequence remains absolutely consistent. The trade-off is slightly lower cleanup efficiency, but the payoff is <strong>maximized cache hit rate</strong>.</p>
<p>Applied to our scenario. Suppose after Layer 1 cleanup, the message sequence is #1-#26 (tool results already replaced with placeholders). Context still exceeds the limit and needs further trimming. A &quot;naive&quot; approach would delete from the earliest messages — but Claude Code <strong>doesn't do that</strong>:</p>
<p><img src="https://oss.justin3go.com/blogs/claude-cache-strategy.png" alt="Cache strategy comparison"></p>
<p>The naive strategy on the left deletes the oldest messages, which seems reasonable, but the cost is that <strong>the entire prefix changes</strong> — the API cache completely invalidates, and the next request must compute from scratch. Claude Code's strategy on the right is the opposite: it would rather delete less, as long as the <strong>prefix portion of the message sequence remains identical to the previous request</strong>, allowing Anthropic's Prompt Cache to hit.</p>
<p>For long-running tasks (like having the AI help you refactor an entire module), this strategy yields significant cost savings — because most of each API request's content can hit cache, and you only pay for the newly added tail content.</p>
<h3 id="layer-3-9-section-structured-llm-summary-last-resort" tabindex="-1">Layer 3: 9-Section Structured LLM Summary (Last Resort) <a class="header-anchor" href="#layer-3-9-section-structured-llm-summary-last-resort" aria-label="Permalink to &quot;Layer 3: 9-Section Structured LLM Summary (Last Resort)&quot;">&ZeroWidthSpace;</a></h3>
<p>When the first two layers can't prevent context from continuing to grow, the system triggers a final full summary. According to the source code, the auto-compaction threshold is <code>effective context window - 13,000 tokens</code> (where effective window = model context window - min(max output tokens, 20,000)).</p>
<p>However, even when the threshold is reached, the system doesn't jump straight to an LLM summary. When auto-compaction triggers, the system <strong>first tries Session Memory Compact</strong> — leveraging structured information already in session memory to substitute for a full LLM call. This means most auto-compactions don't even need an LLM call. Only when the session memory path is unavailable or insufficient does the system fall back to the traditional LLM summary flow, generating a <strong>structured summary with 9 fixed sections</strong>:</p>
<ol>
<li>User's original intent</li>
<li>Core technical concepts</li>
<li>Files and code of interest</li>
<li>Errors encountered and how they were fixed</li>
<li>Problem-solving logic chain</li>
<li>Summary of all user messages</li>
<li>TODO items</li>
<li>What's currently being worked on</li>
<li>Suggested next steps</li>
</ol>
<p>This summary has extremely strict requirements — the prompt demands the model <strong>directly quote key phrases from the original text</strong> rather than paraphrasing everything. This prevents &quot;context drift&quot; (the model subtly diverging from the original meaning during retelling).</p>
<p>Applied to our scenario:</p>
<p><img src="https://oss.justin3go.com/blogs/claude-layer3.png" alt="Claude Code Layer 3 compression"></p>
<p>After compression, Claude Code performs a series of post-processing steps — what I call <strong>&quot;state reconstruction&quot;</strong>:</p>
<ul>
<li>Injects a lead-in at the beginning of the new conversation (&quot;This session continues from a previous conversation...&quot;)</li>
<li><strong>Automatically re-reads</strong> recently edited files (up to 5 files, total budget 50,000 tokens, 5,000 tokens per file), ensuring the AI has the latest code</li>
<li>Re-declares tool and skill definitions</li>
<li>Project specifications in <code>CLAUDE.md</code>, as part of the system prompt, remain permanently resident and are unaffected by compression</li>
</ul>
<p>Users can also attach custom instructions during manual compaction, such as <code>/compact Focus on API changes</code>, to steer the compression toward a specific focus.</p>
<p>Additionally, there's a <strong>passive fallback path</strong>: when the API returns a <code>prompt_too_long</code> error, the system automatically initiates a reactive compression and retries the request, ensuring users don't encounter an abrupt error from context overflow. To prevent infinite loops from repeated compression failures, automatic compaction pauses after 3 consecutive failures.</p>
<p>Claude Code's approach is the most complex of the three, but also the most &quot;cost-effective&quot; — most of the time it only needs to execute the Layer 1 rules engine cleanup, or complete compaction via the Session Memory path, requiring no extra LLM calls at all.</p>
<h2 id="opencode-prune-first-summarize-later-—-stepped-governance" tabindex="-1">OpenCode: Prune First, Summarize Later — &quot;Stepped Governance&quot; <a class="header-anchor" href="#opencode-prune-first-summarize-later-—-stepped-governance" aria-label="Permalink to &quot;OpenCode: Prune First, Summarize Later — &quot;Stepped Governance&quot;&quot;">&ZeroWidthSpace;</a></h2>
<p>The open-source newcomer OpenCode (<a href="https://github.com/anomalyco/opencode" target="_blank" rel="noreferrer">source</a>, TypeScript + Effect-TS implementation) offers a more balanced strategy. In <code>session/compaction.ts</code>, it implements a stepped governance flow: <strong>use low-cost measures to free up space first, and only call on the LLM when truly necessary.</strong></p>
<h3 id="step-1-prune-mark-as-hidden-not-physical-deletion" tabindex="-1">Step 1: Prune (Mark as Hidden, Not Physical Deletion) <a class="header-anchor" href="#step-1-prune-mark-as-hidden-not-physical-deletion" aria-label="Permalink to &quot;Step 1: Prune (Mark as Hidden, Not Physical Deletion)&quot;">&ZeroWidthSpace;</a></h3>
<p>OpenCode's first move isn't deletion — it's &quot;marking.&quot; The rules are crystal clear:</p>
<ul>
<li>Only execute when pruning can free more than 20,000 tokens (minor cleanups aren't worth the hassle)</li>
<li>Always preserve the most recent 40,000 tokens as a &quot;safety cushion&quot; (active work can't be touched)</li>
<li><code>skill</code> type tool outputs are never pruned (they contain operational instructions)</li>
<li>Protect the full content of the last 2 user turns</li>
</ul>
<p><strong>Key design</strong>: Unlike Claude Code's placeholder replacement, OpenCode's pruning <strong>is not physical deletion</strong>. Instead, it stamps old messages with a <code>compacted = Date.now()</code> timestamp, making them &quot;invisible&quot; in subsequent requests. The data is still in the database — just hidden.</p>
<p><img src="https://oss.justin3go.com/blogs/opencode-prune.png" alt="OpenCode Prune"></p>
<p><strong>Key point:</strong> The data isn't truly lost. This leaves room for future history traversal features — if developers need auditing, or if the agent triggers some rollback logic, this data can be pulled back into context. This is a very forward-thinking design.</p>
<h3 id="step-2-llm-5-heading-summary" tabindex="-1">Step 2: LLM 5-Heading Summary <a class="header-anchor" href="#step-2-llm-5-heading-summary" aria-label="Permalink to &quot;Step 2: LLM 5-Heading Summary&quot;">&ZeroWidthSpace;</a></h3>
<p>If things are still too bloated after pruning, OpenCode uses a hidden, dedicated agent (without disturbing the user's current interaction) to call an LLM and generate a summary. This summary follows a fixed 5-heading structure:</p>
<p><img src="https://oss.justin3go.com/blogs/opencode-summary.png" alt="OpenCode LLM Summary"></p>
<p>OpenCode has a wonderfully thoughtful design after summarization: it automatically <strong>replays the last user message</strong>. This ensures the agent's most recent memory point stays on the user's latest instruction, rather than on some cold summary text. The user is completely unaware that compression happened — your last message gets resent, the AI continues responding, as if nothing happened.</p>
<p>Another highlight: <strong>OpenCode follows the user's language</strong>. If you've been communicating in Chinese, its summary will also be in Chinese. For non-native English-speaking developers, this is a very friendly design.</p>
<p>I think OpenCode's approach is the most &quot;developer-friendly&quot; of the three — fully open-source code (TypeScript), modern architecture (Effect-TS), and the non-physical deletion design leaves ample room for extension. If you want to deeply customize compression behavior, OpenCode is the easiest to get started with.</p>
<h2 id="the-three-musketeers-face-off" tabindex="-1">The Three Musketeers Face Off <a class="header-anchor" href="#the-three-musketeers-face-off" aria-label="Permalink to &quot;The Three Musketeers Face Off&quot;">&ZeroWidthSpace;</a></h2>
<p>Let's put all three approaches side by side:</p>
<p>Input: 26 messages, ~15,400 tokens (same &quot;fix login bug&quot; scenario)</p>
<p><img src="https://oss.justin3go.com/blogs/three-comparison.png" alt="Three-way comparison"></p>
<table tabindex="0">
<thead>
<tr>
<th style="text-align:left">Dimension</th>
<th style="text-align:left">Codex CLI</th>
<th style="text-align:left">Claude Code</th>
<th style="text-align:left">OpenCode</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Compression Layers</strong></td>
<td style="text-align:left">Single (summary)</td>
<td style="text-align:left">Three (trim/cache/summary)</td>
<td style="text-align:left">Two (hide/summary)</td>
</tr>
<tr>
<td style="text-align:left"><strong>LLM Calls</strong></td>
<td style="text-align:left">Required</td>
<td style="text-align:left">Only at Layer 3</td>
<td style="text-align:left">Only at Step 2</td>
</tr>
<tr>
<td style="text-align:left"><strong>User Messages</strong></td>
<td style="text-align:left">Permanently preserved verbatim</td>
<td style="text-align:left">Summarized (Layer 3)</td>
<td style="text-align:left">Summarized + last message replayed</td>
</tr>
<tr>
<td style="text-align:left"><strong>Tool Result Handling</strong></td>
<td style="text-align:left">Physical deletion</td>
<td style="text-align:left">Placeholder replacement</td>
<td style="text-align:left">Timestamp-based hiding</td>
</tr>
<tr>
<td style="text-align:left"><strong>Cache Optimization</strong></td>
<td style="text-align:left">No special design</td>
<td style="text-align:left">Deep Prompt Cache integration</td>
<td style="text-align:left">Focused on reducing redundant reads</td>
</tr>
<tr>
<td style="text-align:left"><strong>Post-Compression Behavior</strong></td>
<td style="text-align:left">Passive waiting</td>
<td style="text-align:left">Proactive re-reading of relevant files</td>
<td style="text-align:left">Auto-replay of last instruction</td>
</tr>
</tbody>
</table>
<h3 id="differences-worth-expanding-on" tabindex="-1">Differences Worth Expanding On <a class="header-anchor" href="#differences-worth-expanding-on" aria-label="Permalink to &quot;Differences Worth Expanding On&quot;">&ZeroWidthSpace;</a></h3>
<p><strong>On whether to preserve user messages verbatim</strong>: Codex chooses to keep user messages intact, compressing only model responses. The advantage is that the AI can always look back at what you said, but the cost is reduced compression efficiency when user messages themselves are lengthy. Claude Code and OpenCode choose to compress everything into summaries — more aggressive but more space-efficient.</p>
<p><strong>On caching</strong>: This is Claude Code's most unique advantage. The other two see significant changes in API request content after compression, essentially invalidating previous caches. Claude Code deliberately maintains prefix stability, allowing post-compression requests to still reuse prior caches. For long-running tasks, this translates to meaningful cost savings.</p>
<p><strong>On non-physical deletion</strong>: OpenCode's timestamp marking approach is a forward-thinking design. While the current version doesn't implement history traversal, the data isn't truly lost, leaving the door open for future possibilities. Both Codex and Claude Code's compressions are irreversible.</p>
<h2 id="final-thoughts" tabindex="-1">Final Thoughts <a class="header-anchor" href="#final-thoughts" aria-label="Permalink to &quot;Final Thoughts&quot;">&ZeroWidthSpace;</a></h2>
<p>If I were to describe these three with an analogy:</p>
<ul>
<li><strong>Codex CLI</strong> is like a senior employee writing a <strong>handoff memo</strong>. They tear up the previous drafts and hand you a clear status report — blunt but effective.</li>
<li><strong>Claude Code</strong> is like a scholar with the ability to <strong>forget with precision</strong>. They first erase minor annotations in their books, and only when the bookshelf truly can't hold any more do they condense entire books into one-page outlines. They care deeply about the efficiency of flipping through books (caching).</li>
<li><strong>OpenCode</strong> is like a pragmatic <strong>stepped governance</strong> administrator. They first box up old files and label them (hide), and only summarize when absolutely necessary. Their most thoughtful touch? After summarizing, they remind you: &quot;The last thing you said was about this, right?&quot;</li>
</ul>
<p>Ultimately, in 2026, the best context management isn't about endlessly expanding an LLM's memory capacity, but learning how to <strong>forget with precision</strong>. After all, an agent that remembers everything is often the one most easily distracted by noise.</p>
<hr>
<p><strong>References:</strong></p>
<ul>
<li>Codex CLI: <a href="https://github.com/openai/codex" target="_blank" rel="noreferrer">openai/codex</a> (see <code>codex-rs/core/src/compact.rs</code>)</li>
<li>Claude Code community resources:
<ul>
<li><a href="https://github.com/Piebald-AI/claude-code-system-prompts" target="_blank" rel="noreferrer">Claude Code System Prompts</a></li>
<li><a href="https://gist.github.com/sam-saffron-jarvis/9d8e291c4e696ac7948702d6c4884448" target="_blank" rel="noreferrer">Sam Saffron's Gist</a></li>
<li><a href="https://barazany.dev/blog/claude-codes-compaction-engine" target="_blank" rel="noreferrer">Claude Code's Compaction Engine</a></li>
<li><a href="https://github.com/yasasbanukaofficial/claude-code" target="_blank" rel="noreferrer">Leaked source repository</a> (unofficial leak, used for verification)</li>
</ul>
</li>
<li>OpenCode: <a href="https://github.com/anomalyco/opencode" target="_blank" rel="noreferrer">anomalyco/opencode</a> (see <code>packages/opencode/src/session/compaction.ts</code>)</li>
</ul>
]]></content:encoded>
            <author>just@justin3go.com (Justin3go)</author>
        </item>
        <item>
            <title><![CDATA[I Distilled Harness Engineering Into a SKILL]]></title>
            <link>https://justin3go.com/en/posts/2026/04/03-harness-engineering-distilled-into-a-skill</link>
            <guid>https://justin3go.com/en/posts/2026/04/03-harness-engineering-distilled-into-a-skill</guid>
            <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<h1 id="i-distilled-harness-engineering-into-a-skill" tabindex="-1">I Distilled Harness Engineering Into a SKILL <a class="header-anchor" href="#i-distilled-harness-engineering-into-a-skill" aria-label="Permalink to &quot;I Distilled Harness Engineering Into a SKILL&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<blockquote></blockquote>
<p>The author shares his experience of distilling Harness Engineering knowledge into a reusable Agent Skill. After systematically studying sources from Anthropic, OpenAI, Martin Fowler, LangChain, and others, he identified seven core layers of harness design: project setup, context engineering, constraints &amp; guardrails, multi-agent architecture, evaluation &amp; feedback, long-running tasks, and diagnostics. The resulting <code>harness-engineering</code> skill covers three scenarios — new project scaffolding, diagnosing poor agent behavior, and continuous improvement — using a progressive-disclosure architecture. Quantitative evaluation showed 100% assertion pass rate with the skill vs. 83% without. The key insight: <strong>80% of agent quality issues stem from harness gaps, not model limitations.</strong></p>
<blockquote></blockquote>
<!-- DESC SEP -->
<h2 id="why-i-wrote-this" tabindex="-1">Why I Wrote This <a class="header-anchor" href="#why-i-wrote-this" aria-label="Permalink to &quot;Why I Wrote This&quot;">&ZeroWidthSpace;</a></h2>
<p>Over the past two years, while using various AI coding assistants (Claude Code, Cursor, Copilot, etc.), I kept running into the same problem: <strong>Agent performance was inconsistent.</strong> While things have generally improved as models get better, the journey has been full of ups and downs.</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201320478.png" alt=""></p>
<p>Sometimes the code it writes perfectly matches the project style. Other times it acts like an intern on their first day — unaware of the project structure, ignoring conventions, and forgetting decisions we'd already agreed on.</p>
<p>I started applying Prompt Engineering techniques like structured prompts, few-shot examples, and demonstrations to stabilize AI output. Then I moved on to Context Engineering to enrich the agent's context and further stabilize its performance.</p>
<p>In recent weeks, a more systematic term has emerged: Harness Engineering.</p>
<blockquote>
<p><strong>When an agent performs poorly, 80% of the time the issue isn't the model — it's the Harness.</strong> — Anthropic</p>
</blockquote>
<p>What is a Harness? Simply put:</p>
<ul>
<li><strong>Model = CPU</strong> (the compute itself)</li>
<li><strong>Context Window = RAM</strong> (working memory)</li>
<li><strong>Harness = Operating System</strong> (scheduling, constraints, feedback, file system — all the infrastructure that makes the CPU work effectively)</li>
</ul>
<p>You wouldn't expect a CPU to run efficiently on bare metal without an operating system. Similarly, you shouldn't expect a model to produce consistent output in a project without a Harness.</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201256128.png" alt=""></p>
<h2 id="what-i-learned" tabindex="-1">What I Learned <a class="header-anchor" href="#what-i-learned" aria-label="Permalink to &quot;What I Learned&quot;">&ZeroWidthSpace;</a></h2>
<p>I systematically read articles from the following sources:</p>
<ul>
<li><strong>Anthropic</strong> — Building effective agents, multi-agent research systems, harness design for long-running agents</li>
<li><strong>OpenAI</strong> — AGENTS.md design patterns, Context Engineering best practices</li>
<li><strong>Martin Fowler</strong> — The engineering philosophy of Harness Engineering (&quot;Relocating Rigor&quot;)</li>
<li><strong>LangChain</strong> — Taxonomy of agent frameworks vs. runtimes vs. harnesses</li>
<li><strong>philschmid</strong> — The importance of Agent Harness in 2026</li>
<li><strong>Independent developers</strong> — Hermes Agent's self-evolution, Vue Lynx's design-notes-driven development</li>
<li><strong>Academic papers</strong> — Formalization of natural language agent harnesses</li>
</ul>
<p>After reading everything, I found that while these articles approached the topic from different angles, their core ideas converged into <strong>seven layers</strong>:</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201232141.png" alt=""></p>
<p>| Layer | What Problem It Solves | One-Line Summary |
|</p>
]]></description>
            <content:encoded><![CDATA[<h1 id="i-distilled-harness-engineering-into-a-skill" tabindex="-1">I Distilled Harness Engineering Into a SKILL <a class="header-anchor" href="#i-distilled-harness-engineering-into-a-skill" aria-label="Permalink to &quot;I Distilled Harness Engineering Into a SKILL&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<blockquote></blockquote>
<p>The author shares his experience of distilling Harness Engineering knowledge into a reusable Agent Skill. After systematically studying sources from Anthropic, OpenAI, Martin Fowler, LangChain, and others, he identified seven core layers of harness design: project setup, context engineering, constraints &amp; guardrails, multi-agent architecture, evaluation &amp; feedback, long-running tasks, and diagnostics. The resulting <code>harness-engineering</code> skill covers three scenarios — new project scaffolding, diagnosing poor agent behavior, and continuous improvement — using a progressive-disclosure architecture. Quantitative evaluation showed 100% assertion pass rate with the skill vs. 83% without. The key insight: <strong>80% of agent quality issues stem from harness gaps, not model limitations.</strong></p>
<blockquote></blockquote>
<!-- DESC SEP -->
<h2 id="why-i-wrote-this" tabindex="-1">Why I Wrote This <a class="header-anchor" href="#why-i-wrote-this" aria-label="Permalink to &quot;Why I Wrote This&quot;">&ZeroWidthSpace;</a></h2>
<p>Over the past two years, while using various AI coding assistants (Claude Code, Cursor, Copilot, etc.), I kept running into the same problem: <strong>Agent performance was inconsistent.</strong> While things have generally improved as models get better, the journey has been full of ups and downs.</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201320478.png" alt=""></p>
<p>Sometimes the code it writes perfectly matches the project style. Other times it acts like an intern on their first day — unaware of the project structure, ignoring conventions, and forgetting decisions we'd already agreed on.</p>
<p>I started applying Prompt Engineering techniques like structured prompts, few-shot examples, and demonstrations to stabilize AI output. Then I moved on to Context Engineering to enrich the agent's context and further stabilize its performance.</p>
<p>In recent weeks, a more systematic term has emerged: Harness Engineering.</p>
<blockquote>
<p><strong>When an agent performs poorly, 80% of the time the issue isn't the model — it's the Harness.</strong> — Anthropic</p>
</blockquote>
<p>What is a Harness? Simply put:</p>
<ul>
<li><strong>Model = CPU</strong> (the compute itself)</li>
<li><strong>Context Window = RAM</strong> (working memory)</li>
<li><strong>Harness = Operating System</strong> (scheduling, constraints, feedback, file system — all the infrastructure that makes the CPU work effectively)</li>
</ul>
<p>You wouldn't expect a CPU to run efficiently on bare metal without an operating system. Similarly, you shouldn't expect a model to produce consistent output in a project without a Harness.</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201256128.png" alt=""></p>
<h2 id="what-i-learned" tabindex="-1">What I Learned <a class="header-anchor" href="#what-i-learned" aria-label="Permalink to &quot;What I Learned&quot;">&ZeroWidthSpace;</a></h2>
<p>I systematically read articles from the following sources:</p>
<ul>
<li><strong>Anthropic</strong> — Building effective agents, multi-agent research systems, harness design for long-running agents</li>
<li><strong>OpenAI</strong> — AGENTS.md design patterns, Context Engineering best practices</li>
<li><strong>Martin Fowler</strong> — The engineering philosophy of Harness Engineering (&quot;Relocating Rigor&quot;)</li>
<li><strong>LangChain</strong> — Taxonomy of agent frameworks vs. runtimes vs. harnesses</li>
<li><strong>philschmid</strong> — The importance of Agent Harness in 2026</li>
<li><strong>Independent developers</strong> — Hermes Agent's self-evolution, Vue Lynx's design-notes-driven development</li>
<li><strong>Academic papers</strong> — Formalization of natural language agent harnesses</li>
</ul>
<p>After reading everything, I found that while these articles approached the topic from different angles, their core ideas converged into <strong>seven layers</strong>:</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201232141.png" alt=""></p>
<table tabindex="0">
<thead>
<tr>
<th>Layer</th>
<th>What Problem It Solves</th>
<th>One-Line Summary</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Project Setup</strong></td>
<td>Agent doesn't know what the project is</td>
<td>AGENTS.md is a table of contents, not an encyclopedia</td>
</tr>
<tr>
<td><strong>Context Engineering</strong></td>
<td>Agent sees the wrong information</td>
<td>Give a map, not a manual</td>
</tr>
<tr>
<td><strong>Constraints &amp; Guardrails</strong></td>
<td>Agent keeps making the same mistakes</td>
<td>Every mistake → add a rule</td>
</tr>
<tr>
<td><strong>Multi-Agent Architecture</strong></td>
<td>Single agent can't handle complex tasks</td>
<td>Clear division of labor, clear protocols</td>
</tr>
<tr>
<td><strong>Evaluation &amp; Feedback</strong></td>
<td>Don't know if the agent is doing well</td>
<td>Let AI check AI</td>
</tr>
<tr>
<td><strong>Long-Running Tasks</strong></td>
<td>Agent drifts off course over time</td>
<td>Progress files + context resets</td>
</tr>
<tr>
<td><strong>Diagnostics</strong></td>
<td>Users complain the agent is bad</td>
<td>The problem is the Harness, not the model</td>
</tr>
</tbody>
</table>
<h2 id="so-i-built-a-skill" tabindex="-1">So I Built a Skill <a class="header-anchor" href="#so-i-built-a-skill" aria-label="Permalink to &quot;So I Built a Skill&quot;">&ZeroWidthSpace;</a></h2>
<p>After reading all these articles, I realized these patterns are entirely <strong>reusable</strong>. Whether your project is a React frontend, Python backend, or Rust CLI tool — the design principles of a Harness are universal.</p>
<p>So I distilled this knowledge into an <strong>Agent Skill</strong> called <code>harness-engineering</code>.</p>
<h3 id="what-it-does" tabindex="-1">What It Does <a class="header-anchor" href="#what-it-does" aria-label="Permalink to &quot;What It Does&quot;">&ZeroWidthSpace;</a></h3>
<p>This skill has three core use cases:</p>
<p><strong>Scenario 1: New Project Setup</strong></p>
<p>When you start a new project and tell the agent &quot;help me set up Harness engineering,&quot; it will:</p>
<ol>
<li>Assess your project type, tech stack, and team size</li>
<li>Create an <code>AGENTS.md</code> (a table-of-contents-style agent navigation file)</li>
<li>Set up a <code>docs/</code> directory (architecture, conventions, data models, etc.)</li>
<li>Configure the constraints layer (lint rules, type checking, pre-commit hooks)</li>
<li>Set up evaluation and feedback mechanisms</li>
</ol>
<p><strong>Scenario 2: Diagnosing Poor Agent Performance</strong></p>
<p>This is the most interesting scenario. When you start complaining —</p>
<ul>
<li>&quot;Why does it keep making the same mistake?&quot;</li>
<li>&quot;It completely ignores our conventions!&quot;</li>
<li>&quot;The code quality is terrible&quot;</li>
</ul>
<p>This skill gets triggered and guides the agent to diagnose <strong>gaps in the Harness layer</strong>, rather than blaming the model:</p>
<table tabindex="0">
<thead>
<tr>
<th>Your Complaint</th>
<th>Most Likely Cause</th>
<th>Fix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Keeps making the same mistake</td>
<td>No constraint preventing it</td>
<td>Add a lint rule</td>
</tr>
<tr>
<td>Doesn't follow conventions</td>
<td>Conventions aren't written down or agent can't find them</td>
<td>Write in docs/, reference in AGENTS.md</td>
</tr>
<tr>
<td>Forgets previous decisions</td>
<td>Cross-session context not persisted</td>
<td>Use progress.md to record decisions</td>
</tr>
<tr>
<td>Poor code quality</td>
<td>No examples of good code</td>
<td>Add examples in DESIGN_NOTES.md</td>
</tr>
</tbody>
</table>
<p><strong>Scenario 3: Continuous Improvement</strong></p>
<p>Every time a new reusable Harness pattern is discovered, update it in the skill so other projects can benefit too.</p>
<h3 id="how-it-s-organized" tabindex="-1">How It's Organized <a class="header-anchor" href="#how-it-s-organized" aria-label="Permalink to &quot;How It's Organized&quot;">&ZeroWidthSpace;</a></h3>
<p>The skill uses a <strong>progressive disclosure</strong> architecture:</p>
<div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span>harness-engineering/</span></span>
<span class="line"><span>├── SKILL.md              # Entry file (&#x3C;60 lines), routes to specific references</span></span>
<span class="line"><span>└── references/</span></span>
<span class="line"><span>    ├── 01-project-setup.md       # Project setup</span></span>
<span class="line"><span>    ├── 02-context-engineering.md  # Context engineering</span></span>
<span class="line"><span>    ├── 03-constraints.md          # Constraints &#x26; guardrails</span></span>
<span class="line"><span>    ├── 04-multi-agent.md          # Multi-agent architecture</span></span>
<span class="line"><span>    ├── 05-eval-feedback.md        # Evaluation &#x26; feedback</span></span>
<span class="line"><span>    ├── 06-long-running.md         # Long-running tasks</span></span>
<span class="line"><span>    └── 07-diagnosis.md            # Diagnostics</span></span></code></pre>
</div><p>SKILL.md itself is very concise — it acts like a router, directing the agent to read the relevant reference document based on the current scenario. This follows a core principle of Harness Engineering itself: <strong>progressive disclosure, load on demand</strong>.</p>
<h2 id="patterns-that-impressed-me" tabindex="-1">Patterns That Impressed Me <a class="header-anchor" href="#patterns-that-impressed-me" aria-label="Permalink to &quot;Patterns That Impressed Me&quot;">&ZeroWidthSpace;</a></h2>
<p>A few patterns particularly resonated with me. Let me discuss them individually.</p>
<h3 id="give-a-map-not-a-manual" tabindex="-1">&quot;Give a Map, Not a Manual&quot; <a class="header-anchor" href="#give-a-map-not-a-manual" aria-label="Permalink to &quot;&quot;Give a Map, Not a Manual&quot;&quot;">&ZeroWidthSpace;</a></h3>
<p>I saw this concept in a tweet. The traditional approach is to write detailed step-by-step instructions (a manual) for the agent, but this makes the agent fragile — any deviation leaves it lost.</p>
<p>A better approach is to give the agent a <strong>map</strong>:</p>
<div class="language-markdown vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">markdown</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold"># Bad approach (manual)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">Step 1: Open src/auth/login.ts</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">Step 2: Find the handleLogin function</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">Step 3: Add ... at line 42</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold"># Good approach (map)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">Auth system is in src/auth/. Login flow: login.ts → validate.ts → session.ts.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">Rate limiting middleware is in src/middleware/rateLimit.ts — follow its pattern.</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">Every auth change needs a test in src/auth/</span><span style="--shiki-light:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold">__tests__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">/.</span></span></code></pre>
</div><p>A map lets the agent navigate autonomously; a manual turns it into a fragile execution machine.</p>
<h3 id="every-mistake-→-add-a-rule" tabindex="-1">&quot;Every Mistake → Add a Rule&quot; <a class="header-anchor" href="#every-mistake-→-add-a-rule" aria-label="Permalink to &quot;&quot;Every Mistake → Add a Rule&quot;&quot;">&ZeroWidthSpace;</a></h3>
<p>This pattern comes from cross-referencing multiple articles. The core idea:</p>
<ol>
<li>The agent makes a mistake</li>
<li>You fix the mistake</li>
<li><strong>Then you add a rule to permanently prevent that type of mistake from happening again</strong></li>
</ol>
<p>This rule can be a lint rule, a type constraint, a test case, or simply a convention in the documentation. Over time, the Harness accumulates more and more rules, and the agent's error rate for known patterns approaches zero.</p>
<p>This is exactly what Martin Fowler calls <strong>&quot;Relocating Rigor&quot;</strong> — moving the quality gates that humans enforce through code review, experience, and intuition into automated checks. The agent runs freely within the checked boundaries.</p>
<p><img src="https://oss.justin3go.com/blogs/20260403201204929.png" alt=""></p>
<h3 id="harness-dataset" tabindex="-1">Harness = Dataset <a class="header-anchor" href="#harness-dataset" aria-label="Permalink to &quot;Harness = Dataset&quot;">&ZeroWidthSpace;</a></h3>
<p>This perspective comes from Anthropic. Every agent interaction is a training signal:</p>
<ul>
<li>What it tried</li>
<li>What succeeded</li>
<li>What failed</li>
<li>What the fix was</li>
</ul>
<p>These traces are your <strong>competitive advantage</strong>. They're the data that makes your Harness better over time — not fine-tuning the model, but optimizing the operating system.</p>
<h2 id="skill-evaluation-does-it-work" tabindex="-1">Skill Evaluation: Does It Work? <a class="header-anchor" href="#skill-evaluation-does-it-work" aria-label="Permalink to &quot;Skill Evaluation: Does It Work?&quot;">&ZeroWidthSpace;</a></h2>
<p>Following the skill-creator process, I conducted a quantitative evaluation of this skill. I designed 3 test scenarios, running with-skill and without-skill versions for each:</p>
<table tabindex="0">
<thead>
<tr>
<th>Test Scenario</th>
<th>With Skill</th>
<th>Without Skill</th>
</tr>
</thead>
<tbody>
<tr>
<td>New project setup</td>
<td>6/6 ✅</td>
<td>4/6</td>
</tr>
<tr>
<td>Agent behavior diagnosis</td>
<td>6/6 ✅</td>
<td>5/6</td>
</tr>
<tr>
<td>Cross-module dependency issues</td>
<td>6/6 ✅</td>
<td>6/6</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td><strong>18/18 (100%)</strong></td>
<td><strong>15/18 (83%)</strong></td>
</tr>
</tbody>
</table>
<p>The with-skill version passed all assertions in every scenario. The without-skill version had the most gaps in the &quot;new project setup&quot; scenario — it didn't know to create AGENTS.md, didn't know how to organize docs/, and couldn't set up the progressive disclosure context architecture.</p>
<p>Of course, a 17% difference isn't enormous. But the key point is: with the skill, the agent's output was <strong>consistent and complete</strong>; without it, results were hit or miss. For an engineering practice skill, consistency is more valuable than occasional brilliance.</p>
<h2 id="how-to-install" tabindex="-1">How to Install <a class="header-anchor" href="#how-to-install" aria-label="Permalink to &quot;How to Install&quot;">&ZeroWidthSpace;</a></h2>
<p>This skill can be installed via GitHub:</p>
<div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">npx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> skills</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> 10xChengTu/harness-engineering</span></span></code></pre>
</div><p>After installation, when working in Claude Code, OpenCode, or other agents that support Skills:</p>
<ul>
<li>Starting a new project → the skill auto-triggers to guide Harness setup</li>
<li>Encountering agent quality issues → the skill intervenes for diagnosis when you start complaining</li>
<li>Proactive inquiry → &quot;Help me improve this project's Harness&quot;</li>
</ul>
<h2 id="final-thoughts" tabindex="-1">Final Thoughts <a class="header-anchor" href="#final-thoughts" aria-label="Permalink to &quot;Final Thoughts&quot;">&ZeroWidthSpace;</a></h2>
<p>Harness Engineering is still a very early field. Models are getting stronger, and constraints needed today might be unnecessary tomorrow — so this skill itself follows a core principle: <strong>build for deletion</strong>.</p>
<p>If you're also doing development with AI Agents, try adding a Harness to your project. Start simple — an <code>AGENTS.md</code> file, a few lint rules, a progress.md. Then observe how the agent's performance changes.</p>
<p>You'll most likely feel the same way I do: <strong>It's not that the model isn't good enough — we just haven't given it a good working environment.</strong></p>
<blockquote>
<p>All referenced articles and the complete skill source code can be found in the <a href="https://github.com/10xChengTu/harness-engineering" target="_blank" rel="noreferrer">GitHub repository</a>.</p>
</blockquote>
]]></content:encoded>
            <author>just@justin3go.com (Justin3go)</author>
        </item>
        <item>
            <title><![CDATA[HUNT0 is live — Ship Early, Hunt Early]]></title>
            <link>https://justin3go.com/en/posts/2026/01/01-hunt0-is-live-ship-early-hunt-early</link>
            <guid>https://justin3go.com/en/posts/2026/01/01-hunt0-is-live-ship-early-hunt-early</guid>
            <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h1 id="hunt0-is-live-—-ship-early-hunt-early" tabindex="-1">HUNT0 is live — Ship Early, Hunt Early <a class="header-anchor" href="#hunt0-is-live-—-ship-early-hunt-early" aria-label="Permalink to &quot;HUNT0 is live — Ship Early, Hunt Early&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<blockquote></blockquote>
<p>HUNT0 is a community-driven launch directory designed for makers and indie hackers. It helps you turn “shipping” into a real event: reserve a launch date, get early feedback through reputation-weighted voting and comments, and discover new products through time-based leaderboards and a filter-first Explore page.</p>
<blockquote></blockquote>
<p>In v1.0.0, the core loop is simple: <strong>launch → discover → vote → discuss → recap/reward</strong>. With real-time vote sync, a structured submission workflow (Free queue + Premium Launch), and automation like launch reminders and awards, HUNT0 aims to reduce noise and make early discovery feel purposeful.</p>
<blockquote></blockquote>
<!-- DESC SEP -->
<blockquote>
<p>It all started with a slightly “ugly” sketch: a ladder leaning forward.</p>
</blockquote>
<p>That ladder sketch became the HUNT0 logo. It’s a reminder that progress is built rung by rung — and shipping something imperfect beats waiting for perfect.</p>
<p><img src="https://storage.hunt0.com/about-logo.png" alt="The original ladder sketch that became the HUNT0 logo"></p>
<p>That’s also where the tagline <strong>“Ship Early, Hunt Early”</strong> comes from: makers ship early so the community can hunt early — discover, vote, and discuss — helping great products find their first users.</p>
<p>If you’re building in public, launch here. If you’re curious, start hunting.</p>
<h2 id="what-is-hunt0" tabindex="-1">What is HUNT0? <a class="header-anchor" href="#what-is-hunt0" aria-label="Permalink to &quot;What is HUNT0?&quot;">&ZeroWidthSpace;</a></h2>
<p>HUNT0 is a community-driven launch directory. It brings shipping and discovery into the same rhythm:</p>
<ul>
<li>Reserve a launch date and make shipping a real event</li>
<li>Get early feedback through voting and comments</li>
<li>Use leaderboards and Explore to organize “new products” by time and interest — not noise</li>
</ul>
<h2 id="launch-v1-0-0-what-we-ve-built" tabindex="-1">Launch v1.0.0: what we’ve built <a class="header-anchor" href="#launch-v1-0-0-what-we-ve-built" aria-label="Permalink to &quot;Launch v1.0.0: what we’ve built&quot;">&ZeroWidthSpace;</a></h2>
<p>v1.0.0 focuses on the core loop first: <strong>launch → discover → vote → discuss → recap/reward</strong>.</p>
<h3 id="_1-home-leaderboards-what-should-i-check-out-today" tabindex="-1">1) Home leaderboards: “what should I check out today?” <a class="header-anchor" href="#_1-home-leaderboards-what-should-i-check-out-today" aria-label="Permalink to &quot;1) Home leaderboards: “what should I check out today?”&quot;">&ZeroWidthSpace;</a></h3>
<p>The home page is organized by time ranges so you can quickly scan what’s worth attention:</p>
<ul>
<li><strong>Top Products Launching Today</strong>: products launching today (UTC)</li>
<li><strong>Yesterday / This Week / This Month</strong>: recaps with longer windows</li>
</ul>
<p>Voting state is <strong>synchronized in real time</strong> across the page: vote on a product anywhere, and every instance updates immediately — no refresh needed.</p>
<h3 id="_2-explore-filter-by-intent-not-luck" tabindex="-1">2) Explore: filter by intent, not luck <a class="header-anchor" href="#_2-explore-filter-by-intent-not-luck" aria-label="Permalink to &quot;2) Explore: filter by intent, not luck&quot;">&ZeroWidthSpace;</a></h3>
<p>Explore supports <strong>category, tags (up to 10), time range, and full-text search</strong>, with paginated results.</p>
<p>Under the same filters, <strong>Premium Launch</strong> products are prioritized above free launches in ordering — ideal for moments when visibility matters more.</p>
<h3 id="_3-product-pages-showcase-visit-and-discuss-in-one-place" tabindex="-1">3) Product pages: showcase, visit, and discuss in one place <a class="header-anchor" href="#_3-product-pages-showcase-visit-and-discuss-in-one-place" aria-label="Permalink to &quot;3) Product pages: showcase, visit, and discuss in one place&quot;">&ZeroWidthSpace;</a></h3>
<p>Each product has a dedicated page for deeper context and community interaction:</p>
<ul>
<li>Key info and external links (Visit)</li>
<li>Screenshot gallery and a longer “About this product”</li>
<li>Reputation-weighted votes and comments</li>
<li>Leaderboard/award badges (when you rank Top 3 in daily/weekly/monthly awards)</li>
</ul>
<h3 id="_4-submissions-free-queue-premium-launch" tabindex="-1">4) Submissions: Free queue + Premium Launch <a class="header-anchor" href="#_4-submissions-free-queue-premium-launch" aria-label="Permalink to &quot;4) Submissions: Free queue + Premium Launch&quot;">&ZeroWidthSpace;</a></h3>
<p>We designed “launch” as a controlled workflow, not just posting a link:</p>
<ul>
<li><strong>Free Launch</strong>: limited daily capacity (default <strong>10 slots/day</strong>) for most launches</li>
<li><strong>Premium Launch</strong>: paid via Stripe Checkout for launches that need stronger visibility</li>
</ul>
<p>If a premium checkout isn’t completed, the submission stays as a draft in your dashboard and won’t appear publicly until payment succeeds.</p>
<p>Submissions support richer presentation:</p>
<ul>
<li>Up to 3 categories</li>
<li>Up to 10 tags</li>
<li>Contact/social links (at least one)</li>
<li>Logo and screenshots for a better product page</li>
</ul>
<h2 id="reputation-make-contribution-count" tabindex="-1">Reputation: make contribution count <a class="header-anchor" href="#reputation-make-contribution-count" aria-label="Permalink to &quot;Reputation: make contribution count&quot;">&ZeroWidthSpace;</a></h2>
<p>Voting isn’t a flat “one person, one fixed vote”. HUNT0 uses <strong>Reputation → Level → Vote Weight</strong>:</p>
<ul>
<li>Earn reputation by participating (daily visits, voting, commenting, launching)</li>
<li>Higher levels unlock stronger vote weight</li>
<li>Leaderboards aggregate weighted votes, reflecting trusted contributors more</li>
</ul>
<p>It’s both an incentive system and a practical way to reduce noise in early-stage communities.</p>
<h2 id="reminders-awards-treat-launches-like-events" tabindex="-1">Reminders &amp; awards: treat launches like events <a class="header-anchor" href="#reminders-awards-treat-launches-like-events" aria-label="Permalink to &quot;Reminders &amp; awards: treat launches like events&quot;">&ZeroWidthSpace;</a></h2>
<p>To make launching feel like a real moment, we added automation around it:</p>
<ul>
<li><strong>Launch reminder email</strong>: sent 1 hour before the UTC launch day begins</li>
<li><strong>Daily/weekly/monthly awards</strong>: automatically compute Top 3 and notify makers (with optional public recap)</li>
</ul>
<h2 id="get-started" tabindex="-1">Get started <a class="header-anchor" href="#get-started" aria-label="Permalink to &quot;Get started&quot;">&ZeroWidthSpace;</a></h2>
<ul>
<li>If you’re a maker: go to <a href="https://hunt0.com/submit" target="_blank" rel="noreferrer">Submit</a> and reserve your launch date</li>
<li>If you want to discover: go to <a href="https://hunt0.com/explore" target="_blank" rel="noreferrer">Explore</a> and filter by category/tags</li>
<li>If you want the story: go to <a href="https://hunt0.com/about" target="_blank" rel="noreferrer">About</a> and see where the ladder came from</li>
</ul>
<p>We’ll keep iterating on discovery, leaderboards, and community incentives. Launch something, hunt something — and tell us what to improve.</p>
]]></content:encoded>
            <author>just@justin3go.com (Justin3go)</author>
        </item>
        <item>
            <title><![CDATA[GPT-4o Image Generation Guide]]></title>
            <link>https://justin3go.com/en/posts/2025/04/11-gpt-4o-image-generation-guide</link>
            <guid>https://justin3go.com/en/posts/2025/04/11-gpt-4o-image-generation-guide</guid>
            <pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h1 id="gpt-4o-image-generation-guide" tabindex="-1">GPT-4o Image Generation Guide <a class="header-anchor" href="#gpt-4o-image-generation-guide" aria-label="Permalink to &quot;GPT-4o Image Generation Guide&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>Original Link: <a href="https://turbo0.com/blog/gpt-4o-image-generation-guide" target="_blank" rel="noreferrer">GPT-4o Image Generation Guide</a></p>
</blockquote>
<p><a href="https://turbo0.com" target="_blank" rel="noreferrer">Turbo0</a> is a directory of content creator tools where you can find more tools and resources related to image editing at <a href="https://turbo0.com" target="_blank" rel="noreferrer">Turbo0.com</a>.</p>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<p>The author has compiled a comprehensive guide to GPT-4o image generation styles, covering a variety of unique artistic styles and application scenarios. It mainly includes:</p>
<p><strong>Classic Art Styles</strong>: Ghibli Animation Style、Cyberpunk Style、Watercolor Style、Oil Painting Style、Ukiyo-e Style, etc.</p>
<p><strong>Modern Creative Styles</strong>: 3D Chibi Characters、Hand-drawn Sketches、Pixel Art、Low Poly、Hand-drawn Highlight Information Cards, etc.</p>
<p>These styles can be applied to various practical scenarios such as <em>brand design</em>, <em>avatar generation</em>, <em>children's picture books</em>, and <em>product prototypes</em>. The article also shares four secrets to discovering new ways to play: using search engines, social media, professional platforms, and reverse analysis. Through these methods, users can continuously explore and innovate, enhancing their prompt usage skills to create more unique visual effects.</p>
<blockquote>
<p>This article provides readers with a systematic reference guide for GPT-4o image generation, serving both as an introductory tutorial and for advanced learning.</p>
</blockquote>
<!-- DESC SEP -->
<h2 id="styles" tabindex="-1">Styles <a class="header-anchor" href="#styles" aria-label="Permalink to &quot;Styles&quot;">&ZeroWidthSpace;</a></h2>
<h3 id="studio-ghibli-style" tabindex="-1">Studio Ghibli Style <a class="header-anchor" href="#studio-ghibli-style" aria-label="Permalink to &quot;Studio Ghibli Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p><code>Redraw in the style of Ghibli anime</code>​</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411093833.png" alt=""></p>
<h3 id="cyberpunk-style" tabindex="-1">Cyberpunk Style <a class="header-anchor" href="#cyberpunk-style" aria-label="Permalink to &quot;Cyberpunk Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p><code>A rainy street in a future city, full of neon signs, cyberpunk style.</code></p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411094013.png" alt=""></p>
<h3 id="chinese-wedding" tabindex="-1"><a href="https://x.com/balconychy/status/1909418699150237917" target="_blank" rel="noreferrer">Chinese Wedding</a> <a class="header-anchor" href="#chinese-wedding" aria-label="Permalink to &quot;[Chinese Wedding](https://x.com/balconychy/status/1909418699150237917)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Transform the two people in the photo into chibi 3D characters, dressed in traditional Chinese wedding attire with a red theme, and a &quot;double happiness&quot; paper-cut style background. Clothing requirements: Realistic, the gentleman wears a long robe with a red base decorated with a gold dragon pattern, adorned with a large red flower on the chest representing happiness and prosperity. The lady wears a Xiuhe suit, also red with gold floral patterns and phoenix embroidery, showing elegance and grandeur, complemented by floral hair accessories. Both attires are classic Chinese wedding outfits, symbolizing blessings for a happy marriage. Headwear: The gentleman wears a traditional Chinese scholar's cap in red with gold patterns, topped with exquisite gold details. The lady's headdress is a phoenix crown with red flowers at the center, adorned with gold accents and cascading tassels, rich and classical.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411111023.png" alt=""></p>
<h3 id="hand-drawn-doodle-style" tabindex="-1"><a href="https://x.com/ZHO_ZHO_ZHO/status/1909907741948399873" target="_blank" rel="noreferrer">Hand-drawn Doodle Style</a> <a class="header-anchor" href="#hand-drawn-doodle-style" aria-label="Permalink to &quot;[Hand-drawn Doodle Style](https://x.com/ZHO_ZHO_ZHO/status/1909907741948399873)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Transform the image into a hand-drawn doodle style, then create a series of emoji expressions such as sticking out tongue, smiling, frowning, surprised, thinking, and winking from the doodles.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411111104.png" alt=""></p>
<h3 id="hand-drawn-illustration-style" tabindex="-1"><a href="https://x.com/hellokaton/status/1908338014142816690" target="_blank" rel="noreferrer">Hand-drawn Illustration Style</a> <a class="header-anchor" href="#hand-drawn-illustration-style" aria-label="Permalink to &quot;[Hand-drawn Illustration Style](https://x.com/hellokaton/status/1908338014142816690)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Create concise, visually structured notes on the topic '{{topic}}'. Notes must fit clearly within a {{orientation}} layout (horizontal/vertical), featuring: - Moderate Font Size: Comfortable readability. - Clear Structure: - Main points highlighted with &quot;background colors&quot; or &quot;wavy underlines~&quot;. - Regular notes in standard ink. - Emphasis notes in a different ink color. - Illustrations: - Include relevant sketches or hand-drawn style illustrations. - Allow fountain pen-style doodles or annotations directly on illustrations. - Annotations: - Simulate notes, corrections, and additional quirky doodles resembling spontaneous annotations, using marker pen style. - Incorporate collage-style photo extracts relevant to the topic, annotated or doodled upon. - Language Text Accuracy Constraint (Strict): - When generating text in '{{language}}', abide by recognized dictionaries and standard grammar rules. - For languages like 中文 (Chinese) or others with complex scripts: - Ensure each character or symbol is correct, standard, and used appropriately. - Double-check stroke order, avoid non-existent variants, and verify usage before finalizing the notes. User Settings: - Topic: Child Education - Orientation: Vertical - Language: 中文 - Color Scheme: highlight style. - Illustration Style: Detailed hand-drawn</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411111717.png" alt=""></p>
<h3 id="_3d-chibi-style" tabindex="-1"><a href="https://x.com/hellokaton/status/1908338036842389992" target="_blank" rel="noreferrer">3D Chibi Style</a> <a class="header-anchor" href="#_3d-chibi-style" aria-label="Permalink to &quot;[3D Chibi Style](https://x.com/hellokaton/status/1908338036842389992)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Transform characters in the scene into 3D Chibi style while maintaining the original scene arrangement and costume design. Aspect ratio 2:3</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411111826.png" alt=""></p>
<h3 id="minecraft-voxel-style" tabindex="-1"><a href="https://x.com/hellokaton/status/1908667355426902483" target="_blank" rel="noreferrer">Minecraft Voxel Style</a> <a class="header-anchor" href="#minecraft-voxel-style" aria-label="Permalink to &quot;[Minecraft Voxel Style](https://x.com/hellokaton/status/1908667355426902483)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Make this in Minecraft voxel style.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411112228.png" alt=""></p>
<h3 id="macintosh-computer" tabindex="-1"><a href="https://x.com/hellokaton/status/1908705480672981214" target="_blank" rel="noreferrer">Macintosh Computer</a> <a class="header-anchor" href="#macintosh-computer" aria-label="Permalink to &quot;[Macintosh Computer](https://x.com/hellokaton/status/1908705480672981214)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Create an image in pixel art style of an original Macintosh computer with keyboard. On the screen is the uploaded image opened in MacPaint, converted to black and white. The ratio is 2:3.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411112631.png" alt=""></p>
<h3 id="_3d-chibi-maitreya-buddha" tabindex="-1"><a href="https://x.com/dotey/status/1909804614460785042" target="_blank" rel="noreferrer">3D Chibi Maitreya Buddha</a> <a class="header-anchor" href="#_3d-chibi-maitreya-buddha" aria-label="Permalink to &quot;[3D Chibi Maitreya Buddha](https://x.com/dotey/status/1909804614460785042)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>3D Chibi style Maitreya Buddha</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411111155.png" alt=""></p>
<h3 id="_3d-figurine-style" tabindex="-1">3D Figurine Style <a class="header-anchor" href="#_3d-figurine-style" aria-label="Permalink to &quot;3D Figurine Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Convert to 3D figurine style.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411113652.png" alt=""></p>
<h3 id="studio-portrait-style" tabindex="-1"><a href="https://x.com/FinanceYF5/status/1909821492281721269" target="_blank" rel="noreferrer">Studio Portrait Style</a> <a class="header-anchor" href="#studio-portrait-style" aria-label="Permalink to &quot;[Studio Portrait Style](https://x.com/FinanceYF5/status/1909821492281721269)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Stylize the person on the right into the image on the left. The character should slightly turn, similar to the person in the left photo. Wear a black shirt, illuminated by soft studio lighting, with a dark background to create a bokeh effect highlighting details like facial texture or fine lines. Their gaze should reflect calmness, looking into the distance. Portrait photography shot using Sony Alpha A7 III and f/2 lens. Photo realism, 8k resolution. Square format ratio (1:1).</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411114705.png" alt=""></p>
<h3 id="app-icon" tabindex="-1"><a href="https://x.com/yokogaisha/status/1908047396275454011" target="_blank" rel="noreferrer">App Icon</a> <a class="header-anchor" href="#app-icon" aria-label="Permalink to &quot;[App Icon](https://x.com/yokogaisha/status/1908047396275454011)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Create a 3D-style chibi app icon character with a cute, toy-like appearance. The character should have large expressive eyes, a small smile, and detailed, glossy features like a real physical toy. Use a soft, vibrant lighting style to give it a polished, high-quality finish. The character should slightly exceed the app icon’s frame to enhance the 3D effect and playfulness. Style should feel collectible and adorable, like a miniature figure or Nendoroid.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411114842.png" alt=""></p>
<h3 id="keyboard-miniature-scene" tabindex="-1"><a href="https://x.com/op7418/status/1909489475857866810" target="_blank" rel="noreferrer">Keyboard Miniature Scene</a> <a class="header-anchor" href="#keyboard-miniature-scene" aria-label="Permalink to &quot;[Keyboard Miniature Scene](https://x.com/op7418/status/1909489475857866810)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>An isometric 3D illustration depicting a miniature player sitting in a mini cockpit under a lifted keyboard keycap, using the inside of the keycap as a glowing screen. It features a slight 3D texture and plasticity, making the whole scene resemble a finely crafted 3D model tailored for gamers.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411135448.png" alt=""></p>
<h3 id="miniature-world" tabindex="-1"><a href="https://x.com/op7418/status/1909447949211558281" target="_blank" rel="noreferrer">Miniature World</a> <a class="header-anchor" href="#miniature-world" aria-label="Permalink to &quot;[Miniature World](https://x.com/op7418/status/1909447949211558281)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>An isometric 3D illustration in a minimalist style, depicting a hidden, extraordinarily serene stress-relief oasis—a Japanese Zen garden—inside an old beige computer tower case (typical late 1990s/early 2000s office style, ATX structure).</p>
<p>External Features: The tower case is classic beige or pale yellow plastic, possibly with a floppy drive slot, CD drive tray, dust-covered ventilation grilles, round power button, and maybe a faded &quot;Property of...&quot; asset tag on the side. Overall, it presents the appearance of a forgotten, vintage piece of office equipment.</p>
<p>Internal Scene: The open side panel of the tower case (or the internal space with the panel removed) is converted into a miniature Zen garden. Most of the space is covered with meticulously raked fine white sand, with mini dark rocks (symbolizing islands) strategically placed among them. A small patch of lush green moss might cover a &quot;rock&quot; corner. There could also be a tiny Tsukubai (Shishi-odoshi) device crafted ingeniously from fine copper wires and electronic components, standing serenely.</p>
<p>Figure: A mini &quot;worker bee&quot; figure, dressed in a wrinkled shirt, perhaps with a loosely tied tie, sits calmly in a corner of the sand garden, holding an extremely tiny wooden rake, gazing intently at the sand patterns, seemingly engaged in a meditative mental exercise.</p>
<p>Details and Atmosphere: Light beams mainly enter through the top ventilation of the case or from the side slits, projecting clear yet soft shadows on the sand and rocks. The light might simulate the cold office fluorescent lighting, but in the garden area, it's tempered by the interior atmosphere to be softer and more tranquil. The scene colors primarily consist of the white sand, dark gray rocks, green moss, and the natural colors of the metal/plastic components in the tower background, forming an elegant, understated contrast, creating an ultimate sense of peace, focus, and escape from reality.</p>
<p>Overall Feel: With a slight 3D texture and some plasticity, it feels like a warm secret hidden beneath the cold facade of technology, akin to a finely crafted desktop diorama. This scene, inside a computer tower that symbolizes work stress and constraints, builds a Zen space representing inner peace and mental freedom, forming a strong visual and emotional contrast. Ideal for modern city dwellers seeking a moment of tranquility, office workers, miniature model and Japanese aesthetic enthusiasts, and those who appreciate digital artwork exploring the relationship between work, life, and the inner world.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411135707.png" alt=""></p>
<h3 id="low-poly-style" tabindex="-1">Low Poly Style <a class="header-anchor" href="#low-poly-style" aria-label="Permalink to &quot;Low Poly Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p><code>A minimalist 3D island floating in space, low-poly design with pastel colors.</code></p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411093802.png" alt=""></p>
<h3 id="tourism-visual-notes" tabindex="-1"><a href="https://x.com/op7418/status/1907725315025330245" target="_blank" rel="noreferrer">Tourism Visual Notes</a> <a class="header-anchor" href="#tourism-visual-notes" aria-label="Permalink to &quot;[Tourism Visual Notes](https://x.com/op7418/status/1907725315025330245)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Please generate an image simulating a hand-written visual note on slightly textured paper (such as cream or light brown) about a tourist location. The image should present a travel journal/collage style, containing the following elements:</p>
<ul>
<li>Handwritten in a font that resembles blue or brown ink, including the tourist location's name, geographic location, best visiting season, and one or two catchy slogans or introductions.</li>
<li>An introduction to several major attractions or features, using numbered lists or bullet points (e.g., list 2-3 specific attractions like &quot;strange rock formations,&quot; &quot;ancient legends,&quot; &quot;unique plants&quot;), with brief handwritten annotations.</li>
<li>Highlight or point out particularly recommended spots or activities with red ink or other bright colors (e.g., list 1-2 recommendations).</li>
<li>Interspersed with simple, doodle-style illustrations related to the features of the tourist location (e.g., think of 1-2 representative drawings based on features like mountain profiles, characteristic plants or animals, iconic buildings, etc.)</li>
</ul>
<p>Decorated with a few small photos of the location, appearing pasted on from a slightly retro style or Polaroid look. The overall feel should resemble a vividly crafted, engaging personal guide from an enthusiastic tour guide or an experienced traveler.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411135905.png" alt=""></p>
<h3 id="hand-drawn-highlight-information-card" tabindex="-1"><a href="https://x.com/dotey/status/1907903480678985784" target="_blank" rel="noreferrer">Hand-Drawn Highlight Information Card</a> <a class="header-anchor" href="#hand-drawn-highlight-information-card" aria-label="Permalink to &quot;[Hand-Drawn Highlight Information Card](https://x.com/dotey/status/1907903480678985784)&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Create a hand-drawn style infographic card, ratio 9:16 vertical. The card should have a distinctive theme, with a paper-textured cream or off-white background, embodying a simple, friendly hand-drawn aesthetic. At the top, use prominent red and black contrasting bold script title to capture the visual focus. Text content should adopt Chinese cursive script, with an overall layout divided into 2 to 4 clear sections, each expressing core points in brief, concise Chinese phrases. The script should maintain fluent rhyme, ensuring readability while presenting artistic charm. Sprinkle simple, interesting hand-drawn illustrations or symbols, e.g., figures or symbolic icons, to enhance visual appeal, provoking readers' thoughts and resonance. Maintain balance in the layout, leave ample blank space to ensure the overall design is clean, easily readable and comprehensible.</p>
<p><code>&lt;h1&gt;&lt;span style=&quot;color:red&quot;&gt;「Cognition」&lt;/span&gt; determines the upper limit &lt;span style=&quot;color:red&quot;&gt;「Circle」&lt;/span&gt; determines the opportunity&lt;/h1&gt; - You cannot earn money beyond your 「Cognition」, - Nor encounter opportunities beyond your 「Circle」.</code></p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411115106.png" alt=""></p>
<h3 id="vaporwave-style" tabindex="-1">Vaporwave Style <a class="header-anchor" href="#vaporwave-style" aria-label="Permalink to &quot;Vaporwave Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Redo this image in the Vaporwave style, neon pinks and purples, chrome textures, digital sunset gradients, 1980s retrofuturistic aesthetic...</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411094439.png" alt=""></p>
<h3 id="pixel-art-style" tabindex="-1">Pixel Art Style <a class="header-anchor" href="#pixel-art-style" aria-label="Permalink to &quot;Pixel Art Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Please generate an 8-bit pixel art style game scene.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411094843.png" alt=""></p>
<h3 id="watercolor-style" tabindex="-1">Watercolor Style <a class="header-anchor" href="#watercolor-style" aria-label="Permalink to &quot;Watercolor Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Turn it into Hand-Painted Watercolor.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411095026.png" alt=""></p>
<h3 id="innsmouth-shadow-notes" tabindex="-1">Innsmouth Shadow Notes <a class="header-anchor" href="#innsmouth-shadow-notes" aria-label="Permalink to &quot;Innsmouth Shadow Notes&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Generate an image with an aspect ratio of 2:3 and use English for the text within the image. This image is to simulate a personal notes page created by a reader for the novel The Shadow over Innsmouth. Style: Collage/scrapbook aesthetic, hand-drawn elements mixed with pasted items on a textured paper background (e.g., like a Moleskine notebook or vellum). Please include the following elements: HANDWRITTEN QUOTES: A few classic or impactful English sentences from a novel, written in a clear but handwritten font with a personal touch. CHARACTER DRAWINGS: Simple doodle-style headshots of 2-3 main characters, not necessarily very realistic, but more like quick impressionistic captures. CHARACTER RELATIONSHIPS DIAGRAM: Arrows drawn between the character doodles with short handwritten English text labels describing their relationships (e.g., &quot;Siblings&quot;, &quot;Lovers&quot;, &quot;Mentor &amp; Student&quot;, &quot;Rivals&quot;). PASTED CORNER OF PAGE: A small, realistic-looking piece that simulates a corner torn or cut from an actual novel page (on which some printed English text can be seen) that looks like it was taped or glued to the notes page. (Optional) Annotations: Possibly small handwritten notes or question marks next to quotes or characters. Layout: Elements should be arranged organically, perhaps overlapping slightly, to create the feel of a frequently used personal journal page. OVERALL FEEL: Thought-provoking, analytical, personal, visually appealing.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411140721.png" alt=""></p>
<h3 id="oil-painting-style" tabindex="-1">Oil Painting Style <a class="header-anchor" href="#oil-painting-style" aria-label="Permalink to &quot;Oil Painting Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p><code>A peaceful European village at sunset, in oil painting style.</code></p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411095503.png" alt=""></p>
<h3 id="comic-book-style" tabindex="-1">Comic Book Style <a class="header-anchor" href="#comic-book-style" aria-label="Permalink to &quot;Comic Book Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p><code>A masked hero jumping from a rooftop, comic book style with bold outlines and dialogue bubbles.</code></p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411095735.png" alt=""></p>
<h3 id="anime-style" tabindex="-1">Anime Style <a class="header-anchor" href="#anime-style" aria-label="Permalink to &quot;Anime Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p><code>Turn it into Anime style.</code></p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411100348.png" alt=""></p>
<h3 id="ukiyo-e-style" tabindex="-1">Ukiyo-e Style <a class="header-anchor" href="#ukiyo-e-style" aria-label="Permalink to &quot;Ukiyo-e Style&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Convert this detective movie scene into traditional Japanese Ukiyo-e print style, preserving dramatic shadows and character expressions, adapting to a traditional color palette.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411110057.png" alt=""></p>
<h3 id="surreal-abstract-composition" tabindex="-1">Surreal/Abstract Composition <a class="header-anchor" href="#surreal-abstract-composition" aria-label="Permalink to &quot;Surreal/Abstract Composition&quot;">&ZeroWidthSpace;</a></h3>
<blockquote>
<p>Create a circular image containing a spiral arrangement of 12 objects against a deep space background, including items like crystal hourglass, mechanical butterfly, etc.</p>
</blockquote>
<p><img src="https://oss.justin3go.com/blogs/Pasted%20image%2020250411110847.png" alt=""></p>
<h2 id="some-scenarios" tabindex="-1">Some Scenarios <a class="header-anchor" href="#some-scenarios" aria-label="Permalink to &quot;Some Scenarios&quot;">&ZeroWidthSpace;</a></h2>
<ul>
<li>Brand design and marketing visuals: Logo, product packaging, promotional posters, etc.</li>
<li>Avatar generation and personal image</li>
<li>Children's book illustrations</li>
<li>Product prototype and concept design</li>
<li>Illustration creation and art design</li>
<li>Interior design and decoration layout</li>
<li>Movie storyboard and plot board</li>
<li>Social media cover art</li>
<li>Game character design and sketches</li>
<li>Visual style transformation and image blending</li>
<li>Educational demonstrations and illustrative explanations</li>
</ul>
<h2 id="how-to-discover-new-uses-of-gpt-4o-for-image-generation" tabindex="-1">How to Discover New Uses of GPT-4o for Image Generation <a class="header-anchor" href="#how-to-discover-new-uses-of-gpt-4o-for-image-generation" aria-label="Permalink to &quot;How to Discover New Uses of GPT-4o for Image Generation&quot;">&ZeroWidthSpace;</a></h2>
<p>I recommend checking out Teacher Baoyu's <a href="https://baoyu.io/blog/gpt-4-image-generation-new-tricks" target="_blank" rel="noreferrer">blog post</a>.</p>
<p>Four key techniques: using search engines, social media, the Sora.com platform, and reverse analysis.</p>
<p>These methods help users master the use of prompts, enhance sensitivity and understanding, and create novel visual effects by imitating and blending prompts of different styles. The blog also emphasizes the importance of sharing your success stories, forming a positive feedback loop through sharing and exchanges, jointly exploring more possibilities.</p>
<h2 id="postscript-more-resource-recommendations" tabindex="-1">Postscript (More Resource Recommendations) <a class="header-anchor" href="#postscript-more-resource-recommendations" aria-label="Permalink to &quot;Postscript (More Resource Recommendations)&quot;">&ZeroWidthSpace;</a></h2>
<blockquote>
<p>Feel free to self-recommend or suggest GPT-4o drawing resources in the comments section.</p>
</blockquote>
<ul>
<li>2025-04-14: Some friends have started collecting such prompts and organizing them into a GitHub repository. Highly recommended to check it out: <a href="https://github.com/jamez-bondos/awesome-gpt4o-images" target="_blank" rel="noreferrer">Awesome GPT-4o Images</a></li>
<li>2025-04-16: <a href="https://x.com/hylarucoder/status/1904866006700613760" target="_blank" rel="noreferrer">Long post demonstrating GPT-4o drawing styles and scenes</a></li>
<li>2025-04-16: A friend organized a <a href="https://dev-qiuyu.feishu.cn/base/RKJsbYoT8aXLsOs2aaBciTmOnQh?table=tblEv0PjREXSDuSu&amp;view=vewEBIpUHH" target="_blank" rel="noreferrer">Feishu multi-dimensional spreadsheet</a> and open-sourced it into a <a href="https://github.com/iAmCorey/prompt.surf" target="_blank" rel="noreferrer">navigation site</a></li>
</ul>
<h2 id="references" tabindex="-1">References <a class="header-anchor" href="#references" aria-label="Permalink to &quot;References&quot;">&ZeroWidthSpace;</a></h2>
<p>Some references are directly cited within the article, while others are as follows:</p>
<ul>
<li><a href="https://chatgpt.com/share/67f88d16-194c-8005-91ab-bdb54d1fbbc7" target="_blank" rel="noreferrer">ChatGPT DeepResearch</a></li>
<li><a href="https://x.com/i/grok/share/Zg14KbCpvsA33E8fMr8kgC4hK" target="_blank" rel="noreferrer">Grok DeeperSearch</a></li>
</ul>
]]></content:encoded>
            <author>just@justin3go.com (Justin3go)</author>
        </item>
        <item>
            <title><![CDATA[In-depth Research Report on Google Agent2Agent (A2A) Protocol]]></title>
            <link>https://justin3go.com/en/posts/2025/04/10-in-depth-research-report-google-agent2agent-a2a-protocol</link>
            <guid>https://justin3go.com/en/posts/2025/04/10-in-depth-research-report-google-agent2agent-a2a-protocol</guid>
            <pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h1 id="in-depth-research-report-on-google-agent2agent-a2a-protocol" tabindex="-1">In-depth Research Report on Google Agent2Agent (A2A) Protocol <a class="header-anchor" href="#in-depth-research-report-on-google-agent2agent-a2a-protocol" aria-label="Permalink to &quot;In-depth Research Report on Google Agent2Agent (A2A) Protocol&quot;">&ZeroWidthSpace;</a></h1>
<blockquote>
<p>✨Article Summary (AI Generated)</p>
</blockquote>
<!-- DESC SEP -->
<p>In April 2025, Google officially announced a new <strong>Agent2Agent (A2A) Protocol</strong> at the Cloud Next 2025 event. A2A is an open interoperability protocol designed to break down barriers between different AI agent frameworks and vendors, enabling secure and efficient cross-platform collaboration. Specifically designed for enterprise environments, this protocol addresses data silo issues by standardizing communication between agents, enabling the automation of complex workflows and boosting productivity.</p>
<p>Upon release, A2A received support from over 50 industry-leading enterprises (such as Atlassian, Box, Salesforce, SAP, ServiceNow, MongoDB, etc.). It provides a common framework for AI agents, allowing agents from different vendors or architectures to securely exchange information, coordinate actions, and integrate seamlessly into business operations.</p>
<p>This coalition reflects the industry's shared vision for AI agent interoperability, where in the future, regardless of the underlying technology, AI agents can &quot;converse&quot; and collaborate freely like network services.</p>
<!-- DESC SEP -->
<h2 id="technical-principles" tabindex="-1">Technical Principles <a class="header-anchor" href="#technical-principles" aria-label="Permalink to &quot;Technical Principles&quot;">&ZeroWidthSpace;</a></h2>
<h3 id="core-architecture" tabindex="-1">Core Architecture <a class="header-anchor" href="#core-architecture" aria-label="Permalink to &quot;Core Architecture&quot;">&ZeroWidthSpace;</a></h3>
<p>An AI agent communication protocol based on HTTP+JSON, primarily consisting of the following modules:</p>
<ol>
<li>
<p><strong>Agent Card</strong></p>
<ul>
<li>Location: <code>/.well-known/agent.json</code></li>
<li>Function: A JSON-formatted agent capability manual (including API endpoints, skills, authentication methods)</li>
</ul>
</li>
<li>
<p><strong>Role Model</strong></p>
<ul>
<li>Server: Provides API interfaces (requiring the implementation of standard methods such as <code>tasks/send</code>)</li>
<li>Client: Makes HTTP calls to other agents</li>
</ul>
</li>
<li>
<p><strong>Task Flow</strong></p>
<ul>
<li>Lifecycle: submitted → working → (input-required) → completed/failed</li>
<li>Interaction units:
<ul>
<li><strong>Messages</strong>: Composed of multiple types of Parts (text/file/structured data)</li>
<li><strong>Artifacts</strong>: Structured results produced by tasks</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>Communication Mechanism</strong></p>
<ul>
<li>Basic mode: HTTP + JSON-RPC style interfaces</li>
<li>Advanced features:
<ul>
<li>Real-time push: SSE protocol (<code>tasks/sendSubscribe</code>)</li>
<li>Asynchronous notifications: Webhook callbacks</li>
<li>Multimodal support: Achieved through the Part type</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>UX Negotiation</strong></p>
<ul>
<li>Pre-negotiation of interaction forms between agents (e.g., text/voice/forms)</li>
</ul>
</li>
</ol>
<h3 id="basic-framework-and-dependencies" tabindex="-1">Basic Framework and Dependencies <a class="header-anchor" href="#basic-framework-and-dependencies" aria-label="Permalink to &quot;Basic Framework and Dependencies&quot;">&ZeroWidthSpace;</a></h3>
<p>The A2A protocol itself does not rely on specific AI models or frameworks but is closely related to the trend of autonomous agents driven by large language models (LLM).</p>
<p>The protocol's structure draws upon the concepts of distributed systems and microservices, treating each AI agent as an independent service that communicates through standard interfaces. This means that any LLM-based agent development framework (such as LangChain, LangGraph, Google's Agent Developer Kit <strong>ADK</strong>, CrewAI, Genkit, etc.) can implement the A2A interface and thereby collaborate with other agents.</p>
<p>Google emphasizes that A2A is adaptable to &quot;opaque&quot; agents—those that do not need to expose internal reasoning processes or memory states. This is crucial for many enterprise-level applications since, in terms of security and compliance, agents tend to interact through clearly defined inputs and outputs rather than sharing internal details.</p>
<p>In summary, A2A provides an <strong>application layer protocol</strong> specification. Developers can build compliant agents using any technology stack (such as backend in Python, Node.js, etc.), as long as they adhere to the HTTP+JSON interface contract, enabling interconnectivity with other agents.</p>
<h2 id="protocol-significance-design-goals-and-multi-agent-collaboration-value" tabindex="-1">Protocol Significance: Design Goals and Multi-Agent Collaboration Value <a class="header-anchor" href="#protocol-significance-design-goals-and-multi-agent-collaboration-value" aria-label="Permalink to &quot;Protocol Significance: Design Goals and Multi-Agent Collaboration Value&quot;">&ZeroWidthSpace;</a></h2>
<h3 id="design-intent" tabindex="-1">Design Intent <a class="header-anchor" href="#design-intent" aria-label="Permalink to &quot;Design Intent&quot;">&ZeroWidthSpace;</a></h3>
<p>The introduction of the Agent2Agent protocol stems from the real-world challenges enterprises face when deploying AI agents at scale. As various AI-powered agents (some for customer service, others for office automation, etc.) are introduced in different departments and teams, enabling communication and coordination between agents built by different vendors and frameworks to achieve more complex tasks becomes a significant challenge.</p>
<p>Traditionally, enterprises might need to custom-build integration interfaces or write &quot;glue code&quot; for each pair of interacting agents. This is not only costly but difficult to scale. The design goal of the A2A protocol is to establish a common language for <strong>heterogeneous AI agents</strong>, allowing them to <strong>collaborate out of the box</strong> without needing a custom integration layer for each combination. Drawing from its experience in deploying large-scale agent systems internally, Google has abstracted these common challenges, leading the way in forming the A2A as an open standard for the entire industry.</p>
<h3 id="openness-and-neutrality" tabindex="-1">Openness and Neutrality <a class="header-anchor" href="#openness-and-neutrality" aria-label="Permalink to &quot;Openness and Neutrality&quot;">&ZeroWidthSpace;</a></h3>
<p>A2A is positioned as an <strong>open protocol standard</strong> rather than a proprietary Google interface, which is significant. Firstly, being open means that any organization or individual can implement their own A2A agents according to the publicly available specifications, and Google itself has open-sourced the protocol under the Apache 2.0 license on GitHub. More than 50 tech companies, SaaS providers, and consulting organizations participated in the protocol drafting from the start, contributing to its demands and standards.</p>
<p>This multi-party collaboration ensures that A2A has <strong>neutrality and universality</strong>, avoiding dominance by a single vendor. This is akin to the early days of the internet's HTTP protocol—widely recognized as an open standard fostering interconnectivity between different systems. Similarly, the A2A protocol is also hoped to become the &quot;HTTP between agents,&quot; creating an open and unified communication layer for AI agents. Upon its introduction, it was viewed by some as a crucial signal towards <strong>AI agent interoperability standardization</strong> in the industry.</p>
<h3 id="complement-to-mcp" tabindex="-1">Complement to MCP <a class="header-anchor" href="#complement-to-mcp" aria-label="Permalink to &quot;Complement to MCP&quot;">&ZeroWidthSpace;</a></h3>
<p>Notably, Google positions A2A as a complement rather than a replacement for the <strong>Model Context Protocol (MCP)</strong> proposed by Anthropic. The MCP protocol primarily addresses how a single agent uses tools and accesses external context, providing a consistent interface for AI models to call APIs and retrieve databases. In contrast, A2A focuses on <strong>dialogue and collaboration between agents</strong>.</p>
<p>Google metaphorically explains: &quot;If MCP is a <strong>wrench</strong> that enables agents to use tools, then A2A is the <strong>dialogue between mechanics</strong>, allowing multiple agents to communicate like a team of mechanics diagnosing problems.&quot; In other words, A2A does not compete with MCP; rather, it serves its function—MCP empowers a single agent to connect external tools and data, while A2A connects multiple independent agents into a larger collaborative network. Together, they complement and strengthen a more robust autonomous agent ecosystem.</p>
<h3 id="enhancing-autonomy-and-collaborative-efficiency" tabindex="-1">Enhancing Autonomy and Collaborative Efficiency <a class="header-anchor" href="#enhancing-autonomy-and-collaborative-efficiency" aria-label="Permalink to &quot;Enhancing Autonomy and Collaborative Efficiency&quot;">&ZeroWidthSpace;</a></h3>
<p>The value of the A2A protocol in multi-agent systems lies in <strong>increasing the ceiling of agent autonomy and collaboration</strong>. Through A2A, agents with different capabilities can dynamically form &quot;digital workforce teams&quot; to collaboratively handle complex tasks that a single agent cannot accomplish. For example, a sales AI assistant can directly request a financial AI agent to generate a quote; a customer service chatbot can communicate with a warehouse AI agent about inventory information.</p>
<p>This direct agent linkage saves on human coordination or extra intermediary layers, thereby <strong>improving task efficiency and success rate</strong>. Research indicates that multi-agent collaboration can significantly increase target completion rates compared to single-agent solutions in enterprise scenarios. Moreover, A2A's standardized approach lowers the marginal cost of introducing new agents—enterprises can add specialized agents into the workflow at any time, and they can immediately &quot;converse&quot; with existing agents without additional development, achieving <strong>plug-and-play</strong> extensibility.</p>
<h3 id="security-and-governance" tabindex="-1">Security and Governance <a class="header-anchor" href="#security-and-governance" aria-label="Permalink to &quot;Security and Governance&quot;">&ZeroWidthSpace;</a></h3>
<p>While emphasizing open collaboration, A2A also focuses on the security and governance concerns important to enterprises. The protocol's design features built-in authentication and authorization mechanisms, with the Agent Card explicitly listing the identity authentication methods required for agent services. Enterprises can control which agents have permission to communicate with each other and exchange which data through unified policy management.</p>
<p>This <strong>standardized management</strong> approach is more conducive to audit and risk control than having each interface operate independently. Additionally, since A2A only requires sharing the inputs and outputs needed for tasks without involving the internal reasoning process of agents, enterprises can have agents collaborate while <strong>protecting proprietary algorithms and data</strong>. In the long run, as more enterprises adopt A2A, they can also gain a <strong>unified perspective for cross-platform agent management</strong>, enabling monitoring and optimization of their entire AI agent &quot;fleet.&quot; These standardized, controllable, and manageable features are critical to A2A's implementation in enterprise environments.</p>
<h2 id="application-scenarios-automation-multi-agent-collaboration-intelligent-assistants-and-enterprise-communication" tabindex="-1">Application Scenarios: Automation, Multi-Agent Collaboration, Intelligent Assistants, and Enterprise Communication <a class="header-anchor" href="#application-scenarios-automation-multi-agent-collaboration-intelligent-assistants-and-enterprise-communication" aria-label="Permalink to &quot;Application Scenarios: Automation, Multi-Agent Collaboration, Intelligent Assistants, and Enterprise Communication&quot;">&ZeroWidthSpace;</a></h2>
<p>As a bridge for multi-agent collaboration, the A2A protocol has extensive application potential across numerous business and product scenarios. Below are some typical scenarios and examples to demonstrate the value of A2A:</p>
<ul>
<li>
<p><strong>Enterprise Process Automation</strong>
In large enterprises, daily business processes often involve multiple systems and roles. Through A2A, agents with different functions can collaboratively complete end-to-end automated processes. For example, in IT operations scenarios, an agent responsible for asset management can request another agent in charge of procurement to automatically complete tasks such as &quot;ordering a laptop for a new employee.&quot;</p>
</li>
<li>
<p><strong>Multi-Agent Collaboration</strong>
A2A's most direct application is enabling multiple AI agents to form collaboration teams to divide and complete complex tasks. In the human resources recruitment process, enterprises may deploy different agents: one responsible for screening resumes, another for scheduling interview times, and another for answering candidates' common questions. Through A2A, these agents can notify each other of progress and share information.</p>
</li>
<li>
<p><strong>Intelligent and Personal Assistants</strong>
Modern intelligent virtual assistants, for personal or workplace use, are becoming increasingly complex. Through the A2A protocol, the intelligent assistant no longer needs to be a single AI model but can be an integrated system that calls on a group of specialized agents behind the scenes. For instance, a personal intelligent assistant planning overseas travel for a user can call a &quot;flight booking agent&quot; to acquire flight options and then call a &quot;trip optimization agent&quot; to plan the travel itinerary, even collaborating with a &quot;translation agent&quot; for local language assistance.</p>
</li>
<li>
<p><strong>Enterprise Communication and Collaborative Work</strong>
In large organizations, different departments may use their AI tools to enhance efficiency. Without a unified standard, these agents operate independently, making it difficult to share information. The A2A protocol allows enterprises to achieve cross-departmental agent collaboration; for example, a sales AI finding a technical issue with a customer can directly notify a customer service AI to follow up through A2A.</p>
</li>
<li>
<p><strong>Other Scenarios</strong>
Beyond the aforementioned typical applications, A2A can also be used in customer service, e-commerce logistics, financial risk control, and many other fields. As AI agents are applied more deeply across industries, any scenario requiring multiple intelligent agents to collaborate can become a point of application for A2A.</p>
</li>
</ul>
<h2 id="industry-impact-ecosystem-competitive-comparison-and-industry-trends" tabindex="-1">Industry Impact: Ecosystem, Competitive Comparison, and Industry Trends <a class="header-anchor" href="#industry-impact-ecosystem-competitive-comparison-and-industry-trends" aria-label="Permalink to &quot;Industry Impact: Ecosystem, Competitive Comparison, and Industry Trends&quot;">&ZeroWidthSpace;</a></h2>
<h3 id="ecosystem-construction" tabindex="-1">Ecosystem Construction <a class="header-anchor" href="#ecosystem-construction" aria-label="Permalink to &quot;Ecosystem Construction&quot;">&ZeroWidthSpace;</a></h3>
<p>The introduction of the A2A protocol has already shown a tangible boosting effect on the AI development ecosystem. First, the involvement of numerous partners indicates that major industry players are working together to forge a unified agent communication standard.</p>
<p>For developers, this means that in the future, when building AI applications, they will be able to conveniently integrate intelligent components from different vendors without worrying about compatibility issues.</p>
<h3 id="impact-on-competitive-landscape" tabindex="-1">Impact on Competitive Landscape <a class="header-anchor" href="#impact-on-competitive-landscape" aria-label="Permalink to &quot;Impact on Competitive Landscape&quot;">&ZeroWidthSpace;</a></h3>
<p>As the first open multi-agent communication protocol standard, A2A also places pressure and influence on major AI platform providers. On one hand, Google, by leveraging the open standard to rally industry resources, has solidified its leadership in enterprise AI; on the other hand, other giants like Microsoft, OpenAI, IBM, etc., if they lack a similar standard, will need to consider whether to support A2A to be part of this ecosystem.</p>
<p>In the future, customers may demand AI products to have A2A compatibility to protect their investments. This will prompt more vendors to join the support line to avoid being excluded from the ecosystem.</p>
<h3 id="meaning-for-developers-and-enterprises" tabindex="-1">Meaning for Developers and Enterprises <a class="header-anchor" href="#meaning-for-developers-and-enterprises" aria-label="Permalink to &quot;Meaning for Developers and Enterprises&quot;">&ZeroWidthSpace;</a></h3>
<p>From a developer's perspective, the advent of A2A greatly simplifies the development of multi-agent applications. Previously, achieving interactions between two AI systems using different frameworks required developers to master both interfaces and write adaptation layers; now, as long as both sides implement the A2A interface, they can directly call each other.</p>
<p>This reduces the operational costs and technical risks of deploying AI agents in enterprises, encouraging more traditional IT departments to attempt introducing AI agent collaboration to improve business processes.</p>
<h3 id="industry-trend-outlook" tabindex="-1">Industry Trend Outlook <a class="header-anchor" href="#industry-trend-outlook" aria-label="Permalink to &quot;Industry Trend Outlook&quot;">&ZeroWidthSpace;</a></h3>
<p>The birth of the A2A protocol aligns with the trend of AI industry moving towards more autonomous and collaborative development. On one hand, the enhanced capabilities of large language models have spawned many applications for autonomous agents, and singular intelligence is gradually unable to meet complex business demands, pushing the architecture from &quot;single agent + tool&quot; to &quot;multi-agent collaboration.&quot;</p>
<p>A2A provides the foundational standard necessary for this evolution. On the other hand, enterprises are increasingly demanding data sovereignty and system control—they wish to freely purchase the most suitable AI modules rather than being locked into a single vendor ecosystem. A2A, by allowing open interconnection, meets this decentralized and diversified demand, aligning with the industry's broad trend of open cooperation.</p>
<h2 id="related-materials-papers-blogs-demos-and-code-repositories" tabindex="-1">Related Materials: Papers, Blogs, Demos, and Code Repositories <a class="header-anchor" href="#related-materials-papers-blogs-demos-and-code-repositories" aria-label="Permalink to &quot;Related Materials: Papers, Blogs, Demos, and Code Repositories&quot;">&ZeroWidthSpace;</a></h2>
<h3 id="official-releases-and-technical-blogs" tabindex="-1">Official Releases and Technical Blogs <a class="header-anchor" href="#official-releases-and-technical-blogs" aria-label="Permalink to &quot;Official Releases and Technical Blogs&quot;">&ZeroWidthSpace;</a></h3>
<p>Upon releasing the A2A protocol, the Google team provided comprehensive official documentation and blog posts. The most significant one is <em>&quot;Announcing the Agent2Agent Protocol (A2A)&quot;</em> published on the Google Developers Blog on April 9, 2025.</p>
<h3 id="technical-documentation-and-specifications" tabindex="-1">Technical Documentation and Specifications <a class="header-anchor" href="#technical-documentation-and-specifications" aria-label="Permalink to &quot;Technical Documentation and Specifications&quot;">&ZeroWidthSpace;</a></h3>
<p>The complete technical specifications of the A2A protocol have been open-sourced and released on a GitHub repository, which includes the protocol's JSON interface definitions, example codes, and documentation.</p>
<h3 id="open-source-code-repositories-and-sdks" tabindex="-1">Open Source Code Repositories and SDKs <a class="header-anchor" href="#open-source-code-repositories-and-sdks" aria-label="Permalink to &quot;Open Source Code Repositories and SDKs&quot;">&ZeroWidthSpace;</a></h3>
<p>Besides specification documentation, the A2A GitHub repository contains sample implementations and development toolkits in multiple programming languages. Developers are welcome to test, reference, and contribute improvements.</p>
<h3 id="demos-and-video-materials" tabindex="-1">Demos and Video Materials <a class="header-anchor" href="#demos-and-video-materials" aria-label="Permalink to &quot;Demos and Video Materials&quot;">&ZeroWidthSpace;</a></h3>
<p>To facilitate understanding of A2A's actual effects, Google provides several demo cases. For instance, scenarios demonstrating cross-platform agent collaboration were presented at the launch.</p>
<h3 id="community-discussions-and-analytical-articles" tabindex="-1">Community Discussions and Analytical Articles <a class="header-anchor" href="#community-discussions-and-analytical-articles" aria-label="Permalink to &quot;Community Discussions and Analytical Articles&quot;">&ZeroWidthSpace;</a></h3>
<p>The release of A2A has triggered extensive discussions in the AI technical community. Many industry analysts have published insights in blogs and media, providing different perspectives on the significance, application prospects, and potential challenges of the A2A protocol.</p>
<h3 id="are-there-any-academic-papers" tabindex="-1">Are there any Academic Papers? <a class="header-anchor" href="#are-there-any-academic-papers" aria-label="Permalink to &quot;Are there any Academic Papers?&quot;">&ZeroWidthSpace;</a></h3>
<p>As of now (April 2025), the A2A protocol is mainly published industrially with no dedicated academic papers detailing its features. However, its concept aligns with research directions in multi-agent systems and distributed AI.</p>
<h2 id="conclusion" tabindex="-1">Conclusion <a class="header-anchor" href="#conclusion" aria-label="Permalink to &quot;Conclusion&quot;">&ZeroWidthSpace;</a></h2>
<p>The Agent2Agent (A2A) protocol, as an open standard launched by Google in collaboration with industry players, heralds an era of direct dialogue and cooperation between AI agents. Its clear technical framework and enterprise-focused design fill the gap of lacking a universal communication standard in multi-agent systems.</p>
<p>A2A transitions AI agents from isolation to networks: agents with different capabilities can discover, communicate, and coordinate with each other like internet services, achieving autonomous intelligence on a broader scale. For enterprises, it introduces a new paradigm of cross-application AI automation, heralding increased efficiency and innovative possibilities; for developers, it provides standard tools and an ecosystem, significantly lowering the barrier for multi-agent development.</p>
<h3 id="references" tabindex="-1">References <a class="header-anchor" href="#references" aria-label="Permalink to &quot;References&quot;">&ZeroWidthSpace;</a></h3>
<ol>
<li><a href="https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/#:~:text=Today%2C%20we%E2%80%99re%20launching%20a%20new%2C,be%20able%20to%20work%20across" target="_blank" rel="noreferrer">Rao Surapaneni et al., <em>Announcing the Agent2Agent Protocol (A2A)</em></a></li>
<li><a href="https://cloud.google.com/blog/topics/partners/best-agentic-ecosystem-helping-partners-build-ai-agents-next25#:~:text=,more%20in%20our%20technical%20blog" target="_blank" rel="noreferrer">Kevin Ichhpurani, <em>Building the industry’s best agentic AI ecosystem with partners</em></a></li>
<li><a href="https://github.com/google/A2A" target="_blank" rel="noreferrer">Google Open Source Project, <em>Agent2Agent Protocol – README</em></a></li>
<li><a href="https://www.maginative.com/article/google-just-launched-agent2agent-an-open-protocol-for-ai-agents-to-work-directly-with-each-other/#:~:text=,time%20updates%2C%20and%20multimodal%20data" target="_blank" rel="noreferrer">Chris McKay, <em>Google just Launched Agent2Agent...</em> (Maginative, Apr 2025)</a></li>
<li><a href="https://finance.sina.com.cn/stock/relnews/us/2025-04-10/doc-inessiqx9134714.shtml#:~:text=Image%3A%20%E5%9B%BE%E6%BA%90%EF%BC%9A%E7%BD%91%E7%BB%9C%E5%9B%BE%E6%BA%90%EF%BC%9A%E7%BD%91%E7%BB%9C" target="_blank" rel="noreferrer">Ofweek VicoNet, <em>Google Releases New Agent Protocol A2A...</em> (Reposted from Sina Finance)</a></li>
<li><a href="https://www.cnbeta.com.tw/articles/tech/1491788.htm#:~:text=A2A%20%E5%8D%8F%E8%AE%AE%E5%9F%BA%E4%BA%8E%E8%83%BD%E5%8A%9B%E5%8F%91%E7%8E%B0%E3%80%81%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86%E3%80%81%E5%8D%8F%E4%BD%9C%E5%92%8C%E7%94%A8%E6%88%B7%E4%BD%93%E9%AA%8C%E5%8D%8F%E5%95%86%E7%AD%89%E5%85%B3%E9%94%AE%E5%8E%9F%E5%88%99%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8C%E4%BB%A3%E7%90%86%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%20JSON%20%E6%A0%BC%E5%BC%8F%E7%9A%84%E2%80%9C%E4%BB%A3%E7%90%86%E5%8D%A1%E2%80%9D%E5%8F%91%E5%B8%83%E5%85%B6%E8%83%BD%E5%8A%9B%EF%BC%8C%E4%BB%8E%E8%80%8C%E5%85%81%E8%AE%B8%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BB%A3%E7%90%86%E8%AF%86%E5%88%AB%E6%9C%80%E9%80%82%E5%90%88%E4%BB%BB%E5%8A%A1%E7%9A%84%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%90%86%E3%80%82%E8%AF%A5%E5%8D%8F%E8%AE%AE%E8%BF%98%E6%9C%89%E5%8A%A9%E4%BA%8E%E4%BB%BB%E5%8A%A1%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%AE%A1%E7%90%86%EF%BC%8C%E5%AE%9E%E7%8E%B0%E4%BB%A3%E7%90%86%E4%B9%8B%E9%97%B4%E7%9A%84%E5%AE%9E%E6%97%B6%E5%90%8C%E6%AD%A5%E3%80%82A2A%20%E5%8D%8F%E8%AE%AE%E5%9F%BA%E4%BA%8E,HTTP%20%E5%92%8C%20JSON%20%E7%AD%89%E6%88%90%E7%86%9F%E6%A0%87%E5%87%86%E6%9E%84%E5%BB%BA%EF%BC%8C%E5%9C%A8%E7%A1%AE%E4%BF%9D%E4%B8%8E%E7%8E%B0%E6%9C%89%E7%B3%BB%E7%BB%9F%E5%85%BC%E5%AE%B9%E7%9A%84%E5%90%8C%E6%97%B6%EF%BC%8C%E4%BC%98%E5%85%88%E8%80%83%E8%99%91%E5%AE%89%E5%85%A8%E6%80%A7%E3%80%82" target="_blank" rel="noreferrer">cnBeta News, <em>Google Launches Agent2Agent Protocol for Cross-Platform AI Agent Connectivity</em></a></li>
</ol>
]]></content:encoded>
            <author>just@justin3go.com (Justin3go)</author>
        </item>
    </channel>
</rss>