四大AI Agent架构拆解:7条可迁移设计原则

作者:技术拾光

时间:2026-06-07

浏览:655

四大生产级AIAgent架构设计惊人一致,围绕权限分级、记忆主动策展、技能自描述热加载、对话串行化、上下文自动压缩等7条原则构建。基于这些原则实现了一个6文件MiniHarness,融合三层权限、MEMORY.md容量管理、SKILL.md热加载及真实LLM对话,强调可迁移设计。

文章目录

拆完 OpenClaw、Hermes、Claude Code 和 Codex 这四个生产级 Agent 的源码和官方文档,最震撼的一点是:它们的架构设计惊人地一致。所有的精巧构造,都在围绕同一个核心问题——怎么让 AI Agent 既能干活,又不乱搞。

权限必须分级,而不是一刀切;记忆得主动策展,不能像日志一样被动堆砌;Skill 要自描述且可热加载,不能死锁在代码里;对话循环必须串行化,不能让两条消息同时跑抢跑道;上下文还得自动压缩,不能任由 Session 无限膨胀直到崩溃。

这 7 条设计原则,是从四大系统的血肉里提炼出来的。最终做了一套 6 文件的 Mini Harness,把串行化 Session、三层分级权限、MEMORY.md 记忆策展、SKILL.md 热加载,以及 SiliconFlow + GLM-5.1 的真实 LLM 对话都塞了进去。代码跑通的那一刻,才真正理解这些原则不是什么理论推导,全是血泪教训。

下面一个一个拆解,先看四大 Agent 的底细,再用代码告诉你这 7 条原则怎么落地。

四大Agent的身份证

先上一张总览图,一眼能看出各自的性格:

四大AI Agent架构拆解:7条可迁移设计原则

一句话总结:OpenClaw 稳如老狗、Hermes 越用越聪明、Claude Code 权限最精细、Codex 沙箱最硬核。

怎么理解?

  • OpenClaw是消息总线型的代表——Gateway 守门、Session 串行、文件化记忆,最通用也最稳妥,WhatsApp、Telegram、飞书、Slack 十几个通道都能跑。
  • Hermes是学习型尖子生——最大的亮点是自进化的 Skill(用完了自动创建,越用越聪明)和 nudge 驱动的双文件记忆,还有 70+ 工具的 Central Registry。
  • Claude Code是权限管控型的编程工具——三层分级权限是它最精细的安全设计:只读随便看、Shell 要你批准、写文件只记到 session 结束。
  • Codex是沙箱管控型的编程工具——Rust 写的,三阶段权限管线(规则匹配 → 安全评估 → 沙箱执行),macOS Seatbelt、Linux landlock、Windows sandbox 三平台自适应,最硬核的安全沙箱。

权限管线:谁管得最严

权限就是“Agent 能做什么、不能做什么”的规矩。四个 Agent 的规矩差别很大:

四大AI Agent架构拆解:7条可迁移设计原则

四个 Agent 的权限哲学完全不同:

Claude Code最精细——三层分级,不是一刀切。只读工具(grep、读文件)免批直接干;Shell 命令(bash)必须你点头,一旦你点了“不再询问”,它会一直记住(下次同项目同命令不再问);写文件(edit/write)也要你批准,但“不再询问”的有效期只到 session 结束(下一次新 session 还要问)。规则评估的优先级是 deny → ask → allow,deny 永远优先——一旦被 deny,就不可能 allow。还有 6 种模式:default(标准)、plan(只看不动手)、auto(自动批准 + 后台安全检查)、bypassPermissions(全放开,除了 rm -rf / 这种还会拦你一下)。

Codex最硬核——三阶段管线,Rust 实现。第一阶段 Rule 匹配:PolicyParser 解析规则文件,还有个 BANNED_PREFIX 列表(python、bash、sudo 这些命令直接拦截不让跑)。第二阶段 Safety 评估:SafetyCheck 枚举决定是 AutoApprove(自动放进沙箱跑)、AskUser(问你),还是 Reject(直接拒绝并给你理由)。第三阶段沙箱执行:根据操作系统自动选 Seatbelt(macOS)、landlock(Linux)、Windows sandbox,还能直接切断网络(设置 CODEX_SANDBOX_NETWORK_DISABLED=1)。

OpenClaw最简单——两种 exec security 模式(allowlist=只跑白名单命令、full=全部允许),tool policy 过滤工具,delegate 身份隔离(子 Agent 用不同身份跑)。

Hermes最务实——approval.py 检测危险命令(类似 Codex 的 BANNED_PREFIX),DM pairing 授权(消息平台上谁能跟 Agent 聊要配对审批),sudo 确认(中断式问你),容器隔离(6 种后端可选,从本地到云 VM)。

对比起来很清楚:Claude Code 是“精细分级”、Codex 是“硬核沙箱”、OpenClaw 是“简单白名单”、Hermes 是“多层 + 容器”。

在 Mini Harness 的实战里,最终选的是 Claude Code 的三层分级——因为它最实用。Shell 的“永久记住”和 File 的“仅 session 记住”,这个区分太精妙了:Shell 命令重复率高(npm run build 一天能跑几十次),永久记住省心;文件修改每次可能不同(今天改 main.py 明天改 config.py),所以每次都问一下。

