這堂大師課程涵蓋什麼
Hermes Agent 在兩個月內突破了 90,000 個 GitHub 星。開發者們正在悄悄地建構學習他們工作流程、記住他們的上下文、全天候運行的個人 AI 代理人。本指南涵蓋學習循環如何運作、每個記憶層級的功能,以及如何從零開始配置一切。
學完後,你將擁有三個完全隔離的代理人,在你的機器上運行——一個程式設計師(委派給你的 Claude Code)、一個深度研究員和一個設計師——每個都有自己的個性、記憶、技能和 Telegram 機器人。
兩個部分:先理論,後實作。 時間緊迫?直接跳到快速上手——指令可以獨立使用。但理論是有回報的:了解技能如何自我演化、記憶如何組合、以及 GEPA 何時值得使用,是把當作帶有筆記的聊天機器人使用和當作一個會複利成長的系統使用之間的差異。
Hermes 的本質
一句話:一個你用得越久就變得越好的代理人。
讓這成為現實的是三個通常分離的能力整合在一個框架中:運行時技能學習、持久多層記憶和可選的權重訓練管線。沒有其他開源代理人同時提供這三者。
在開源生態系中最接近的比較是 OpenClaw。兩者都是持久的且對訊息友善,但它們做出了相反的架構選擇。一個乾淨的描述:"Hermes 在學習代理人周圍打包了一個閘道器。OpenClaw 在訊息閘道器周圍打包了一個代理人。"
架構
所有內容都透過 run_agent.py 腳本中的單一 AIAgent 類別流動。CLI、訊息閘道器、批次執行器、IDE 整合——它們都是進入相同核心代理人的入口點。這就是為什麼跨平台的敘事能夠真正運作。
核心循環是 ReAct 風格且同步的:建立系統提示、檢查是否需要壓縮、進行可中斷的 API 呼叫、執行任何工具呼叫、再次循環。幾個後續會很重要的細節:
- 代理人在六個不同環境中執行指令 — 本地終端機、Docker、SSH、Modal、Daytona 或 Singularity。相同的程式碼,只需更改設定。將執行環境從筆電移到雲端 GPU 伺服器,無需修改其他任何東西。
- 它幾乎與任何模型相容。 一個翻譯層將任何供應商透過三種 API 格式之一路由。一條指令就能從 Claude 切換到 GPT 再到 Gemini 或本地 Ollama,不會有任何中斷。
- 代理人的單一任務硬性上限是 90 輪。 沒有這個限制,卡在迴圈中的代理人會靜默消耗你的額度。子代理人共享相同的預算,所以失控的委派鏈也無法偷偷超限。
記憶之前:代理人的身份是誰?
記憶是代理人知道的東西。技能是它做事的方式。但兩者都沒告訴你它是誰。Hermes 用一個檔案解決這個問題:SOUL.md。
它位於 ~/.hermes/SOUL.md,佔據系統提示中的第一位,在任何其他內容載入之前。它定義了個性、語氣、溝通風格和硬性限制。
# SOUL.md
You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness
over politeness theater.
SOUL.md 是手動編寫且靜態的——寫一次,隨著時間微調,它會在每個專案和工作階段保持一致。如果檔案不存在,Hermes 會使用內建的預設身份。後續的一切(代理人寫的記憶、它建立的技能)都透過這個身份的視角發生。
記憶系統:三層、三種速度
Hermes 沒有一個單一的「記憶」。它有三個層級,每個都有不同的目的。
第一層——兩個小型 Markdown 檔案。 MEMORY.md(最多 2,200 字元)保存代理人關於你的環境、慣例、工具特性和經驗教訓的筆記。USER.md(最多 1,375 字元)保存你的個人檔案:姓名、溝通偏好、技能水準、需要避免的事項。兩者在工作階段開始時作為凍結快照注入系統提示。當記憶填滿(約 80% 容量,在系統提示標頭中顯示),代理人會整合——將相關條目合併為更緊密的版本,只保留有用的資訊。
第二層——全文工作階段搜尋。 每段對話(CLI 和訊息)都儲存在 SQLite 中,支援全文搜尋。代理人可以搜尋數週的過去對話。取捨:第一層始終在上下文中但很小;第二層無限容量但需要主動搜尋加上摘要。關鍵事實存在記憶中;其他一切可按需搜尋。
第三層——外部記憶供應商(8 個外掛)。 為了更深層的持久記憶,Hermes 附帶 8 個可插拔供應商,與內建記憶並行運行(永不替換)。同一時間只有一個可以啟用。啟用時,Hermes 在每輪之前預取相關記憶,在每次回應後同步,並在工作階段結束時提取記憶。
自我演化技能
記憶處理事實。技能處理程序。技能是帶有 YAML 前言的 Markdown 檔案,作為代理人的程序記憶——不是它知道什麼,而是它如何做事。
---
name: k8s-pod-debug
description: >
Activate for crashing pods, CrashLoopBackOff,
"why is my pod restarting", container failures.
version: 1.2.0
author: agent
platforms: [linux, macos]
---
## Procedure
1. Get pod status → check events → pull logs
2. Look for OOMKilled, ImagePullBackOff, config errors
## Pitfalls
- Forgetting --previous flag on restarted containers
## Verification
- Pod stays Running with 0 restarts for 5+ minutes
為了降低 token 成本,技能使用漸進式揭露:第 0 層,代理人只看到名稱和描述(完整目錄約 3k token);第 1 層,需要時載入完整技能內容;第 2 層,可以深入特定參考檔案。
自我改進循環是核心差異化因素。代理人透過 skill_manage 工具自主建立自己的技能。當它完成複雜任務(5 次以上工具呼叫)、遇到錯誤並找到有效路徑、被修正、或發現非平凡的工作流程時,就會觸發建立。循環:遇到問題→透過試錯解決→將成功的方法儲存為 SKILL.md→下次載入技能並遵循已驗證的程序,而非重新發現。
Curator 是技能的垃圾回收。沒有維護,代理人建立的技能會堆積。它透過不活躍檢查運行——如果距上次運行已過 7 天且代理人已閒置 2 小時以上,一個帶有自身提示快照的背景分叉會啟動,永遠不會觸及對話。它進行確定性的自動轉換(30 天未使用→過時,90 天→歸檔)和 LLM 審查(最多 8 次迭代),逐個技能決定保留、修補、整合或歸檔。兩個約束:它永遠不會觸及內建或 Hub 安裝的技能,而且永遠不會自動刪除——最壞的結果是可恢復的歸檔。你可以用 hermes curator pin <skill> 鎖定關鍵技能。
GEPA:離線優化技能
代理人內部循環有一個已知弱點:代理人傾向於自我肯定——它幾乎總是認為自己表現良好,即使並非如此。同樣的系統能自動生成技能,也可能用更差的版本覆蓋手動自訂。
GEPA(Genetic-Pareto Prompt Evolution)解決了這個問題。它不是內建在運行時中——它位於一個伴隨倉庫(NousResearch/hermes-agent-self-evolution),作為離線最佳化管線運行(一篇 ICLR 2026 Oral 論文,MIT 授權)。GEPA 不是問代理人「你做得好嗎?」,而是讀取執行追蹤以理解為什麼失敗,然後透過進化搜尋提出針對性的改進。
管線:讀取當前技能→生成評估資料集(合成測試案例、真實工作階段歷史或人工策劃的黃金測試集)→運行最佳化器(讀取追蹤、理解失敗、生成候選變體)→使用 LLM-as-judge 評分標準評估→應用約束門檻(完整測試套件必須 100% 通過、技能保持在 15KB 以下、快取保留、目的不漂移)→最佳變體以PR的形式提交到 Hermes 倉庫,永遠不是直接提交。不需要 GPU——每次執行約 $2–10。初期可以跳過,但當你遇到瓶頸且不想花費在微調上時,它非常有效。
總結:SOUL.md 設定身份,運行時循環捕捉經驗,Curator 保持技能庫整潔,GEPA 確保技能庫中的內容確實有效。
快速上手
Linux、macOS 或 WSL2。安裝程式附帶 Python 3.11+。API 使用 8GB RAM 就夠了。
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc # or ~/.zshrc
運行設定精靈(供應商、API 金鑰、模型、工具),然後在終端機開始聊天:
hermes setup
hermes
連接 Telegram: 從 @BotFather 取得機器人 token(執行 /newbot),然後從 @userinfobot 取得你的 Telegram 使用者 ID。將 Hermes 指向該機器人,你就有一個在手機上運作的代理人了。
~/.hermes/ 中有什麼
~/.hermes/
├── config.yaml # Main configuration
├── .env # API keys and secrets
├── auth.json # OAuth provider credentials
├── SOUL.md # Agent identity (slot #1 in system prompt)
├── memories/
│ ├── MEMORY.md # Persistent agent facts
│ └── USER.md # User model
├── skills/ # All skills (bundled, hub, agent-created)
├── sessions/ # Per-platform session metadata
├── state.db # SQLite session store with FTS5
├── cron/
│ ├── jobs.json # Scheduled jobs
│ └── output/ # Cron run outputs
├── plugins/ # Custom plugins
├── hooks/ # Lifecycle hooks
├── skins/ # CLI themes
└── logs/ # agent.log, gateway.log, errors.log
config.yaml 是所有非機密設定的真實來源(用 hermes config edit 編輯)。.env 保存你的機密——Hermes 會自動將看起來像機密的值路由到這裡。state.db 是支援工作階段搜尋的 SQLite 資料庫(WAL 模式安全,FTS5 索引)。
新增技能
Hermes 維護了一個官方 Skills Hub,包含 18 個類別的 687 個技能(87 個內建、79 個可選、16 個來自 Anthropic、505 個來自 LobeHub)。你也可以將任何 GitHub 倉庫作為自訂 tap 加入:
hermes skills tap add yourname/your-skills-repo
hermes skills install yourname/your-skills-repo/<skill-name>
從 1 個到 10 個代理人
一個代理人沒問題。多個專業代理人才是 Hermes 變得有趣的地方。Hermes 有一個一等公民功能叫profiles(配置)——每個 profile 是一個完全隔離的實例,有自己的設定、記憶、技能、工作階段和 SOUL.md。預設情況下不共享任何東西。我們來設定三個。
hermes profile create designer --clone
hermes profile create programmer --clone
hermes profile create researcher --clone
hermes profile list
--clone 會複製你預設 profile 的設定和 .env 作為起點。
為每個 profile 配置獨立的 Telegram 機器人。 Telegram 每個 token 只允許一個連接,共享會出問題。用 BotFather 執行三次 /newbot,然後為每個 profile 執行一次閘道器精靈:
hermes -p designer gateway setup
hermes -p programmer gateway setup
hermes -p researcher gateway setup
透過 SOUL.md 為每個賦予個性。 這是代理人變得真正不同的地方。例如,程式設計師在 ~/.hermes/profiles/programmer/SOUL.md:
# Soul
You are my staff engineer. Terse, direct, pragmatic.
You read code before you write code. You write the smallest change
that solves the problem. You prefer standard library over dependencies,
boring tech over shiny tech, and explicit over clever.
Always check: does this already exist in the codebase? Are there
tests? What breaks if this fails? Run the tests before saying "done."
自訂程式設計師:透過 Claude Code 路由執行
如果程式設計師將執行委派給 Claude Code CLI,會更有趣。Hermes 負責編排;Claude Code 負責檔案編輯、執行指令、管理 git。啟動一個工作階段,發送一個啟用提示:
I already have a Claude Max subscription. You are my staff engineer who
helps me with my day-to-day coding tasks, and under the hood you use
Claude Code for all the executions. Set yourself up accordingly.
程式設計師會自行安裝 autonomous-ai-agents/claude-code 技能,驗證 claude 在 PATH 上,然後開始用它來執行程式碼。在啟用前確保 which claude 能印出真實的二進位檔路徑。
自訂設計師:教它你的視覺風格
給它參考設計,讓它研究,然後要求它建立一個以相同風格生成新圖片的技能:
Carefully study these reference illustrations. Note the color palette,
line weight, level of detail, composition, and overall aesthetic.
I want you to create a new skill called "my-design-style" that captures
this visual style. The skill should:
1. Document the style fingerprint in plain language (palette, line
weights, composition rules, recurring motifs)
2. Include a Python script that takes a text description of a new
illustration and generates the image using the Nano Banana model
(google/gemini-2.5-flash-image) via the OpenRouter API in this style
3. Read OPENROUTER_API_KEY from the environment
Use skill_manage to create it. Test the generated script on a sample
prompt before saying it's done.
這是自我改進循環被用作設定機制——你不是手動撰寫技能,而是向代理人展示好的範例,要求它自己編碼這個模式。
排程工作:用普通話說 cron
研究員的 SOUL.md 說它負責每日 Telegram 摘要。Hermes 內建了一個排程器——閘道器守護進程每 60 秒 tick 一次,在隔離的工作階段中運行到期的任務,並將輸出推送到你指定的平台。任務在重啟後存活。你不需要寫 cron 表達式;你用普通話描述你想要的,Hermes 會轉換它。
Every weekday at 8am India time, prepare a deep digest of what's new
in the AI and machine learning space over the last 24 hours. Cover
four streams in this order:
1. Trending GitHub repos (especially new AI/ML tooling)
2. Big tech and lab announcements (Anthropic, OpenAI, Google, Meta, xAI, Nous)
3. Fresh research papers worth reading
4. Social pulse from X, Reddit, and Hacker News
Lead with what changed since yesterday. Cite every claim with a URL.
Keep it under 800 words. Deliver to Telegram.
Set this up as a recurring cron job.
用 hermes -p researcher cron list 驗證。其他有用的模式:
- 單次延遲。
/cron add 30m "Remind me to check the build"在 30 分鐘後運行一次。 - 週期間隔。
/cron add "every 2h" "Check server status"每兩小時運行一次。 - 標準 cron 表達式。
/cron add "0 9 * * 1-5" "..."用於工作日早上 9 點。 - 技能附件。
/cron add "every 1h" "Summarize new feed items" --skill blogwatcher在運行前載入技能。
你也可以串接任務——一個 cron 的輸出透過 context_from 標誌成為下一個 cron 的輸入,適用於多階段自動化,其中研究步驟餵給寫作步驟。
總結
你現在有了完整的全貌:透過 SOUL.md 定義身份,三層記憶系統,由 Curator 保持整潔的自我演化技能,用於離線最佳化的 GEPA,以及三個在 profiles 上運行的隔離專業代理人團隊——每個都有自己的機器人、個性和排程工作。整個設定只需幾分鐘,這裡的所有內容都可以在你自己的硬體上重現。