Hermes Agent 大師班

@akshay_pachaar
英語2 個月前 · 2026年5月13日
2.7M
4.2K
470
65
15.7K

TL;DR

本大師班涵蓋了 Hermes Agent 的架構,包括其三層記憶系統、透過 GEPA 實現的自我進化技能,以及如何部署用於程式編寫與研究的專業 Agent。

以下是您要求的繁體中文翻譯:

你需要了解的一切,以及如何自訂 Hermes Agent。自我進化的技能、三層記憶系統記憶體、GEPA 優化,以及如何從 1 個 Agent 擴展到 10 個全天候為你工作的 Agent。

Hermes Agent 在兩個月內在 GitHub 上突破了 90,000 顆星。開發者們正在悄悄地打造個人 AI Agent,這些 Agent 能學習他們的工作流程、記住他們的背景脈絡,並全天候運行。

Akshay 🚀 - inline image

你使用過的每一個 AI Agent 都有一個相同的問題:一旦你的會話結束,它就會忘記一切。

你的編碼偏好、你糾正過三次的專案慣例、昨天花了 10 分鐘才搞定的修復。全部消失。下一次會話,你又得從頭開始。

Nous Research 推出的 Hermes Agent 採取了一種根本不同的方法。它內建了一個學習循環,能夠:

  • 跨會話記住
  • 撰寫自己的可重複使用的技能
  • 在背景中修剪它們
  • 並透過名為 GEPA 的進化引擎在離線狀態下驗證它們

沒有其他開源 Agent 能同時結合這三者。即使是 OpenClaw 也不行。

本指南將涵蓋這個學習循環如何運作、每個記憶層的作用,以及如何從頭開始配置一切。

到最後,你將在你的機器上運行三個完全隔離的 Agent:一個程式設計師(使用你的 Claude Code)、一個深度研究員,以及一個設計師,每個都有自己的個性、記憶、技能和 Telegram 機器人。

看看這個:

<payloadblk_1" type="upload" />

整個設定只需幾分鐘,這裡的所有內容都可以在你的硬體上重現。

注意:本指南中的所有插圖均由 Pixel 設計,Pixel 是你在結尾你將學會建立的 Hermes Agent 之一。請在閱讀時留意它們。

讓我們開始吧!

如何閱讀本指南

分為兩部分:先理論,後實作。

時間有限?直接跳到「啟動與運行」。指令可以獨立運作。

但理論部分會帶來回報。了解技能如何自我進化、記憶如何組成,以及何時 GEPA 能發揮其價值,是區分你只是將 Hermes 當作一個有筆記的聊天機器人,還是將其視為一個能持續累積價值的工具。

接下來的內容:

  • Hermes Agent 到底是什麼。核心介紹,以及與 OpenClaw 的比較。
  • 它的架構。一張圖看懂架構。
  • 在記憶之前:Agent 是誰?SOUL.md,身份層。
  • 記憶系統。三層,三種速度。
  • 自我進化的技能。Agent 撰寫的操作手冊,加上 Curator。
  • GEPA。離線技能優化。
  • 啟動與運行。安裝、Telegram、第一個 Agent。
  • 運行多個 Agent。設定檔、三種角色、排程摘要。
  • 根據你的需求自訂 Agent。

Hermes 是什麼,以及它在架構上有何不同

一句話介紹:一個用越久越好的 Agent。

讓這成為現實的關鍵在於,三個通常各自獨立的能力被整合在一個框架中:運行時技能學習、持久的多層記憶,以及一個可選的權重訓練管道。沒有其他開源 Agent 能同時提供這三者。

在開源生態系統中,最接近的比較對象是 OpenClaw。兩者都是持久性的、適合訊息傳遞,但它們做出了相反的架構選擇。

Kilo 部落格中的一個清晰框架捕捉了這一點:「Hermes 將一個閘道包裝在一個學習型 Agent 周圍。OpenClaw 將一個 Agent 包裝在一個訊息傳遞閘道周圍。」

<payloadblk_2" type="upload" />

它的架構

在理解學習循環之前,你需要對 Hermes 的結構有一個基本認識。

所有流程都透過 run_agent.py 腳本中的一個 AIAgent 類別進行。CLI、訊息傳遞閘道、批次執行器、IDE 整合:它們都是進入同一個核心 Agent 的入口點。

這就是為什麼跨平台的故事能夠真正運作的原因。

<payloadblk_3" type="upload" />

核心循環是 ReAct 風格且同步的。建立系統提示詞、檢查是否需要壓縮、進行可中斷的 API 呼叫、執行任何工具呼叫、再次循環。

