作为一名资深老程序员,你肯定也经历过无数次“明天又要学个新框架”的疲惫。前段时间刚被同事安利了
OpenClaw(龙虾),还没把它的配置文件摸透,圈内又炸了:由 Nous Research 打造的
Hermes-Agent(爱马仕) 强势出圈,上线两个月狂揽 4 万+ GitHub Stars,甚至让不少重度龙虾用户果断“背叛”。

别慌,今天我们不堆砌官网的套话,而是直接从源码架构底层机制入手,带你 10
分钟看透这只“爱马仕”到底几斤几两,它凭什么能引发新一轮的 Agent 迁移潮。


“龙虾”还没吃透,“爱马仕”又来了:Hermes-Agent 技术全景解读

在这里插入图片描述

一、 核心定调:爱马仕绝不是“又一个 ChatGPT 套壳”

如果用一句话给 OpenClaw 定性,它更像是一个“挂载了工具的超级对话机器人”;而爱马仕的官宣 Slogan 非常犀利:“The agent that grows with you”(与你共同成长的 Agent)。

它不是一个等你敲回车键才动弹的玩具,而是一个常驻后台、自带闭环学习系统的数字同事。它的核心突破不在于集成了多少第三方 API,而在于解决了一个业界痛点:如何让 AI Agent 具备跨会话的持久记忆与自我进化能力


https://hermes-agent.org/zh/
在这里插入图片描述

二、 硬核拆解:爱马仕的“六层 + 插件式”架构

对于老鸟来说,看一个新框架值不值得入坑,第一件事就是 git clone 看它的目录结构和架构分层。爱马仕之所以能打,归功于它极其优雅的 六层 + 插件式全栈架构(约 2.4 万行 Python 后端 + 1.7 万行 TypeScript 前端 TUI):

  • L1 用户界面层(多端统一入口)
    爱马仕支持 20+ 消息平台(Telegram、Discord、飞书、企业微信等),同时提供 CLI、Web UI 和 TUI(基于 Ink 构建的终端富交互界面)。无论你在手机上发微信,还是在服务器上敲命令行,入口不同,但背后跑的是同一个 Agent 实例。
  • L2 平台适配层(Gateway 网关)
    类似于微服务中的 BFF(Backend For Frontend)层,负责将不同平台的消息格式(如飞书的 Webhook、Telegram 的 Long Polling)统一转换为内部的标准化事件流。
  • L3 Agent 核心层(大脑)
    这是爱马仕的精髓所在。核心是一个强大的 AIAgent 编排器,内部集成了 PromptBuilder(动态提示词组装)、ContextEngine(上下文引用与注入检测)、MemoryManager(记忆生命周期管理)以及 SmartModelRouting(智能模型路由,根据任务复杂度自动选择便宜/昂贵的 LLM)。
  • L4 LLM Provider 层(多模型适配)
    原生支持 15+ 主流模型厂商(DeepSeek、Claude、OpenAI、智谱 GLM 等),甚至接入了 models.dev 的 4000+ 模型注册表。一套 API 标准,随意热切换。
  • L5 工具执行层(双手)
    内置 70+ 工具,涵盖文件操作、网页搜索、浏览器自动化等。更绝的是它支持 MCP(Model Context Protocol)桥接,这意味着 Cursor、Claude Code 等外部工具也能直接以标准化方式调用爱马仕的能力。
  • L6 基础设施层(骨架)
    基于 uv 进行极速依赖管理,支持 7 种执行环境(Local/Docker/SSH/Modal 等),甚至能在安卓 Termux 环境下运行。

三、 架构之外:三大“杀手级”机制深度解读

一个好的架构只是地基,爱马仕真正让老程序员眼前一亮的,是它内部运行的三个核心机制:

1. 记忆系统:告别“鱼的记忆”,引入 FTS5 + Periodic Nudge

以前的 Agent 重启即失忆,而爱马仕将用户的偏好、项目背景长期存储在 MEMORY.mdUSER.md 中。它不仅支持 FTS5(全文检索),还能在空闲时触发 Periodic Nudge(周期性微调) 机制——系统会定期“拍一拍”Agent,让它自己回顾最近的对话和操作日志,然后自主决定将哪些经验沉淀为长期记忆,全程无需人工干预。

2. 技能自举:从经验到资产的“自动蒸馏”

当你让爱马仕完成一个超过 5 步的复杂任务后,它的闭环学习系统会自动将解决路径抽象成一个结构化的 Skill(技能包,即 SKILL.md),存放在本地的 ~/.hermes/skills/ 目录下。当下次遇到相似任务时,它会优先直接调用这个技能,而不再需要从零开始“啰嗦”地推理。用官方的话说,它在**“自己写自己的插件”**。

