前三個案例分別分享了 Workflow、RAG、視覺應用幾種地端 AI 的開發方式,這次換個角度,不再自己從零開發,而是直接使用 Hermes Agent:由 Nous Research 開發的開源 Agent 框架。
Hermes Agent 的定位比較接近「可以自己接地端模型的 Claude Code / Codex CLI」:它內建高達 70 多個工具、記憶系統、排程、瀏覽器自動化、多平台聊天閘道(Telegram、Discord、Slack…),而且從一開始就設計成「模型可換」— 你可以接雲端 API,也可以透過 Ollama 把整個 Agent 完全接到地端模型上。
這一篇先把架構看懂,再把環境裝起來。

Hermes Agent 是一個以「持續自我改進」為訴求的自主 AI 代理程式,特色是把記憶、技能(Skills)、工具閘道(Tool Gateway)整合在同一個執行迴圈裡,並且可以用同一套核心邏輯服務多種進入點:
CLI / TUI:終端機互動介面,是最常見的使用方式
Gateway:接上 Telegram、Discord、Slack、WhatsApp、Signal、Email 等平台,變成一個常駐聊天機器人
ACP:以編輯器原生 Agent 的身分嵌入 VS Code、Zed、JetBrains
Batch Runner / API Server:批次跑大量任務,或包成 OpenAI 相容的 HTTP 端點供其他前端呼叫
這種「一套核心、多種外殼」的設計,是後面理解架構時最重要的一條線索。
Hermes Agent 的架構大致可以拆成四層,資料由上往下流動:
進入點 CLI/Gateway/ACP/Batch/API Server
│ (不同介面,呼叫同一顆核心)
▼
核心代理 AIAgent
│ 提示詞組裝 → Provider 選擇 → 工具派發 → 壓縮快取
▼
執行後端 終端機後端/瀏覽器後端/網路後端/MCP/檔案/視覺
▼
持久化層 Session 儲存(SQLite + 全文檢索)
所有進入點(CLI、Gateway、ACP…)最終都是在建立一個 AIAgent 實例並呼叫它的對話迴圈,這也是為什麼同一份設定(模型、工具、記憶)在終端機和在 Telegram 上用起來體驗一致。
AIAgent 這一層內部再細分成三個互相配合的模組:
| 元件 | 負責什麼 |
|---|---|
| Prompt Builder | 組裝系統提示詞,分成穩定層(身分、工具說明、技能)→ 情境層(專案內的 context 檔案)→ 易變層(記憶、使用者設定、時間戳),並負責上下文壓縮與 Anthropic 風格的提示詞快取 |
| Provider Resolution | 把「提供者 + 模型」這組設定解析成實際的 API 模式、金鑰、Base URL,統一處理 18 種以上的供應商、OAuth 流程與金鑰輪替 |
| Tool Dispatch | 對接工具註冊表,處理 Schema 蒐集、呼叫派發、可用性檢查與錯誤包裝,目前收錄 70 餘個工具、約 28 個工具集 |
CLI 對話:使用者輸入 → 組裝系統提示詞 → 解析 Provider → 呼叫模型 API → 若有工具呼叫則派發執行並迴圈 → 產生最終回覆 → 顯示並寫回 Session 資料庫。
Gateway 訊息:外部平台事件(例如 Telegram 訊息)→ 平台轉接器解析成統一的訊息事件 → 授權檢查 → 找到對應的 session → 建立帶著歷史紀錄的 AIAgent → 跑對話迴圈 → 把回覆送回原平台。
排程任務(Cron):排程器到時間 → 從工作清單載入到期任務 → 建立一個「沒有歷史紀錄」的全新 AIAgent → 把指定的技能當作情境注入 → 執行任務提示詞 → 把結果送到目標平台,並更新下一次執行時間。
三種流程共用同一個 AIAgent,差別只在「誰觸發、有沒有歷史紀錄、結果送去哪裡」。
| 子系統 | 說明 |
|---|---|
| Agent Loop | 同步的整體協調引擎,負責 Provider 選擇、提示詞組裝、工具執行、重試、降級、壓縮與持久化 |
| Prompt 系統 | 系統提示詞的分層組裝與快取策略 |
| Provider 解析 | CLI/Gateway/Cron/ACP 共用的供應商解析邏輯 |
| 工具系統 | 中央工具註冊表,各工具檔案在載入時自行註冊 |
| Session 持久化 | 以 SQLite 搭配 FTS5 全文檢索儲存對話,支援壓縮前後的血緣追蹤 |
| 訊息閘道 | 25 個以上的平台轉接器、統一 session 路由、白名單授權、Hook 系統 |
| 外掛系統 | 三個發現來源(使用者、專案、pip entry point),可註冊工具、Hook、Slash 指令;記憶供應器與情境引擎是各自獨立選一的特殊外掛 |
官方文件列出幾條貫穿整個實作的設計原則,值得記下來理解「為什麼它長這樣」:
提示詞穩定:對話進行中系統提示詞不會被打斷式修改,除非使用者主動切換模型
執行可觀察:每一次工具呼叫都透過回呼機制對使用者可見
可中斷:API 呼叫與工具執行可以在中途被使用者輸入或訊號取消
核心與平台無關:同一顆 AIAgent 同時服務 CLI、Gateway、ACP、Batch、API Server,平台差異只留在進入點
鬆耦合:MCP、外掛、記憶供應器等可選子系統用註冊模式接入,不是硬相依
Profile 隔離:每個 hermes -p <name> 都有獨立的家目錄、設定、記憶與 Gateway 行程,多個 Profile 可以同時跑
架構之外,Hermes Agent 內建的功能大致分五類,之後案例會陸續用到:
核心:工具與工具集、技能系統、跨對話的持久記憶、專案情境檔案自動載入、檔案異動前的自動快照(可 rollback)
自動化:自然語言排程、子代理委派(可平行跑多個子任務)、把多步驟工作收斂成單一 LLM 回合的程式碼執行工具、生命週期事件 Hook、批次處理
多媒體與網路:語音模式、喚醒詞、瀏覽器自動化(多種後端)、視覺輸入、圖片生成、文字轉語音
整合:MCP 協定接外部工具、Provider 路由與備援、多金鑰輪替、把自己包成 OpenAI 相容 API Server、IDE 整合
客製化:SOUL.md 定義的人格設定、CLI 外觀主題、外掛系統擴充工具與 Hook
Hermes Agent 官方雖然也提供獨立的 curl 安裝腳本,但既然本系列的模型都掛在 Ollama 底下,這裡直接走最省事的路徑:先裝好 Ollama,再用 Ollama 內建的整合指令 ollama launch hermes 一次把 Hermes 裝起來、接上模型。這條路徑在 macOS 與 Ubuntu 上的操作幾乎一致,差別只在「怎麼裝 Ollama 本身」。
macOS
到 ollama.com/download 下載 .dmg,掛載後把 Ollama 拖進 Applications 資料夾即可。第一次啟動時,Ollama 會自動確認 ollama 指令是否在 PATH 裡,沒有的話會請求權限在 /usr/local/bin 建立連結。系統需求是 macOS Sonoma(v14)以上,Apple Silicon(CPU+GPU 都支援)或 x86(僅 CPU)。
Ubuntu
curl -fsSL https://ollama.com/install.sh | sh
安裝完成後可以用 ollama -v 確認版本,或直接執行 ollama serve 手動啟動服務(一般安裝完會自動註冊成開機啟動的背景服務,不需要每次手動啟動)。
Hermes Agent 要求模型至少要有 64,000 tokens 的上下文長度,太小的上下文撐不住多步驟工具呼叫所需的工作記憶,啟動時會直接被拒絕。啟動 Ollama 服務前,用環境變數把預設上下文長度拉高:
OLLAMA_CONTEXT_LENGTH=65536 ollama serve
如果 Ollama 已經是背景服務在跑,先把它停掉(macOS 從選單列結束 App;Ubuntu 用 sudo systemctl stop ollama),再用上面這行手動啟動一次即可套用新的 context 設定。
ollama pull qwen3.6:35b-a3b
qwen3.6-35b-a3b 是 Qwen3.6 系列的 MoE(混合專家)模型:總參數量約 35.5B,但透過路由機制每個 token 實際只啟用約 3B 參數(命名裡的 A3B 就是「Active 3B」),讓它在保有較大知識容量的同時,推論成本更接近一顆 3B 等級的模型。這顆模型同時支援視覺輸入、工具呼叫(tool calling)與推理/思考模式(thinking),在 Ollama 官方的 Hermes Agent 整合頁面裡,也被列為「可在地端跑的推薦模型」之一,官方標示的參考需求約落在 24GB VRAM/統一記憶體等級,量化後(Q4_K_M)模型大小約 22GB 上下,對消費級顯卡或 Apple Silicon 的機器都算友善。同系列也有針對程式碼調校過的變體(例如 qwen3.6:35b-a3b-coding),之後案例如果偏向開發輔助,可以視情況替換。
模型拉好之後,直接用 Ollama 內建的整合指令把 Hermes 裝起來並接上剛剛的模型:
ollama launch hermes
這個指令會自動完成四件事,macOS 與 Ubuntu 上流程完全一樣:
安裝:偵測 Hermes 是否已安裝,沒有的話會提示安裝命令列版的 Hermes Agent
選模型:從選單挑一顆模型(這裡選剛剛拉好的 qwen3.6:35b-a3b,本機或雲端模型都能選)
自動接線:把 Ollama 設成 Provider,指向 http://127.0.0.1:11434/v1,並將所選模型設為主要模型
選配 Gateway:視需要接一個聊天平台(Telegram/Discord/Slack/WhatsApp/Signal/Email),並直接啟動 Hermes
也就是說,不需要另外跑 Hermes 官方的 curl 安裝腳本——ollama launch hermes 背後就會處理好安裝這一步。
之後想重新進入對話,或想切換終端機介面,可以直接下:
hermes # 傳統 CLI
hermes --tui # 新版 TUI(建議)
看到歡迎畫面顯示模型名稱、工具清單就代表串接成功。可以先丟一句簡單、容易驗證的指令,例如「幫我看看目前目錄下有哪些檔案,並說明看起來的專案結構」,確認模型能正常回覆、也能正確叫用終端機工具。
| 症狀 | 解法 |
|---|---|
hermes: command not found |
重新載入 shell(source ~/.bashrc 或 ~/.zshrc),或檢查 PATH 是否包含 ~/.local/bin |
| Hermes 啟動時說 context 太短被拒絕 | 回到「設定 Context Length」,確認啟動 Ollama 前有設定 OLLAMA_CONTEXT_LENGTH=65536 |
| 選單裡看不到剛拉好的模型 | 先確認 ollama list 裡有看到 qwen3.6:35b-a3b,再重跑一次 ollama launch hermes |
裝好之後,任何時候都可以跑 hermes doctor 做完整診斷,它會直接告訴你缺什麼、該怎麼修。
這一篇把 Hermes Agent 的分層架構、資料流、核心子系統,以及透過 Ollama 在 macOS/Ubuntu 上安裝、接上地端模型 qwen3.6-35b-a3b 的完整流程走了一遍。