当我们谈论 AI Agent 的未来时,一个核心命题始终萦绕不去:Agent 能否像人类一样,在持续使用过程中自主学习和扩展自身能力?传统 Agent 框架大多遵循「设计时定义」的模式 —— 工具集、技能边界和能力范围在开发阶段就已被固定,运行时的灵活性仅限于调用哪些工具,而非创造新工具。Hermes Agent 作为 Nous Research 推出的自成长型 AI Agent,尝试打破这一范式,其架构设计中内置了学习循环与技能进化机制,使得 Agent 能够在与用户交互的过程中自主创建新技能、优化现有技能,并将学习成果持久化。本文将从架构层面深入解析 Hermes Agent 的自成长设计,探讨其如何在运行时实现能力边界的动态扩展。

核心引擎:AIAgent 与闭环学习循环

Hermes Agent 的核心 orchestration 引擎是位于 run_agent.py 中的 AIAgent 类。这个同步编排引擎负责 provider 与 API 模式选择、prompt 构造、工具执行、重试与回退、回调处理、压缩与持久化等关键职能。然而,与传统 Agent 不同的是,AIAgent 在每次交互循环中不仅执行任务,还承担了一项特殊使命 —— 评估自身表现并决定是否需要生成新的能力单元。

Hermes Agent 的学习闭环建立在三个核心机制之上。第一个机制是周期性自检:Agent 在完成复杂任务后,会主动评估任务执行的完整轨迹,识别出可复用的模式并尝试将其抽象为独立技能。这种机制使得 Agent 能够在遇到重复性场景时自动生成对应的自动化工作流,而非每次都重新规划解决路径。第二个机制是技能自改进:已创建的技能在使用过程中会持续接收执行反馈,Agent 能够根据反馈调整技能的内部逻辑和参数配置,实现技能的迭代优化。第三个机制是记忆推动:Agent 会定期主动触发记忆持久化流程,将有价值的中间状态、学习到的用户偏好和任务模式写入长期存储,而非仅仅依赖被动的上下文压缩。

这一设计的关键在于,学习行为不是外部触发的独立流程,而是深度嵌入在主执行循环中的内生行为。AIAgent 在每次工具调用返回后,都会运行一个轻量级的评估逻辑,判断当前执行路径是否具备泛化潜力。如果评估结果为肯定,Agent 会启动技能创建子流程,将当前的具体解决方案转化为可复用的技能模板。这种设计使得能力扩展成为运行时的常态行为,而非需要人工介入的例外事件。

技能系统:从经验到能力单元的转化

Hermes Agent 的技能系统是自成长架构的核心载体。与传统 Agent 框架中技能需要预先定义和手动注册不同,Hermes Agent 的技能可以在运行时由 Agent 自主创建。当 Agent 判断某个任务序列具备复用价值时,它会启动技能创建流程,将任务目标、执行步骤、所需工具和参数模板封装为一个独立的技能单元。

技能创建完成后,Agent 并非将其束之高阁,而是持续监控技能的实际使用效果。每次技能被调用时,系统都会记录执行结果、用户反馈和上下文特征。这些数据会被用于后续的技能优化决策。如果某次技能执行未能达到预期效果,Agent 会分析失败原因并尝试调整技能的内部逻辑 —— 可能包括修改参数默认值、调整工具调用顺序或添加新的前置检查条件。这种持续优化机制使得技能本身成为一个能够「自我改进」的生命体,随着使用次数的增加,其可靠性和适用范围会不断提升。

技能系统的另一个重要特性是跨会话召回能力。Hermes Agent 实现了基于 FTS5 的会话搜索机制,配合 LLM summarization 技术,使得 Agent 能够在当前会话中检索和利用过往会话中积累的技能和经验。这一机制解决了传统 Agent 框架中「每会话从零开始」的困境,使得 Agent 能够在长周期内建立持续演进的能力模型。同时,Agent 还集成了 Honcho 的 dialectic 用户建模能力,能够在不同会话间构建和更新用户画像,从而为技能定制提供个性化方向。用户偏好、交互风格和专业领域等信息会被持续吸收到用户模型中,指导 Agent 在技能创建和选择时做出更符合用户需求的决策。

记忆架构:持久化与上下文感知的双重支撑

自成长架构的另一个关键支柱是 Hermes Agent 的记忆系统。该系统采用分层设计,将记忆划分为会话级短期记忆和持久化长期记忆两个层次。会话级记忆存储在内存中,承载当前交互的上下文信息;长期记忆则持久化到 SQLite 数据库,包含用户画像、技能定义、偏好配置和历史交互摘要等结构化数据。

