<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>程默的博客 &#187; 子任务分配</title>
	<atom:link href="http://blog.chacuo.net/tag/%e5%ad%90%e4%bb%bb%e5%8a%a1%e5%88%86%e9%85%8d/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.chacuo.net</link>
	<description>web原理、web架构、web安全、web性能、服务器性能、服务器架构、服务器安全;你不能预知明天，但你可以利用今天。你不能样样顺利，但你可以事事尽力!</description>
	<lastBuildDate>Thu, 02 Jul 2026 15:03:03 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Hermes Agent 的 Subagent 委派技术：一个 AI 代理如何召唤一群 AI 帮你干活</title>
		<link>http://blog.chacuo.net/1537.html</link>
		<comments>http://blog.chacuo.net/1537.html#comments</comments>
		<pubDate>Thu, 02 Jul 2026 15:03:03 +0000</pubDate>
		<dc:creator>程默</dc:creator>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[ACP协议]]></category>
		<category><![CDATA[batch处理]]></category>
		<category><![CDATA[Hermes Agent]]></category>
		<category><![CDATA[motoagent]]></category>
		<category><![CDATA[motoagent.net]]></category>
		<category><![CDATA[Subagent]]></category>
		<category><![CDATA[代理通信]]></category>
		<category><![CDATA[任务委派]]></category>
		<category><![CDATA[多Agent协作]]></category>
		<category><![CDATA[子代理委派]]></category>
		<category><![CDATA[子任务分配]]></category>
		<category><![CDATA[并行任务]]></category>
		<category><![CDATA[智能体协作]]></category>

		<guid isPermaLink="false">http://blog.chacuo.net/?p=1537</guid>
		<description><![CDATA[一、为什么要有多 Subagent 架构 很多人使用 AI 代理时都会遇到一个困境：一个代理处理所有事情，就像 [...]]]></description>
				<content:encoded><![CDATA[<h2>一、为什么要有多 Subagent 架构</h2>
<p>很多人使用 AI 代理时都会遇到一个困境：一个代理处理所有事情，就像一个人包揽整个公司的活——效率必然低下。</p>
<p>举个例子，你让 AI 帮你做一个市场调研报告。一个 Agent 要做的工作包括：搜索行业数据、分析竞争对手、整理财务信息、生成图表、排版报告。这些工作类型完全不同，让一个 Agent 从头做到尾，不仅慢，而且容易出现上下文混乱。</p>
<p>这就是 Subagent（子代理）架构的价值。把一个复杂任务拆成多个子任务，每个子任务交给一个专门的 Subagent 去处理，最后把结果汇总。这就像项目经理把工作分给不同的团队成员。</p>
<p>在 <a href="https://motoagent.net/" target="_blank">MotoAgent</a> 中使用的 Hermes Agent，拥有目前最完善的 Subagent 委派系统——通过 ACP 协议和 delegate_task 工具，可以实现真正的多代理并行协作。</p>
<h2>二、Hermes Agent 的 Subagent 体系</h2>
<p>Hermes Agent 的 Subagent 体系建立在两个核心组件之上：</p>
<h3>1. ACP 协议（Agent Communication Protocol）</h3>
<p>ACP 是 Nous Research 设计的专有代理通信协议。它解决了以下问题：</p>
<ul>
<li><strong>代理发现</strong>：一个 Agent 怎么知道有哪些子代理可用</li>
<li><strong>能力注册</strong>：子代理如何向父代理报告自己的技能</li>
</ul>
<ul>
<li><strong>任务委派</strong>：父代理如何把任务拆分给子代理</li>
<li><strong>结果回收</strong>：子代理完成工作后如何返回结果</li>
</ul>
<p>ACP 相当于 AI 界的&quot;任务调度协议&quot;，让多个 Agent 之间可以像微服务一样协作。</p>
<h3>2. Delegate Task 工具</h3>
<p>Delegate Task 是 Hermes Agent 中实际执行子代理委派的工具。它提供了两种委派模式：</p>
<table style="border-collapse:collapse;border:1px solid #d0d0d0;width:100%;margin:10px 0;">
<tr>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">模式</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">说明</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">适用场景</th>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">单任务模式</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">一个 Subagent 执行一个目标</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">复杂单一任务</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">批处理模式</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">多个 Subagent 并行执行不同任务</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">需要多方向调研的场景</td>
</tr>
</table>
<h2>三、Subagent 的工作机制</h2>
<p>当一个 Hermes Agent 决定委派 Subagent 时，会发生什么？</p>
<h3>创建隔离环境</h3>
<p>每个 Subagent 会被分配一个完全独立的运行环境：</p>
<ul>
<li>独立的对话上下文（不知道其他 Subagent 在做什么）</li>
<li>独立的终端会话（各自的目录和进程）</li>
</ul>
<ul>
<li>独立的工具集（可以限制只能使用特定工具）</li>
</ul>
<p>这意味着 Subagent A 在写代码时，完全不会被 Subagent B 正在进行的数据分析打扰。它们之间互不干扰，就像各自在不同的电脑上工作。</p>
<h3>执行任务</h3>
<p>Subagent 收到任务后，会像主 Agent 一样完整地执行：</p>
<p>1. 分析任务目标</p>
<p>2. 规划执行步骤</p>
<p>3. 调用可用工具</p>
<p>4. 得出最终结果</p>
<h3>结果回收</h3>
<p>Subagent 完成工作后，不会把整个对话过程都返回——那会撑爆父 Agent 的上下文窗口。它只返回一个<strong>最终总结</strong>，包含最关键的信息。父 Agent 拿到所有 Subagent 的总结后，再进行汇总和后续处理。</p>
<p>这种&quot;只收结果不收过程&quot;的设计，保证了即使召唤十几个 Subagent，父 Agent 的上下文也不会被撑爆。</p>
<h3>层级限制</h3>
<p>为了防止无限循环委派，Hermes Agent 对 Subagent 的层级做了限制：</p>
<ul>
<li><strong>Leaf 模式</strong>（默认）：Subagent 不能再委派其他 Subagent</li>
<li><strong>Orchestrator 模式</strong>：Subagent 可以继续委派，但总层级受限制</li>
</ul>
<p>这种设计确保了委派链不会无限延伸，始终在可控范围内。</p>
<h2>四、并行批量处理：真正的效率提升</h2>
<p>Subagent 架构最大的价值在于<strong>并行处理</strong>。</p>
<p>在国内的一些分布式子代理基准测试（如 DB-Bench）中，多 Subagent 并行处理的效率优势非常显著：</p>
<table style="border-collapse:collapse;border:1px solid #d0d0d0;width:100%;margin:10px 0;">
<tr>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">对比维度</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">单 Agent 串行</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">多 Subagent 并行</th>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">处理 3 个独立调研任务</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">顺序执行，耗时 15 分钟</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">同时执行，耗时 5 分钟</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">上下文占用</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">全部信息挤在一个上下文</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">每个 Subagent 独立，最后只汇总</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">任务干扰</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">前面的工作影响后面的思路</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">完全隔离，互不干扰</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">代码复杂任务</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">一个 Agent 写全部代码</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">多个 Subagent 各自负责一个模块</td>
</tr>
</table>
<p>在实际使用中，我经常让三个 Subagent 同时工作：一个查资料、一个写代码、一个做测试。5 分钟后三个结果汇总到我这里，我直接拿最终结果——比串行快了 3 倍。</p>
<h2>五、实际应用场景</h2>
<h3>场景一：多方向市场调研</h3>
<p>主 Agent 收到指令：&quot;帮我调研 AI 编程工具的市场情况。&quot;</p>
<p>它会把任务拆成三个 Subagent：</p>
<ul>
<li>Subagent A：调研 GitHub Copilot 的最新动态</li>
<li>Subagent B：调研 Claude Code 的更新</li>
</ul>
<ul>
<li>Subagent C：调研国内 AI 编程助手的发展</li>
</ul>
<p>三个 Subagent 同时开工，5-10 分钟后主 Agent 收到三份调研摘要，整合成一份完整的报告。</p>
<h3>场景二：多模块代码开发</h3>
<p>&quot;帮我开发一个用户管理系统。&quot;</p>
<ul>
<li>Subagent A：开发用户注册和登录模块</li>
<li>Subagent B：开发权限管理模块</li>
</ul>
<ul>
<li>Subagent C：开发数据库操作层</li>
</ul>
<p>三个 Subagent 各自写代码，互不冲突，最后主 Agent 汇总代码并检查一致性。</p>
<h3>场景三：多数据源分析</h3>
<p>&quot;帮我对比分析这三个产品的优劣势。&quot;</p>
<ul>
<li>Subagent A：分析产品 A 的文档和用户评价</li>
<li>Subagent B：分析产品 B 的技术栈和社区活跃度</li>
</ul>
<ul>
<li>Subagent C：分析产品 C 的价格和功能列表</li>
</ul>
<p>并行分析完成后，主 Agent 整理出对比表格。</p>
<p>在 <a href="https://motoagent.net/" target="_blank">MotoAgent</a> 中，你可以创建多个 Agent，给每个 Agent 配置不同的后端（Hermes、OpenClaw、Codex、Claude），然后用 Hermes Agent 的 Subagent 能力统一调度它们。</p>
<h2>六、与传统多代理方案的区别</h2>
<p>Subagent 架构和市面上其他&quot;多代理&quot;方案有什么区别？</p>
<table style="border-collapse:collapse;border:1px solid #d0d0d0;width:100%;margin:10px 0;">
<tr>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">对比维度</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">Hermes Subagent</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">传统的多代理框架</th>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">启动方式</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">动态创建，完成任务即销毁</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">预先配置好所有代理</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">上下文隔离</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">完全隔离</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">共享或部分隔离</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">层级控制</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">自动管理，有限层级</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">手动管理</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">结果处理</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">自动汇总</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">需要人工处理</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">资源效率</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">按需分配，用完回收</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">常驻运行</td>
</tr>
</table>
<p>Hermes Agent 的 Subagent 是&quot;动态的&quot;——需要时才创建，用完就销毁。而传统的多代理框架通常是&quot;静态的&quot;——所有代理预先启动好，一直运行。前者更灵活、更节省资源。</p>
<h2>七、总结</h2>
<p>Hermes Agent 的 Subagent 委派技术，把&quot;一个 AI 帮你干活&quot;提升到了&quot;一群 AI 帮你干活&quot;的层面。</p>
<p>通过 ACP 协议 + delegate_task 工具，Hermes Agent 可以：</p>
<ul>
<li>将复杂任务动态拆分为子任务</li>
<li>并行分派给多个 Subagent 执行</li>
</ul>
<ul>
<li>每个 Subagent 在隔离环境中独立工作</li>
<li>回收结果后汇总输出</li>
</ul>
<p>这项技术的价值不仅在于&quot;快&quot;，更在于&quot;不乱&quot;——每个 Subagent 各司其职，互不干扰，最终输出质量远高于单个 Agent 从头做到尾。</p>
<p>去 <a href="https://motoagent.net/" target="_blank">MotoAgent</a> 下载桌面端，创建一个配置了 Hermes 后端的 Agent，试试对它说&quot;帮我并行做三件事&quot;——你会看到 Subagent 们同时开始工作的神奇场面。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chacuo.net/1537.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