记忆系统:谁记得最牢

记忆就是“Agent 怎么记住你说过什么”。四个 Agent 的备忘录各有巧思:

四大AI Agent架构拆解:7条可迁移设计原则

Hermes的记忆最“智能”——双文件设计。MEMORY.md(Agent 自己写的笔记,2200字符/800token 上限)记环境事实、项目约定、踩过的坑;USER.md(用户画像,1375字符/500token 上限)记你叫什么、你喜欢简短还是详细、你讨厌什么。nudge 驱动:Agent 自己判断什么时候该写笔记,不是被动记录日志,而是“主动策展”。FTS5 SQLite 把所有对话都存下来,几周前的讨论也能翻出来。还有 8 个外部 memory provider(Honcho/Mem0/OpenViking 等),想用知识图谱、语义搜索、自动抽取?插件式扩展。容量管理最严格:满了就不让你加,必须先合并旧的再写新的。

Claude Code的记忆最“灵活”——双系统设计。CLAUDE.md(你写的,4 级存储:组织 → 个人 → 项目 → 本地)放“永远用 pnpm 不用 npm”这种规则;Auto memory(Claude 自己写的,基于你纠正它的内容自动积累)——你说“别用 npm”它就记下来。@import 语法:CLAUDE.md 里可以 @README 引用其他文件,最多 4 层深度。.claude/rules/ 路径匹配:只在编辑 .py 文件时才加载 Python 规则,不浪费 context。

OpenClaw的记忆最“透明”——全是文件,你能看、能改、能删,没有黑盒。MEMORY.md 长期记忆 + 日志每天一个 + memory_search 向量检索 + wiki companion 知识库。

Codex的记忆最“工程化”——Rust crate 实现。memories crate 有 read/write 两个子模块,专门读写持久化记忆。多策略 compaction:compact(本地压缩)、compact_remote(远程压缩)、compact_remote_v2。Pre + Post Hooks:压缩前后都能跑自定义脚本。

一句话对比:Hermes 是“主动策展 + 容量管理”、Claude Code 是“你写 + 我写双轨道”、OpenClaw 是“纯文件透明”、Codex 是“Rust crate 工程化”。

Mini Harness 里选了 OpenClaw 的纯文件记忆 + Hermes 的容量管理——MEMORY.md 设了 2000 字符上限,满了必须先合并旧的再写新的。这个“满了不让加”的设计太关键了,不然 MEMORY.md 会无限膨胀,最后变成一团垃圾堆。

Skill系统:谁学得最快

Skill 就是“Agent 能学会的新技能”。四个 Agent 的学习哲学完全不同:

四大AI Agent架构拆解:7条可迁移设计原则

Hermes的 Skill 最“活”——完成一个复杂任务后,Agent会自动创建 Skill 记住怎么做,下次遇到类似任务直接调用。Skill 在使用中自改进——跑了几次后发现更好的方式,自己更新 Skill 内容。还能按平台启用/禁用——Telegram 上只用聊天类 Skill,CLI 上用编码类 Skill。Skills Hub 社区共享——别人写的 Skill 你也能用。

Claude Code的 Skill 最“规范”——SKILL.md 文件定义,YAML frontmatter 写 description 告诉 Claude 什么时候该用。4 级存储(Enterprise → Personal → Project → Plugin),企业级优先。Live change detection:改了 Skill 文件立即生效,不用重启。Dynamic context injection:Skill 里写 !git diff HEAD 就能自动注入当前 diff,不是静态文本而是运行时动态内容。

OpenClaw的 Skill 最“简单”——多级目录(workspace/project/personal/bundled),SKILL.md 自描述,自动发现自动注入。简单但够用。

Codex的 Skill 最“工程化”——独立的 Rust crate(codex-core-skills),8+ 模块文件(loader/manager/injection/render/model/config_rules/system/remote)。loader.rs 解析 YAML frontmatter,manager.rs 管理发现注册,injection.rs 注入 prompt。

一句话对比:Hermes 是“活的”(自进化)、Claude Code 是“规范的”(开放标准 + 动态注入)、OpenClaw 是“简单的”(热加载)、Codex 是“工程化的”(Rust crate 模块化)。

对话循环:谁跑得最稳

对话循环就是“Agent 处理用户消息的流水线”。核心差异在于消息怎么排队、怎么防竞态:

四大AI Agent架构拆解:7条可迁移设计原则

OpenClaw最“守规矩”——所有消息先经过 Gateway RPC 验证身份,再排队串行化(一个 session 同时只处理一条消息,防止抢跑道),然后组装上下文 + 注入 Skill → 模型推理 → 工具执行 → 流式输出 → 写记忆。不会打架,不会乱。

Hermes最“灵活”——5 个入口(CLI/Gateway/ACP/Batch/API)全部走同一个 AIAgent 类。Prompt 分三层(stable/context/volatile),Provider 18+ 家随便选。最特别的是自学习评估环节——每次对话完都会评估要不要写笔记、要不要创建新 Skill。

