Hermes Agent 核心架构

把它想成一个住在你电脑里的助理:它有大脑、有手脚、能记事,还能通过很多渠道跟你说话。

01四个部分,一个核心

中间那个「agent 核心」就是一段循环程序,负责把另外四块串起来。

👂

入口(耳朵和嘴)

你从哪跟它说话
  • Desktop 桌面 App
  • 命令行 CLI / TUI
  • Telegram、Discord、Slack、微信…约 20 个平台
  • 定时任务(cron)自己唤醒
🧠

大脑 = 大模型

负责想,不负责做
  • 你现在用的:claude-opus-4.6(经 OpenRouter)
  • 可换 Nous、Codex 等其他 provider

agent 核心(循环)

问大脑 → 照着用手脚 → 把结果告诉大脑 → 再问…
直到大脑说「我答完了」

🖐

手脚 = 工具

真正在你电脑上干活
  • 跑终端命令、读写文件
  • 开浏览器、上网搜索
  • 派小弟(子 agent)
📒

记忆

让它越用越懂你
  • 便签、技能手册、聊天记录
  • 全部存在 ~/.hermes

02最核心的一件事:思考 ↔ 动手 的循环

大模型本身只会「说话」,没法跑命令。agent 的本事就在这个循环:模型说「帮我跑一下 xx」,程序就真去跑,再把结果念给模型听。

① 问大脑 发上下文 + 工具清单 ② 大脑回答 要调工具? ③ 动手 在你电脑上执行 ④ 记下结果 塞回上下文 不需要工具了 → 把答案发给你,结束
# agent/conversation_loop.py 的骨架(简化)
while 没超过 500 步 and 没被你打断:
    回复 = 问模型(历史消息, 工具清单)
    if 回复 要调工具:
        for 每个工具调用:
            结果 = 执行工具(名字, 参数)
            历史消息.追加(结果)
    else:
        return 回复.文字   # 答完了

一句「帮我整理下载文件夹」,背后可能是十几轮「看目录 → 移文件 → 再看一眼」。

03每次问大脑时,到底发了些什么

模型自己什么都不记得,每次都要把「它是谁、它知道什么、它能干什么、聊到哪了」整包发过去。

上半截:整场对话一个字都不改(系统提示)
人格 SOUL.md「你是 Hermes,说话直接、不说废话…」决定它的性格和口吻
记忆便签MEMORY.md(它记的事)+ USER.md(关于你的事),各约 2000 字上限
技能目录装了哪些技能手册(research、email、devops…),只列标题,用到再翻开
项目说明当前文件夹里的 AGENTS.md 之类,告诉它这个项目的规矩
工具清单每个工具的名字、用途、参数格式(终端、浏览器、文件…)
下半截:越聊越长
聊天历史你说的、它说的、每次工具执行的结果
你的新消息比如「你好」
为什么上半截不能改? 模型服务商会缓存「和上次一模一样的开头」,命中缓存就便宜很多、也更快。所以 Hermes 定了条铁律:对话中途绝不改系统提示。比如你中途装了新技能,要到下一个会话才生效。

04它怎么「越用越懂你」

四种记忆机制,各管一件事。

📝 便签 · memory 工具

记住关于你的事

它觉得值得记的(你的偏好、常用路径),主动写进 MEMORY.md / USER.md,下次开聊自动带上。

📚 技能手册 · skills

记住怎么做一件事

一份份「操作说明书」,可以装现成的,也能让它干完一件事后自己总结成新技能。

🔎 翻旧账 · session_search

查以前聊过什么

所有对话存在本地 SQLite,支持全文搜索。「上周让你查的那个…」它能翻出来。

🗜 压缩 · compression

聊太长时自动瘦身

上下文快满(约 50%)时,先删旧工具输出,再让一个辅助模型把前面的对话写成摘要。这是唯一允许改历史的情况。

05工具箱:它的手脚

下面是默认带的核心工具(toolsets.py),每次问大脑都会附上这份清单。

💻 电脑操作

terminalprocess_manageexecute_codecomputer_use

跑命令、跑代码、直接操作屏幕

📁 文件

read_filewrite_filepatchsearch_files

读、写、改、搜

🌐 上网

web_searchweb_extractbrowser_exec

搜索、抓网页、驱动真浏览器

👥 分身与排程

delegate_taskcronjob_managekanban_*

派子 agent 并行干活、定时任务、看板派活

🧠 自我管理

memorytodo_listskill_manageclarify

记笔记、列待办、写技能、不确定时反问你

🎨 多媒体

vision_analyzeimage_generatetext_to_speech

看图、画图、说话

🛡 安全闸(tools/approval.py):删文件这类危险命令不会直接跑,会先停下来问你批不批。Telegram 上会变成一个按钮让你点。你连续拒绝 3 次,它会停下来不再硬试。

06一个核心,处处可用

不管从哪个入口进来,跑的都是同一个 agent 核心。新能力尽量做成插件或技能挂在外面,核心保持精简:这是 Hermes 的第二条设计原则。

DesktopCLITUI TelegramDiscordSlack 微信 / 飞书 / 钉钉Emailcron 定时
入口:只负责「收消息、发消息」
↓
agent 核心(同一份代码:run_agent.py)
↓
核心工具技能 skills插件 plugins MCP 服务模型 provider
能力:按需挂载,不往核心里塞

所以你在 Desktop 里聊的、在 Telegram 里聊的,用的是同一个助理、同一份记忆。只是 Telegram 消息要经过你电脑上的 gateway 进程转进来。