一些稍後會用到的一些細節:

  • Agent 可以在六個不同的地方執行指令。本地終端機、Docker、SSH、Modal、Daytona 或 Singularity。同樣的程式碼,只需更改配置。將執行從你的筆記型電腦轉移到雲端 GPU 伺服器,而無需觸及其他任何東西。
  • 它幾乎可以與任何模型配合使用。一個翻譯層將任何提供者路由到三種 API 格式之一。這就是為什麼你可以用一條指令從 Claude 切換到 GPT,再到 Gemini,再到本地 Ollama,而不會出錯。
  • Agent 每個任務有 90 輪的硬性上限。如果沒有這個限制,陷入循環的 Agent(重試失敗的 API、重新讀取同一個檔案)會默默地消耗你的額度。子 Agent 共享同一個預算,因此失控的委派鏈也無法繞過這個限制。

這些就是足夠的基礎知識。現在是更有趣的部分。

在記憶之前:Agent 是誰?

在我們討論記憶和自我進化的技能之前,有一個層級位於兩者之上:身份。

記憶是 Agent 知道的東西。技能是它做事的方式。但這兩者都無法告訴你它出現時是誰。沒有身份層,每個 Agent 感覺都像是同一個 Agent 戴著不同的帽子。

Hermes 用一個檔案解決了這個問題:SOUL.md。

它位於 ~/.hermes/SOUL.md,並佔據系統提示詞中的第一個位置,在所有其他內容載入之前。它定義了 Agent 的個性、語氣、溝通風格和硬性限制。

SOUL.md 是手動撰寫且靜態的。你一次,隨著時間推移進行調整,並且在每個專案和每個中都保持一致。如果該檔案遺失,Hermes 會回退到內建的預設身份。

為什麼這對自我改進的故事很重要?因為接下來的一切(Agent 寫入的記憶、它建立的技能、它鞏固知識的方式)都是透過這個身份的鏡頭來發生的。

SOUL.md 是固定的框架。記憶和技能是其中的活動部件。

記憶系統:三層,三層,三種速度

Hermes 沒有單一的「記憶」。它有三個層級,每個層級都為不同的目的而設計。

<payloadblk_4" type="upload" />

第一層:兩個小型 Markdown 檔案。

核心是儲存在磁碟上的兩個檔案:

  • MEMORY.md(最多 2,200 個字元)保存 Agent 關於你的環境、專案慣例、工具特性以及學到的教訓的筆記。
  • USER.md(最多 個字元)保存你的個人資料:姓名、溝通偏好、技能等級以及應避免的事項。

兩者都會在會話開始時作為凍結的快照注入到系統提示詞中。如果 Agent 在會話期間寫入了新的記憶條目,該變更會立即持久化到磁碟,但直到下一次會話才會出現在系統提示詞中。

當記憶體接近滿載時(約 80% 容量,在系統提示詞標題中以百分比顯示),Agent 必須進行合併。

它將相關條目合併成更密集、資訊量更大的版本,以便只保留有用的資訊。

第二層:全文會話搜尋。

每次對話(CLI 和訊息傳遞)都儲存在 SQLite 中,並啟用全文搜尋。Agent 可以從中搜尋數週的過去對話。

取捨很明確:第一層始終在上下文中,但容量很小。第二層具有無限容量,但需要主動搜尋加上 LLM 摘要。

關鍵事實存在於記憶中。其他所有內容則可按需搜尋。

第三層:外部記憶提供者(8 個外掛)。

為了更深層的持久記憶,Hermes 內建了 8 個可插拔提供者,它們與內建記憶體並行運行(絕不取代它)。一次只能啟動一個提供者。

當任何外部提供者啟動時,Hermes 會自動在每一輪之前預先擷取相關記憶,在每次回應之後同步對話輪次,並在會話結束時提取記憶。

<payloadblk_5" type="upload" />

自我進化的技能:Agent 撰寫自己的操作手冊

記憶處理事實。技能處理程序。

技能是帶有 YAML 前置中繼資料的 Markdown 檔案,作為 Agent 的程序性記憶:不是它知道什麼,而是它如何做事。

以下是技能的結構:

為了降低 Token 成本,技能使用漸進式揭露:

<payloadblk_6" type="upload" />

  • 等級 0:Agent 只看到名稱和描述(整個目錄約 3k Token)
  • 等級 1:當它實際需要某個技能時,才載入完整的技能內容
  • 等級 2:它可以在技能內深入特定的參考檔案

