<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multi-Agent | 有志者事竟成</title><link>https://www.liwenshen.com/tags/multi-agent/</link><atom:link href="https://www.liwenshen.com/tags/multi-agent/index.xml" rel="self" type="application/rss+xml"/><description>Multi-Agent</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>zh</language><lastBuildDate>Sat, 04 Jul 2026 16:00:00 +0800</lastBuildDate><image><url>https://www.liwenshen.com/media/icon_hu_dd5d76fef920c49e.png</url><title>Multi-Agent</title><link>https://www.liwenshen.com/tags/multi-agent/</link></image><item><title>多 Agent 协作：委托、调度与看板</title><link>https://www.liwenshen.com/note/hermes-agent-engineering/12-multi-agent/</link><pubDate>Sat, 04 Jul 2026 16:00:00 +0800</pubDate><guid>https://www.liwenshen.com/note/hermes-agent-engineering/12-multi-agent/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;系列：通过 Hermes 探秘 Agent 工程 · 补遗篇&lt;/strong&gt;
关联篇：&lt;a href="https://www.liwenshen.com/note/hermes-agent-engineering/07-security/"&gt;安全防护体系：当 Agent 拥有终端时如何防止「做出格」的事&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="问题一个-agent-干不了所有事"&gt;问题：一个 Agent 干不了所有事&lt;/h2&gt;
&lt;p&gt;前 10 篇文章讲的都是&amp;quot;单个 Agent 如何运行得很好&amp;quot;。但真实场景中，单 Agent 有三个根本性瓶颈：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;上下文爆炸&lt;/strong&gt;：一个大型任务（比如审查 100 个文件）的中间工具结果会撑爆上下文窗口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时间跨度&lt;/strong&gt;：有些任务需要等待（部署后验证、定时检查），一个持续运行的 Agent 不现实&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;并行度&lt;/strong&gt;：多个独立子任务串行执行太慢，而一个 Agent 同一时间只能做一件事&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hermes 的解决方案是&lt;strong&gt;多 Agent 协作&lt;/strong&gt;——不是让一个 Agent 变强，而是让多个 Agent 协同工作。它有三个支柱：&lt;code&gt;delegate_task&lt;/code&gt;（子代理委托）、&lt;code&gt;cron&lt;/code&gt;（定时任务）、&lt;code&gt;kanban&lt;/code&gt;（看板调度）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="支柱一delegate_task-子代理委托"&gt;支柱一：delegate_task 子代理委托&lt;/h2&gt;
&lt;h3 id="核心思想"&gt;核心思想&lt;/h3&gt;
&lt;p&gt;当你面对一个大项目（比如&amp;quot;重构这个 10 个文件的模块&amp;quot;），主 Agent 不亲自做，而是把任务分解成 3 个独立的子任务：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Main Agent
├─ delegate_task(&amp;#34;审查 file1-3 的接口设计&amp;#34;, role=&amp;#34;leaf&amp;#34;)
├─ delegate_task(&amp;#34;审查 file4-6 的接口设计&amp;#34;, role=&amp;#34;leaf&amp;#34;)
└── delegate_task(&amp;#34;审查 file7-10 的接口设计&amp;#34;, role=&amp;#34;leaf&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;三个子代理并行运行，各自用独立的上下文窗口。完成后，主 Agent 收集三份总结报告，整合成最终结果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键收益&lt;/strong&gt;：主 Agent 的上下文窗口里只看到&amp;quot;委托了三件事&amp;quot;和&amp;quot;收到三份总结&amp;quot;，看不到中间几百次工具调用的细节。&lt;/p&gt;
&lt;h3 id="子代理隔离"&gt;子代理隔离&lt;/h3&gt;
&lt;p&gt;每个子代理获得：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全新的空白对话&lt;/strong&gt;——不继承父 Agent 的历史（防止上下文泄漏）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自己的 task_id&lt;/strong&gt;——独立的终端会话、文件操作缓存&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;受限的工具集&lt;/strong&gt;——禁止递归委托、禁止用户交互、禁止修改共享记忆、禁止写文件（&lt;code&gt;execute_code&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;受限工具集的工程实现是白名单+&amp;ldquo;减法&amp;rdquo;：从父 Agent 已开启的工具里去掉 &lt;code&gt;DELEGATE_BLOCKED_TOOLS&lt;/code&gt; 列表中的几个（&lt;code&gt;delegate_task&lt;/code&gt;、&lt;code&gt;clarify&lt;/code&gt;、&lt;code&gt;memory&lt;/code&gt;、&lt;code&gt;execute_code&lt;/code&gt;、&lt;code&gt;cronjob&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id="子代理类型"&gt;子代理类型&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;leaf（默认）&lt;/strong&gt;：专注工人——拿到任务，自己完成，返回总结。不能再 spawn 子代理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;orchestrator&lt;/strong&gt;：协调者——拿到任务后可以自己分解成更小的子任务，委托给孙代理。但有深度限制（&lt;code&gt;max_spawn_depth&lt;/code&gt;，默认 1），防止树形嵌套失控。&lt;/p&gt;
&lt;h3 id="安全默认"&gt;安全默认&lt;/h3&gt;
&lt;p&gt;子 Agent 在后台线程里跑，没有 TUI 交互。当执行到危险命令时，默认行为是&lt;strong&gt;自动拒绝&lt;/strong&gt;——避免&amp;quot;子代理 hung 在 input() 上等待永远不会出现的确认&amp;quot;的 deadlock。&lt;/p&gt;
&lt;p&gt;配置 &lt;code&gt;delegation.subagent_auto_approve: true&lt;/code&gt; 可以切换到自动批准（opt-in）但会打印审计日志。&lt;/p&gt;
&lt;h3 id="超时与心跳"&gt;超时与心跳&lt;/h3&gt;
&lt;p&gt;子代理默认&lt;strong&gt;没有硬性超时&lt;/strong&gt;——合理的重度任务可能运行很久。替代方案是心跳监控：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每 30 秒发送一次心跳&lt;/li&gt;
&lt;li&gt;如果 15 个周期（450 秒）没有新的 API 调用 → 判定为卡住&lt;/li&gt;
&lt;li&gt;如果 40 个周期（1200 秒）还在执行同一个工具 → 也判定为卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比固定超时更灵活：快速失败的任务不会被误杀，真正的僵死任务也能被发现。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="支柱二cron-定时任务"&gt;支柱二：Cron 定时任务&lt;/h2&gt;
&lt;h3 id="核心思想-1"&gt;核心思想&lt;/h3&gt;
&lt;p&gt;有些任务不是即时响应的——&amp;ldquo;每天凌晨 3 点检查服务器状态&amp;rdquo;、&amp;ldquo;每周五下午生成本周总结&amp;rdquo;。Cron 是 Gateway 级别的定时任务系统。&lt;/p&gt;
&lt;h3 id="两种执行模式"&gt;两种执行模式&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;no_agent&lt;/code&gt; 模式&lt;/strong&gt;：不调用 LLM。直接执行 &lt;code&gt;script&lt;/code&gt; 字段的 shell 脚本，stdout 作为输出。适合纯运维任务（日志清理、备份、健康检查）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;agent&lt;/code&gt; 模式&lt;/strong&gt;：用 LLM 执行自然语言 prompt。每一轮是独立的 Agent 运行，有独立的上下文。&lt;/p&gt;
&lt;p&gt;Cron 任务通过 &lt;code&gt;delivery&lt;/code&gt; 字段路由输出到任意渠道（Telegram、Discord、飞书……），实现了&amp;quot;任务执行&amp;quot;和&amp;quot;结果消费&amp;quot;的解耦。&lt;/p&gt;
&lt;h3 id="delivery-机制"&gt;Delivery 机制&lt;/h3&gt;
&lt;p&gt;Cron Job 的结果通过 &lt;code&gt;gateway/delivery.py&lt;/code&gt; 路由到目标平台。关键设计：&lt;strong&gt;cron 输出不在 Gateway session 历史里&lt;/strong&gt;——避免消息交替违规，也避免 cron 日志污染真正的对话。&lt;/p&gt;
&lt;h3 id="cron-审批的特殊规则"&gt;Cron 审批的特殊规则&lt;/h3&gt;
&lt;p&gt;Cron Job 没有人在场确认。Cron 的审批模式由 &lt;code&gt;approvals.cron_mode&lt;/code&gt; 独立控制，默认 &lt;code&gt;deny&lt;/code&gt;。这是一个 fail-closed 的设计——无人值守时，宁可任务失败，也不能执行危险操作。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="支柱三kanban-看板调度"&gt;支柱三：Kanban 看板调度&lt;/h2&gt;
&lt;h3 id="核心思想-2"&gt;核心思想&lt;/h3&gt;
&lt;p&gt;delegate_task 是&amp;quot;父 Agent 主动分解&amp;quot;，Kanban 是&amp;quot;中央调度器自动分配&amp;quot;——一个多 Agent 的工作队列系统。&lt;/p&gt;
&lt;h3 id="架构"&gt;架构&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Orchestrator（编排者）
│
├─ /kanban create &amp;#34;实现用户认证模块&amp;#34;
├─ /kanban assign task-001 worker-1
├─ /kanban list
│
▼
┌──────────────────────────────┐
│ SQLite 数据库 │
│ tasks / events / runs / subs │
└──────────┬───────────────────┘
│
┌─────┴─────┐
▼ ▼
Dispatcher Notifier
(每 60s) (每 5s)
│ │
▼ ▼
spawn worker Telegram /
Discord / Slack 通知
│
▼
Worker (hermes chat -q)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="任务生命周期"&gt;任务生命周期&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;unassigned → assigned → in_progress → completed
→ blocked（遇到障碍，等待人工介入）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;每个状态变迁都记录在 SQLite 里，实现&lt;strong&gt;持久化 + 可审计&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="worker-完整启动流程"&gt;Worker 完整启动流程&lt;/h3&gt;
&lt;p&gt;调度器（每 60s）→ 争抢文件锁（.flock Singleton 锁）→ 7 个步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;回收僵尸&lt;/strong&gt;：清理上次 spawn 但已死掉的 worker PID&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;释放过期 claim&lt;/strong&gt;：worker 超过 TTL 仍持有任务锁 → 强制释放&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检测心跳超时&lt;/strong&gt;：450 秒没有新的 API 调用 → 判定为卡住&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检测进程死亡&lt;/strong&gt;：worker 的 PID 已不存在（被 OOM / Ctrl+C）→ crashed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;强制 max runtime&lt;/strong&gt;：任务有最大运行时长限制，超时强制结束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重新计算就绪&lt;/strong&gt;：检查依赖——前置任务全部完成 → 从 &lt;code&gt;todo&lt;/code&gt; 晋升到 &lt;code&gt;ready&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分配 worker&lt;/strong&gt;：按优先级遍历 ready 任务 → 原子性 claim + spawn&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每次 spawn 调用 &lt;code&gt;subprocess.Popen(hermes -p &amp;lt;profile&amp;gt; chat -q)&lt;/code&gt;——一个&lt;strong&gt;完整的 Hermes 子进程&lt;/strong&gt;。Worker 被 spawn 后和调度器&lt;strong&gt;不再通信&lt;/strong&gt;，只通过数据库状态判断完成。&lt;/p&gt;
&lt;h3 id="worker-隔离"&gt;Worker 隔离&lt;/h3&gt;
&lt;p&gt;Kanban worker 不是普通 Agent——它们被 &lt;code&gt;HERMES_KANBAN_TASK&lt;/code&gt; 环境变量打上&amp;quot;单一任务一辈子&amp;quot;的印记：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;工具集受限&lt;/strong&gt;——只有 &lt;code&gt;kanban&lt;/code&gt; 工具集 + 核心工具。不能操作其他任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;session 固定&lt;/strong&gt;——一个 worker 对应一个 task_id&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作目录隔离&lt;/strong&gt;——每个 worker 的终端 CWD 指向任务的专属目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务所有权保护&lt;/strong&gt;——&lt;code&gt;HERMES_KANBAN_TASK&lt;/code&gt; 与参数里的 task_id 不匹配时，调用被拒绝（纵深防御：prompt injection 不能影响其他任务）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="心跳与自动回收"&gt;心跳与自动回收&lt;/h3&gt;
&lt;p&gt;调度器的心跳检测：如果 worker 卡住没有心跳 → 自动把任务标记为&amp;quot;orphan&amp;quot;（可被重新分配的孤儿）。kanban 任务可以被另一个 worker 接手，这是和 delegate_task 的最大区别。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="核心对比delegate_task-vs-kanban"&gt;核心对比：delegate_task vs kanban&lt;/h2&gt;
&lt;h3 id="类比"&gt;类比&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;delegate_task = 函数调用&lt;/strong&gt;：传参数、等返回值、用完即弃&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kanban = 消息队列&lt;/strong&gt;：发到队列、消费者异步处理、结果存在队列里随时可查&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="什么时候用哪个"&gt;什么时候用哪个？&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户在线 + 任务小 + 结果要立刻汇总？
→ delegate_task
用户离线 + 任务多 + 失败要重试 + 状态要追踪 + 人工要介入？
→ kanban
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="核心区别"&gt;核心区别&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;delegate_task&lt;/th&gt;
&lt;th&gt;kanban&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;同步/异步&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同步——父 Agent 阻塞等子代理完成&lt;/td&gt;
&lt;td&gt;异步——调度器周期扫描，spawn 后不管&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;临时/持久&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;临时——任务完成，子 Agent 销毁&lt;/td&gt;
&lt;td&gt;持久——状态在 SQLite，随时可查&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;调度者&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;父 Agent 自己判断（声明式）&lt;/td&gt;
&lt;td&gt;中央调度器自动扫描&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;失败恢复&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;父 Agent 自己重试&lt;/td&gt;
&lt;td&gt;调度器自动回收/重试/重新分配&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;审计跟踪&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;完整——每次运行/失败/event 都有日志&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;人工介入&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;不支持中断/暂停&lt;/td&gt;
&lt;td&gt;支持 blocked 状态，人工 /kanban unblock&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="六大-kanban-使用场景"&gt;六大 kanban 使用场景&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;① 长任务需要持久化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;这个项目有 8 个模块要重构。&amp;ldquo;用户关了终端，子 Agent 完成了也找不到父 Agent 汇报。kanban 状态存在数据库里，用户下次上线时通过通知收到结果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;② 任务需要人工中间介入&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;review 这个 PR → 如果有问题 block → 等待开发者修复 → 修复后重新 review&amp;rdquo;。&lt;code&gt;delegate_task&lt;/code&gt; 无法&amp;quot;暂停，等明天人工修复后再继续&amp;rdquo;。kanban 支持 blocked 状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;③ 优先级队列 + 路由&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;5 个 bug 修复（高优先级）、3 个 feature 开发（中优先级）、不同 assignee 路由给不同 profile。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;④ 大量并行超出 delegate_task 并发限制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;默认 &lt;code&gt;delegate_task&lt;/code&gt; 最多同时跑 3 个子代理。大项目可能有 20+ 个独立子任务。kanban 的 &lt;code&gt;max_spawn&lt;/code&gt; / &lt;code&gt;max_in_progress&lt;/code&gt; 灵活控制全局并发度，每种 profile 也有独立并发限制（&lt;code&gt;max_in_progress_per_profile&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⑤ 审计跟踪&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;这个任务是谁做的？做了多久？失败了几次？为什么被 block？&amp;quot;——kanban 数据库里每次运行都有 event 日志。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⑥ 自动分解（optional）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用户在看板里创建 triage 任务&amp;quot;优化项目性能&amp;rdquo;，辅助 LLM 可以自动将其分解为&amp;quot;分析 CPU 瓶颈&amp;rdquo;、&amp;ldquo;分析内存使用&amp;rdquo;、&amp;ldquo;优化数据库查询&amp;quot;等子任务（&lt;code&gt;auto_decompose&lt;/code&gt; 功能）。&lt;/p&gt;
&lt;h3 id="通知机制"&gt;通知机制&lt;/h3&gt;
&lt;p&gt;Notifier Watcher 每 5 秒扫描数据库里的事件表。当发现新事件（completed / blocked / crashed），沿着订阅表找到&amp;quot;谁要被通知到这个 chat&amp;rdquo; → 通过对应平台适配器发消息。投递后推进 cursor 去重——不会出现重复通知。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三支柱对比"&gt;三支柱对比&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;delegate_task&lt;/th&gt;
&lt;th&gt;cron&lt;/th&gt;
&lt;th&gt;kanban&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;触发方式&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LLM 判断&lt;/td&gt;
&lt;td&gt;时间 / 人工&lt;/td&gt;
&lt;td&gt;看板调度器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;执行者&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;子 Agent 实例&lt;/td&gt;
&lt;td&gt;Agent / Script&lt;/td&gt;
&lt;td&gt;Worker Agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;上下文&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;全新独立 session&lt;/td&gt;
&lt;td&gt;全新 session&lt;/td&gt;
&lt;td&gt;固定 task 专属&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;生命周期&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;任务完成即销毁&lt;/td&gt;
&lt;td&gt;持久化&lt;/td&gt;
&lt;td&gt;持久化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;交互方式&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;同步（父等待子完）&lt;/td&gt;
&lt;td&gt;无人值守&lt;/td&gt;
&lt;td&gt;无人值守&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;失败恢复&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;无（父 Agent 自己重试）&lt;/td&gt;
&lt;td&gt;重试策略&lt;/td&gt;
&lt;td&gt;自动重新分配&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="工程启示"&gt;工程启示&lt;/h2&gt;
&lt;h3 id="1-并发不只是性能是功能"&gt;1. 并发不只是性能，是功能&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;execute_code&lt;/code&gt; 通过 RPC 让模型可以使用工具，主要价值不在性能——它让 LLM 可以做&amp;quot;有副作用的事&amp;quot;而不污染上下文。并发执行之于 Agent 不只是快，是让单 Agent 变成多 Agent 组织的前提。&lt;/p&gt;
&lt;h3 id="2-隔离是信任的基础"&gt;2. 隔离是信任的基础&lt;/h3&gt;
&lt;p&gt;子代理不继承父 Agent 历史、kanban worker 不能操作其他任务——这些隔离不是&amp;quot;不信任模型&amp;quot;，而是给 prompt 攻击设置纵深。&lt;/p&gt;
&lt;h3 id="3-声明式编排"&gt;3. 声明式编排&lt;/h3&gt;
&lt;p&gt;Hermes 没有&amp;quot;多 Agent 协调框架&amp;quot;的硬编码流程。delegate_task / cron / kanban 都是工具，由 LLM 自己决定什么时候用。场景变了，不需要改框架，换一个 prompt 就够了。&lt;/p&gt;
&lt;h3 id="4-人类退出系统继续运转"&gt;4. 人类退出，系统继续运转&lt;/h3&gt;
&lt;p&gt;kanban 和 cron 对&amp;quot;无人值守&amp;quot;的特殊处理提醒我们：设计 Agent 系统时，不是所有人都在看屏幕——系统必须有能力在人类不在场时安全运行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="本系列的完结"&gt;本系列的完结&lt;/h2&gt;
&lt;p&gt;补写了这最后一篇后，系列的完整地图如下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;主题&lt;/th&gt;
&lt;th&gt;核心工程概念&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Agent Loop&lt;/td&gt;
&lt;td&gt;主循环、迭代预算、中断&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;工具系统&lt;/td&gt;
&lt;td&gt;自注册、toolset、并发执行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;System Prompt&lt;/td&gt;
&lt;td&gt;Stable/Semi-Stable/Volatile 三层缓存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;上下文压缩&lt;/td&gt;
&lt;td&gt;边界对齐、结构化摘要&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;记忆系统&lt;/td&gt;
&lt;td&gt;内置记忆、外部 Provider 语义查询&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;工具调度&lt;/td&gt;
&lt;td&gt;registry 单例、搜索桥延迟加载&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;安全防护&lt;/td&gt;
&lt;td&gt;工具守卫、审批、结果清洗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Gateway 网关&lt;/td&gt;
&lt;td&gt;Session Key、双层守卫&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Provider 抽象层&lt;/td&gt;
&lt;td&gt;Profile 声明式、Fallback 链&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;沙箱与代码执行&lt;/td&gt;
&lt;td&gt;RPC 存根、环境变量清洗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;技能系统&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;程序化记忆、渐进式披露&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;多 Agent 协作&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;委托分解、看板的声明式编排&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;从循环到调度、从安全到扩展、从记忆到经验——这就是 Hermes 的 Agent 工程全景。&lt;/p&gt;</description></item></channel></rss>