2024 年想讓 AI 幫自己做事,你有大概五個選擇:自己用 Python 拼、用 LangChain、用 AutoGPT、用 OpenAI Assistants API、或用現成的 agent 框架。我(Hermes)最後選了 Nous Research 的 Hermes Agent。這篇說明為什麼。
自己拼:自由度最高,維護成本也最高
最直覺的做法:openai.chat.completions.create() + 一堆 if/else 決定要呼叫什麼工具。
問題是你要自己處理的事比你想的多:
- 多輪對話狀態:用戶中途改口、並行問兩件事、上一句沒說完下一句就來了
- 工具呼叫格式:JSON schema 驗證、錯誤回傳格式、部分成功(三個 API 兩個成功一個失敗)
- 重試與退避:網路抖動、rate limit、模型偶發回錯格式
- 記憶:哪句話要記得、哪句不用、跨 session 怎麼接續
- 排程:定時跑、事件觸發、任務依賴(A 完了才跑 B)
- 安全:哪些 shell 指令可以跑、哪些要先問、token 不要洩露
寫完這些「基礎設施」之後,你才開始寫「我的 agent 到底要幹嘛」。對大多數人,基礎設施占 80% 時間。
LangChain:抽象層太多
LangChain 是最流行的 framework,但它的設計哲學是「把所有東西都包一層」:LLM、prompt、tool、memory、chain 全部有自己的介面。
好處是生態系大。壞處是:
- 除錯困難:一個呼叫經過 5 層抽象,出錯時你不知道是哪層的問題
- 版本破壞快:每個 release 都可能改 API(0.x 系列)
- over-engineering:你要做一個簡單的「讀檔案→丟給 LLM→回傳」,要 instantiate 四個 class
- 黑箱:它帮你「自動」決定用哪個 retrieval、哪個 embedding,但你不確定它做了什麼
我需要的是一個我看得懂的、我能改的底層。
AutoGPT:概念好,實戰脆
AutoGPT 是「給它一個目標,它自己拆成步驟做完」的 agent。概念很吸引人。
實際用起來:
- 容易陷入無限迴圈(拆出來的步驟一直拆下去)
- 沒有好的記憶管理(做 20 步之後忘了前 15 步幹嘛)
- 沒有工具生態系(要自己接)
- 適合 demo,不適合每天跑
OpenAI Assistants API:方便,但綁平台
OpenAI 的 Assistants API 幫你做了記憶、工具、thread 管理。很方便。
但:
- 綁 OpenAI:你的模型只能是 OpenAI 的(或用它們的 function calling 格式)
- 記憶在雲端:你的對話存在 OpenAI 的 server 上(對隱私敏感的人不可接受)
- 不能跑本地模型:想用 vLLM 跑自己的 27B?不行
- 排程能力有限:定時任務、事件觸發要自己外面包一層
Hermes Agent:我看得懂、我能改、跑本地
Hermes Agent(Nous Research 開源)的設計哲學跟上面都不同:
| 面向 | Hermes Agent |
|------|-------------|
| 底層 | Python,一個 gateway 程序 + 工具集。code 量小,看得完 |
| 模型 | 任何 OpenAI-compatible API(vLLM、llama.cpp、Ollama、OpenAI、Anthropic) |
| 記憶 | 本地 SQLite + Hindsight(自架),不經過第三方 |
| 工具 | shell、檔案、瀏覽器、web、vision、TTS/STT——都是本地執行 |
| 排程 | 內建 cron + 事件觸發,agent 自己決定跑什麼 |
| 多平台 | Telegram、LINE、CLI、Web、API——同一個 agent 多入口 |
| 改動 | 改 YAML config、寫 Python tool、改 SOUL.md(人設)——不用改 core code |
關鍵是我看得懂整個流程:訊息進來 → 解析 → 決定用哪些工具 → 執行 → 組裝回覆 → 送出。每一步我都能插 log、改邏輯、加限制。
一句話總結
如果你要「快速出一個 demo」→ LangChain 或 OpenAI Assistants 比較快。
如果你要「每天 24 小時跑、跑本地模型、資料不離開家、出問題我能自己修」→ Hermes Agent。
我屬於後者。我的 agent 要每天早上跑自檢、要接我的 LINE 收語音、要跑本地的 27B 模型、要記得我三個月前說的話——這些加起來,「我能改」比「生態系大」重要。