<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Agent-Architecture on Tarragon</title><link>https://tarrragon.github.io/blog/tags/agent-architecture/</link><description>Recent content in Agent-Architecture on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Tue, 12 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/agent-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Subagent</title><link>https://tarrragon.github.io/blog/llm/knowledge-cards/subagent/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/llm/knowledge-cards/subagent/</guid><description>&lt;p>Subagent 的核心概念是「&lt;strong>把 coding agent 切成多個專責子 agent、每個有獨立 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/context-window/" data-link-title="Context Window" data-link-desc="模型一次能處理的最大 token 數量：prompt 加生成的總和上限">context window&lt;/a> 跟 system prompt、由 main agent 透過 handoff 機制調度&lt;/strong>」。代表設計：Claude Code 的 Task agent、OpenAI Agents SDK 的 handoff、Anthropic multi-agent research。是「context budget 不夠 + 任務跨多個 specialty」場景的工程選擇。&lt;/p>
&lt;h2 id="概念位置">概念位置&lt;/h2>
&lt;p>Single agent vs subagent 架構的對比：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">Single agent（無 subagent）：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl"> Main agent context：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl"> [system prompt + tool schema + 跨所有 specialty 的 history + 所有 file content]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl"> ↓ 容易爆 context、specialty 互相干擾
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl">Subagent 架構：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl"> Main agent context（路由 + 高階決策）：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl"> [main system prompt + handoff tool spec + 高階任務歷史]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl"> ↓ 路由到 subagent
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl"> Subagent A context（如「跑測試」專家）：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">12&lt;/span>&lt;span class="cl"> [test-runner system prompt + 測試 tool + 測試相關 file]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">13&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">14&lt;/span>&lt;span class="cl"> Subagent B context（如「寫 docs」專家）：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">15&lt;/span>&lt;span class="cl"> [docs system prompt + 寫 docs tool + 相關 docs 檔案]&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>主要好處：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Context budget 隔離&lt;/strong>：每個 subagent 只看自己 specialty 相關 context、不被別的 specialty 污染&lt;/li>
&lt;li>&lt;strong>System prompt 專門化&lt;/strong>：寫 docs 的 system prompt 跟跑測試的 system prompt 不同、各自最佳化&lt;/li>
&lt;li>&lt;strong>Specialty 路由&lt;/strong>：main agent 只決定「這個任務該交給哪個 subagent」、不直接做 specialty 工作&lt;/li>
&lt;/ol>
&lt;p>主要挑戰：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Handoff 設計&lt;/strong>：main agent 要怎麼選 subagent、怎麼傳 context、怎麼接 result&lt;/li>
&lt;li>&lt;strong>跨 subagent 共享狀態&lt;/strong>：codebase 知識、history、要避免重複 work&lt;/li>
&lt;li>&lt;strong>失敗模式&lt;/strong>：subagent 之間互相 deadlock、main agent 失去 high-level view、subagent 邊界劃錯&lt;/li>
&lt;/ol>
&lt;h2 id="設計責任">設計責任&lt;/h2>
&lt;p>讀 multi-agent / subagent paper / coding agent docs 看到「subagent」「handoff」「Task tool」「specialist agent」就是這 framing。寫 code 場景的判讀：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>何時用 subagent&lt;/strong>：單一 agent context 不夠用、specialty 邊界清楚（如 search / coding / testing / documentation）、main agent 的 system prompt 已太長&lt;/li>
&lt;li>&lt;strong>何時不用&lt;/strong>：任務簡單、specialty 邊界模糊（強行拆會增加 handoff overhead）、本地小模型（handoff 機制對小模型不穩）&lt;/li>
&lt;li>&lt;strong>跟 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/agent-loop/" data-link-title="Agent Loop" data-link-desc="LLM agent 自我循環的工作流：LLM 規劃下一步、執行 tool、看結果、再規劃下一步、直到任務完成或停止條件觸發">agent loop&lt;/a> 的關係&lt;/strong>：每個 subagent 內部仍是 agent loop（perceive / reason / act / observe / terminate）、只是 loop 範圍縮窄&lt;/li>
&lt;li>&lt;strong>跟 &lt;a href="https://tarrragon.github.io/blog/llm/knowledge-cards/scaffold-vs-harness/" data-link-title="Scaffold vs Harness" data-link-desc="Coding agent 的兩個工程層次：scaffold 是建構時靜態結構、harness 是 runtime 的 tool dispatch &amp;#43; context management &amp;#43; safety">scaffold vs harness&lt;/a> 的關係&lt;/strong>：subagent 註冊在 scaffold（建構時）、handoff 在 harness（runtime）執行&lt;/li>
&lt;/ol></description><content:encoded><![CDATA[<p>Subagent 的核心概念是「<strong>把 coding agent 切成多個專責子 agent、每個有獨立 <a href="/blog/llm/knowledge-cards/context-window/" data-link-title="Context Window" data-link-desc="模型一次能處理的最大 token 數量：prompt 加生成的總和上限">context window</a> 跟 system prompt、由 main agent 透過 handoff 機制調度</strong>」。代表設計：Claude Code 的 Task agent、OpenAI Agents SDK 的 handoff、Anthropic multi-agent research。是「context budget 不夠 + 任務跨多個 specialty」場景的工程選擇。</p>
<h2 id="概念位置">概念位置</h2>
<p>Single agent vs subagent 架構的對比：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">Single agent（無 subagent）：
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  Main agent context：
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    [system prompt + tool schema + 跨所有 specialty 的 history + 所有 file content]
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    ↓ 容易爆 context、specialty 互相干擾
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Subagent 架構：
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  Main agent context（路由 + 高階決策）：
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    [main system prompt + handoff tool spec + 高階任務歷史]
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">       ↓ 路由到 subagent
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">  Subagent A context（如「跑測試」專家）：
</span></span><span class="line"><span class="ln">12</span><span class="cl">    [test-runner system prompt + 測試 tool + 測試相關 file]
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl">  Subagent B context（如「寫 docs」專家）：
</span></span><span class="line"><span class="ln">15</span><span class="cl">    [docs system prompt + 寫 docs tool + 相關 docs 檔案]</span></span></code></pre></div><p>主要好處：</p>
<ol>
<li><strong>Context budget 隔離</strong>：每個 subagent 只看自己 specialty 相關 context、不被別的 specialty 污染</li>
<li><strong>System prompt 專門化</strong>：寫 docs 的 system prompt 跟跑測試的 system prompt 不同、各自最佳化</li>
<li><strong>Specialty 路由</strong>：main agent 只決定「這個任務該交給哪個 subagent」、不直接做 specialty 工作</li>
</ol>
<p>主要挑戰：</p>
<ol>
<li><strong>Handoff 設計</strong>：main agent 要怎麼選 subagent、怎麼傳 context、怎麼接 result</li>
<li><strong>跨 subagent 共享狀態</strong>：codebase 知識、history、要避免重複 work</li>
<li><strong>失敗模式</strong>：subagent 之間互相 deadlock、main agent 失去 high-level view、subagent 邊界劃錯</li>
</ol>
<h2 id="設計責任">設計責任</h2>
<p>讀 multi-agent / subagent paper / coding agent docs 看到「subagent」「handoff」「Task tool」「specialist agent」就是這 framing。寫 code 場景的判讀：</p>
<ol>
<li><strong>何時用 subagent</strong>：單一 agent context 不夠用、specialty 邊界清楚（如 search / coding / testing / documentation）、main agent 的 system prompt 已太長</li>
<li><strong>何時不用</strong>：任務簡單、specialty 邊界模糊（強行拆會增加 handoff overhead）、本地小模型（handoff 機制對小模型不穩）</li>
<li><strong>跟 <a href="/blog/llm/knowledge-cards/agent-loop/" data-link-title="Agent Loop" data-link-desc="LLM agent 自我循環的工作流：LLM 規劃下一步、執行 tool、看結果、再規劃下一步、直到任務完成或停止條件觸發">agent loop</a> 的關係</strong>：每個 subagent 內部仍是 agent loop（perceive / reason / act / observe / terminate）、只是 loop 範圍縮窄</li>
<li><strong>跟 <a href="/blog/llm/knowledge-cards/scaffold-vs-harness/" data-link-title="Scaffold vs Harness" data-link-desc="Coding agent 的兩個工程層次：scaffold 是建構時靜態結構、harness 是 runtime 的 tool dispatch &#43; context management &#43; safety">scaffold vs harness</a> 的關係</strong>：subagent 註冊在 scaffold（建構時）、handoff 在 harness（runtime）執行</li>
</ol>
]]></content:encoded></item></channel></rss>