Hermes Agent 原理与实战——第3章 整体架构与核心组件
理解 Hermes Agent 最高效的方式,是先看它的"系统总图",再逐个拆解。本章探究 Hermes 的整体架构、Agent Loop 内部机制、Prompt 组装、Provider 运行时解析以及会话存储等核心技术。通过本章,你将建立起对 Hermes 整体架构的"心理模型",理解它为何能在 CLI、Telegram、IDE、API Server 等十余种入口下保持行为一致,以及核心组件之间如何协同工作。
2.1 系统总图
|
|
Hermes 的整体架构是典型的 “多入口 → 单一 Agent 核心 → 多种后端” 分层结构:无论你从哪个入口( CLI、Telegram bot、API Server、ACP IDE 还是 Python 库调用)进入,最终都会汇入同一个 AIAgent 核心,由它统一编排"提示词构建、Provider 选择、工具调度、会话持久化"。
这个架构有以下几个关键特征:
第一,入口多样化: Hermes 不把自己限定为"一个终端程序"或"一个聊天机器人"。它通过 CLI、Gateway、ACP Adapter、API Server、Batch Runner 和 Python Library 六种形态对外暴露能力。
第二,核心单一化: 所有入口最终都调用 run_agent.py 中的 AIAgent 类。该核心对象负责从 prompt 组装、Provider 选择、工具调度、生成响应的完整对话循环。入口层只负责"如何把外部输入翻译成 OpenAI 格式的消息"以及"如何把 Agent 的输出渲染回外部界面",不参与任何对话逻辑。
第三,后端可插拔: Provider 层支持 20 余家模型供应商和 3 种 API 模式;工具层支持 7 种终端后端、5 种浏览器后端、4 种 Web 后端以及动态 MCP 服务;存储层基于 SQLite + FTS5,支持全文检索和会话追踪。这种"多后端"设计让 Hermes 在模型选择、执行环境和数据持久化上都具备极高的自由度。
2.2 仓库目录速览
熟悉仓库目录结构有助于更好的理解系统架构。以下是按功能组织的精简版目录解读。
|
|
2.3 入口层:六种调用方式
Hermes 不是单一形态的程序,它通过六种入口对外提供同一个 AIAgent。
第1种、CLI 与 TUI(cli.py)
这是最常用的入口。在终端中输入 hermes 即可启动交互式会话。
CLI 入口的核心特性包括:
- 多行输入与斜杠命令补全:支持输入多行文本,以及
/开头的斜杠命令自动补全; - 流式输出与实时预览:模型生成内容时逐字显示,工具调用前会先展示工具预览(如"正在调用 terminal: ls -la");
- 可中断执行:
Ctrl+C可随时打断当前 API 调用或工具执行,且支持"边打断边发新消息",无需等待上一次调用完成; - 可换肤的视觉元素:
Kawaii Spinner等动画元素可通过skin_engine.py更换主题; - 丰富的斜杠命令:
/model切换模型、/personality切换人格、/new新建会话、/reset清空历史、/compress手动压缩、/usage查看用量、/insights查看统计、/skills管理技能、/<skill-name>直接触发技能、/rollback回滚到指定轮次、/checkpoint打检查点、/cron管理定时任务、/kanban管理看板等。
CLI 的数据流如下:
|
|
第2种、Gateway(gateway/run.py)
hermes gateway start 启动一个常驻进程,把同一个 Agent 暴露给 20 余种消息平台,。每个平台都有独立的 adapter 实现,位于 gateway/platforms/<name>.py,遵循统一的 GatewayMessage 接口。
Gateway 支持的平台包括:Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、Email、SMS、企业微信、飞书、钉钉、QQ、Yuanbao(腾讯元宝)、Open WebUI、Webhooks、Home Assistant 等。
Gateway 的核心价值在于解耦:平台 adapter 只负责"把平台消息格式翻译成标准openAI消息格式",所有对话逻辑都在 AIAgent 中完成。这意味着一旦某个平台的消息协议发生变化,只需修改对应的 adapter 文件,无需触碰核心逻辑。
Gateway 的数据流如下:
|
|
第3种、 ACP Adapter(acp_adapter/)
ACP(Agent Client Protocol)是 Zed Industries 联合 JetBrains 在 2025 年推出的开放开源标准协议,类比 LSP(Language Server Protocol),专门标准化IDE / 编辑器(Client) ↔ AI Agent之间通信。已被 VS Code、Zed、JetBrains 等主流编辑器支持。Hermes 的 ACP Adapter 通过 stdio/JSON-RPC 与 IDE 通信,让开发者可以在 IDE内直接跟 Hermes 对话,工具调用、文件 diff、执行终端命令。
与其他入口相比,ACP 的独特之处在于上下文富化:IDE 可以自动把当前打开的文件、光标位置、选中的代码块作为上下文传递给 Agent。工具调用的结果(如文件修改、diff、终端输出)也会以 IDE 原生格式渲染,提供无缝的编程体验。
第4种、API Server
hermes api start 暴露一个 OpenAI-compatible HTTP 端点。任何兼容 OpenAI Chat API 的前端——如 Open WebUI、LobeChat、LibreChat、ChatBox 等——都可以直接接入 Hermes。
这相当于把 Hermes 变成了"你的私有 ChatGPT",但背后拥有 Hermes 的全部能力:工具调用、会话持久化、多 Provider 切换、记忆系统等。
第5种、Batch Runner(batch_runner.py)
hermes batch run 用于在大量 prompt 上并行跑 Agent,输出结构化的 ShareGPT-format 轨迹数据,主要用于训练数据生成与评测。
Batch Runner 的典型用途包括:
- 生成大规模工具调用训练数据;
- 对不同模型进行 A/B 评测;
- 批量处理文档、代码审查等重复性任务。
第6种、Python Library
Hermes 也可以作为 Python 库直接嵌入你的程序:
|
|
这是最简单、最轻量的调用方式。AIAgent 对象初始化后,可以通过 chat() 或 run_conversation() 方法发起对话。
2.4 主要子系统
2.4.1 Agent 核心:AIAgent
run_agent.py 中的 AIAgent 类是 Hermes 的"心脏",核心编排引擎。它的职责包括以下八个方面:
- Prompt 组装:通过
prompt_builder.py拼装系统提示与工具 schema; - Provider 选择:选择合适的 Provider 与 API 模式(chat_completions / codex_responses / anthropic_messages);
- 可中断调用:发起 可中断 的模型调用(
_interruptible_api_call,支持随时打断); - 工具执行:顺序或并发执行工具调用(带线程池);
- 会话历史维护:维护 OpenAI 格式的对话历史;
- 容错处理:执行压缩、重试、回退、Provider 故障切换;
- 预算追踪:跟踪父子 Agent 的迭代预算;
- 记忆持久化:在上下文丢失前将持久化记忆刷写到磁盘。
1)、两个入口方法
AIAgent 对外暴露两个主要接口:
|
|
chat() 本质上是对 run_conversation() 的轻量封装,从结果字典中提取 final_response 字段。
2)、单轮生命周期
Agent Loop 的每次迭代(Turn)按以下严格顺序执行(即一次会话的处理流程):
|
|
这个循环的精妙之处在于状态管理。当模型返回工具调用时,循环不会退出,而是把工具执行结果追加到对话历史,然后重新回到步骤 5 发起下一轮 API 调用。这种"推理 → 行动 → 观察 → 再推理"的模式,正是 ReAct(Reasoning + Acting)范式的工程实现。
3)、三种 API 模式
Hermes 支持三种 API 执行模式,通过 Provider 选择、显式参数和 base URL 启发式规则来确定。
| API mode | 用于 | 客户端 |
|---|---|---|
chat_completions |
OpenAI 兼容端点(OpenRouter、自定义、绝大多数供应商) | openai.OpenAI |
codex_responses |
OpenAI Codex / Responses API | openai.OpenAI(Responses 格式) |
anthropic_messages |
Anthropic 原生 Messages API | anthropic.Anthropic(带 adapter) |
模式选择优先级:构造参数 > Provider 检测 > base URL 启发式 > 默认 chat_completions。三种模式的消息编码、工具调用结构、流式与缓存机制都不同,但内部统一收敛为 OpenAI 风格的 role/content/tool_calls 字典。
4)、消息交替规则
所有消息在内部均使用兼容 OpenAI 的格式:
|
|
Agent Loop 强制执行严格的消息角色交替规则:
- 系统消息之后:
User → Assistant → User → Assistant → ...。 - 工具调用期间:
Assistant(含 tool_calls)→ Tool → Tool → ... → Assistant。 - 不允许连续出现两条 assistant 消息。
- 不允许连续出现两条 user 消息。
- 只有
tool角色可以连续出现(并行工具结果)。
Provider 会验证这些序列,并拒绝格式错误的历史记录。Hermes 在构建 API 消息时会自动修复常见的交替错误,例如把连续的用户消息合并为一条,或在 tool_calls 后插入必要的 tool 响应。
2.4.2 Prompt 构建:冻结快照与槽位设计
系统提示由若干"槽位"组成,按固定顺序拼装。每个槽位都有清晰职责:
- Agent 身份(Identity):优先使用
~/.hermes/SOUL.md,否则回退到prompt_builder.py中的DEFAULT_AGENT_IDENTITY - 工具感知行为指导:如何正确使用工具、何时使用
session_search回忆历史、对 GPT/Codex 模型的工具使用强制要求等 - Honcho 静态块(激活时):来自 Honcho 记忆 Provider 的人格/上下文数据。
- 可选系统消息:来自 config 或 API 参数的用户配置覆盖。
- 冻结MEMORY (环境/工作约定)快照:来自
~/.hermes/memories/MEMORY.md的持久记忆,约 800 token; - 冻结USER PROFILE(用户画像)快照:来自
~/.hermes/memories/USER.md的用户画像,约 500 token; - Skills 索引:当前可用技能的
{name, description, category}列表,约 3k token - 上下文文件:自动发现项目级文档
.hermes.md、AGENTS.md、CLAUDE.md、.cursorrules等。 - 时间戳 / 可选会话 ID。
- 平台提示:如"You are a CLI AI Agent. Try not to use markdown…"
当设置了 skip_context_files(例如子 agent 委托)时,不会加载 SOUL.md,而是使用硬编码的 DEFAULT_AGENT_IDENTITY。
关键设计:记忆与身份采用**冻结快照(frozen snapshot)**模式:记忆与身份在会话开始时一次性注入系统 prompt,期间即便 Agent 修改了文件,已构建的系统 prompt 也不会改变。这有两大好处:
- 保留缓存命中率:Anthropic 的 prefix cache 要求系统 prompt 前缀保持稳定。如果每轮都重新加载记忆文件,缓存会频繁失效,导致 token 成本大幅上升。
- 语义清晰性:Agent 在单轮对话中看到的"记忆"是静态的,不会因自己的写入操作而产生自我引用混乱。最新的记忆值始终通过 tool response 返回给 Agent。
具体示例:组装后的系统 prompt
以下是所有层都存在时最终系统 prompt 的简化视图(注释说明每个部分的来源):
|
|
2.4.3 Provider 运行时:模型选择与故障切换
hermes_cli/runtime_provider.py + agent/auxiliary_client.py 协同决定每次调用走哪家:
- Provider Routing:多家 Provider 排序成优先级链;
- Fallback Providers:主 Provider 报错(限流/网络/5xx)时自动切到下一家;视觉、压缩等辅助任务可以走单独的 fallback;
- Credential Pool:同一家 Provider 可挂多把 Key,按 round-robin / 限流自动轮换;
- Auxiliary Client:视觉描述、长 chat 摘要、压缩等"次要任务"走更便宜/更快的辅助模型。
模式解析顺序:显式 api_mode 参数 → Provider 特定检测(anthropic → anthropic_messages)→ Base URL 启发式(api.anthropic.com → anthropic_messages)→ 默认 chat_completions。
三种模式只是"运输方式"不同,内部统一收敛为 OpenAI 风格的 role/content/tool_calls 字典,可无感切换。
2.4.4 工具运行时
工具系统是 Hermes 与外部世界交互的"手脚"。它由三层组成:Registry(注册表)、Toolsets(分组)和 Dispatch(调度)。
1)三层架构
工具系统由三层组成:
- Registry:
tools/registry.py集中注册全部工具,每个工具是一个 Python 函数 + JSON Schema; - Toolsets:
toolsets.py把工具按用途分组(web、terminal、file、browser、memory、delegation等共 52 组);同时维护 平台预设(hermes-cli、hermes-telegram、hermes-discord、hermes-wecom等),定义"在某平台默认开哪些组"; - Dispatch:
model_tools.py在每次推理前把当前启用的工具 schema 收集起来作为可用工具列表,模型返回tool_calls后再调度执行。
2)工具发现机制
工具注册发生在导入时,早于任何 Agent 实例的创建。依赖链如下:
|
|
任何在顶层调用 registry.register() 的 tools/*.py 文件都会被自动发现——无需手动维护导入列表。这种设计让新增工具变得极其简单:创建一个 Python 文件,写好函数和 schema,调用 register(),重启 Hermes 即可生效。
3)终端工具
终端工具是 Hermes 最强大的工具之一,支持 7 种后端:
| 后端 | 描述 | 典型场景 |
|---|---|---|
local |
本地 shell | 个人开发机 |
docker |
本地 / 远程 docker 容器 | 沙箱、隔离执行 |
ssh |
远端 SSH | 操控生产服务器 |
daytona |
Daytona Serverless 工作空间 | 空闲 0 成本 |
modal |
Modal serverless | 自动 scale 的云端执行 |
singularity |
HPC Singularity 容器 | 大学/超算环境 |
tmux |
内嵌 tmux 会话视图 | 长进程观察 |
切换只需一条命令:hermes config set terminal.backend docker。不同后端共享相同的工具接口(terminal 工具的参数和返回值格式一致),Agent 无需关心命令实际运行在哪个环境中。
4)工具审批与安全
工具执行支持 并发(tool_concurrency) 与 审批回调(approval):
- 危险命令(
rm -rf /、修改/etc、数据库删除等)会触发tools/approval.py的检测; - CLI 用户会看到一个"是否允许"的交互式 prompt;
- Gateway 用户可以接到 DM 配对授权流程;
- 用户可在
~/.hermes/config.yaml中添加白名单,跳过特定命令的审批。
2.4.5 会话存储:SQLite + FTS5
Hermes 使用单一 SQLite 数据库 ~/.hermes/state.db 持久化所有会话数据。这替代了早期的逐会话 JSONL 文件方案,提供了更强的查询能力和一致性保证。
存储内容:
- 每条对话历史(与 OpenAI 格式 1:1 对应,便于恢复);
- 任务(task_id)、迭代、token usage、cost;
- 工具调用日志、轨迹;
- Skills 元数据;
- Cron 任务与执行历史。
Kanban 独立使用 kanban.db。启用 FTS5 全文索引,让 session_search 工具可快速检索。Gateway 自己也维护一份 gateway/session.py 中的 SessionStore,多平台对话与 Profile 相互隔离。
会话具有血缘追踪(跨压缩的父/子关系)、按平台隔离,以及带竞争处理的原子写入。
2.4.6 学习闭环:Memory + Skills + Curator + Honcho
Hermes 的"自我提升"机制由 4 个协作模块构成,形成从记忆沉淀→生成技能→自动梳理→用户精细化建模的完整闭环:
-
Memory Manager(
agent/memory_manager.py):Memory Manager 是记忆系统的编排中枢。它向 Agent 暴露memory(action=add|replace|remove, target=memory|user, content=...)工具,让 Agent 在对话中随时读写持久记忆。记忆分为两类:
- MEMORY.md:环境约定、项目规范、工具 quirks 等"事实性"记忆,约 800 token;
- USER.md:用户画像、偏好、习惯等"人格性"记忆,约 500 token。
这两份文件在会话开始时作为冻结快照注入系统 prompt。Agent 的写入操作会更新磁盘文件,但不会修改当前会话的系统 prompt——直到新会话开始时才生效。
-
Skills Manager(
hermes_cli/skills_config.py+skills/):管理~/.hermes/skills/下的所有技能;自动把每个技能注册成/<skill-name>斜杠命令;Skills 采用进度披露式加载(progressive disclosure):- Level 0:仅注入 Skills 索引(
{name, description, category}列表),约 3k token; - Level 1:当 Agent 调用
skill_view(name)时,注入该 Skill 的全文; - Level 2:Skill 引用文件按需加载。
这种设计让 Agent 在"知道有什么技能"和"知道技能详细内容"之间取得了平衡。
- Level 0:仅注入 Skills 索引(
-
Curator:Curator 是一个周期性"提示"机制。它会在适当时机(如会话结束、空闲时段)提醒 Agent 整理记忆、搬运重要事实、识别可技能化的步骤。
Curator 的工作包括:
- 识别对话中反复出现的模式,建议写入 MEMORY.md;
- 发现用户偏好的变化,更新 USER.md;
- 识别可复用的工作流,提示创建新 Skill;
- 清理过时或冗余的记忆条目。
-
Honcho Memory Provider(
plugins/memory/honcho/):Honcho 是一个可选的辩证用户建模后端,把零散的"用户偏好"整合成更紧凑的 `USER.md。与普通记忆系统不同,Honcho 不简单地"追加"用户偏好,而是:- 收集零散的"用户偏好"证据;
- 进行辩证推理(考虑矛盾偏好、时效性变化);
- 整合成更紧凑、更准确的
USER.md。
这种"建模"而非"记录"的方式,能显著减少用户画像中的噪声和矛盾。
这四大模块联动形成可持续自进化体系,让 Agent 在你的工作流里"越用越聪明"。
2.4.7 Gateway 内部:多平台分发
Gateway 是 Hermes 连接外部消息平台的桥梁。它把平台细节与 Agent 核心完全解耦,支持 Hermes 同时对接 20 +种消息平台。
|
|
关键能力:
- DM Pairing:陌生人发起对话需要先经过授权。默认情况下,所有 IM 平台拒绝未授权的私聊(DM),只有显式配对的用户才能让 Agent 干活。这是防止 Agent 被滥用的第一道防线。
- Cross-Session Mirror(
gateway/mirror.py):在不同平台的对话之间镜像消息,实现"在 Telegram 跟它说话,在 Slack 也能看到上下文"; - Status / Token Lock(
gateway/status.py):Profile 被多个进程同时启动。当 Gateway 正在运行时,CLI 或其他 Gateway 实例会检测到锁文件并给出友好提示。 - Hooks(
gateway/hooks.py):基于~/.hermes/hooks/下的HOOK.yaml + handler.py监听生命周期事件。可监听的事件包括agent:start、agent:end、command:*、message:received、message:sent等。Hooks 让 Hermes 能集成自定义的告警、日志、审批流程。
2.4.8 自动化层:Cron、Kanban、Webhook
除了即时对话,Hermes 还提供三种自动化机制,把它从"对话助手"升级为"自动化操作系统"。
1)Cron 调度器(cron/)
cron/ 模块独立维护一份调度表,每个 job 都跑在全新的 Agent 会话中。这意味着:
- 定时任务不会污染你的主会话历史;
- 每个任务都有独立的迭代预算和容错机制;
- 可以挂 0/1/N 个 skill,让任务按预定义工作流执行;
- 可以指定结果投递目标(
telegram://chat_id、wecom、邮件、文件等)。
Cron 任务以 JSON 格式存储,支持多种调度格式(类 crontab 表达式、自然语言时间等)。
2)Kanban 看板(hermes kanban)
hermes kanban + kanban_* 工具组提供了多 Profile 协作的 SQLite 任务板。
Kanban 与 delegate_task 的区别在于持久化和可恢复性:
delegate_task是"一次性"的子 Agent 委派,任务完成后子 Agent 销毁;- Kanban 是"持久化"的任务板,任务可以在多个 Profile 之间流转,支持人工介入、状态跟踪、历史回溯。
Kanban 适合"需要跨天执行、持久化、可恢复、需要人审批介入"的复杂工作流。
3)Webhook 集成
Gateway 的 webhook 平台 adapter 可以接收外部事件(GitHub PR、Stripe 支付、Slack action)并 trigger Hermes 任务。
典型场景:
- GitHub PR 创建 → Webhook → Hermes 执行代码审查 → 在 PR 中发表评论;
- Stripe 支付成功 → Webhook → Hermes 发送确认邮件;
- Slack action 点击 → Webhook → Hermes 执行指定工作流。
2.4.9 安全与隔离
Hermes 把"安全"作为一等公民:
- 危险命令检测:
tools/approval.py内置了多层危险命令检测:正则模式匹配rm -rf /、mkfs.*、dd if=/dev/zero等高危命令;用户可在~/.hermes/config.yaml加白名单; - Container Isolation:Docker 后端默认运行用户级容器,
--read-only:根文件系统只读;--cap-drop=ALL:丢弃所有 Linux capabilities;--network=none:禁止网络访问等可选; - DM Pairing:所有 IM 平台默认拒绝未授权 DM,只有显式配对的用户才能让 Agent 干活;
- Credential Files:API Key、SSH key 等敏感信息通过
tools/credential_files.py以文件形式透传到沙箱,避免直接 export 到环境变量。这减少了凭据在进程列表、日志、崩溃报告中泄露的风险。
2.11 研究与训练:Atropos / Trajectory
Hermes 把日常 Agent 跑出来的对话/工具调用直接当成 RL 训练数据:
batch_runner.py跑大量 prompt,输出 ShareGPT/Trajectory;environments/里实现了若干 Atropos 兼容的 RL 环境;trajectory_compressor.py提供轨迹压缩,便于训练;tinker-atropos、mini_swe_runner.py等脚手架让研究者能直接基于 Hermes 训练新一代工具调用模型,无需从零构建环境。
2.5 设计原则
Hermes 的六项核心设计原则,它们是理解架构决策的"北极星":
| 原则 | 实践含义 |
|---|---|
| Prompt 稳定性 | 系统 prompt 在对话中途不会改变。除用户显式操作(/model)外,不进行破坏缓存的变更。 |
| 可观测执行 | 每次工具调用均通过回调对用户可见。CLI(spinner)和 Gateway(聊天消息)中均有进度更新。 |
| 可中断 | API 调用和工具执行可被用户输入或信号在执行中途取消。 |
| 平台无关的核心 | 单一 AIAgent 类同时服务于 CLI、Gateway、ACP、批处理和 API 服务器。平台差异存在于入口点,而非 Agent 内部。 |
| 松耦合 | 可选子系统(MCP、插件、记忆 Provider、RL 环境)使用注册表模式和 check_fn 门控,而非硬依赖。 |
| Profile 隔离 | 每个 profile 拥有独立的 HERMES_HOME、配置、记忆、会话和 Gateway PID。多个 profile 可并发运行。 |
2.6 关键概念词典
| 英文 | 中文 | 含义 |
|---|---|---|
| AIAgent | 智能体核心 | run_agent.py 中那个对话循环对象 |
| Provider | 模型供应商 | OpenRouter / Anthropic / OpenAI 等 |
| API Mode | API 模式 | chat_completions / codex_responses / anthropic_messages |
| Toolset | 工具集 | 工具的逻辑分组 |
| Skill | 技能 | 一段可复用步骤说明(SKILL.md) |
| Memory / USER | 记忆 / 用户画像 | MEMORY.md / USER.md |
| Profile | 配置剖面 | 一份完整的"身份 + 配置 + 数据",可以并存多个 |
| Backend | 终端后端 | local / docker / ssh / modal 等 |
| Gateway | 网关 | 多平台消息分发进程 |
| Adapter | 适配器 | 某个具体平台的接入实现 |
| Hook | 钩子 | 在生命周期事件上跑用户代码 |
| Plugin | 插件 | 给 Hermes 加工具/记忆 provider/上下文引擎 |
| MCP | Model Context Protocol | 外部工具服务标准 |
| ACP | Agent Client Protocol | IDE 与 Agent 协议 |
| Curator | 策展子系统 | 提醒 Agent 整理记忆与提炼技能 |
| Trajectory | 轨迹 | 一次会话的结构化日志 |
| Kanban | 看板 | 多 Profile 协作的 SQLite 任务板 |
本章小结
本章建立了 Hermes 架构的完整"心智模型"。用十个要点回顾:
-
多入口、单核心、多后端的分层结构是 Hermes 的骨架。CLI、Gateway、ACP、API Server、Batch Runner、Python Library 六种形态共享同一个
AIAgent核心。 -
AIAgent是心脏。这个核心类负责 Prompt 组装、Provider 选择、工具调度、历史维护、容错处理、预算追踪和记忆持久化。 -
三种 API 模式(
chat_completions、codex_responses、anthropic_messages)让 Hermes 能跨 OpenAI/Codex/Anthropic 不变形地使用工具调用。模式选择遵循"构造参数 > Provider 检测 > base URL 启发式 > 默认"的优先级链。 -
Prompt 由 10 个槽位拼成,采用冻结快照与进度披露两种机制平衡 token 消耗与信息新鲜度。系统 prompt 在会话期间保持稳定,以最大化 Provider 侧缓存命中率。
-
Provider Runtime 通过解析优先级链、Fallback Providers、Credential Pool 和 Auxiliary Client,解决了"模型自由度"问题——用户可以在数十家 Provider 之间无缝切换。
-
7 种终端后端(local、docker、ssh、modal、daytona、singularity、tmux)解决了"运行环境自由度"问题。切换只需一条配置命令,工具接口完全统一。
-
SQLite + FTS5 是会话与任务的统一存储。FTS5 支持全文搜索。
-
Memory + Skills + Curator + Honcho 形成学习闭环。Agent 在日常对话中积累记忆、提炼技能、更新用户画像,实现"越用越聪明"。
-
Gateway 通过统一 Adapter 接口让 Hermes 同时在 20+ 平台上活着。DM Pairing、Cross-Session Mirror、Hooks 等机制保证了安全性与可扩展性。
-
Cron + Kanban + Webhook 把 Hermes 从"对话助手"升级为自动化操作系统,支持定时任务、持久化工作流和外部事件触发。
理解这些概念后,你已经具备了阅读 Hermes 源码、排查问题和定制扩展所需的全景视角。