Claude Code最“安全”——启动时先加载 CLAUDE.md + Auto memory,然后三层权限检查,可选子 Agent 委托(Explore 用 Haiku 只读搜代码、Plan 只读做方案、General-purpose 全能干活)。

Codex最“硬核”——Rust 写的实时引擎,权限在推理之前就三阶段评估完,执行在沙箱里,网络可以完全切断。

手敲 Mini Harness 时选了 OpenClaw 的 per-session 串行化——用 asyncio.Queue + is_processing 标志,同一 session 同时只处理一条消息。这个设计看起来有点“保守”,但它解决了最根本的问题:两条消息同时跑会争抢 context,导致 Agent 回复混乱。

手敲实战:6文件Mini Harness

拆完四大 Agent,提炼出 7 条可迁移的设计原则。但光看图远远不够,必须亲手敲一遍才能真正理解。

Mini Harness 的 6 个文件,每一个都对应一条原则:

文件对应原则核心实现参考来源
session.py串行化对话循环asyncio.Queue + is_processing 标志OpenClaw
permissions.py渐进式权限信任三层分级 + deny 优先 + 6 种模式Claude Code
memory.pyAgent 主动策展记忆MEMORY.md + 2000 字符容量管理Hermes
skills.pySkill 自描述可热加载SKILL.md YAML frontmatter + 隐式/显式匹配OpenClaw/Claude Code
llm_client.py—SiliconFlow + GLM-5.1 API 调用—
agent_loop.py—9 步串起 5 大模块OpenClaw

9 步对话循环的完整流程:

  1. 消息到达 → Session 入队(串行化)
  2. 串行取出 → 同一 Session 同时只处理一条
  3. 加载记忆 → MEMORY.md + 最近日志
  4. Skill 注入 → 根据用户输入自动匹配 Skill,注入 prompt
  5. 权限评估 → deny → ask → allow 检查
  6. Agent 处理 → 组装 prompt → 调用 LLM
  7. 权限交互 → 如果需要批准,交互式询问
  8. 记忆写入 → 重要结论写入 MEMORY.md 或日志
  9. 输出回复 → 返回给用户

几个踩坑点值得记一下:

踩坑 1:dataclass 字段顺序。ApprovalRecord 的字段顺序是 timestamp:float 然后 session_id:str,但构造时把 session_id 传给了 timestamp——导致“不再询问”机制完全失效。教训:用关键字参数传值,不要用位置参数。

踩坑 2:Python 模块名冲突。session.py 和 memory.py 不是 Python 内置模块,但 Python 3.12+ 默认不把当前目录加入 sys.path——导致 agent_loop.py 找不到同目录模块。解决:在 agent_loop.py 开头加 sys.path.insert(0, 当前目录)。

踩坑 3:LLM 没有实时时间。GLM-5.1 不知道今天是周六——因为 LLM 的训练数据截止后就没有时间信息了。解决:在 system prompt 里注入当前时间。

7条可迁移的设计原则

拆了四大 Agent,手敲了 Mini Harness,最终提炼出 7 条原则。不是理论,是四大生产级 Agent 都在用的实践:

  1. 串行化对话循环 — per-session 队列防止竞态。两条消息同时跑会争抢 context,导致 Agent 回复混乱。(OpenClaw 验证)

  2. 渐进式权限信任 — 三层分级/三阶段管线,不一刀切。只读免批、Shell 需批但可永久记住、文件修改需批但仅 session 记住。规则评估 deny 永远优先。(Claude Code/Codex 验证)

  3. Agent 主动策展记忆 — nudge 驱动 + 容量管理,不是被动日志。MEMORY.md 满了不让加,必须先合并旧的再写新的。(Hermes 验证)

  4. Skill 自描述可热加载 — SKILL.md + agentskills.io 让 Agent 自动发现能力。YAML frontmatter 定义何时触发,文件变更立即生效无需重启。(OpenClaw/Claude Code/Codex 验证)

  5. 自动上下文压缩 — compaction 防止 session 无限膨胀。超过 token 上限时自动压缩历史消息为 summary。(四大 Agent 都有)

  6. 子 Agent 上下文隔离 — spawn + delegate + subagent 防止上下文污染。子 Agent 在自己的上下文窗口运行,不可嵌套。(Claude Code 不可嵌套验证)

  7. 沙箱平台自适应 — macOS Seatbelt / Linux landlock / Windows sandbox。根据操作系统自动选沙箱后端。(Codex 源码验证)

这 7 条原则不是某个 Agent 独有的——是四大 Agent 都在用的共识性设计。不管你用什么语言、什么框架、什么模型,这 7 条都是做 Agent 时的 baseline。

下次预告

Mini Harness v1.0 的 6 个文件只是个骨架。下一步要加的:

  • Tool 执行层——让 Agent 真正能执行 Shell 命令、读写文件(而不是 echo)
  • 上下文压缩——超过 token 上限时自动压缩历史消息(原则 5 的落地)
  • 子 Agent spawn——sessions_spawn 隔离子 Agent 执行复杂任务(原则 6 的落地)

下次带你手敲 Tool 执行层,让 Mini Harness 真正能干活。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章