Hermes 七层架构总览
§1摘要与结论
对八千余文件的工业级 AI Agent 项目做七层架构总览逆向,揭示其「越用越聪明」的自进化闭环如何在层间传导的控制型架构案例。
别名:Hermes Agent、七层架构、自进化闭环 | 英文:Hermes Agent Seven-Layer Architecture | 类型:案例 / project-analysis
§2局部关系图
§3原理 · 为什么
超大型代码库无法靠通读理解,必须先建立分层坐标:把系统按职责切成稳定的层,再在层间标注信号如何传导。分层不只是归类,更是识别「哪一层的失效会中断整条回路」。本项目真正的主角是自进化闭环——每轮复盘、写入技能与记忆、下次会话注入、工具调用重置计数器——其余各层都在为这条回路提供执行、存储与接口的基础设施。工业级 Agent 的护城河往往不在模型能力,而在这条能让系统「越用越聪明」的数据回路是否闭合:会话转录回答「说过什么」,技能与记忆回答「学会了什么」,进化机制回答「怎么学会」。因此读架构的关键,是先问闭环在哪、信号靠什么落盘、下一轮从哪读回,再去看每层实现了哪些功能,否则只会得到一份模块清单而非一张运行图。换句话说,它是把「会话级智能」沉淀为「系统级资产」的架构,理解这点才能解释为何各层围绕存储与注入而设计。把这条闭环读通,也就理解了为什么它的架构重心落在存储、提示构建与复盘机制,而不是某个单点功能。
§4机制 · 如何运作
自底向上共七层。持久化层同时维护两类隔离存储:会话转录用 SQLite 加全文检索,支持跨会话搜索与费用统计;知识体用文件系统承载技能与记忆,属于主动积累。其上依次是引导配置层、核心引擎层(对话循环、提示构建、上下文引擎、多 provider 适配)、工具执行层(百余工具模块)、知识存储层(技能文件、记忆文件、使用追踪、学习图)、进化机制层(每轮复盘分叉、技能老化与合并、用户建模、写入来源追踪)、接口传输层(命令行、桌面、协议服务、定时任务与多平台网关)。层间用五条跨层交互标注信号流向,其中知识注入下次会话的冻结提示、工具调用重置进化计数器,构成闭环的关键反馈,使系统跨会话持续累积而非每次归零。值得注意的是,会话转录与知识体刻意分离:前者是事实记录不可篡改,后者是可演化资产允许被复盘改写,二者混用会使学习失去依据。各层之间还刻意保持单向依赖,使进化机制可以在不侵入核心引擎的前提下被替换或关闭,降低实验成本。
§5工程 · 怎么落地
报告用 ASCII 分层图、每层职责表与跨层交互标注来组织,把「功能有什么」升级为「依赖链怎么流转」;对体量最大的几个单文件单独点名,作为后续拆分与重构的风险锚点——例如数十万字节级的入口与状态文件,既是核心也是耦合热点。留档同时附官方架构文档作参照,使逆向结论可与官方口径交叉核对。这种「先分层、后标注信号、再点名风险」的三段写法,可复用于任何超大仓库的首次总览,让后来者不必从零摸索入口,而是沿着分层图逐层深入。对每一层的描述都尽量给出可核对的标识与职责边界,使阅读者能在源码中按图索骥,而非停留在概念层面的复述。整体呈现按「先看全景、再看层、最后看热点」的阅读顺序组织,尽量让不同背景的读者都能快速找到入口。
§6权衡卡
分层总览以可读性换细节:每层内部机制被压缩,真正的实现风险(巨型单文件、层内耦合)只能被点名而未被解剖;层数越多,跨层信号越难验证,那些交互究竟是从代码中归纳还是取自文档声称,需要证据区分。
一次总览的价值在路线而非终点——它给出「先分层再深入」的进攻地图,而非「已经读懂」的保证;只有对高风险文件做函数级下钻、并把每条跨层信号追到具体调用点,才算真正闭环。
- 超大型库的静态逆向还可能把条件装配与运行时依赖误判为静态依赖,得出错误的分层结论。
- 分层本身也可能掩盖层内横向依赖,需要配合依赖分析交叉验证。
- 因此更稳妥的用法是把它当作第一轮侦察产物,配合后续按需的模块深潜,而不是当作唯一权威的架构说明。
- 若把总览当成终点,容易高估对项目的理解程度;把它当起点,则后续每一次深潜都有明确的落点。
权衡原文仅按显式标记词归栏引用(收益 / 代价 / 反例),其余句子按原序列为「原文要点」;内容逐字引用未改写。
§7案例带
去中心化聊天架构逆向
对一个仅有 58 份设计文档、尚未实现的开源去中心化聊天项目做架构逆向:从设计文本提炼 18 个模块及其依赖关系,重建模块依赖 DAG 与三条核心数据流 DAG,并输出全景理解与深度需求分析。
网申填写扩展逆向架构
对 Chrome MV3 网申自动填写扩展的逆向架构分析:梳理 popup、content、background、options 四模块职责,解剖 12 个站点适配器、双通道消息协议与隐私脱敏机制,并评估其零依赖零构建选型。
网申 v3 多模块解耦
一套面向高可扩展性的网申信息速查扩展架构:以 schema.js 为唯一数据驱动源,把数据模型、存储、纯函数与渲染组织为严格单向依赖的共享层,供 popup 与页面浮层双容器复用,并先立跨模块接口契约。
preset 通道耦合分析
对 harness「委派工具层→续用管理器→preset 服务→MCP 服务器」这条通道做耦合分析:识别契约、服务定位、数据契约、组合语义、路径与装配一致性六类耦合点,定位「静默丢弃特化」与「装配漂移」两处实质缝隙。
MCP 四件套选型对比
对四个同类 MCP 服务器做源码级能力与成本对比,并以常驻 token 预算为轴给出分级接入策略的技术选型实战案例。
Claude Code 架构逆向
以社区逆向源码、系统提示词与官方文档三源交叉验证,还原一个商业 Agent 的查询引擎、子Agent、工具与权限体系的逆向分析案例。
§8信源与核验
核验结论:分层图只建立可读坐标,每层内部实现与风险仍被压缩;须对巨型单文件等高风险点做函数级下钻,并把跨层信号以代码证据而非文档声称来验证 [LOC-030]
§9原始关系清单
展开:本节点的全部原始关系边(3 条,含边 ID 与方向)
| 关系 | 方向 | 对端节点 | 说明 |
|---|---|---|---|
| 案例印证 | → ESS-G-04 | 模块化与分解 E-972 | 印证:七层职责分解与分层坐标 |
| 案例印证 | → ESS-G-05 | 架构风格 E-973 | 印证:分层架构风格的工业级实例 |
| 案例印证 | → ESS-H-05 | 深模块与浅模块 E-974 | 违背:巨型单文件偏离深模块与信息隐藏理想 |