模块规模:hermes_cli/ 45+ 文件 / 52K 行 + 顶层支撑 3K 行 + cron/ ~2K 行 + mcp_serve.py 867 行前置阅读:L2 核心、L3 支撑、L4 工具、L6 记忆、L7 技能、L8 RL
🎯 一、L9 是什么(60 秒读懂)
一句话定位
L9 是 Hermes 的"物业 + 水电 + 安保 + 前台"——不做业务(那是 L2-L8 的事),但决定了这栋"楼"能不能 24 小时有电、多租户不打架、陌生人不进门、管家听得懂吩咐。
生活化类比 🏢
把 Hermes Agent 想象成一栋智能公寓,L9 就是整栋楼的物业:
🚪 前台( hermes_cli/main.py8707 行)—— 处理所有hermes xxx命令⚙️ 控制中枢( config.py/profiles.py)—— 配置 + 多租户人格🔑 钥匙管理处( auth.py/runtime_provider.py)—— 28 家供应商统一管理🩺 例行体检( doctor.py)—— 自诊 +--fix自动修复💾 档案馆( hermes_state.py)—— SQLite + FTS5 全文搜索⏰ 定时闹钟( cron/)—— 自建 scheduler🔌 对外接口( mcp_serve.py)—— 把自己暴露成 MCP 节点
核心解决的痛点 🎯
PROVIDER_REGISTRY | |
profiles.py | |
mcp_serve.py | |
RedactingFormatter |
🏗️ 二、七层架构(一段读完)
CLI 层(main.py 8707 行)argparse 60+ subparser 分发到 cmd_<action>;配置层(config.py 3882 行)五重处理 YAML → env 展开 → 默认合并 → 路径标准化 → managed 覆盖;认证层(auth.py)28 个 provider 共用 ProviderConfig;Profile 层(profiles.py)alias 冲突自动检测;持久化层(hermes_state.py)SQLite + FTS5 + 三重武装;调度 / MCP 层 自建 cron + 10 个 MCP tool;UX 层doctor.py 自诊 + setup.py curses 引导。
🧩 三、两个最值得抄的模块
模块 A:SessionDB —— SQLite 多进程并发王 💾
Schema 关键点:sessions 表带 parent_session_id(会话链)+ tags JSON(业务标签),messages 表挂 FTS5 虚表(全文搜索 30ms 出结果)。
三重武装应对多进程并发:
WAL 模式 → 读不阻塞写 BEGIN IMMEDIATE → 写前抢排他锁,避免乐观失败 抖动重试 → SQLITE_BUSY 时退避 50ms~500ms 随机Migration 链:每次启动检查 schema_version,自动跑增量 ALTER。升级 Hermes 不用 dump-restore。
模块 B:auth.py —— 28 家 provider 统一抽象 🔑
PROVIDER_REGISTRY 用一份 ProviderConfig 描述每家:auth_type(api_key / oauth / aws_sigv4 / vertex_jwt)+ base_url(可被 _resolve_*_base_url 动态覆盖)+ key_env_vars(候选环境变量优先级)+ header_template(Bearer 还是 x-api-key)。
detect_zai_endpoint 主动探测:ZAI 在不同地区 endpoint 不同,启动时 ping 一遍选最快——对用户透明。
启示:第三方集成超 28 家时"每家写一个 client class"会失控;registry + 字段化 config + 类型枚举才是工程化路径。
💡 四、AI 产品经理视角的特别洞察
4.1 可借鉴点(搬到你的产品)
xxx doctor——客服成本骤降。4.2 差异化启发(Hermes 做对了)
hermes --help 一屏看全。[SILENT] 语义:健康检查 / 索引重建不发通知,减少 noise 焦虑。coder → hermes -p coder,用户感知不到 profile 切换。🌟 结语:L9 才是"工程化成熟度"的晴雨表
读完 L9 你会理解一个反直觉的事实:
Hermes 真正的护城河不是"55+ 工具"或"L8 训练飞轮",而是 L9 这一层"看不见的水电"。
LangChain 没有 SessionDB,AutoGen 没有 profile 隔离,CrewAI 没有 cron——它们只解决"能不能做",没解决"能不能放心给老板用一年"。
L4 让 Agent 能做事(工具)L6 让 Agent 记得事(记忆)L7 让 Agent 学会事(技能)L8 让 Agent 进化事(训练)L9 让 Agent 持续可用(基础设施)
L9 的每一行代码都不性感,但少了任何一块都会让产品在某个深夜炸掉。
产品启示:想做"让用户离不开"的 AI 产品?别只卷模型和功能,把 SessionDB / 配置 / 日志 / 自诊 / 多租户做扎实——"无聊的工程"才是真正的护城河。
点击左下方“阅读原文”查看完整拆解内容
源码拆解 | by 赛博阁员张居正
夜雨聆风