3. 智能熔断与调度:穷人的资源管理利器

爱马仕深谙大模型调用的昂贵之处。它内置了 CredentialPool(多 Key 故障转移与冷却机制)、RateLimitTracker(细粒度限流追踪)以及 ContextCompressor(上下文自动摘要与压缩)。当对话过长导致逼近模型 Token 窗口限制时,它会自动触发压缩,将陈旧的上下文提炼为摘要,保证主链路不崩溃。


四、 视野拓展:从爱马仕看下一代 Agent 的演进趋势

透过爱马仕的火爆,作为一名技术人,我们应该看到其背后映射出的行业演进方向:

  1. 从“外部编排”回归“内部智能”
    像 LangChain 这样的早期框架试图用大量的硬编码逻辑来约束大模型,而爱马仕的崛起证明了:把复杂性收敛在 Agent 自身的“学习循环”中,让模型自己去规划、反思和纠错,才是更符合直觉的演进路径
  2. “多模型编排”成为降本增效的标配
    面对不同的子任务,爱马仕可以通过 SmartModelRouting 动态切换模型。比如用便宜的 DeepSeek-V3 处理日常对话和文本格式化,遇到复杂的逻辑推演再切换到 Claude 3.7 Sonnet。“好钢用在刀刃上”的精细化模型调度,将大幅降低企业试错成本
  3. 数据主权觉醒与“个人隐私”成为核心卖点
    爱马仕的所有数据(会话记录、记忆、生成的技能)全部以纯文本 Markdown 的形式保存在用户本地(默认路径 ~/.hermes/),官方承诺零遥测、零追踪、零云锁定。在未来的 To-Developer 工具中,“开源”与“私有化”将逐渐取代“功能堆砌”成为最核心的竞争力

💡 写在最后

诚然,“龙虾(OpenClaw)”依然是一个优秀的开源项目,但爱马仕(Hermes-Agent)凭借其先进的架构理念和极强的“网感”与社区运营(比如举办黑客松,让两个 AI 公司互相对战刷 Star),确实代表了现阶段通用型 AI Agent 的一个新高度。

对于咱们老程序员而言,不必焦虑于“刚学会一个又来一个”。只要静下心来拆解,你会发现底层始终是我们熟悉的那些东西:进程调度、上下文管理、抽象封装与接口适配

环境一键安装脚本已经给你准备好了,趁热去你的 5 美元小 VPS 上跑一把吧:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

在这里插入图片描述

代码示例

既然是为资深老程序员量身定制的技术解读,那咱们的代码示例就不能停留在“如何调通一个 Hello World”的层面。

针对你即将落地的生产环境,我为你准备了三个层层递进的硬核示例:极限压榨的生产级配置自定义底层工具的正确姿势,以及多智能体(Multi-Agent)的团队编排。直接上代码,少废话。


1. 生产级 config.yaml:把 Token 成本打下来

在实际生产中,我们最关心的是稳定性成本控制。下面这份配置展示了如何利用 Hermes 的高级特性:主模型负责思考,廉价模型负责打杂(压缩上下文),同时对危险操作进行拦截。

# ~/.hermes/config.yaml
model:
  # 主力模型,负责核心逻辑与代码生成
  default: "anthropic/claude-3-5-sonnet"
  # 备用模型,防止主力 API 挂掉
  fallback: "openai/gpt-4o-mini"
  temperature: 0.7

# 降本增效的核心:上下文自动压缩
compression:
  enabled: true
  trigger_threshold: 0.70    # 上下文吃到 70% 容量时自动触发
  target_ratio: 0.25        # 压缩后保留最新的 25% 完整内容
  auxiliary:
    # 用最便宜的 Flash 模型来做长文本摘要,把 Sonnet 的钱省下来
    model: "google/gemini-1.5-flash"

# 工具与权限管控
tools:
  file_system:
    enabled: true
    # 严控文件读写目录,防止 Agent 误删根目录
    allowed_directories: ["~/projects", "/var/www/html"] 
  code_interpreter:
    enabled: true
    timeout: 60  # 代码沙箱执行超时限制

# 安全审批流(防 rm -rf 神技)
approvals:
  mode: "semi_automatic" 
  # 危险系统命令必须弹窗/CLI 手动确认
  risky_patterns: ["rm -rf", "DROP DATABASE", "sudo chmod 777"]

# 记忆管理
memory:
  backend: "sqlite"       # 轻量且无需额外维护 Redis/Chroma
  max_context_turns: 50   # 防止无限对话导致的上下文溢出

