Skip to content

建立 2026-09-19 更新 2026-09-19

設定檔

Hermes 的所有狀態都放在使用者家目錄的 ~/.hermes/。CLI、TUI、Hermes Desktop 與 Gateway 共用同一份,所以在終端機設好的東西,桌面 App 裡也看得到,反之亦然。

目錄結構

~/.hermes/
├── config.yaml     # 設定:模型、終端機後端、TTS 等
├── .env            # API 金鑰與其他祕密
├── auth.json       # OAuth 憑證
├── SOUL.md         # 代理的主要身分與語氣
├── memories/       # 持久記憶(MEMORY.md、USER.md)
├── skills/         # 技能(含代理自己建立的)
├── cron/           # 排程任務與輸出
├── sessions/       # Gateway 對話
└── logs/           # 錯誤與 Gateway 日誌

設定的優先順序

同一個選項出現在多處時,由上往下,越前面越優先:

  1. 命令列參數,例如 --model anthropic/claude-sonnet-4(只影響該次執行)
  2. ~/.hermes/config.yaml
  3. ~/.hermes/.env
  4. 內建預設值

經驗法則:祕密(API 金鑰、token)放 .env,其餘放 config.yaml 這樣分享或備份設定時,不會不小心帶出金鑰。

hermes config 管理

不必手動開檔案,指令就能讀寫:

hermes config              # 檢視目前設定
hermes config edit         # 用編輯器開啟 config.yaml
hermes config get KEY      # 印出某項的實際值
hermes config set KEY VAL  # 設定某項
hermes config check        # 找出缺少的選項
hermes config migrate      # 互動式補上新選項(更新後常用)

常見設定片段

模型與代理

model: anthropic/claude-opus-4
agent:
  max_turns: none            # 不限制迭代次數

終端機後端

代理執行指令的地方。預設 local 直接在你的機器上跑;要隔離請改用 Docker:

terminal:
  backend: docker            # local | docker | ssh | modal | daytona | vercel_sandbox
  docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
  container_memory: 5120     # MB
  container_persistent: true

各後端的差異見 工具與終端機後端

上下文壓縮

對話變長時自動壓縮,避免超出模型的上下文視窗:

compression:
  enabled: true
  threshold: 0.50            # 用到上限的 50% 時開始壓縮
  target_ratio: 0.20         # 壓縮後保留 20% 作為近期內容
  protect_last_n: 20         # 最近 20 則訊息不壓縮

記憶

memory:
  memory_enabled: true
  memory_char_limit: 2200    # 約 800 tokens
  write_approval: false      # 設為 true,寫入記憶前要先經你同意

引用環境變數

config.yaml 可以用 ${變數名} 引用環境變數,金鑰就不必寫進 YAML:

auxiliary:
  vision:
    api_key: ${GOOGLE_API_KEY}

變數不存在時,佔位字串會原樣保留,並在日誌記一則警告。

更新後設定不見了?

新版可能新增選項。先跑 hermes config check 看缺什麼,再 hermes config migrate 補齊,通常就恢復正常。