tutorials

Docker 本地 AI Agent 部署實戰:用 Hermes Agent 建立私人 AI 開發助手

點解要自托管 AI Agent?

2026 年,AI agent 工具(如 Claude Code、OpenAI Codex CLI、Hermes Agent)愈來愈流行,但大部分人都係直接用雲端服務。如果你想:

  • 數據保留喺自己機度,唔洗經第三方伺服器
  • 無限使用,唔受 API quota 限制(配合本地模型)
  • 自由定制,自己改 code、加 plugin、調 prompt
  • 節省成本,長期使用比 SaaS 訂閱平

咁自托管 AI agent 就係你要嘅嘢。

呢篇教學會由零開始,用 Docker Compose 部署 Hermes Agent —— 一個開源、provider-agnostic 嘅 AI agent 框架,支援本地 LLM(Ollama)同雲端 API(OpenAI、Anthropic 等)混合使用。

事前準備

基本要求

  • 伺服器 / VPS:最低 4GB RAM、20GB SSD(如果只行雲端模型,2GB RAM 都得)
  • Docker + Docker Compose:安裝教學
  • 基本 Linux 知識:SSH、command line

選擇:純雲端 vs 混合 vs 全本地

方案 優點 缺點 適合對象
純雲端 (GPT-5/Claude) 最快 setup,最強能力 月費、數據外洩風險 快速驗證概念
混合 (本地 agent + 雲端 LLM) 數據安全 + 強模型 仍需 API 費用 生產環境
全本地 (Ollama + Hermes) 完全免費、私隱最高 模型能力較弱 研發、高安全需求

今次教學會用混合模式——Hermes Agent 行喺 Docker container,LLM 用 OpenAI/Anthropic API(可選本地 Ollama 做 fallback)。

第一步:設定 Docker Compose

建立一個 docker-compose.yml

version: '3.8'

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    restart: unless-stopped
    volumes:
      - ./hermes_data:/root/.hermes
      - ./workspace:/workspace
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY:-}
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
      - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-}
      - OLLAMA_HOST=http://ollama:11434
    ports:
      - "8080:8080"  # Gateway API
    depends_on:
      ollama:
        condition: service_healthy
    command: ["hermes", "gateway", "run"]

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    volumes:
      - ./ollama_data:/root/.ollama
    ports:
      - "11434:11434"
    healthcheck:
      test: ["CMD", "ollama", "list"]
      interval: 30s
      retries: 3

解釋

  • Hermes Agent container:主 agent 程式,掛載 hermes_data 做持久化設定
  • Ollama container:本地 LLM 伺服器,行 lightweight 模型做 fast tasks
  • workspace volume:放住你啲 projects,Hermes agent 可以存取
  • Gateway port 8080:用嚟連接 Telegram/Discord 等平台

第二步:設定環境變數

建立 .env 檔案:

# 至少要填一個 LLM provider
OPENAI_API_KEY=sk-xxxxxxxxxxxx
# ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxx
# DEEPSEEK_API_KEY=sk-xxxxxxxxxxxx

# 時區
TZ=Asia/Hong_Kong

第三步:啟動服務

# 建立資料夾
mkdir -p hermes_data workspace ollama_data

# 啟動
docker compose up -d

# 檢查狀態
docker compose ps
docker compose logs hermes -f

第一次啟動 Hermes 會自動建立 config,然後你見倒類似:

[2026-06-01 10:00:00] Hermes Agent started successfully
[2026-06-01 10:00:01] Gateway listening on port 8080

拉本地模型(可選)

如果你打算行本地 LLM:

# 拉 mistral(7B,7GB RAM,夠快)
docker exec ollama ollama pull mistral

# 或者 llama3.1 8B
docker exec ollama ollama pull llama3.1

# 試下用唔用到
docker exec ollama ollama run mistral "Hello, how are you?"

第四步:設定 Hermes Config

入去 container 做初始設定:

docker exec -it hermes-agent hermes setup

或者直接改掛載咗嘅 config:

# 改 hermes_data/config.yaml
docker exec -it hermes-agent hermes config set model.default gpt-5
docker exec -it hermes-agent hermes config set model.provider openai
docker exec -it hermes-agent hermes config set terminal.backend local

重點 config 設定:

model:
  default: gpt-5
  provider: openai

agent:
  max_turns: 90
  tool_use_enforcement: true

terminal:
  backend: docker
  workdir: /workspace

memory:
  memory_enabled: true
  user_profile_enabled: true

delegation:
  model: gpt-5-mini
  max_iterations: 30

第五步:連接 Gateway(可選)

Hermes Gateway 可以駁落 Telegram、Discord、Slack 等平台。

以 Telegram 為例:

# 入 container setup
docker exec -it hermes-agent hermes gateway setup

# 揀 Telegram → 輸入 bot token → 完成
# 然後開 gateway
docker compose restart hermes

之後你喺 Telegram 直接同 agent 對話就得。

實戰:用 Agent 開發一個 Python 專案

等 Hermes 行咗之後,你可以咁用:

方法 1:API 呼叫

curl -X POST http://localhost:8080/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Create a Flask API with 3 endpoints", "session": "dev-project"}'

方法 2:Telegram 互動

Send message 俾 bot:

/create-project 建立一個 FastAPI + SQLite 嘅 todo list API,包括 CRUD endpoints 同測試

方法 3:Cron 排程任務

設定每日自動運行嘅任務:

docker exec hermes-agent hermes cron create "every day 9am" \
  --prompt "Check today's GitHub notifications and summarize" \
  --delivery telegram

進階:多 Agent 協作

你可以行多個 Hermes instance 做唔同角色:

# 加到 docker-compose.yml
  agent-backend:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-backend
    volumes_from:
      - hermes
    environment:
      - HERMES_PROFILE=backend-dev
    command: ["hermes", "-p", "backend-dev", "gateway", "run"]

每個 agent 可以設定唔同嘅技能(skills)、模型、toolset,形成一個小型 AI 團隊。

Troubleshooting

問題 原因 解決方法
Container 不斷 restart Config 錯誤 睇 log:docker compose logs hermes
Ollama 用唔到 GPU Docker 未開 GPU 支援 deploy.resources.reservations.devices
Gateway 連唔到 Telegram Bot token 無效 重新 gen token、check .env
Agent 話 Tool 唔可用 Toolset 未 enable hermes tools enable terminal file
記憶體不足 Ollama 佔太多 RAM 用細 model(mistral 7B 約 7GB)

總結

用 Docker 自托管 AI agent 唔複雜,而且好處顯而易見:數據自主、成本可控、可以自由定制。呢個 setup 適合個人開發者、freelancer、甚至小型團隊使用。

下一步你可以:

  1. 研究 Hermes Agent 嘅 skill system —— 寫自訂 skill 俾 agent 學
  2. 設定 MCP server 連落外部工具(Notion、GitHub、Jira)
  3. hermes cron 建立自動化工作流程