1. 项目定位
Hermes Agent 是一个通用型 AI Agent 平台,不是单纯的聊天界面,也不是单一的代码助手。它把大模型推理、工具调用、终端执行、文件操作、网页检索、浏览器自动化、长期记忆、定时任务、多平台消息接入和外部系统扩展整合到一个统一框架里。
从仓库结构和主干代码来看,它的目标不是“回答问题”本身,而是让模型具备持续执行任务的能力,并且能在不同入口、不同环境和不同工具集之间稳定运行。
可以把它理解为三层系统:
- Agent 执行层:负责会话循环、模型调用、工具调度、上下文压缩。
- 平台能力层:负责 CLI、消息网关、状态存储、调度、配置、权限边界。
- 扩展生态层:负责 skills、MCP、插件、自定义工具和多环境运行。
所以,Hermes Agent 更接近一个“可运行的 Agent Operating Layer”,而不是一个普通的 LLM 应用。
2. 项目主干结构
从代码组织看,几个核心模块职责很清楚:
- run_agent.py: 核心 AIAgent 实现,负责主对话循环、工具调用、消息历史和最终响应。
- model_tools.py: 工具发现与分发层。仓库里的工具模块在导入时注册到统一 registry,Agent 再按 toolset 组装可用能力。
- tools/registry.py: 工具注册中心,负责 schema、handler、可用性检测和 dispatch。
- toolsets.py: 定义不同场景下的工具组合,比如 CLI、gateway、API server、ACP 等。
- cli.py 和 hermes_cli/: 提供交互式终端 UI、slash command、模型切换、配置管理、setup、doctor、profile 等。
- gateway/: 提供 Telegram、Discord、Slack、WhatsApp、Signal、Email、Webhook 等消息平台入口。
- hermes_state.py: 使用 SQLite + WAL + FTS5 做会话持久化和全文检索。
- cron/: 提供定时任务能力,支持定时运行 agent 并把结果投递到配置的平台。
- tools/mcp_tool.py: 提供 MCP 接入,把外部系统能力注册成 Hermes 原生工具。
- acp_adapter/: 提供编辑器/ACP 集成能力。
- batch_runner.py、environments/: 提供批处理、轨迹生成和研究/训练相关能力。
从规模上看,这已经是一个完整平台:tools/ 下有大量独立工具模块,gateway/platforms/ 下有多种消息平台适配器,tests/ 覆盖面很大。
3. 技术能力解析
3.1 Agent 会话循环
Hermes 的核心是 AIAgent 的 tool-calling loop。基本模式是:
- 模型接收消息和可用工具定义。
- 模型决定是否调用工具。
- Hermes 执行工具,并把结果写回消息历史。
- 循环直到模型产出最终答案,或者达到迭代限制。
这个设计的意义在于,Hermes 不是只让模型“建议怎么做”,而是让模型“真的去做”:读取文件、搜索代码、执行命令、查询网页、调用浏览器、写入结果。这使它适合处理多步任务,而不是只做一轮问答。
3.2 工具注册与工具集
Hermes 的工具系统特点包括:
- 工具模块独立存在,一个文件通常负责一个工具域。
- 每个工具在导入时自注册到 registry。
- Agent 不直接依赖具体工具,而是通过 toolset 组合决定当前会话能用什么。
这带来了容易增删工具、可以按平台控制权限边界、不同入口可以有不同能力集合等好处。工具能力覆盖 Web 搜索、终端执行、文件读写、浏览器自动化、图像分析、会话搜索、记忆与 TODO、代码执行沙箱、子代理委派、定时任务、跨平台消息发送、Home Assistant 等。
3.3 终端与多执行环境
tools/terminal_tool.py 表明 Hermes 支持多种命令执行后端:local、docker、ssh、modal、daytona、singularity。这使 Hermes 能适配不同部署模式,确保能在正确环境里做事。
3.4 CLI 交互系统
Hermes 的 CLI 是一个完整的终端交互系统,具备多行输入、slash command、自动补全、tool progress 展示、会话切换和恢复、模型切换、配置修改、交互式 setup、doctor 诊断、皮肤和显示层定制等能力。
3.5 消息网关
gateway/ 模块支持把同一个 agent 接到多种消息平台上,包括 Telegram、Discord、Slack、WhatsApp、Signal、Email、Webhook、Home Assistant 等。Agent 不必绑定在终端里,用户可以从不同平台继续同一个工作流。
3.6 会话持久化与检索
hermes_state.py 使用 SQLite + WAL + FTS5 管理 session 和 message,提供会话持久化、历史消息恢复、全文检索、标题化与检索式恢复、跨会话搜索等能力。
3.7 记忆与技能系统
memory 的作用偏向长期事实沉淀(偏好、约束、常用模式);skills 的作用偏向流程化知识沉淀(某类任务怎么做、哪些步骤固定可复用)。这使 Hermes 更接近“能积累经验的 agent”。
3.8 上下文压缩与长任务支持
agent/context_compressor.py 显示对长对话场景有明确支持:接近上下文上限时自动压缩、旧工具输出裁剪、结构化摘要、保留头尾关键内容。
3.9 子代理与程序化工具调用
支持 delegate_task (子代理委派) 和 execute_code (程序化工具调用)。子代理可以拆分复杂问题并行处理;程序化调用则让模型写脚本批量调用工具,减少回合数,压缩 token 成本。
3.10 定时任务与后台自动化
cron/ 模块使 Hermes 具备调度能力:定时运行 prompt、触发数据收集、保存输出、推送结果到聊天平台。
3.11 MCP 与外部系统扩展
tools/mcp_tool.py 允许通过 stdio 或 HTTP 连接 MCP server,自动发现工具并注入。这让 Hermes 变成“平台型系统”,可以连接公司内部 API、数据平台、工单系统等。
3.12 批处理与研究型能力
batch_runner.py 支持批量运行 agent、保存 trajectory、统计工具调用情况,对做 agent 评测、数据生成、研究实验很有价值。
4. 项目的通用能力画像
Hermes 是一个可长期运行、可跨平台接入、可调用多种工具、可持久化记忆与会话、可调度自动任务、可连接外部系统的通用 Agent 平台。它擅长:
- 把自然语言任务转成多步执行流程。
- 把多种工具和外部系统统一成一个可调用层。
- 把 agent 从终端扩展到聊天平台和后台任务。
- 把历史会话、技能和记忆沉淀成长期资产。
- 把一次性问答升级成持续运行的工作流。
5. 典型使用场景
5.1 个人长期助手
承担日常查询、文件整理、命令执行、提醒和定时任务等,并能跨端继续会话。
5.2 开发与调试助手
适合阅读搜索代码、修改文件、执行测试、分析日志、运行 shell。能在本地环境真实执行和验证。
5.3 研究与资料整理助手
搜索网页、抽取内容、汇总多来源信息、生成摘要、保存结果。
5.4 运维与巡检助手
定时检查服务状态、分析日志、发现异常后推送消息并执行标准化恢复动作。
5.5 团队协作 Agent
成员通过 Slack/Telegram 发起任务,Agent 执行后回传结果。
5.6 文档与知识管理助手
搜索历史会话、归纳结论、生成知识文档、把重复问题沉淀成 skills。
5.7 自动化报告系统
每天整理新闻摘要、每周汇总项目状态、每晚生成进展报告等。
5.8 多系统统一入口
把文档平台、项目管理、CI/CD 等系统通过 MCP 统一接入,作为自然语言入口。
6. 项目的工程价值
- 不是玩具式 agent:考虑了状态持久化、分层、多入口、调度等长期运行问题。
- 强调统一入口:设计目标是统一 agent runtime。
- 强调可扩展性:通过 registry、MCP 等机制避免把一切写死。
- 强调长期记忆和复用:让 agent 在长期使用中变得更有连续性。
7. 适合解决的问题类型
多步骤执行任务、长上下文任务、跨平台访问任务、周期性自动运行任务、连接多系统任务、需要沉淀经验的任务。
8. 不适合解决的问题类型
- 极低延迟场景(毫秒级交互)。
- 强确定性核心逻辑(如严格规则引擎、高风险审批最终裁决)。
- 无边界的高权限自动执行(风险极高)。
9. 最适合的落地方式
- 本地个人工作台。
- 服务器上的长期运行 Agent。
- 组织内部的统一智能接口。
10. 最终评价
Hermes Agent 的核心价值在于它把一个通用 agent 真正做成了可运行、可扩展、可持续使用的平台。它最突出的点是工具系统完整、多入口统一、长期状态能力强、扩展性好。
本文内容完整参考自:Henry Lin 的 Hermes Agent 深度分析