2. 自定义工具(Tool)开发:给爱马仕换装

Hermes 最爽的一点是,你可以用寥寥几行 Python 装饰器,把祖传的运维脚本包装成 Agent 能智能调用的工具。

下面的例子展示了如何封装一个带权限校验的服务器负载查询工具,并把它挂载到 Agent 上:

import os
import psutil
from hermes_agent import tool, AIAgent

# 1. 使用 @tool 装饰器定义 Schema,Hermes 会自动把它转为 LLM 能理解的 JSON Schema
@tool
def get_server_load(service_name: str) -> dict:
    """
    获取指定系统服务的 CPU 和内存占用情况。
    仅允许查询白名单内的服务,防止命令注入。
    """
    # 简单的安全白名单校验
    allowed_services = ["nginx", "mysql", "redis", "uwsgi"]
    if service_name not in allowed_services:
        return {"error": f"Service {service_name} is not in the whitelist."}
    
    # 这里可以是任意复杂的底层逻辑,比如调用 SaltStack/Ansible API
    cpu_percent = psutil.cpu_percent(interval=1)
    mem = psutil.virtual_memory()
    
    return {
        "service": service_name,
        "status": "running",
        "cpu_usage": f"{cpu_percent}%",
        "memory_usage": f"{mem.percent}%"
    }

# 2. 初始化 Agent 并将工具注入
agent = AIAgent(
    model="anthropic/claude-3-5-sonnet",
    tools=[get_server_load], # 注入自定义工具
    quiet_mode=True         # 作为库调用时务必关闭 CLI 动画
)

# 3. 直接对话,Agent 会在内部自动判断何时调用 get_server_load
response = agent.chat("检查一下生产环境的 mysql 负载怎么样了?")
print(response)

3. 架构进阶:多智能体(Multi-Agent)团队编排

当业务逻辑复杂到一定程度时,单 Agent 模式会出现“注意力分散”的问题。Hermes 内置了 TeamRouter 原语,让你能像写微服务一样编排 AI 团队。

以下示例实现了一个全自动竞品分析流水线,包含调度器、研究员、分析师三个角色:

from hermes_agent import Agent, Team, Router
from hermes_agent.llm import OpenAIChat
from hermes_agent.memory import SharedMemory

# 假设我们已经定义了 search_competitors 和 analyze_data 两个工具
# from my_tools import search_competitors, analyze_data

# 1. 定义底层 LLM 引擎(可复用)
llm = OpenAIChat(model="gpt-4o")

# 2. 初始化共享记忆体,所有 Agent 读写同一份上下文
shared_mem = SharedMemory()

# 3. 定义专业化 Agent
researcher = Agent(
    name="Researcher",
    llm=llm,
    tools=[search_competitors], # 研究员只管搜
    memory=shared_mem,
    system_prompt="你是一位资深的市场调研员,擅长使用搜索工具抓取竞品数据。"
)

analyst = Agent(
    name="Analyst",
    llm=llm,
    tools=[analyze_data],       # 分析师只管处理数据
    memory=shared_mem,
    system_prompt="你是一位数据专家,负责将杂乱的数据提炼成结构化报告。"
)

writer = Agent(
    name="Writer",
    llm=llm,
    memory=shared_mem,
    system_prompt="你是一位技术主编,负责将分析结果整合成排版优美的 Markdown 文章。"
)

# 4. 组装团队并指定路由器(Router 决定任务流转顺序)
team = Team(
    members=[researcher, analyst, writer],
    router=Router(sequence=["Researcher", "Analyst", "Writer"]) 
)

# 5. 触发流水线
# 输入产品名,Researcher 先工作 -> 传递结果给 Analyst -> 最后 Writer 输出报告
final_report = team.run("为我分析一下 Vue 3 和 React 19 在大型项目中的优劣势")
print(final_report)

💡 落地建议

对于老鸟来说,看完这三个示例,你应该已经察觉到 Hermes 的野心:它不仅仅是想做一个好用的 CLI 工具,而是试图成为 AI 时代的「应用开发框架」

在你们团队的落地路径上,我建议分三步走:

  1. 单机提效:先熟读 config.yaml,把 compressionapprovals 配好,在本地终端用 CLI 模式替代日常的文本处理和脚本编写。
  2. 工具集成:用 @tool 把你们公司内部的 DevOps、数据库查询、监控告警脚本包一层,变成自然语言可触发的接口。
  3. 微服务化:当有大量长耗时任务时,引入 Team 架构,将 Hermes 作为后台常驻进程(Daemon)跑在服务器上,通过 API 或消息队列(如 RabbitMQ)与业务系统解耦。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