Nous Research 的开源项目 hermes-agent 在 GitHub Trending 上以单日新增约 530 星的速度攀升,仓库总星数达到 24 万,fork 数 4.9 万,贡献者约 3,000 人。它是一个 MIT 协议的个人 AI 智能体框架:接上任意大模型 API,就能在终端、Telegram、Discord、Slack、WhatsApp、Signal 等入口里执行命令、读写文件、抓网页、跑定时任务。它的标签是「self-improving」——会自己写技能、改技能、存记忆的智能体。

安装是一条命令的事。Linux、macOS、WSL2、Termux 用 curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash,原生 Windows 用 PowerShell 跑 iex (irm https://hermes-agent.nousresearch.com/install.ps1),装完 hermes 直接进入对话。这篇展开讲它的三层设计:技能系统怎么组织知识、记忆系统怎么控制上下文成本、一个进程怎么同时服务六七个聊天平台。版本迭代快,具体行为以官方文档为准,本文基于 2026 年 9 月的代码和文档。
单个核心类 + 一条注册链
官方架构文档把整个系统画成一张图:六个入口(CLI、网关、ACP 适配器、批量运行器、API 服务器、Python 库)全部汇入同一个 AIAgent 类。run_agent.py 承载这个核心对话循环,负责提示词构建、供应商选择、工具执行、重试、回退、压缩和持久化。平台差异被推到入口层处理,核心类不关心消息来自终端还是 Telegram。
工具系统的组织方式是理解这个项目的关键。tools/registry.py 没有任何依赖,被所有工具文件导入;每个工具文件在 import 时调用 registry.register() 自注册;model_tools.py 导入 registry 并触发工具发现。这条依赖链意味着任何 tools/ 目录下带顶层注册调用的文件都会被自动发现,不需要手动维护导入清单。目前注册了 70 多个工具,分成约 28 个工具集。
终端工具支持 7 种后端:本地 shell、Docker、SSH、Daytona、Modal、Singularity、Vercel Sandbox。其中 Daytona 和 Modal 提供 serverless 持久化,空闲时环境休眠、按需唤醒,官方的说法是在闲置时段成本接近零。浏览器工具 10 个,网页抓取 4 种后端,MCP 客户端动态接入外部工具服务器。
供应商解析是另一个共享层。CLI、网关、cron、ACP、辅助调用全部走同一个运行时解析器,把 (provider, model) 元组映射到 (api_mode, api_key, base_url),支持 18 家以上供应商和三种 API 模式(chat_completions、codex_responses、anthropic_messages)。换模型用 hermes model 一条命令,配置层面切换,代码不动。
技能系统:三级加载的程序性知识
技能是按需加载的知识文档,遵循渐进披露(progressive disclosure)模式,兼容 agentskills.io 开放标准。加载分三级:
Level 0: skills_list() → [{name, description, category}] (~3k tokens)
Level 1: skill_view(name) → 完整内容 + 元数据
Level 2: skill_view(name, path) → 具体的 reference 文件Level 0 只载入名称和描述的索引,约 3,000 token;智能体判断某个技能与当前任务相关时才载入全文;技能内引用的脚本、模板、参考文件再按需读取第二层。对一个挂了上百个技能的实例来说,这个结构把常驻上下文成本压在一个固定的小额数字上。
技能文件是带 YAML frontmatter 的 Markdown:name、description、version,可选 platforms 字段限制操作系统,fallback_for_toolsets 和 requires_toolsets 控制条件激活,还能声明依赖的 config 项。正文按「何时使用 → 操作步骤 → 已知坑 → 验证方法」组织。这个格式的设计意图是把人写运维手册的习惯直接搬给智能体:踩过一次坑,就把绕坑路径固化成文件,下次同类任务直接复用。
技能的来源有四种:安装时自带的 bundled skills、从 Skills Hub(agentskills.io)安装的第三方技能、用户手写的、智能体自己创建的。智能体创建技能走 skill_manage 工具,默认落到 ~/.hermes/skills/,可以通过 skills.create_dir 配置改到任意目录,比如一个 git 仓库做版本管理。bundled 技能的更新机制值得单独说:每次 hermes update 时同步器会重算本地文件哈希,与安装时记录的 origin hash 比对,用户改过的文件标记为 user-modified 永久跳过,上游更新永远不会覆盖你的修改。
安全这块做了两层。内置扫描器在安装第三方技能时强制执行,整个包先进隔离区,记录来源 URL、内容哈希、扫描器版本和发现项到 lock.json。此外可以开启 NVIDIA SkillEvaluator Tier 1 作为第二道意见,做 PII 泄露检测、unicode 走私检测、脚本 lint 和静态安全扫描,这一层是建议性质的,扫描结果在安装确认前打印出来。
记忆:两个文件,硬性字数上限
记忆系统的设计相当克制。全部持久记忆就是两个文件:MEMORY.md(智能体的个人笔记,上限 2,200 字符,约 800 token)和 USER.md(用户画像,上限 1,375 字符,约 500 token)。每个会话开始时,这两个文件被注入系统提示词,作为冻结快照——会话中途写入的记忆立即落盘,但要到下一个会话才会出现在系统提示词里。这个设计是为了保住大模型供应商的前缀缓存:会话中途改系统提示词会让缓存全部失效。
字数上限到了之后系统不会静默丢数据,memory 工具返回错误,把当前的用量数字和待写入条目的大小一并报出来,智能体必须在同一轮里自己合并或删除旧条目,腾出空间再重试。这个机制把「记什么、忘什么」的决策留给了智能体本身:环境事实、项目约定、踩坑教训优先,过时的、能随时查到的信息被清出去。
写入路径有一个可选的审批闸门。默认状态是智能体自由写入,包括每轮对话结束后自动运行的后台复盘。后台复盘是一个独立的 fork:一轮对话结束后,系统复盘这轮交互里有什么值得沉淀的,自动写入记忆或修补已有技能。把 memory.write_approval 设为 true 后,所有写入(前台和后台)都要经过 /memory pending 列出、逐条 approve 或 reject。写错了关于你的假设,拒绝那条即可。
后台复盘本身也能省钱。默认跑在主对话模型上,重放对话命中已热的缓存;配置 auxiliary.background_review 指向便宜的模型后(文档给的例子是 OpenRouter 上的 Gemini Flash),fork 会自动重放一份压缩摘要而不是完整转录,官方引用的测试数字是成本降到约 1/3 到 1/5,记忆捕获质量持平,技能捕获接近持平。
跨会话检索靠 SQLite + FTS5 全文搜索。会话历史全部落库,带 lineage 追踪(压缩前后的父子关系),智能体可以搜自己的过往对话来回答「上次我们聊到 XX 时说了什么」这类问题。
网关:一个进程接所有聊天平台
消息网关是一个常驻进程,官方文档列出的适配器有 25 个以上:内置插件覆盖 Telegram、Discord、Slack、WhatsApp、Matrix、Mattermost、邮件、短信、钉钉、飞书、企业微信、IRC、LINE、Teams、Google Chat、Home Assistant 等;gateway/platforms/ 下还有 Signal、微信、QQ 机器人、WhatsApp Cloud 等内置适配器。
平台事件进来后走同一条路径:适配器把消息统一成 MessageEvent,网关做用户鉴权(白名单加 DM 配对),解析会话键,带上会话历史创建 AIAgent 实例,跑完对话循环后把响应从原适配器送回去。斜杠命令在 CLI 和消息平台之间共享——/model 换模型、/new 开新会话、/stop 中断当前执行,在 Telegram 里发和在终端里敲是同一个命令表。
用户授权做了两层:用户名白名单加 DM 配对(pairing)。这是个人智能体的现实需求——你不会希望随便一个加了机器人的陌生人能指挥它在你服务器上执行命令。安全文档还覆盖了命令审批(危险命令检测在 tools/approval.py)和容器隔离。
Cron:定时任务是一等智能体任务
cron 调度器存储在 JSON 文件里,支持多种 schedule 格式。它跑的不是 shell 命令,是完整的智能体任务:调度器触发时创建一个全新 AIAgent(不带历史),注入任务附带技能作为上下文,跑任务提示词,把结果投递到任意配置的消息平台。每天早上生成一份日报发 Telegram、夜里跑备份脚本、每周做一次审计,都用自然语言描述,无人值守运行。
研究侧的输出:轨迹数据
一个容易被忽略的模块是 batch_runner.py 和轨迹系统:从智能体会话生成 ShareGPT 格式的轨迹数据,用于训练下一代工具调用模型。Nous Research 本身是做模型训练的,这个框架同时是他们的数据采集管道——每个部署出去的智能体实例,理论上都能产出带工具调用标注的对话轨迹。这也解释了项目为什么把「可观测执行」(每次工具调用都通过回调对用户可见)列为设计原则:既是用户需求,也是数据质量需求。
设计原则清单里还有几条直接决定了日常使用体验:提示词稳定性(系统提示词在会话中途不变,除了显式的 /model 操作,否则缓存会碎)、可中断(API 调用和工具执行都能被用户输入或信号打断)、配置档案隔离(每个 profile 有独立的 HERMES_HOME、配置、记忆、会话和网关进程,多个 profile 可以并行跑)。
上手路径与边界
最小可用配置只需要一个模型 API key:装好后跑 hermes setup 向导,或 hermes setup --portal 用 Nous Portal 一站式接模型、搜索、生图、TTS、云浏览器。从 OpenClaw 迁移有专门的 hermes claw migrate,自动导入 SOUL.md、记忆、技能、API key 和消息平台配置,支持 --dry-run 预览。
成本结构看部署方式:本地跑只花电费和 API 钱;$5 的 VPS 就够挂一个常驻实例;serverless 后端把空闲成本压到接近零。对想长期挂一个「记得住事」的助手的开发者,这个框架给的自由度是目前开源项目里最高的一档:模型随便换,平台随便接,记忆和技能都在本地文件里,MIT 协议没有使用限制。
边界也要说清楚。它是框架不是成品,装完只解决「能跑」,要让它在具体环境里干活,配置消息平台、审批规则、技能库都有学习成本。后台自动写入记忆的默认行为有人会不适应,好在有审批闸门可开。Windows 原生版刚支持不久,杀毒软件对捆绑的 uv 二进制有误报,官方 FAQ 已经在教用户做白名单。工具越强,审批规则越值得花时间配,这是所有智能体框架的共同成本。
项目地址:github.com/NousResearch/hermes-agent,文档:hermes-agent.nousresearch.com/docs,MIT 协议。
来源:NousResearch/hermes-agent README、官方架构文档、Skills System 文档、Memory 文档