记忆系统的设计遵循一个核心原则:记忆应当服务于未来的决策。这意味着 Hermes Agent 不仅记录「发生了什么」,更关注「什么信息在将来会有用」。为此,系统在持久化过程中引入了 LLM 参与的摘要生成环节。原始交互记录会被压缩为精炼的摘要片段,保留关键决策点、工具调用模式和结果反馈等核心信息。这种处理方式既控制了存储开销,又确保了有价值信息的不丢失。

在记忆检索方面,Hermes Agent 采用了语义检索与关键词检索相结合的双轨机制。FTS5 全文搜索提供了高效的关键词匹配能力,而 LLM summarization 则负责从检索结果中提取与当前任务最相关的记忆片段。这种设计使得 Agent 能够在海量历史数据中快速定位有用信息,同时保持记忆使用的计算成本可控。对于需要跨会话协调的复杂任务,这一记忆系统提供了关键的信息支撑,使 Agent 能够在更广阔的上下文视野中做出更明智的决策。

工具与能力边界的动态扩展

Hermes Agent 的工具 runtime 设计同样支持运行时的能力扩展。工具注册表、工具集、终端后端和调度规则共同构成了一个灵活的扩展框架。与传统框架中工具需要在配置文件中预先声明不同,Hermes Agent 允许 Agent 在运行时发现、评估和注册新工具。

这一能力的实现依赖于几个技术细节的支撑。首先,Agent 能够通过模型工具(model_tools.py)进行工具发现 —— 当用户请求涉及 Agent 现有工具集无法覆盖的领域时,Agent 可以通过搜索和推理识别可能解决问题的外部工具或服务,并在获得用户授权后将其纳入执行路径。其次,工具集(toolsets.py)提供了工具分组和预设功能,使得 Agent 能够根据任务特征动态选择合适的工具组合。最后,多终端后端支持(local、Docker、SSH、Daytona、Singularity、Modal)确保了工具执行环境的灵活性,Agent 可以根据任务需求选择最合适的执行载体。

更值得注意的是,Hermes Agent 支持与 MCP(Model Context Protocol)服务器的集成,这意味着 Agent 能够动态接入第三方能力扩展。MCP 适配器(acp_adapter)提供了与外部 MCP 服务发现和交互的能力,使得 Agent 的工具边界能够在运行时突破源代码的限制,向互联网上的广大 MCP 生态延伸。这种设计从根本上改变了 Agent 能力边界的定义方式 —— 从静态编译时声明转向动态运行时发现和协商。

工程落地的权衡与实践要点

将自成长能力引入 Agent 系统并非没有代价。从工程实践角度,有几个关键权衡值得深入考量。

第一个权衡是学习质量与计算成本的平衡。每次技能创建和优化都需要消耗额外的 LLM 调用资源,如果对所有任务都启用学习机制,系统开销将呈指数级增长。Hermes Agent 通过设置复杂度阈值来解决这一问题 —— 只有当任务复杂度超过一定门限时,Agent 才会触发学习评估。这种筛选机制确保了学习行为的投入产出比维持在合理范围内。

第二个权衡是记忆精度与存储规模的矛盾。随着使用时间的增长,长期记忆会持续膨胀,如果不做有效管理,检索延迟和存储成本将逐渐成为瓶颈。Hermes Agent 采用了主动遗忘策略 —— 长期未访问的记忆片段会被降级或淘汰,释放存储空间的同时保留最核心的信息。这一机制类似于人类记忆的遗忘曲线,确保了系统资源不会被无价值数据持续消耗。

第三个权衡是自主性与安全性的张力。Agent 自主创建技能和修改行为逻辑的能力,如果不加约束,可能导致意外甚至危险的行为。Hermes Agent 在这一问题上采取了多层防护策略:技能创建需要明确的用户确认,敏感操作需要授权验证,容器隔离机制限制了技能执行的环境权限。这些安全措施确保了自成长能力在可控范围内发挥价值。

从部署角度看,Hermes Agent 的设计充分考虑了资源效率。系统支持在 5 美元的 VPS 上运行,也支持 GPU 集群或 Modal、Daytona 等 serverless 架构。在 serverless 模式下,Agent 环境在空闲时休眠,只在收到请求时唤醒,成本可以控制在几乎可以忽略的水平。这种灵活的部署选项使得自成长架构不再是大模型的专属,而是可以被更广泛的用户群体使用和实验。

资料来源

本文核心信息来源为 Hermes Agent 官方 GitHub 仓库及文档站点。