自我改進循環。

這是核心差異化因素。Agent 使用 skill_manage 工具自主建立自己的技能。技能建立會在以下情況觸發:

  • Agent 完成一個複雜的任務(5 個以上的工具呼叫)
  • 它遇到錯誤或死胡,並找到可行的路徑
  • 使用者糾正了它的方法
  • 它發現了一個非平凡的工作流程

所以循環是這樣的:Agent 遇到問題 → 透過反覆嘗試解決它 → 將成功的方法儲存為 SKILL.md 檔案 → 下次遇到類似問題時,它載入技能並遵循經過驗證的程序,而不是從頭開始重新發現該方法。

該工具支援六個動作:createpatch(針對性修復,首選,因為 Token 效率高)、edit(完整重寫)、deletewrite_fileremove_file

<payloadblk_7" type="upload" />

Curator:技能的垃圾回收。

如果沒有維護,Agent 建立的技能會堆積起來。你最終會得到數十個狹窄、重疊的操作手冊,浪費 Token 並污染目錄。

Curator 是一個處理此問題的背景維護系統。它基於非活動檢查運行(不是 cron 守護行程):如果自上次運行以來已經過了 7 天,並且 Agent 已經空閒了 2 個小時以上,則 Agent 的一個背景分支會啟動,擁有自己的提示詞快取,絕不觸及活躍的對話。

它分兩個階段運作:

  1. 自動轉換(確定性,無 LLM):30 天未使用的技能變為過時。90 天未使用的技能會被封存。
  2. LLM 審查(最多 8 次疊代):一個分支 Agent 調查所有 Agent 建立的技能,並決定每個技能是要保留、修補、合併還是封存。

兩個重要的限制:

  • Curator 絕不觸及捆綁或從中心安裝的技能。只有 Agent 撰寫的技能才會被處理。
  • 它絕不自動刪除。最壞的結果是封存到 ~/.hermes/skills/.archive/,可以用一個指令復原。

在每次 Curator 執行之前,Hermes 會對整個技能目錄進行 tar.gz 快照。回滾只需一個指令,並且回滾本身是可逆的。

你也可以使用 hermes curator pin <skill> 固定關鍵技能,以保護它們不被封存或刪除。修補和編輯仍然會進行,因此 Agent 可以改進已固定的技能,而無需你先取消固定它。

<payloadblk_8" type="upload" />

GEPA:使用執行追蹤離線進化技能

這裡變得有趣了。

Agent 內部的學習循環(技能建立 + Curator)有一個已知的弱點:

  • Agent 傾向於自我滿足。它幾乎總是認為自己表現良好,即使事實並非如此。社群回饋已證實了這一點。
  • 同一個自動產生技能的系統也可能用更差的版本覆蓋手動自訂。

這就是 GEPA 登場。

GEPA(遺傳-帕累托提示進化)並未內建於 Hermes 執行環境中。它位於一個配套的儲存庫(NousResearch/hermes-agent-self-evolution)中,並作為一個離線優化管道運作。已發表為 ICLR 2026 口頭論文,採用 MIT 授權。

核心想法:與其問 Agent「你表現得好嗎?」,GEPA 讀取執行追蹤來理解為什麼事情失敗了,然後透過進化搜尋提出有針對性的改進。

管道:

  1. 從 Hermes 儲存庫讀取當前技能
  2. 生成評估資料集(透過 Claude Opus 生成的合成測試案例、來自 SQLite 的真實歷史記錄,或人工策劃的黃金集)
  3. 執行 GEPA 優化器:讀取執行追蹤 → 理解失敗點 → 生成候選變體
  4. 使用 LLM 作為評審,根據評分標準(非二元通過/失敗)對候選進行評分
  5. 應用約束閘門:完整測試套件必須 100% 通過,技能保持在 15KB 以下,快取相容性得以保留,語義目的不會偏移
  6. 最佳變體作為 PR 提交到 Hermes 儲存庫。絕不直接提交。

不需要 GPU。所有操作都透過 API 呼叫進行。成本:每次優化運行約 2-10 美元。

這在初期可以跳過,但當你遇到瓶頸且不想花費時間和金錢進行微調時,它非常有效。

更多詳細資訊請參閱此儲存庫 →

<payloadblk_9" type="upload" />

我最近寫了一篇關於 GEPA 的文章。

在轉向完整的微調或基於 RL 的微調之前,這是一個很好的替代方案。

<payloadblk_10" type="upload" />

好的,總結一下:

