問題
雲端 LLM API 按 token 收費。一次重度的編碼會議可能花費 $5–20。對於個人專案、學習或隱私敏感的工作來說,這會累積起來——而且你每次對話都在向第三方發送資料。
本指南解決什麼問題
你將設定完全在你自己硬體上運行的 Hermes Agent,使用 Ollama 作為模型後端。無需 API 金鑰、無需訂閱、無需資料離開你的機器。設定完成後,Hermes 的運作方式與使用 OpenRouter 或 Anthropic 時完全相同——終端命令、檔案編輯、網路瀏覽、委派——但模型在本地運行。
完成後,你將擁有:
- Ollama 提供一個或多個開放權重模型
- Hermes 作為自訂端點連接到 Ollama
- 一個可以編輯檔案、執行命令和瀏覽網路的本地代理
- 可選:完全由你自己硬體驅動的 Telegram/Discord 機器人
你需要什麼
| 組件 | 最低需求 | 建議配置 |
|---|---|---|
| RAM | 8 GB(用於 3B 模型) | 32+ GB(用於 27B+ 模型) |
| 儲存空間 | 5 GB 可用 | 30+ GB(用於多個模型) |
| CPU | 4 核心 | 8+ 核心(AMD EPYC、Ryzen、Intel Xeon) |
| GPU | 非必需 | 擁有 8+ GB VRAM 的 NVIDIA GPU 可顯著加速 |
提示 — 僅 CPU 可以運行,但回應速度較慢
Ollama 可以在僅 CPU 的伺服器上運行。在現代 8 核心 CPU 上運行 9B 模型可達到約每秒 10 個 token。在 CPU 上運行 31B 模型較慢(約每秒 2–5 個 token)——每次回應需要 30–120 秒,但它可以運作。GPU 可顯著改善此情況。對於僅 CPU 的設定,請透過環境變數擴大 API 逾時(這不是
config.yaml的鍵值):# ~/.hermes/.env HERMES_API_TIMEOUT=1800 # 30 分鐘 — 為較慢的本地模型提供充裕時間
步驟 1:安裝 Ollama
curl -fsSL https://ollama.com/install.sh | sh
驗證它是否正在運行:
ollama --version
curl http://localhost:11434/api/tags # 應返回 {"models":[]}
步驟 2:拉取模型
根據你的硬體選擇:
| 模型 | 磁碟大小 | 所需 RAM | 工具呼叫 | 最適合 |
|---|---|---|---|---|
gemma4:31b | ~20 GB | 24+ GB | 是 | 最佳品質——強大的工具使用和推理能力 |
gemma2:27b | ~16 GB | 20+ GB | 否 | 對話任務,無工具使用 |
gemma2:9b | ~5 GB | 8+ GB | 否 | 快速聊天、問答——無法呼叫工具 |
llama3.2:3b | ~2 GB | 4+ GB | 否 | 僅限輕量級快速回答 |
警告 — 工具呼叫很重要
Hermes 是一個代理式助手——它透過工具呼叫來編輯檔案、執行命令和瀏覽網路。不支援工具呼叫的模型只能聊天;它們無法採取行動。要獲得完整的 Hermes 體驗,請使用支援工具的模型(如
gemma4:31b)。
拉取你選擇的模型:
ollama pull gemma4:31b
資訊 — 多個模型
你可以拉取多個模型,並在 Hermes 中使用
/model切換它們。Ollama 按需將活動模型載入記憶體,並自動卸載閒置的模型。
驗證模型是否正常工作:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4:31b",
"messages": [{"role": "user", "content": "Say hello"}],
"max_tokens": 50
}'
你應該看到一個包含模型回覆的 JSON 回應。
步驟 3:設定 Hermes
執行 Hermes 設定精靈:
hermes setup
當提示選擇供應商時,選擇 Custom Endpoint 並輸入:
- Base URL:
http://localhost:11434/v1 - API Key: 留空或輸入
no-key(Ollama 不需要) - Model:
gemma4:31b(或你拉取的任何模型)
或者,直接編輯 ~/.hermes/config.yaml:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"
步驟 4:開始使用 Hermes
hermes
就這樣。你现在運行的是一個完全本地的代理。試試看:
You: List all Python files in this directory and count the lines of code in each
You: Read the README.md and summarize what this project does
You: Create a Python script that fetches the weather for Ho Chi Minh City
Hermes 將使用終端工具、檔案操作和你的本地模型——無需雲端呼叫。
步驟 5:為你的任務選擇合適的模型
並非每個任務都需要最大的模型。這裡是一個實用指南:
| 任務 | 建議模型 | 原因 |
|---|---|---|
| 檔案編輯、程式碼、終端命令 | gemma4:31b | 唯一具有可靠工具呼叫的模型 |
| 快速問答(無需工具使用) | gemma2:9b | 對話任務的快速回應 |
| 輕量級聊天 | llama3.2:3b | 最快,但功能非常有限 |
注意
對於完整的代理工作(編輯檔案、執行命令、瀏覽),
gemma4:31b目前是支援工具呼叫的最佳本地選擇。請查看 Ollama 的模型庫 以取得更新的模型——工具支援正在快速擴展。
在會話中即時切換模型:
/model gemma2:9b
步驟 6:優化速度
增加 Ollama 的上下文窗口
預設情況下,Ollama 使用 2048 個 token 的上下文。Hermes 進行帶工具的代理工作至少需要 64,000 個 token:
# 建立一個擴展上下文的 Modelfile
cat > /tmp/Modelfile << 'EOF'
FROM gemma4:31b
PARAMETER num_ctx 64000
EOF
ollama create gemma4-64k -f /tmp/Modelfile
然後更新你的 Hermes 設定,使用 gemma4-64k 作為模型名稱。
保持模型載入
預設情況下,Ollama 在 5 分鐘無活動後會卸載模型。對於持久的閘道機器人,請保持載入:
# 設定 keep-alive 為 24 小時
curl http://localhost:11434/api/generate \
-d '{"model": "gemma4:31b", "keep_alive": "24h"}'
或在 Ollama 的環境中全域設定:
# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_KEEP_ALIVE=24h"
使用 GPU 卸載(如果可用)
如果你有 NVIDIA GPU,Ollama 會自動將層卸載到它。使用以下命令檢查:
ollama ps # 顯示已載入的模型和 GPU 層數
對於 12 GB GPU 上的 31B 模型,你會得到部分卸載(約 40 層在 GPU 上,其餘在 CPU 上),這仍然能帶來顯著的加速。
步驟 7:作為閘道機器人運行(可選)
一旦 Hermes 在 CLI 中本地運行,你可以將其作為 Telegram 或 Discord 機器人曝露——仍然完全在你的硬體上運行。
Telegram
- 透過 @BotFather 建立機器人並取得 token
- 新增到你的
~/.hermes/config.yaml:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"
platforms:
telegram:
enabled: true
token: "YOUR_TELEGRAM_BOT_TOKEN"
- 啟動閘道:
hermes gateway
現在在 Telegram 上訊息你的機器人——它會使用你的本地模型回應。
Discord
- 在 discord.com/developers 建立 Discord 應用程式
- 新增到設定:
platforms:
discord:
enabled: true
token: "YOUR_DISCORD_BOT_TOKEN"
- 啟動:
hermes gateway
步驟 8:設定備用方案(可選)
本地模型在處理複雜任務時可能會有困難。設定一個僅在本地模型失敗時啟用的雲端備用方案:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"
fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4
這樣,你的 90% 使用量是免費的(本地),只有困難的任務才會使用付費 API。
疑難排解
啟動時「連接被拒絕」
Ollama 沒有運行。啟動它:
sudo systemctl start ollama
# 或
ollama serve
回應速度慢
- 檢查模型大小與 RAM: 如果你的模型需要的 RAM 超過可用容量,它會使用磁碟交換。使用較小的模型或增加 RAM。
- 檢查
ollama ps: 如果沒有 GPU 層被卸載,回應速度受 CPU 限制。這對於僅 CPU 的伺服器來說是正常的。 - 減少上下文: 大型對話會減慢推理速度。定期使用
/compress,或在設定中設定較低的壓縮閾值。
模型不遵循工具呼叫
較小的模型(3B、7B)有時會忽略工具呼叫指令,產生純文字而非結構化的函數呼叫。解決方案:
- 使用較大的模型 —
gemma4:31b或gemma2:27b處理工具呼叫的效果比 3B/7B 模型好得多。 - Hermes 有自動修復功能 — 它會檢測格式錯誤的工具呼叫並嘗試自動修復。
- 設定備用方案 — 如果本地模型失敗 3 次,Hermes 會回退到雲端供應商。
上下文窗口錯誤
預設的 Ollama 上下文(2048 個 token)對於代理工作來說太小了。請參閱步驟 6以增加它。
成本比較
以下是本地運行與雲端 API 相比所節省的費用,基於典型的編碼會議(約 100K token 輸入,約 20K token 輸出):
| 供應商 | 每次會議費用 | 每月費用(每日使用) |
|---|---|---|
| Anthropic Claude Sonnet | ~$0.80 | ~$24 |
| OpenRouter(GPT-4o) | ~$0.60 | ~$18 |
| Ollama(本地) | $0.00 | $0.00 |
你唯一的成本是電費——根據硬體不同,每次會議大約 $0.01–0.05。
本地運行效果良好的功能
- 檔案編輯和程式碼產生 — 9B 以上的模型處理得很好
- 終端命令 — Hermes 封裝命令、執行它、讀取輸出,無論使用什麼模型
- 網路瀏覽 — 瀏覽器工具負責取得內容;模型只負責解讀結果
- Cron 任務和排程任務 — 與雲端設定完全相同
- 多平台閘道 — Telegram、Discord、Slack 都可以使用本地模型
雲端模型更好的地方
- 非常複雜的多步驟推理 — 70B+ 或 Claude Opus 等雲端模型明顯更好
- 長上下文窗口 — 雲端模型提供 100K–1M 個 token;本地運行時通常預設低於 Hermes 的 64K 最低要求,除非你進行設定
- 大型回應的速度 — 對於長文本產生,雲端推理比僅 CPU 的本地運行更快
最佳方案:將本地用於日常任務,為困難任務設定雲端備用方案。