当软件开发的范式从“确定性结构”迈向“概率性智能”,工程师们急需一套新的、可复用的解决方案蓝图。正如GoF(Gang of Four)在1994年提出的23种经典设计模式塑造了现代软件工程,今天,我们需要一套属于 AI Agent 时代的设计模式。
黄佳在《Agent设计模式:图解可复用智能体架构》一书中系统性地梳理了21个核心Agent设计模式,它们围绕着感知、记忆、推理、行动、反思、协作这六大主轴展开。这些理论并非空中楼阁,在OpenClaw——一个本地优先的个人AI助手平台——的架构设计中,我们可以清晰地看到它们的工程化实证。
本文将结合书中的六大模式类别,以OpenClaw为具体案例,进行一次从理论到实践的深度探讨。

1. 五大设计原则:Agent工程的根基
在深入具体模式之前,书中提出了贯穿始终的五条核心设计原则,它们同样是理解OpenClaw架构决策的钥匙:
| 设计原则 |
核心含义 |
OpenClaw中的体现 |
| 目标优先 |
从“要达成什么目标”出发,而非先考虑“能调用什么工具” |
Pi Agent的编排入口 agent-command.ts 将一次运行视为对调用方无状态的操作,目标驱动整个执行流 |
| 上下文为王 |
真正决定Agent行为的是上下文工程与记忆治理 |
系统提示词模块化组装(约700行),上下文压缩系统(compaction.ts)保证长会话质量 |
| 显式反馈 |
反馈与反思内建于系统设计,而非事后补救 |
工具循环检测四种检测器并行运行,达到阈值时主动注入警告 |
| 渐进自治 |
在安全护栏内逐步提升自治能力,保留人类介入权 |
子Agent编排设深度限制(默认3层),沙箱策略逐级继承 |
| 对齐与护栏 |
伦理、安全、合规深度嵌入结构与协议 |
SSRF防护、文件名消毒、PII脱敏、Owner ID哈希防注入 |
2. 感知模式:Agent如何“看”世界
感知是Agent理解世界的起点。它解决了Agent如何接收并处理信息的问题。
2.1 注意力聚焦模式
书中定义:构建高效认知漏斗,用最低的Token成本换取最高的上下文质量。
OpenClaw实证:OpenClaw的系统提示词组装(system-prompt.ts)是注意力聚焦的典范。通过 PromptMode 三级控制(full/minimal/none),不同场景下的Agent只接收必要的上下文节段:
- 主Agent获得完整的技能、记忆、消息、工具描述。
- 子Agent仅获得Tooling、Workspace、Runtime三个核心节段。
- 裸会话模式只注入身份行。
这种分层设计确保了每个Token都用在刀刃上,有效避免了“全量上下文灌注”导致的注意力稀释。
2.2 多模态融合模式
书中定义:构建统一语义场,让Agent能整合文字、图像等多类型信息。
OpenClaw实证:OpenClaw的媒体管道(src/media/)实现了一套防御性的多阶段处理系统:
抓取与验证 → 格式归一化(HEIC→JPEG)→ MIME检测 → 持久化 → Agent Payload引用
视觉模型接收Base64编码的图片,文档处理工具接收提取后的文本。通过将异构媒体统一转换为Agent可处理的格式,OpenClaw在工程层面实现了多模态融合。
2.3 主动感知模式
书中定义:将Agent从“被动的答题者”转变为“主动的调查员”。
OpenClaw实证:OpenClaw的 web_search 工具和 memory_search 工具赋予了Agent主动探索的能力。当面对不确定的问题时,Agent不会基于有限上下文猜测,而是主动发起网络搜索或查阅内部记忆,然后综合信息做出回应——这正是主动感知的行为体现。
3. 记忆模式:打破上下文窗口的边界
记忆模式的核心是突破LLM上下文窗口的物理限制,让Agent具备持续感知历史的能力。
3.1 分层记忆模式
书中定义:通过分层存储和动态换页,突破上下文窗口限制,实现理论上无限的记忆容量。
OpenClaw实证:OpenClaw的上下文窗口管理(compaction.ts)是该模式的精确工程实现。当会话Transcript接近模型上下文限制时:
- 通过Token估算检测阈值(
contextWindowTokens × 0.4 × 1.2)。
- 按Token份额将历史切分为N块。
- 调用LLM对每块生成摘要并合并。
- 用
[系统摘要 + 近期消息] 替换旧历史。
关键设计是标识符保留策略(identifierPolicy: "strict"):压缩时显式指示LLM完整保留所有UUID、哈希、Token、URL、文件名——这对Agentic工作流中工具调用ID的传递至关重要。同时,压缩前调用 stripToolResultDetails() 剥离敏感信息,防止凭证被重新嵌入压缩历史。
这套机制实现了“近期消息保持完整、远期历史保留语义”的分层记忆效果。
3.2 RAG模式
书中定义:检索与生成的结合,让Agent灵活调用外部知识。
OpenClaw实证:OpenClaw通过 memory_search / memory_get / memory_write 三个工具以及可插拔的Memory Plugin(如LanceDB),实现了经典的RAG架构。系统提示词中条件性添加记忆节段(buildMemorySection()),仅在记忆工具可用时才注入引用行为配置——这种按需激活的设计避免了不必要的Token消耗。
3.3 情节记忆模式
书中定义:构建闭环系统,捕获带有时空上下文的交互轨迹。
OpenClaw实证:OpenClaw的会话系统将每次Agent运行的完整Transcript持久化到 ~/.openclaw/sessions/,包含时间戳、渠道来源、工具调用记录和最终回复。路由键 <agentId>:<channelId>:<accountId> 唯一标识每段对话,使Agent能够在恢复会话时回溯完整的交互历史。
4. 推理模式:Agent如何“想”问题
推理模式关注Agent如何将复杂问题分解为可处理的步骤,并在执行中保持全局视野。
4.1 思维链模式
书中定义:借助显式的过程分解,将计算压力分散到更长的推理时序中,提升准确性和可解释性。
OpenClaw实证:OpenClaw的流式事件处理器(pi-embedded-subscribe.ts)内置了对推理模式的原生支持。通过检测 <think> / <thinking> / <final> XML标签,系统能区分Agent的推理过程和最终答案:
"off" 模式:推理块完全剥离,用户只看到结论。
"on" 模式:推理作为独立消息在最终答案前发送。
"stream" 模式:推理通过回调实时流式传输。
这三种模式让开发者可以根据场景灵活控制推理过程的可见性。
4.2 规划-执行模式
书中定义:通过自顶向下的任务分解和有向无环图调度,实现对长程任务的全局掌控与并行优化。
OpenClaw实证:Pi Agent的五层调用栈本身就是规划-执行模式的结构化体现:
agent-command.ts (编排入口)
→ resolveSession() (规划:会话解析)
→ resolveEffectiveModelFallbacks() (规划:模型候选)
→ 构建系统提示词 (规划:上下文准备)
→ runWithModelFallback() → runEmbeddedPiAgent() (执行)
→ updateSessionStoreAfterAgentRun() (后处理)
更进一步,子Agent编排(subagent-spawn.ts)支持将复杂任务分解为子任务并行执行,每个子Agent拥有独立的会话键和运行ID,完成后通过 subagent-announce.ts 将结果注入父Agent的推理上下文。
5. 行动模式:从思考到执行
行动模式将Agent的推理结果转化为对外部世界的真实影响。
5.1 ReAct模式
书中定义:构建“思考-行动-观察”的动态微循环,有效解决仅凭内部知识难以应对的复杂问题。
OpenClaw实证:Pi Agent的核心推理循环天然遵循ReAct模式。Agent在每个回合中:
- Reasoning:基于上下文和历史推理下一步行动。
- Acting:调用工具(
exec、read、write、web_search 等)。
- Observing:接收工具返回结果,将观察纳入下一轮推理。
工具调用的四阶段流水线(来源→策略过滤→Schema规范化→Hook包装)确保每次行动都在安全且规范的框架内执行。
5.2 工具编排模式
书中定义:通过构建标准化接口与智能化选择机制,让Agent灵活调度海量外部能力。
OpenClaw实证:OpenClaw的工具链架构(pi-tools.ts)是该模式的教科书级实现。工具注册经过四个阶段:
- 来源收集:
codingTools + createOpenClawTools + 渠道专属工具。
- 策略过滤:白名单/黑名单、Owner-only策略、消息/模型提供商策略。
- Schema规范化:针对不同模型提供商(Claude、Gemini、xAI)做兼容性适配。
- Hook包装:AbortSignal中止支持、beforeToolCall钩子。
系统注册了涵盖文件操作、Shell执行、记忆、消息、定时任务、搜索、图像生成等20+核心工具,每个工具都有明确的职责边界和安全约束。
5.3 自适应策略模式
书中定义:通过探索与利用之间的动态平衡,实现最优策略选择。
OpenClaw实证:OpenClaw的多Provider故障转移机制(model-fallback.ts)是该模式的工程化表达:
- 构建
ModelCandidate 候选列表(Primary + Fallbacks + Allowlist过滤)。
- 逐一尝试候选,检查Auth Profile冷却期。
- 成功则返回结果,失败则标记冷却并记录错误,尝试下一候选。
- Auth Profile系统追踪每个凭证的使用统计、失败次数和冷却时间。
resolveAuthProfileOrder() 自动选择未触达限流的凭证。
这套机制使系统在面对API限流、服务不可用等不确定性时,能自动在多个提供商和凭证之间寻找最优路径。
6. 反思模式:从错误中学习
反思模式赋予Agent自我评估和持续改进的能力。
6.1 自我修正模式
书中定义:借助模型自身的批判能力或外部工具的验证能力,自动识别并纠正错误。
OpenClaw实证:OpenClaw的工具循环检测(tool-loop-detection.ts)是自我修正模式在系统层面的防御性实现。维护最近30次工具调用的滚动窗口,四种检测器并行运行:
| 检测器 |
检测内容 |
generic_repeat |
相同工具+参数重复N次 |
known_poll_no_progress |
“检查”类工具循环且无状态变化 |
ping_pong |
两个工具交替出现(A→B→A→B…) |
global_circuit_breaker |
总调用次数超过30 |
阈值设计为三级递进:warning(10) → critical(20) → circuit_breaker(30)。达到critical时向Agent注入循环警告消息,触发熔断时终止执行。这种机制让系统具备了“意识到自己犯错”的能力。
6.2 反思记忆模式
书中定义:通过语言强化学习,将失败经验转化为语义化的长期记忆。
OpenClaw实证:OpenClaw的 memory_write 工具允许Agent将重要的经验和教训写入持久化记忆。当Agent在某个任务中遇到困难并最终解决后,它可以主动将解决方案记录到记忆系统中,供未来类似场景检索使用。这形成了一个从“执行→反思→记忆→再执行”的闭环。
7. 协作模式:多Agent的交响
协作模式将单体Agent扩展为分布式的多Agent系统。
7.1 委托模式
书中定义:通过“分而治之”,有效缓解单体Agent上下文窗口限制和注意力分散导致的能力瓶颈。
OpenClaw实证:OpenClaw的子Agent编排是该模式最完整的工程实现。其推送式设计与传统轮询式有本质区别:
父Agent调用 subagents(action=spawn, task=..., mode="run"|"session")
├─ 校验深度限制(默认3层)
├─ 分配子会话sessionKey和runId
├─ 异步非阻塞调用Gateway
└─ 子Agent完成后,结果自动注入父Agent的下一次推理上下文
关键设计模式决策:
- 推送而非轮询:子运行结束后主动通告父Agent,避免轮询浪费。
- 深度限制:防止无限递归派生。
- 沙箱继承:子Agent可继承或要求父Agent的沙箱配置。
- 完成通告包含丰富元数据:最终回复、工具摘要、结果状态、运行时长。
7.2 路由模式
书中定义:以“星形网络”为核心,构建去中心化的生态,优化任务流转效率。
OpenClaw实证:OpenClaw的消息路由系统(src/routing/)实现了精确的七级优先级路由链:
Peer级别 → Parent-Peer → Guild+成员角色 → Guild级别 → Team级别 → Account/Provider级别 → Channel默认 → 全局默认
Gateway作为中心枢纽,将来自数十个渠道(Telegram、Discord、Slack等)的消息,基于确定性的路由规则分发到对应的Agent + 会话对。这种无状态、基于规则的设计确保路由结果可预测、可重放。
8. 从模式到系统:OpenClaw的架构哲学
回顾OpenClaw的架构原则,我们可以看到各类Agent设计模式如何在系统设计层面融合为一个有机整体:
| 架构原则 |
对应的Agent设计模式 |
| 本地优先 |
对齐与护栏原则(数据主权) |
| 插件优先 |
工具编排模式(标准化接口) |
| 多Provider容错 |
自适应策略模式 |
| 全渠道统一路由 |
路由模式 |
| 压缩安全与标识符保留 |
分层记忆模式 |
| 防御性媒体处理 |
多模态融合模式 + 安全护栏 |
| 无状态规则路由 |
路由模式(确定性分发) |
| 分层可观测性 |
反思模式(系统级自我感知) |
| 渐进自治部署 |
渐进自治原则(灵活的隔离粒度) |
结语
正如黄佳在书的后记中以“熵的园丁”为喻——人工智能工程师的角色不是构建一台精密机器,而是培育一个能自组织、能演化的生态系统。21个设计模式不是僵化的模板,而是一套“可复用的治理语法”,帮助我们在概率性的大模型之上构建可靠的系统。
OpenClaw的工程实践表明:当这些模式被正确地落地——从分层记忆的Token精算,到委托模式的推送式编排,再到工具循环检测的自我修正——Agent系统不仅能“工作”,还能在复杂、多渠道、长运行的真实场景中稳健地工作。
这或许就是Agent设计模式最大的价值:将“概率性智能”重新锚定在“可预期、可治理、可演进”的工程轨道上。欢迎在云栈社区 继续探讨更多关于AI工程化与系统架构的实践。