SOUL.md 設定身份。運行時循環捕捉經驗。Curator 保持技能庫清潔。GEPA 確保技能庫中的內容確實有效。

以上就是完整的理論。現在讓它在你的機器上運行。

啟動與運行

Linux、macOS 或 WSL2。Python 3.11+ 隨安裝程式附帶。8GB RAM 對於基於 API 的使用來說是足夠的。

一行指令安裝:

運行設定精靈。它會引導你完成提供者、API 金鑰、模型和工具的選擇:

在終端機中開始聊天:

將其連接到 Telegram:

如果你想從手機而不是終端機與你的 Agent 交談,請將其指向一個 Telegram 機器人。

@BotFather 取得機器人 Token(執行 /newbot),然後從 @userinfobot 取得你的 Telegram 使用者 ID。

就是這樣。就是這樣。你現在有一個可以運作的 Agent:

~/.hermes/ 中的內容

安裝完成後,你的家目錄會得到一個新資料夾。

了解這個佈局很重要,因為你使用 Hermes 所做的每一件事都會觸及這些路徑之一。

有幾個檔案值得仔細看看。

  • config.yaml 是所有非機密資訊的真相來源。模型選擇、終端機後端、工具啟用、MCP 伺服器都在這裡。使用 hermes config edit 編輯,或使用 hermes config set <key> <value> 逐一設定值。
  • .env 保存你的機密。API 金鑰、機器人 Token、密碼。Hermes 會自動將看起來像機密的值路由到這裡。
  • SOUL.md 是系統提示詞中的第一個位置,在所有其他內容之前。身份層,前面已經介紹過。
  • skills/ 是整個學習循環所在的地方。Agent 建立的每個技能,以及你安裝的所有東西,都會放在這裡。
  • state.db 是支援會話搜尋的 SQLite 資料庫。WAL 模式安全,FTS5 索引。這就是讓「我們三週前討論了什麼?」這個功能真正運作的原因。

你不需要手動編輯大部分內容。但了解佈局能讓其他一切變得清晰。

新增技能

Hermes 維護著自己的官方 技能中心,擁有橫跨 18 個類別的 687 個技能。分類如下:

  • 87 個內建技能,隨 Agent 一同提供
  • 79 個可選技能,可按需啟用
  • 16 個來自 Anthropic(前端設計、pdf、pptx、docx、mcp-builder 等)
  • 505 個來自 LobeHub(更廣泛的社群貢獻)

<payloadblk_11" type="upload" />

你也可以將任何 GitHub 儲存庫新增為自訂 tap:

這就是你如何在團隊中分享技能或維護你自己的私有收藏。

從 1 個 Agent 擴展到 10 個 Agent

一個 Agent 很好。多個專門化的 Agent 才是 Hermes 真正有趣的地方。

Hermes 有一個名為「設定檔」的一級功能。每個設定檔是一個完全隔離的 Hermes 實例,擁有自己的配置、記憶、技能、和 SOUL.md。它們預設不共享任何東西。

我們將設定三個:一個設計師、一個程式設計師和一個研究員。

建立一個團隊

--clone 會複製你的預設設定檔的 config 和 .env 作為起點。

為每個設定檔賦予自己的 Telegram 自己的 Telegram 機器人

每個設定檔需要自己的 BotFather 機器人。Telegram 只允許每個 Token 每個 Token 」

執行 /newbot 三次,並儲存三個 Token。然後為每個設定檔執行一次閘道精靈:

設定過程與一般 Agent 完全相同,你可以再次在 BotFather 中建立新的機器人,並將它們連接到各自的 Agent。

透過 SOUL.md 賦予每個設定檔的 SOUL.md。

設計師的 SOUL.md 位於 ~/.hermes/profiles/designer/SOUL.md:

看看這些例子:

<payloadblk_12" type="upload" />

程式設計師的 SOUL.md 位於 ~/.hermes/profiles/programmer/SOUL.md:

研究員的 SOUL.md 位於 ~/.hermes/profiles/researcher/SOUL.md:

自訂程式設計師:透過 Claude Code 路由執行

如果程式設計師不僅自己撰寫程式碼,而是將執行委派給 Claude Code CLI,它會變得更有趣。Hermes 負責協調。Claude Code 負責檔案編輯、執行指令、管理 git。Hermes 讀取結果並決定下一步。

這也是我如何在我的 Claude Max 訂閱之上運行我的 Agent 的方式。不需要單獨的 API 金鑰。Claude Code 會自動使用 Max 憑證。

開始一個會話並發送這個單一的啟動提示詞:

