設定檔
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 日誌
設定的優先順序
同一個選項出現在多處時,由上往下,越前面越優先:
- 命令列參數,例如
--model anthropic/claude-sonnet-4(只影響該次執行) ~/.hermes/config.yaml~/.hermes/.env- 內建預設值
經驗法則:祕密(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 # 互動式補上新選項(更新後常用)
常見設定片段
模型與代理
終端機後端
代理執行指令的地方。預設 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:
變數不存在時,佔位字串會原樣保留,並在日誌記一則警告。
更新後設定不見了?
新版可能新增選項。先跑 hermes config check 看缺什麼,再 hermes config migrate 補齊,通常就恢復正常。