1. Hermes Agent 架构深度解析
最近在AI Agent领域,Hermes Agent引起了广泛关注。作为一个长期关注AI技术演进的技术从业者,我花了大量时间研究其架构设计,发现它确实在Agent长期演进方面做出了独特创新。
与市面上大多数AI CLI工具不同,Hermes定位为一套完整的Agent runtime系统。它的核心价值不在于单次任务的执行,而在于如何让Agent在长期使用中不断进化。这种设计理念在当前AI Agent领域显得尤为珍贵。
2. Hermes与OpenClaw的架构对比
2.1 设计哲学差异
OpenClaw更像是一个"网关守护进程",专注于消息路由和渠道管理。它的核心价值在于:
- 统一管理多平台会话(Telegram、Discord、Slack等)
- 提供消息分发和路由机制
- 构建多渠道接入的生态系统
而Hermes的设计重心完全不同,它关注的是Agent本体的执行与学习能力:
- 工具调用与编排机制
- 经验沉淀与技能复用
- 长期记忆管理
- 安全执行边界
2.2 代码结构体现的设计优先级
从代码仓库的组织方式就能看出两者的差异:
code复制hermes-agent/
├── run_agent.py # 核心对话循环
├── model_tools.py # 工具编排
├── toolsets.py # 工具集定义
├── agent/ # Agent内部机制
│ ├── prompt_builder.py # 系统提示装配
│ ├── context_compressor.py # 上下文压缩
│ ├── prompt_caching.py # 提示缓存
│ └── skill_commands.py # 技能命令
├── hermes_state.py # 会话存储
├── tools/ # 工具实现
│ ├── registry.py # 工具注册
│ ├── approval.py # 危险命令检测
│ └── environments/ # 终端后端
├── gateway/ # 消息网关(次要)
└── skills/ # 内置技能模板
值得注意的是,gateway目录被放在了相对次要的位置,而核心的对话循环和工具编排占据了主要地位。这种代码组织结构清晰地反映了Hermes的设计优先级。
3. 核心执行循环解析
3.1 基本工作流程
Hermes的核心执行循环位于AIAgent.run_conversation()方法中,简化后的流程如下:
- 接收用户输入消息
- 结合当前上下文和可用工具schema调用LLM
- 如果返回tool_calls则逐个执行
- 将执行结果追加到对话上下文
- 循环直到获得最终文本回复或达到迭代上限
这个循环有两个关键设计点:
- 迭代预算控制(默认90轮)
- 后台review流程触发机制
3.2 迭代控制机制
为了防止Agent陷入无限循环,Hermes实现了严格的迭代控制:
python复制# run_agent.py中的相关代码片段
self.iteration_budget = 90 # 默认最大迭代次数
self.current_iteration = 0
while self.current_iteration < self.iteration_budget:
# 执行循环逻辑
self.current_iteration += 1
这种显式的迭代控制是构建可靠Agent系统的基础设施之一。
4. Skill系统设计剖析
4.1 三层Skill沉淀机制
Hermes的Skill系统是其最富创新性的设计之一,包含三个层次:
- 提示引导层:通过系统提示鼓励Agent在完成复杂任务后保存Skill
- 后台Review层:定期触发后台分析流程评估对话历史
- Skill管理层:提供Skill的存储、索引和加载机制
4.1.1 提示引导实现
在prompt_builder.py中定义的SKILLS_GUIDANCE:
python复制SKILLS_GUIDANCE = (
"After completing a complex task (5+ tool calls), fixing a tricky error, "
"or discovering a non-trivial workflow, save the approach as a "
"skill with skill_manage so you can reuse it next time.\n"
"When using a skill and finding it outdated, incomplete, or wrong, "
"patch it immediately with skill_manage(action='patch') — don't wait to be asked. "
"Skills that aren't maintained become liabilities."
)
值得注意的是,这里的"5+ tool calls"是提示层面的建议阈值,而非硬性触发条件。
4.2 后台Review流程
后台review是Skill沉淀的关键推动力。相关配置:
python复制# run_agent.py中的配置
self._skill_nudge_interval = 10 # 每10轮工具迭代触发一次review
review流程使用独立的子Agent执行,核心提示为:
python复制_SKILL_REVIEW_PROMPT = (
"Review the conversation above and consider saving or updating "
"a skill if appropriate.\n\n"
"Focus on: was a non-trivial approach used to complete a task "
"that required trial and error, or changing course due to "
"experiential findings along the way...?\n\n"
"If nothing is worth saving, just say 'Nothing to save.' and stop."
)
这种设计实现了前台执行与后台分析的解耦,既不影响用户体验,又能持续沉淀有价值的工作方法。
5. 记忆体系架构
5.1 三层记忆结构
Hermes的记忆系统采用了分层设计:
| 组件 | 存储位置 | 内容 | 容量限制 |
|---|---|---|---|
| MEMORY.md | ~/.hermes/memories/ | Agent的环境知识和惯例 | ~800 tokens |
| USER.md | ~/.hermes/memories/ | 用户画像和偏好 | ~500 tokens |
| state.db | ~/.hermes/ | 全量对话历史+FTS5检索 | 无限制 |
5.2 记忆检索机制
state.db使用SQLite的FTS5扩展实现全文检索:
sql复制CREATE VIRTUAL TABLE IF NOT EXISTS messages_fts USING fts5(
content,
content=messages,
content_rowid=id
);
Agent可以通过session_search工具按需检索历史对话,这种设计有效解决了传统"笔记本式"记忆的上下文膨胀问题。
6. 安全模型详解
6.1 七层防御体系
Hermes实现了完整的纵深防御策略:
- 用户授权(白名单机制)
- 危险命令审批
- 容器隔离
- MCP凭据过滤
- 上下文文件注入扫描
- 跨会话隔离
- 输入清洗
6.2 危险命令检测
approval.py中定义了危险命令模式表:
python复制DANGEROUS_PATTERNS = [
(r'rm -r', "recursive_delete"),
(r'chmod 777', "world_writable"),
(r'dd if=', "disk_write"),
(r'> /dev/sd', "device_write"),
# ...其他30+条规则
]
审批模式支持三档:
- manual(人工审批)
- smart(LLM辅助评估)
- off(关闭审批)
6.3 上下文注入防护
prompt_builder.py中的注入扫描:
python复制_CONTEXT_THREAT_PATTERNS = [
(r'ignore\s+(previous|all|above|prior)\s+instructions', "prompt_injection"),
(r'do\s+not\s+tell\s+the\s+user', "deception_hide"),
(r'system\s+prompt\s+override', "sys_prompt_override"),
# ...其他规则
]
这种在上下文加载前的预处理,有效防范了潜在的提示注入攻击。
7. 模型支持与部署
7.1 多Provider支持
Hermes支持的主流模型提供商:
| Provider | 认证方式 |
|---|---|
| OpenAI | API Key |
| Anthropic | API Key或Claude Code |
| Google/Gemini | GOOGLE_API_KEY |
| 智谱AI | GLM_API_KEY |
| 阿里云通义千问 | DASHSCOPE_API_KEY |
| Hugging Face | HF_TOKEN |
| 自定义端点 | 兼容OpenAI API的任意端点 |
切换模型只需执行:
bash复制hermes model # 交互式选择
7.2 部署方案
安装命令:
bash复制curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
支持六种终端后端:
- 本地环境
- Docker容器
- SSH远程
- Daytona
- Singularity
- Modal
8. 架构设计启示
经过深入分析,我认为Hermes架构有几个值得借鉴的设计理念:
-
执行与学习的闭环:将工具使用、经验沉淀、记忆检索和安全控制纳入统一框架
-
分层记忆系统:区分高频小数据与低频大数据,平衡上下文效率与信息完整性
-
纵深防御策略:不依赖单一安全机制,而是构建多层防护体系
-
后台分析流程:通过异步review机制实现经验沉淀,不影响主流程响应速度
在实际应用中,我发现这些设计确实使Agent表现出更好的长期可用性。经过数周使用后,Agent的工具使用效率和任务完成质量都有明显提升。
对于希望构建可进化AI系统的开发者,Hermes的架构提供了宝贵的参考。特别是它的Skill系统和记忆管理机制,为解决Agent的长期学习问题提供了实用方案。