我已經有 Claude Max 訂閱。你是我的資深工程師,負責協助我處理日常編碼任務,並且在底層你使用 Claude Code 進行所有執行。請相應地設定好你自己。

程式設計師會自行安裝 autonomous-ai-agents/claude-code 技能,驗證 claude 是否在 PATH 中,並開始使用它進行程式碼執行。從下一條訊息開始,任何與編碼相關的事情(讀取檔案、撰寫程式碼、執行測試、提交、推送)都會在底層透過 Claude Code 路由。

有兩件事值得知道:

  • 確保 claude 在你的 PATH 中,然後再啟動。which claude 應該印出一個真實的二進位路徑。
  • Claude Code 有列印模式(一次性、快速、無 TUI)和互動模式(完整的 tmux 會話)。程式設計師會根據任務選擇。你不需要擔心這個。

自訂設計師:教導它你的視覺風格

當設計師能夠以你的風格生成圖像,而不是通用的 AI 輸出時,它會變得真正有用。模式:提供參考設計,讓它學習,要求它建立一個技能,用於生成相同風格的新圖像。

這是將自我改進循環用作設定機制。你不是手動撰寫技能,而是向 Agent 展示好的例子,並要求它自己編碼這個模式。

與設計師開始一個會話,貼上你的參考圖像(在 CLI 中拖放,或在 Telegram 中附加)。然後發送這個提示詞:

設計師會學習參考資料,撰寫 SKILL.md,生成 Python 腳本,將其儲存在 ~/.hermes/profiles/designer/skills/my-design-style/ 下,並驗證腳本可以運行。

如果你已經執行過 hermes setup 並選擇了 OpenRouter 作為你的提供者,那麼金鑰已經透過 --clone 存在於設計師設定檔的 .env 中了。如果沒有,請新增一次:

從那時起,要求設計師生成新的插圖就會觸發這個技能。它會撰寫一個基於你的風格特徵的提示詞,透過 OpenRouter 呼叫 Nano Banana,並儲存輸出。

同樣的模式適用於任何需要特定風格的輸出。提供參考內容,要求 Agent 建立一個能複製該模式的技能。電子報引言、X 貼文、程式碼審查意見,任何需要一致性的地方。

排程工作:用白話文設定 Cron

研究員的 SOUL.md 說它負責每日 Telegram 摘要。這意味著一個按自己的排程運行的任務,而無需你記得去要求。這就是 Hermes cron 的用途。

Hermes 內建了一個排程器。閘。閘道守護行程每 60 秒檢查一次,在隔離的 Agent 會話中運行任何到期的任務,並將輸出傳送到你指定的任何訊息傳遞平台。任務在重新啟動後仍然存在。它們位於 ~/.hermes/cron/jobs.json,輸出則位於 ~/.hermes/cron/output/

<payloadblk_13" type="upload" />

有趣的部分:你不需要撰寫 cron 表達式。你用英文描述你想要什麼,Hermes 會轉換它。

設定研究員的每日摘要

與研究員開啟一個會話,並發送這個提示詞:

研究員使用其 cronjob 工具建立任務,傳遞目標預設為當前聊天(此處為 Telegram),然後排程器接管。驗證它是否已建立:

你應該看到該任務及其下一次排程運行時間。明天早上 8 點,你的 Telegram 會亮起,顯示摘要。無需進一步操作。

其他有用的模式

Cron 語法很靈活。一些值得知道的變體:

  • 一次性延遲。/cron add 30m "提醒我檢查建置" 在 30 分鐘後運行一次。
  • 重複間隔。/cron add "every 2h" "檢查伺服器狀態" 每兩小時運行一次。
  • 標準 cron 表達式。/cron add "0 9 * * 1-5" "..." 用於精確控制。此例為工作日上午 9 點。
  • 技能附加。/cron add "every 1h" "摘要新的 feed 項目" --skill blogwatcher 在運行提示詞之前載入一個技能。

你也可以串聯任務。一個 cron 的輸出透過 context_from 標誌成為下一個 cron 的輸入。對於多階段自動化很有用,例如你想要一個研究步驟來餵養一個寫作步驟。

就到這裡了。

感謝閱讀。請在留言中告訴我你希望我接下來涵蓋什麼主題。

如果你更喜歡透過影片學習,我將在幾天內在 YouTube 和 X 上發布完整的 Hermes Agent 教學。

敬請期待!

乾杯! :)

存到 YouMind

使用 YouMind 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind

更多可拆解樣本

近期爆款文章

探索更多爆款文章