環境變數參考
所有變數設定在 ~/.hermes/.env 中。你也可以使用 hermes config set VAR value 來設定。
LLM 供應商
| 變數 | 說明 |
|---|---|
OPENROUTER_API_KEY | OpenRouter API 金鑰(推薦,靈活度最高) |
OPENROUTER_BASE_URL | 覆寫 OpenRouter 相容的基礎 URL |
HERMES_OPENROUTER_CACHE | 啟用 OpenRouter 回應快取(1/true/yes/on)。覆寫 config.yaml 中的 openrouter.response_cache。參閱 Response Caching。 |
HERMES_OPENROUTER_CACHE_TTL | 快取 TTL,單位為秒(1-86400)。覆寫 config.yaml 中的 openrouter.response_cache_ttl。 |
NOUS_BASE_URL | 覆寫 Nous Portal 基礎 URL(極少使用;僅供開發/測試) |
NOUS_INFERENCE_BASE_URL | 直接覆寫 Nous 推論端點 |
OPENAI_API_KEY | 自訂 OpenAI 相容端點的 API 金鑰(搭配 OPENAI_BASE_URL 使用) |
OPENAI_BASE_URL | 自訂端點的基礎 URL(VLLM、SGLang 等) |
LM_API_KEY | LM Studio 的 API 金鑰(lmstudio 供應商)。通常為本機伺服器的佔位值 |
LM_BASE_URL | LM Studio 基礎 URL(預設:http://localhost:1234/v1) |
COPILOT_GITHUB_TOKEN | Copilot API 的 GitHub 令牌 — 最高優先順序(OAuth ghp_* 或細粒度 PAT github_pat_*;傳統 PAT ghp_* 不支援) |
GH_TOKEN | GitHub 令牌 — Copilot 第二優先順序(也用於 gh CLI) |
GITHUB_TOKEN | GitHub 令牌 — Copilot 第三優先順序 |
HERMES_COPILOT_ACP_COMMAND | 覆寫 Copilot ACP CLI 二進位檔路徑(預設:copilot) |
COPILOT_CLI_PATH | HERMES_COPILOT_ACP_COMMAND 的別名 |
HERMES_COPILOT_ACP_ARGS | 覆寫 Copilot ACP 參數(預設:--acp --stdio) |
COPILOT_ACP_BASE_URL | 覆寫 Copilot ACP 基礎 URL |
COPILOT_API_BASE_URL | 覆寫 Copilot API 基礎 URL(copilot 供應商) |
GLM_API_KEY | z.ai / ZhipuAI GLM API 金鑰(z.ai) |
ZAI_API_KEY | GLM_API_KEY 的別名 |
Z_AI_API_KEY | GLM_API_KEY 的別名 |
GLM_BASE_URL | 覆寫 z.ai 基礎 URL(預設:https://api.z.ai/api/paas/v4) |
KIMI_API_KEY | Kimi / Moonshot AI API 金鑰(moonshot.ai) |
KIMI_CODING_API_KEY | kimi-coding 供應商的別名金鑰(與 KIMI_API_KEY 同時接受) |
KIMI_BASE_URL | 覆寫 Kimi 基礎 URL(預設:https://api.moonshot.ai/v1) |
KIMI_CN_API_KEY | Kimi / Moonshot 中國 API 金鑰(moonshot.cn) |
ARCEEAI_API_KEY | Arcee AI API 金鑰(chat.arcee.ai) |
ARCEE_BASE_URL | 覆寫 Arcee 基礎 URL(預設:https://api.arcee.ai/api/v1) |
GMI_API_KEY | GMI Cloud API 金鑰(gmicloud.ai) |
GMI_BASE_URL | 覆寫 GMI Cloud 基礎 URL(預設:https://api.gmi-serving.com/v1) |
MINIMAX_API_KEY | MiniMax API 金鑰 — 全球端點(minimax.io)。minimax-oauth 不使用此變數(OAuth 路徑使用瀏覽器登入)。 |
MINIMAX_BASE_URL | 覆寫 MiniMax 基礎 URL(預設:https://api.minimax.io/anthropic — Hermes 使用 MiniMax 的 Anthropic Messages 相容端點)。minimax-oauth 不使用此變數。 |
MINIMAX_CN_API_KEY | MiniMax API 金鑰 — 中國端點(minimaxi.com)。minimax-oauth 不使用此變數(OAuth 路徑使用瀏覽器登入)。 |
MINIMAX_CN_BASE_URL | 覆寫 MiniMax 中國基礎 URL(預設:https://api.minimaxi.com/anthropic)。minimax-oauth 不使用此變數。 |
KILOCODE_API_KEY | Kilo Code API 金鑰(kilo.ai) |
KILOCODE_BASE_URL | 覆寫 Kilo Code 基礎 URL(預設:https://api.kilo.ai/api/gateway) |
XIAOMI_API_KEY | Xiaomi MiMo API 金鑰(platform.xiaomimimo.com) |
XIAOMI_BASE_URL | 覆寫 Xiaomi MiMo 基礎 URL(預設:https://api.xiaomimimo.com/v1) |
TOKENHUB_API_KEY | Tencent TokenHub API 金鑰(tokenhub.tencentmaas.com) |
TOKENHUB_BASE_URL | 覆寫 Tencent TokenHub 基礎 URL(預設:https://tokenhub.tencentmaas.com/v1) |
AZURE_FOUNDRY_API_KEY | Microsoft Foundry / Azure OpenAI API 金鑰(ai.azure.com)。當 model.auth_mode: entra_id 時不需要。 |
AZURE_FOUNDRY_BASE_URL | Microsoft Foundry 端點 URL(例如 OpenAI 風格的 https://<resource>.openai.azure.com/openai/v1,或 Anthropic 風格的 https://<resource>.services.ai.azure.com/anthropic) |
AZURE_ANTHROPIC_KEY | 用於 provider: anthropic 且 base_url 指向 Microsoft Foundry Claude 部署的 Azure Anthropic API 金鑰(當同時設定 Anthropic 和 Azure Anthropic 時,作為 ANTHROPIC_API_KEY 的替代方案) |
AZURE_TENANT_ID | Entra ID 租用戶 ID(服務主體流程;當 model.auth_mode: entra_id 時由 azure-identity 使用) |
AZURE_CLIENT_ID | Entra ID 客戶端 ID(服務主體、工作負載身分或使用者指派的受控身分) |
AZURE_CLIENT_SECRET | EnvironmentCredential 使用的服務主體密鑰 |
AZURE_CLIENT_CERTIFICATE_PATH | 服務主體憑證(替代 AZURE_CLIENT_SECRET) |
AZURE_FEDERATED_TOKEN_FILE | AKS 工作負載身分 / OIDC 流程的聯合令牌檔案路徑 |
AZURE_AUTHORITY_HOST | 主權雲端授權覆寫(例如 Azure Government 的 https://login.microsoftonline.us)。參閱 Azure Foundry guide |
IDENTITY_ENDPOINT / MSI_ENDPOINT | App Service、Functions 和 Container Apps 的受控身分端點;VM 通常使用 IMDS 而不設定這些 |
HF_TOKEN | Hugging Face 推論供應商的令牌(huggingface.co/settings/tokens) |
HF_BASE_URL | 覆寫 Hugging Face 基礎 URL(預設:https://router.huggingface.co/v1) |
GOOGLE_API_KEY | Google AI Studio API 金鑰(aistudio.google.com/app/apikey) |
GEMINI_API_KEY | GOOGLE_API_KEY 的別名 |
GEMINI_BASE_URL | 覆寫 Google AI Studio 基礎 URL |
HERMES_GEMINI_CLIENT_ID | google-gemini-cli PKCE 登入的 OAuth 客戶端 ID(可選;預設使用 Google 的公開 gemini-cli 客戶端) |
HERMES_GEMINI_CLIENT_SECRET | google-gemini-cli 的 OAuth 客戶端密鑰(可選) |
HERMES_GEMINI_PROJECT_ID | 付費 Gemini 層級的 GCP 專案 ID(免費層級自動配置) |
ANTHROPIC_API_KEY | Anthropic Console API 金鑰(console.anthropic.com) |
ANTHROPIC_BASE_URL | 覆寫 Anthropic API 基礎 URL |
ANTHROPIC_TOKEN | 手動或舊版 Anthropic OAuth/setup-token 覆寫 |
DASHSCOPE_API_KEY | Qwen Cloud(Alibaba DashScope)Qwen 模型的 API 金鑰(modelstudio.console.alibabacloud.com) |
DASHSCOPE_BASE_URL | 自訂 DashScope 基礎 URL(預設:https://dashscope-intl.aliyuncs.com/compatible-mode/v1;中國大陸地區使用 https://dashscope.aliyuncs.com/compatible-mode/v1) |
ALIBABA_CODING_PLAN_API_KEY | Qwen Coding Plan API 金鑰(alibaba-coding-plan 供應商) |
ALIBABA_CODING_PLAN_BASE_URL | 覆寫 Qwen Coding Plan 基礎 URL |
DEEPSEEK_API_KEY | DeepSeek 直接存取的 API 金鑰(platform.deepseek.com) |
DEEPSEEK_BASE_URL | 自訂 DeepSeek API 基礎 URL |
NOVITA_API_KEY | NovitaAI API 金鑰 — AI 原生雲端,提供 Model API、Agent Sandbox 和 GPU Cloud(novita.ai/settings/key-management) |
NOVITA_BASE_URL | 覆寫 NovitaAI 基礎 URL(預設:https://api.novita.ai/openai/v1) |
NVIDIA_API_KEY | NVIDIA NIM API 金鑰 — Nemotron 和開源模型(build.nvidia.com) |
NVIDIA_BASE_URL | 覆寫 NVIDIA 基礎 URL(預設:https://integrate.api.nvidia.com/v1;本機 NIM 端點設為 http://localhost:8000/v1) |
STEPFUN_API_KEY | StepFun API 金鑰 — Step 系列模型(platform.stepfun.com) |
STEPFUN_BASE_URL | 覆寫 StepFun 基礎 URL(預設:https://api.stepfun.com/v1) |
OLLAMA_API_KEY | Ollama Cloud API 金鑰 — 無需本機 GPU 的託管 Ollama 目錄(ollama.com/settings/keys) |
OLLAMA_BASE_URL | 覆寫 Ollama Cloud 基礎 URL(預設:https://ollama.com/v1) |
XAI_API_KEY | xAI(Grok)API 金鑰,用於聊天 + TTS + 網路搜尋(console.x.ai) |
XAI_BASE_URL | 覆寫 xAI 基礎 URL(預設:https://api.x.ai/v1) |
MISTRAL_API_KEY | Mistral API 金鑰,用於 Voxtral TTS 和 Voxtral STT(console.mistral.ai) |
AWS_REGION | Bedrock 推論的 AWS 區域(例如 us-east-1、eu-central-1)。由 boto3 讀取。 |
AWS_PROFILE | Bedrock 驗證的 AWS 命名設定檔(讀取 ~/.aws/credentials)。保持未設定以使用預設 boto3 憑證鏈。 |
BEDROCK_BASE_URL | 覆寫 Bedrock 執行時基礎 URL(預設:https://bedrock-runtime.us-east-1.amazonaws.com;通常保持未設定並使用 AWS_REGION) |
HERMES_QWEN_BASE_URL | Qwen Portal 基礎 URL 覆寫(預設:https://portal.qwen.ai/v1) |
OPENCODE_ZEN_API_KEY | OpenCode Zen API 金鑰 — 按使用量計費的精選模型存取(opencode.ai) |
OPENCODE_ZEN_BASE_URL | 覆寫 OpenCode Zen 基礎 URL |
OPENCODE_GO_API_KEY | OpenCode Go API 金鑰 — $10/月的開源模型訂閱(opencode.ai) |
OPENCODE_GO_BASE_URL | 覆寫 OpenCode Go 基礎 URL |
CLAUDE_CODE_OAUTH_TOKEN | 手動匯出時的明確 Claude Code 令牌覆寫 |
HERMES_MODEL | 在行程層級覆寫模型名稱(用於排程器;一般使用請偏好 config.yaml) |
VOICE_TOOLS_OPENAI_KEY | OpenAI 語音轉文字和文字轉語音供應商的首選 OpenAI 金鑰 |
HERMES_LOCAL_STT_COMMAND | 可選的本機語音轉文字命令模板。支援 {input_path}、{output_dir}、{language} 和 {model} 佔位符 |
HERMES_LOCAL_STT_LANGUAGE | 傳遞給 HERMES_LOCAL_STT_COMMAND 或自動偵測的本機 whisper CLI 備援的預設語言(預設:en) |
HERMES_HOME | 覆寫 Hermes 設定目錄(預設:~/.hermes)。同時限定閘道器 PID 檔案和 systemd 服務名稱,因此多個安裝可以同時運行 |
HERMES_GIT_BASH_PATH | 僅限 Windows。 覆寫終端工具的 bash.exe 偵測。指向任何 bash — 完整 Git-for-Windows 安裝、透過符號連結的 WSL bash、MSYS2、Cygwin。安裝程式會自動設定為其配置的 PortableGit。參閱 Windows (Native) Guide |
HERMES_DISABLE_WINDOWS_UTF8 | 僅限 Windows。 設為 1 以停用 UTF-8 stdio 墊飾(configure_windows_stdio())並回退到主控台的 locale 碼頁。用於二分法偵測編碼錯誤;正常運作中極少使用 |
HERMES_KANBAN_HOME | 覆寫看板所錨定的共用 Hermes 根目錄(資料庫 + 工作區 + worker 日誌)。回退到 get_default_hermes_root()(任何活躍設定檔的父目錄)。適用於測試和特殊部署 |
HERMES_KANBAN_BOARD | 鎖定此行程的活躍看板。優先於 ~/.hermes/kanban/current;排程器會將此注入 worker 子行程環境,使 worker 無法看到其他看板上的任務。預設為 default。slug 驗證:小寫字母數字 + 連字號 + 底線,1-64 字元 |
HERMES_KANBAN_DB | 直接鎖定看板資料庫檔案路徑(最高優先順序;優於 HERMES_KANBAN_BOARD 和 HERMES_KANBAN_HOME)。排程器會將此注入 worker 子行程環境 |
HERMES_KANBAN_WORKSPACES_ROOT | 直接鎖定看板工作區根目錄(工作區的最高優先順序;優於 HERMES_KANBAN_HOME)。排程器會將此注入 worker 子行程環境 |
HERMES_KANBAN_DISPATCH_IN_GATEWAY | kanban.dispatch_in_gateway 的執行時覆寫。設為 0、false、no 或 off 以防止閘道器啟動內建看板排程器;任何其他非空值啟用它。適用於獨立排程器行程擁有看板的情況。 |
供應商驗證(OAuth)
對於原生 Anthropic 驗證,Hermes 在憑證檔案存在時偏好使用 Claude Code 自身的憑證檔案,因為這些憑證可以自動更新。對 Anthropic 的 OAuth 需要購買了額外使用額度的 Claude Max 計劃 — Hermes 作為 Claude Code 路由,僅從 Max 計劃的額外/超額額度中提取,而非基本 Max 配額,且在 Claude Pro 上無法運作。沒有 Max + 額外額度,請改用 API 金鑰。ANTHROPIC_TOKEN 等環境變數仍可作為手動覆寫使用,但它們不再是 Claude Max 登入的首選路徑。
| 變數 | 說明 |
|---|---|
HERMES_PORTAL_BASE_URL | 覆寫 Nous Portal URL(用於開發/測試) |
NOUS_INFERENCE_BASE_URL | 覆寫 Nous 推論 API URL |
HERMES_NOUS_MIN_KEY_TTL_SECONDS | 重新鑄造前的最小代理金鑰 TTL(預設:1800 = 30分鐘) |
HERMES_NOUS_TIMEOUT_SECONDS | Nous 憑證 / 令牌流程的 HTTP 超時 |
HERMES_DUMP_REQUESTS | 將 API 請求內容轉儲到日誌檔案(true/false) |
HERMES_PREFILL_MESSAGES_FILE | 在 API 呼叫時注入的暫時性預填訊息 JSON 檔案路徑 |
HERMES_TIMEZONE | IANA 時區覆寫(例如 America/New_York) |
工具 API
| 變數 | 說明 |
|---|---|
PARALLEL_API_KEY | AI 原生網路搜尋(parallel.ai) |
FIRECRAWL_API_KEY | 網路爬蟲和雲端瀏覽器(firecrawl.dev) |
FIRECRAWL_API_URL | 自架實例的自訂 Firecrawl API 端點(可選) |
TAVILY_API_KEY | Tavily API 金鑰,用於 AI 原生網路搜尋、擷取和爬蟲(app.tavily.com) |
SEARXNG_URL | SearXNG 實例 URL,用於免費自架網路搜尋 — 無需 API 金鑰(searxng.github.io) |
TAVILY_BASE_URL | 覆寫 Tavily API 端點。適用於企業代理和自架 Tavily 相容搜尋後端。與 GROQ_BASE_URL 相同模式。 |
EXA_API_KEY | Exa API 金鑰,用於 AI 原生網路搜尋和內容(exa.ai) |
BROWSERBASE_API_KEY | 瀏覽器自動化(browserbase.com) |
BROWSERBASE_PROJECT_ID | Browserbase 專案 ID |
BROWSER_USE_API_KEY | Browser Use 雲端瀏覽器 API 金鑰(browser-use.com) |
FIRECRAWL_BROWSER_TTL | Firecrawl 瀏覽器會話 TTL,單位為秒(預設:300) |
BROWSER_CDP_URL | 本機瀏覽器的 Chrome DevTools Protocol URL(透過 /browser connect 設定,例如 ws://localhost:9222) |
CAMOFOX_URL | Camofox 本機反偵測瀏覽器 URL(預設:http://localhost:9377) |
CAMOFOX_USER_ID | 可選的外部管理 Camofox 使用者 ID,用於共用可見會話 |
CAMOFOX_SESSION_KEY | 可選的 Camofox 會話金鑰,在為 CAMOFOX_USER_ID 建立分頁時使用 |
CAMOFOX_ADOPT_EXISTING_TAB | 設為 true 以在建立新分頁前重用現有 Camofox 分頁 |
BROWSER_INACTIVITY_TIMEOUT | 瀏覽器會話閒置超時,單位為秒 |
AGENT_BROWSER_ARGS | 額外的 Chromium 啟動參數(逗號或換行分隔)。Hermes 在以 root 執行或在 AppArmor 限制的非特權使用者命名空間(Ubuntu 23.10+、DGX Spark、許多容器映像)中執行時自動注入 --no-sandbox,--disable-dev-shm-usage;僅在需要覆寫或新增其他參數時手動設定。 |
FAL_KEY | 圖像生成(fal.ai) |
GROQ_API_KEY | Groq Whisper STT API 金鑰(groq.com) |
ELEVENLABS_API_KEY | ElevenLabs 高級 TTS 語音(elevenlabs.io) |
STT_GROQ_MODEL | 覆寫 Groq STT 模型(預設:whisper-large-v3-turbo) |
GROQ_BASE_URL | 覆寫 Groq OpenAI 相容的 STT 端點 |
STT_OPENAI_MODEL | 覆寫 OpenAI STT 模型(預設:whisper-1) |
STT_OPENAI_BASE_URL | 覆寫 OpenAI 相容的 STT 端點 |
GITHUB_TOKEN | Skills Hub 的 GitHub 令牌(更高的 API 速率限制、技能發佈) |
HONCHO_API_KEY | 跨會話使用者建模(honcho.dev) |
HONCHO_BASE_URL | 自架 Honcho 實例的基礎 URL(預設:Honcho 雲端)。本機實例不需要 API 金鑰 |
HINDSIGHT_TIMEOUT | Hindsight 記憶供應商 API 呼叫的超時,單位為秒(預設:60)。如果您的 Hindsight 實例在 /sync 或 on_session_switch 期間回應緩慢且在 errors.log 中看到超時,請調高此值。 |
SUPERMEMORY_API_KEY | 具有設定檔回憶和會話擷取的語義長期記憶(supermemory.ai) |
DAYTONA_API_KEY | Daytona 雲端沙箱(daytona.io) |
Langfuse 可觀測性
內建 observability/langfuse 外掛的環境變數。在 ~/.hermes/.env 中設定。外掛也必須啟用(hermes plugins enable observability/langfuse,或在 hermes plugins 中勾選)才能生效。
| 變數 | 說明 |
|---|---|
HERMES_LANGFUSE_PUBLIC_KEY | Langfuse 專案公開金鑰(pk-lf-...)。必填。 |
HERMES_LANGFUSE_SECRET_KEY | Langfuse 專案密鑰(sk-lf-...)。必填。 |
HERMES_LANGFUSE_BASE_URL | Langfuse 伺服器 URL(預設:https://cloud.langfuse.com)。自架時設定。 |
HERMES_LANGFUSE_ENV | 追蹤中的環境標籤(production、staging…) |
HERMES_LANGFUSE_RELEASE | 追蹤中的發行版/版本標籤 |
HERMES_LANGFUSE_SAMPLE_RATE | SDK 取樣率 0.0–1.0(預設:1.0) |
HERMES_LANGFUSE_MAX_CHARS | 序列化內容的每欄位截斷(預設:12000) |
HERMES_LANGFUSE_DEBUG | true 啟用詳細外掛日誌輸出到 agent.log |
LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY / LANGFUSE_BASE_URL | 標準 Langfuse SDK 名稱。當 HERMES_LANGFUSE_* 等效變數未設定時作為備援接受。 |
Nous 工具閘道器
這些變數設定付費 Nous 訂閱者或自架閘道器部署的工具閘道器。大多數使用者不需要設定 — 閘道器透過 hermes model 或 hermes tools 自動設定。
| 變數 | 說明 |
|---|---|
TOOL_GATEWAY_DOMAIN | 工具閘道器路由的基礎網域(預設:nousresearch.com) |
TOOL_GATEWAY_SCHEME | 閘道器 URL 的 HTTP 或 HTTPS 方案(預設:https) |
TOOL_GATEWAY_USER_TOKEN | 工具閘道器的驗證令牌(通常從 Nous 驗證自動填入) |
FIRECRAWL_GATEWAY_URL | 特別覆寫 Firecrawl 閘道器端點的 URL |
終端後端
| 變數 | 說明 |
|---|---|
TERMINAL_ENV | 後端:local、docker、ssh、singularity、modal、daytona |
HERMES_DOCKER_BINARY | 覆寫 Hermes 外殼呼叫的容器二進位檔(例如 podman、/usr/local/bin/docker)。未設定時,Hermes 自動在 PATH 上偵測 docker 或 podman。當兩者都安裝且您想要非預設的,或二進位檔不在 PATH 中時需要。 |
TERMINAL_DOCKER_IMAGE | Docker 映像(預設:nikolaik/python-nodejs:python3.11-nodejs20) |
TERMINAL_DOCKER_FORWARD_ENV | 顯式轉發到 Docker 終端會話的環境變數名稱 JSON 陣列。注意:技能宣告的 required_environment_variables 會自動轉發 — 僅在有任何技能未宣告的變數時才需要此設定。 |
TERMINAL_DOCKER_VOLUMES | 額外的 Docker 卷掛載(逗號分隔的 host:container 配對) |
TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE | 進階選擇加入:將啟動時的 cwd 掛載到 Docker /workspace(true/false,預設:false) |
TERMINAL_SINGULARITY_IMAGE | Singularity 映像或 .sif 路徑 |
TERMINAL_MODAL_IMAGE | Modal 容器映像 |
TERMINAL_DAYTONA_IMAGE | Daytona 沙箱映像 |
TERMINAL_TIMEOUT | 命令超時,單位為秒 |
TERMINAL_LIFETIME_SECONDS | 終端會話的最大存活時間,單位為秒 |
TERMINAL_CLOUD_WORKSPACE_MODE | 雲端工作區模式:ephemeral(每次啟動建立新工作區)或 persistent(重用先前的工作區) |
TERMINAL_CWD | 已棄用的閘道器/排程終端會話直接覆寫。偏好在 config.yaml 中使用 terminal.cwd;CLI 仍使用啟動目錄。 |
SUDO_PASSWORD | 啟用無互動提示的 sudo |
對於雲端沙箱後端,持久性以檔案系統為導向。TERMINAL_LIFETIME_SECONDS 控制 Hermes 何時清理閒置終端會話,之後的恢復可能會重新建立沙箱而非保持相同的即時行程運行。
SSH 後端
| 變數 | 說明 |
|---|---|
TERMINAL_SSH_HOST | 遠端伺服器主機名 |
TERMINAL_SSH_USER | SSH 使用者名稱 |
TERMINAL_SSH_PORT | SSH 連接埠(預設:22) |
TERMINAL_SSH_KEY | 私鑰路徑 |
TERMINAL_SSH_PERSISTENT | 覆寫 SSH 的持久性外殼(預設:跟隨 TERMINAL_PERSISTENT_SHELL) |
容器資源(Docker、Singularity、Modal、Daytona)
| 變數 | 說明 |
|---|---|
TERMINAL_CONTAINER_CPU | CPU 核心數(預設:1) |
TERMINAL_CONTAINER_MEMORY | 記憶體,單位為 MB(預設:5120) |
TERMINAL_CONTAINER_DISK | 磁碟空間,單位為 MB(預設:51200) |
TERMINAL_CONTAINER_PERSISTENT | 跨會話持久化容器檔案系統(預設:true) |
TERMINAL_SANDBOX_DIR | 工作區和覆寫層的主機目錄(預設:~/.hermes/sandboxes/) |
持久性外殼
| 變數 | 說明 |
|---|---|
TERMINAL_PERSISTENT_SHELL | 為非本機後端啟用持久性外殼(預設:true)。也可在 config.yaml 中透過 terminal.persistent_shell 設定 |
TERMINAL_LOCAL_PERSISTENT | 為本機後端啟用持久性外殼(預設:false) |
TERMINAL_SSH_PERSISTENT | 覆寫 SSH 後端的持久性外殼(預設:跟隨 TERMINAL_PERSISTENT_SHELL) |
訊息傳遞
| 變數 | 說明 |
|---|---|
TELEGRAM_BOT_TOKEN | Telegram 機器人令牌(來自 @BotFather) |
TELEGRAM_ALLOWED_USERS | 逗號分隔的允許使用機器人的使用者 ID(適用於私訊、群組和論壇) |
TELEGRAM_GROUP_ALLOWED_USERS | 逗號分隔的發送者使用者 ID,僅在群組/論壇中授權(不授予私訊存取權)。Chat-ID 格式的值(以 - 開頭)仍作為 chat ID 接受以向後相容 pre-#17686 設定,但會顯示棄用警告。 |
TELEGRAM_GROUP_ALLOWED_CHATS | 逗號分隔的群組/論壇 chat ID;任何成員都被授權 |
TELEGRAM_HOME_CHANNEL | 排程投遞的預設 Telegram 聊天/頻道 |
TELEGRAM_HOME_CHANNEL_NAME | Telegram 首頁頻道的顯示名稱 |
TELEGRAM_CRON_THREAD_ID | 接收排程投遞的論壇主題 ID;僅覆寫排程的 TELEGRAM_HOME_CHANNEL_THREAD_ID。在主題模式下使用,使對排程訊息的回覆開啟新會話而非進入系統大廳(#24409)。 |
TELEGRAM_WEBHOOK_URL | Webhook 模式的公開 HTTPS URL(啟用 webhook 而非輪詢) |
TELEGRAM_WEBHOOK_PORT | Webhook 伺服器的本機監聽連接埠(預設:8443) |
TELEGRAM_WEBHOOK_SECRET | Telegram 在每個更新中回送的密鑰令牌,用於驗證。設定 TELEGRAM_WEBHOOK_URL 時必填 — 沒有它閘道器拒絕啟動(GHSA-3vpc-7q5r-276h)。使用 openssl rand -hex 32 產生。 |
TELEGRAM_REACTIONS | 在處理過程中啟用訊息上的表情符號反應(預設:false) |
TELEGRAM_REQUIRE_MENTION | 在 Telegram 群組中回應前需要明確的觸發。等同於 config.yaml 中的 telegram.require_mention。 |
TELEGRAM_MENTION_PATTERNS | 啟用 Telegram 群組提及閘控時接受的正則表達式喚醒詞模式 JSON 陣列、換行分隔列表或逗號分隔列表。等同於 telegram.mention_patterns。 |
TELEGRAM_EXCLUSIVE_BOT_MENTIONS | 啟用時,Telegram 群組中明確的 @...bot 提及僅路由到被提及的機器人使用者名稱,然後才執行回覆或喚醒詞回退。預設:true。等同於 telegram.exclusive_bot_mentions。 |
TELEGRAM_REPLY_TO_MODE | 回覆參照行為:off、first(預設)或 all。與 Discord 模式相符。 |
TELEGRAM_IGNORED_THREADS | 逗號分隔的 Telegram 論壇主題/執行緒 ID,機器人永不回應 |
TELEGRAM_PROXY | Telegram 連線的代理 URL — 覆寫 HTTPS_PROXY。支援 http://、https://、socks5:// |
DISCORD_BOT_TOKEN | Discord 機器人令牌 |
DISCORD_ALLOWED_USERS | 逗號分隔的允許使用機器人的 Discord 使用者 ID |
DISCORD_ALLOWED_ROLES | 逗號分隔的允許使用機器人的 Discord 角色 ID(與 DISCORD_ALLOWED_USERS 為 OR 關係)。自動啟用 Members intent。當管理團隊變動時有用 — 角色授權會自動傳播。 |
DISCORD_ALLOWED_CHANNELS | 逗號分隔的 Discord 頻道 ID。設定後,機器人僅在這些頻道(加上私訊,如果允許)中回應。覆寫 config.yaml 的 discord.allowed_channels。 |
DISCORD_PROXY | Discord 連線的代理 URL — 覆寫 HTTPS_PROXY。支援 http://、https://、socks5:// |
DISCORD_HOME_CHANNEL | 排程投遞的預設 Discord 頻道 |
DISCORD_HOME_CHANNEL_NAME | Discord 首頁頻道的顯示名稱 |
DISCORD_COMMAND_SYNC_POLICY | Discord 斜線指令啟動同步策略:safe(差異比對和調和)、bulk(舊版 tree.sync())或 off |
DISCORD_REQUIRE_MENTION | 在伺服器頻道中回應前需要 @提及 |
DISCORD_FREE_RESPONSE_CHANNELS | 不需要提及即可回應的逗號分隔頻道 ID |
DISCORD_AUTO_THREAD | 在支援時自動為長回覆建立執行緒 |
DISCORD_ALLOW_ANY_ATTACHMENT | 設為 true 時,接受任何檔案類型的附件(不僅限於內建的 PDF/text/zip/office 允許清單)。未知類型會被快取並以本機路徑呈現給代理,以便透過 terminal / read_file / ffprobe 檢查。預設 false。 |
DISCORD_MAX_ATTACHMENT_BYTES | 閘道器將快取的每個附件最大位元組數。預設 33554432(32 MiB)。設為 0 表示無上限(附件在寫入時保存在記憶體中)。 |
DISCORD_REACTIONS | 在處理過程中啟用訊息上的表情符號反應(預設:true) |
DISCORD_IGNORED_CHANNELS | 逗號分隔的機器人永不回應的頻道 ID |
DISCORD_NO_THREAD_CHANNELS | 逗號分隔的機器人回應但不自動建立執行緒的頻道 ID |
DISCORD_REPLY_TO_MODE | 回覆參照行為:off、first(預設)或 all |
DISCORD_ALLOW_MENTION_EVERYONE | 允許機器人 ping @everyone/@here(預設:false)。參閱 Mention Control。 |
DISCORD_ALLOW_MENTION_ROLES | 允許機器人 ping @role 提及(預設:false)。 |
DISCORD_ALLOW_MENTION_USERS | 允許機器人 ping 個別 @user 提及(預設:true)。 |
DISCORD_ALLOW_MENTION_REPLIED_USER | 回覆訊息時 ping 作者(預設:true)。 |
SLACK_BOT_TOKEN | Slack 機器人令牌(xoxb-...) |
SLACK_APP_TOKEN | Slack 應用層級令牌(xapp-...,Socket Mode 必填) |
SLACK_ALLOWED_USERS | 逗號分隔的 Slack 使用者 ID |
SLACK_HOME_CHANNEL | 排程投遞的預設 Slack 頻道 |
SLACK_HOME_CHANNEL_NAME | Slack 首頁頻道的顯示名稱 |
GOOGLE_CHAT_PROJECT_ID | 托管 Pub/Sub 主題的 GCP 專案(回退到 GOOGLE_CLOUD_PROJECT) |
GOOGLE_CHAT_SUBSCRIPTION_NAME | 完整 Pub/Sub 訂閱路徑,projects/{proj}/subscriptions/{sub}(舊版別名:GOOGLE_CHAT_SUBSCRIPTION) |
GOOGLE_CHAT_SERVICE_ACCOUNT_JSON | Service Account JSON 的路徑,或內聯 JSON(回退到 GOOGLE_APPLICATION_CREDENTIALS) |
GOOGLE_CHAT_ALLOWED_USERS | 逗號分隔的允許與機器人聊天的使用者電子郵件 |
GOOGLE_CHAT_ALLOW_ALL_USERS | 允許任何 Google Chat 使用者觸發機器人(僅限開發) |
GOOGLE_CHAT_HOME_CHANNEL | 排程投遞的預設空間(例如 spaces/AAAA...) |
GOOGLE_CHAT_HOME_CHANNEL_NAME | Google Chat 首頁空間的顯示名稱 |
GOOGLE_CHAT_MAX_MESSAGES | Pub/Sub FlowControl 最大進行中訊息數(預設:1) |
GOOGLE_CHAT_MAX_BYTES | Pub/Sub FlowControl 最大進行中位元組數(預設:16777216,16 MiB) |
GOOGLE_CHAT_BOOTSTRAP_SPACES | 逗號分隔的額外空間 ID,在啟動時探測機器人自身的 users/{id} 時使用 |
GOOGLE_CHAT_DEBUG_RAW | 設為任何值以在 DEBUG 級別記錄已編輯的 Pub/Sub 信封(僅限除錯) |
WHATSAPP_ENABLED | 啟用 WhatsApp 橋接(true/false) |
WHATSAPP_MODE | bot(獨立號碼)或 self-chat(傳訊息給自己) |
WHATSAPP_ALLOWED_USERS | 逗號分隔的電話號碼(含國家代碼,無 +),或 * 允許所有發送者 |
WHATSAPP_ALLOW_ALL_USERS | 允許所有 WhatsApp 發送者,無需允許清單(true/false) |
WHATSAPP_DEBUG | 在橋接中記錄原始訊息事件以供除錯(true/false) |
WHATSAPP_CLOUD_PHONE_NUMBER_ID | WhatsApp Business Cloud API 的 Meta Phone Number ID(15–17 位數;不是電話號碼本身) |
WHATSAPP_CLOUD_ACCESS_TOKEN | Meta 存取令牌(以 EAA 開頭);臨時令牌在 24 小時後過期,System User 令牌永久有效 |
WHATSAPP_CLOUD_APP_SECRET | 用於驗證入站 webhook 簽名的 32 字元十六進位應用密鑰 |
WHATSAPP_CLOUD_VERIFY_TOKEN | Meta webhook 驗證交握的共享密鑰(由設定精靈自動產生) |
WHATSAPP_CLOUD_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的 wa_id(含國家代碼的電話號碼,無 +) |
WHATSAPP_CLOUD_ALLOW_ALL_USERS | 允許所有 WhatsApp Cloud 發送者,無需允許清單(true/false) |
WHATSAPP_CLOUD_APP_ID | 可選的 Meta App ID(用於未來的分析整合) |
WHATSAPP_CLOUD_WABA_ID | 可選的 WhatsApp Business Account ID(用於未來的分析整合) |
WHATSAPP_CLOUD_WEBHOOK_HOST | 入站 webhoook 伺服器綁定的介面(預設 0.0.0.0) |
WHATSAPP_CLOUD_WEBHOOK_PORT | 入站 webhook 伺服器綁定的連接埠(預設 8090) |
WHATSAPP_CLOUD_WEBHOOK_PATH | Meta 發送入站訊息的 URL 路徑(預設 /whatsapp/webhook) |
WHATSAPP_CLOUD_API_VERSION | 要呼叫的 Meta Graph API 版本(預設 v20.0) |
WHATSAPP_CLOUD_HOME_CHANNEL | 作為機器人首頁頻道的 wa_id(用於排程任務等) |
WHATSAPP_CLOUD_DM_POLICY | Cloud 適配器的私訊閘控(open/allowlist/disabled);未設定時回退到 WHATSAPP_DM_POLICY |
WHATSAPP_CLOUD_ALLOW_FROM | 當 dm_policy: allowlist 時允許的逗號分隔發送者(純 wa_id;Baileys 風格的 JID 會被正規化) |
WHATSAPP_CLOUD_GROUP_POLICY | Cloud 適配器的群組閘控(open/allowlist/disabled);未設定時回退到 WHATSAPP_GROUP_POLICY |
WHATSAPP_CLOUD_GROUP_ALLOW_FROM | 當 group_policy: allowlist 時允許的逗號分隔群組聊天 ID |
SIGNAL_HTTP_URL | signal-cli 守護行程 HTTP 端點(例如 http://127.0.0.1:8080) |
SIGNAL_ACCOUNT | E.164 格式的機器人電話號碼 |
SIGNAL_ALLOWED_USERS | 逗號分隔的 E.164 電話號碼或 UUID |
SIGNAL_GROUP_ALLOWED_USERS | 逗號分隔的群組 ID,或 * 表示所有群組 |
SIGNAL_HOME_CHANNEL_NAME | Signal 首頁頻道的顯示名稱 |
SIGNAL_IGNORE_STORIES | 忽略 Signal 限時動態/狀態更新 |
SIGNAL_ALLOW_ALL_USERS | 允許所有 Signal 使用者,無需允許清單 |
TWILIO_ACCOUNT_SID | Twilio Account SID(與 telephony 技能共用) |
TWILIO_AUTH_TOKEN | Twilio Auth Token(與 telephony 技能共用;也用於 webhook 簽名驗證) |
TWILIO_PHONE_NUMBER | E.164 格式的 Twilio 電話號碼(與 telephony 技能共用) |
SMS_WEBHOOK_URL | 用於 Twilio 簽名驗證的公開 URL — 必須與 Twilio Console 中的 webhook URL 相符(必填) |
SMS_WEBHOOK_PORT | 入站 SMS 的 webhook 監聽連接埠(預設:8080) |
SMS_WEBHOOK_HOST | Webhook 綁定地址(預設:0.0.0.0) |
SMS_INSECURE_NO_SIGNATURE | 設為 true 以停用 Twilio 簽名驗證(僅限本機開發 — 不適用於生產環境) |
SMS_ALLOWED_USERS | 逗號分隔的允許聊天的 E.164 電話號碼 |
SMS_ALLOW_ALL_USERS | 允許所有 SMS 發送者,無需允許清單 |
SMS_HOME_CHANNEL | 用於排程任務/通知投遞的電話號碼 |
SMS_HOME_CHANNEL_NAME | SMS 首頁頻道的顯示名稱 |
EMAIL_ADDRESS | Email 閘道器適配器的電子郵件地址 |
EMAIL_PASSWORD | 電子郵件帳號的密碼或應用程式密碼 |
EMAIL_IMAP_HOST | 電子郵件適配器的 IMAP 主機名 |
EMAIL_IMAP_PORT | IMAP 連接埠 |
EMAIL_SMTP_HOST | 電子郵件適配器的 SMTP 主機名 |
EMAIL_SMTP_PORT | SMTP 連接埠 |
EMAIL_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的電子郵件地址 |
EMAIL_HOME_ADDRESS | 主動電子郵件投遞的預設收件者 |
EMAIL_HOME_ADDRESS_NAME | 電子郵件首頁目標的顯示名稱 |
EMAIL_POLL_INTERVAL | 電子郵件輪詢間隔,單位為秒 |
EMAIL_ALLOW_ALL_USERS | 允許所有入站電子郵件發送者 |
DINGTALK_CLIENT_ID | 開發者入口的釘釘機器人 AppKey(open.dingtalk.com) |
DINGTALK_CLIENT_SECRET | 開發者入口的釘釘機器人 AppSecret |
DINGTALK_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的釘釘使用者 ID |
FEISHU_APP_ID | open.feishu.cn 的飛書/Lark 機器人 App ID |
FEISHU_APP_SECRET | 飛書/Lark 機器人 App Secret |
FEISHU_DOMAIN | feishu(中國)或 lark(國際)。預設:feishu |
FEISHU_CONNECTION_MODE | websocket(推薦)或 webhook。預設:websocket |
FEISHU_ENCRYPT_KEY | Webhook 模式的可選加密金鑰 |
FEISHU_VERIFICATION_TOKEN | Webhook 模式的可選驗證令牌 |
FEISHU_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的飛書使用者 ID |
FEISHU_ALLOW_BOTS | none(預設)/ mentions / all — 接受來自其他機器人的入站訊息。參閱 bot-to-bot messaging |
FEISHU_REQUIRE_MENTION | true(預設)/ false — 群組訊息是否必須 @提及機器人。可透過 group_rules.<chat_id>.require_mention 按聊天覆寫。 |
FEISHU_HOME_CHANNEL | 用於排程投遞和通知的飛書聊天 ID |
WECOM_BOT_ID | 管理控制台的企業微信 AI Bot ID |
WECOM_SECRET | 企業微信 AI Bot 密鑰 |
WECOM_WEBSOCKET_URL | 自訂 WebSocket URL(預設:wss://openws.work.weixin.qq.com) |
WECOM_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的企業微信使用者 ID |
WECOM_HOME_CHANNEL | 用於排程投遞和通知的企業微信聊天 ID |
WECOM_CALLBACK_CORP_ID | 用於回呼自建應用的企業微信企業 Corp ID |
WECOM_CALLBACK_CORP_SECRET | 自建應用的 Corp 密鑰 |
WECOM_CALLBACK_AGENT_ID | 自建應用的 Agent ID |
WECOM_CALLBACK_TOKEN | 回呼驗證令牌 |
WECOM_CALLBACK_ENCODING_AES_KEY | 用於回呼加密的 AES 金鑰 |
WECOM_CALLBACK_HOST | 回呼伺服器綁定地址(預設:0.0.0.0) |
WECOM_CALLBACK_PORT | 回呼伺服器連接埠(預設:8645) |
WECOM_CALLBACK_ALLOWED_USERS | 逗號分隔的允許清單使用者 ID |
WECOM_CALLBACK_ALLOW_ALL_USERS | 設為 true 以允許所有使用者,無需允許清單 |
WEIXIN_ACCOUNT_ID | 透過 iLink Bot API QR 登入取得的微信帳號 ID |
WEIXIN_TOKEN | 透過 iLink Bot API QR 登入取得的微信驗證令牌 |
WEIXIN_BASE_URL | 覆寫微信 iLink Bot API 基礎 URL(預設:https://ilinkai.weixin.qq.com) |
WEIXIN_CDN_BASE_URL | 覆寫微信媒體 CDN 基礎 URL(預設:https://novac2c.cdn.weixin.qq.com/c2c) |
WEIXIN_DM_POLICY | 私訊策略:open、allowlist、pairing、disabled(預設:open) |
WEIXIN_GROUP_POLICY | 群組訊息策略:open、allowlist、disabled(預設:disabled) |
WEIXIN_ALLOWED_USERS | 逗號分隔的允許向機器人發私訊的微信使用者 ID |
WEIXIN_GROUP_ALLOWED_USERS | 逗號分隔的微信群組聊天 ID(不是成員使用者 ID),允許與機器人互動。此變數名稱為舊版 — 它期望群組 ID。僅在 iLink 實際投遞群組事件時生效;QR 登入的 iLink 機器人身分(...@im.bot)通常不會接收普通的微信群訊息。 |
WEIXIN_HOME_CHANNEL | 用於排程投遞和通知的微信聊天 ID |
WEIXIN_HOME_CHANNEL_NAME | 微信首頁頻道的顯示名稱 |
WEIXIN_ALLOW_ALL_USERS | 允許所有微信使用者,無需允許清單(true/false) |
BLUEBUBBLES_SERVER_URL | BlueBubbles 伺服器 URL(例如 http://192.168.1.10:1234) |
BLUEBUBBLES_PASSWORD | BlueBubbles 伺服器密碼 |
BLUEBUBBLES_WEBHOOK_HOST | Webhook 監聽器綁定地址(預設:127.0.0.1) |
BLUEBUBBLES_WEBHOOK_PORT | Webhook 監聽器連接埠(預設:8645) |
BLUEBUBBLES_HOME_CHANNEL | 用於排程/通知投遞的電話/電子郵件 |
BLUEBUBBLES_ALLOWED_USERS | 逗號分隔的已授權使用者 |
BLUEBUBBLES_ALLOW_ALL_USERS | 允許所有使用者(true/false) |
QQ_APP_ID | q.qq.com 的 QQ Bot App ID |
QQ_CLIENT_SECRET | q.qq.com 的 QQ Bot App Secret |
QQ_STT_API_KEY | 外部 STT 備援供應商的 API 金鑰(可選,當 QQ 內建 ASR 未回傳文字時使用) |
QQ_STT_BASE_URL | 外部 STT 供應商的基礎 URL(可選) |
QQ_STT_MODEL | 外部 STT 供應商的模型名稱(可選) |
QQ_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的 QQ 使用者 openID |
QQ_GROUP_ALLOWED_USERS | 逗號分隔的群組 @-訊息存取的 QQ 群組 ID |
QQ_ALLOW_ALL_USERS | 允許所有使用者(true/false,覆寫 QQ_ALLOWED_USERS) |
QQBOT_HOME_CHANNEL | 用於排程投遞和通知的 QQ 使用者/群組 openID |
QQBOT_HOME_CHANNEL_NAME | QQ 首頁頻道的顯示名稱 |
QQ_PORTAL_HOST | 覆寫 QQ 入口主機(設為 sandbox.q.qq.com 以透過沙箱閘道器路由;預設:q.qq.com)。 |
MATTERMOST_URL | Mattermost 伺服器 URL(例如 https://mm.example.com) |
MATTERMOST_TOKEN | Mattermost 的機器人令牌或個人存取令牌 |
MATTERMOST_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的 Mattermost 使用者 ID |
MATTERMOST_HOME_CHANNEL | 主動訊息投遞(排程、通知)的頻道 ID |
MATTERMOST_REQUIRE_MENTION | 在頻道中要求 @mention(預設:true)。設為 false 以回應所有訊息。 |
MATTERMOST_FREE_RESPONSE_CHANNELS | 逗號分隔的機器人無需 @mention 即回應的頻道 ID |
MATTERMOST_REPLY_MODE | 回覆樣式:thread(執行緒回覆)或 off(平面訊息,預設) |
MATRIX_HOMESERVER | Matrix 首頁伺服器 URL(例如 https://matrix.org) |
MATRIX_ACCESS_TOKEN | 用於機器人驗證的 Matrix 存取令牌 |
MATRIX_USER_ID | Matrix 使用者 ID(例如 @hermes:matrix.org)— 密碼登入時必填,使用存取令牌時可選 |
MATRIX_PASSWORD | Matrix 密碼(替代存取令牌) |
MATRIX_ALLOWED_USERS | 逗號分隔的允許向機器人發訊息的 Matrix 使用者 ID(例如 @alice:matrix.org) |
MATRIX_ALLOWED_ROOMS | 逗號分隔的觸發機器人回應的 Matrix 房間 ID |
MATRIX_HOME_ROOM | 主動訊息投遞的房間 ID(例如 !abc123:matrix.org) |
MATRIX_ENCRYPTION | 啟用端對端加密(true/false,預設:false) |
MATRIX_E2EE_MODE | Matrix E2EE 行為:off、optional 或 required。設定時覆寫 MATRIX_ENCRYPTION。 |
MATRIX_DEVICE_ID | 用於跨重啟持久化 E2EE 的穩定 Matrix 裝置 ID(例如 HERMES_BOT)。沒有此設定,E2EE 金鑰每次啟動都會輪換,歷史房間解密會失效。 |
MATRIX_REACTIONS | 在入站訊息上啟用處理生命週期表情符號反應(預設:true)。設為 false 以停用。 |
MATRIX_REQUIRE_MENTION | 在房間中要求 @mention(預設:true)。設為 false 以回應所有訊息。 |
MATRIX_FREE_RESPONSE_ROOMS | 逗號分隔的機器人無需 @mention 即回應的房間 ID |
MATRIX_IGNORE_USER_PATTERNS | 逗號分隔的正則表達式,用於忽略 Matrix 橋接/應用服務幽靈使用者 ID |
MATRIX_PROCESS_NOTICES | 處理入站 Matrix m.notice 事件(預設:false) |
MATRIX_SESSION_SCOPE | 專案房間的 Matrix 會話範圍:auto、room 或 thread(預設:auto) |
MATRIX_TOOLS_ALLOW_CROSS_ROOM | 允許 Matrix 工具指向當前房間以外的明確房間(預設:false) |
MATRIX_TOOLS_ALLOW_CROSS_ROOM_DESTRUCTIVE | 允許跨房間的 Matrix 編輯/邀請類工具;需要 MATRIX_TOOLS_ALLOW_CROSS_ROOM=true(預設:false) |
MATRIX_TOOLS_ALLOW_REDACTION | 允許 Matrix 訊息編輯工具執行(預設:false) |
MATRIX_TOOLS_ALLOW_INVITES | 允許 Matrix 邀請工具執行(預設:false) |
MATRIX_TOOLS_ALLOW_ROOM_CREATE | 允許 Matrix 房間建立工具執行(預設:false) |
MATRIX_ALLOW_ROOM_MENTIONS | 允許出站 @room 提及通知所有房間成員(預設:false) |
MATRIX_AUTO_THREAD | 為房間訊息自動建立執行緒(預設:true) |
MATRIX_DM_MENTION_THREADS | 在私訊中被 @提及 時建立執行緒(預設:false) |
MATRIX_APPROVAL_REQUIRE_SENDER | 當已知時,要求核准/模型選擇器反應來自原始請求者(預設:true) |
MATRIX_APPROVAL_TIMEOUT_SECONDS | Matrix 反應核准/模型選擇器提示的超時(預設:300) |
MATRIX_ALLOW_PUBLIC_ROOMS | 允許 Matrix 房間建立工具建立公開房間(預設:false) |
MATRIX_MAX_MEDIA_BYTES | 最大 Matrix 媒體上傳/下載大小,單位為位元組(預設:104857600) |
MATRIX_RECOVERY_KEY | 裝置金鑰輪換後的跨簽署驗證恢復金鑰。建議在啟用跨簽署的 E2EE 設定中使用。 |
MATRIX_RECOVERY_KEY_OUTPUT_FILE | 可選的一次性路徑,用於產生的 Matrix 恢復金鑰。以 0600 模式建立且永不覆寫。 |
HASS_TOKEN | Home Assistant 長期存取令牌(啟用 HA 平台 + 工具) |
HASS_URL | Home Assistant URL(預設:http://homeassistant.local:8123) |
WEBHOOK_ENABLED | 啟用 webhook 平台適配器(true/false) |
WEBHOOK_PORT | 接收 webhook 的 HTTP 伺服器連接埠(預設:8644) |
WEBHOOK_SECRET | 用於 webhook 簽名驗證的全域 HMAC 密鑰(當路由未指定自己的密鑰時作為備援使用) |
API_SERVER_ENABLED | 啟用 OpenAI 相容的 API 伺服器(true/false)。與其他平台並行運行。 |
API_SERVER_KEY | 用於 API 伺服器驗證的 Bearer 令牌。啟用 API 伺服器時必填。 |
API_SERVER_CORS_ORIGINS | 逗號分隔的允許直接呼叫 API 伺服器的瀏覽器來源(例如 http://localhost:3000,http://127.0.0.1:3000)。預設:停用。 |
API_SERVER_PORT | API 伺服器連接埠(預設:8642) |
API_SERVER_HOST | API 伺服器的主機/綁定地址(預設:127.0.0.1)。API_SERVER_KEY 在迴圈介面上仍為必填;瀏覽器存取請使用窄範圍的 API_SERVER_CORS_ORIGINS 允許清單。 |
API_SERVER_MODEL_NAME | 在 /v1/models 上宣告的模型名稱。預設為設定檔名稱(或預設設定檔的 hermes-agent)。適用於前端如 Open WebUI 需要每個連線有不同模型名稱的多使用者設定。 |
GATEWAY_PROXY_URL | 要轉發訊息的遠端 Hermes API 伺服器 URL(proxy mode)。設定後,閘道器僅處理平台 I/O — 所有代理工作委派給遠端伺服器。也可透過 config.yaml 中的 gateway.proxy_url 設定。 |
GATEWAY_PROXY_KEY | 代理模式下用於驗證遠端 API 伺服器的 Bearer 令牌。必須與遠端主機上的 API_SERVER_KEY 相符。 |
MESSAGING_CWD | 閘道器工作目錄的已棄用相容性備援。偏好在 config.yaml 中使用 terminal.cwd。 |
GATEWAY_ALLOWED_USERS | 逗號分隔的跨所有平台允許的使用者 ID |
GATEWAY_ALLOW_ALL_USERS | 允許所有使用者,無需允許清單(true/false,預設:false) |
Web 儀表板與 Hermes Desktop
Web 儀表板以及將 Hermes Desktop 連接到遠端後端的驗證設定。根據僅密鑰慣例,憑證應放在 ~/.hermes/.env 中;OAuth client_id 最好在 config.yaml 的 dashboard.oauth 下設定(環境變數設定時優先)。
內建三種儀表板驗證供應商。對於遠端 Hermes Desktop 連線或任何面向網路的儀表板,推薦使用 OAuth(Nous Portal) 供應商 — 設定 HERMES_DASHBOARD_OAUTH_CLIENT_ID(透過 hermes dashboard register 配置)。內建的使用者名稱/密碼供應商(HERMES_DASHBOARD_BASIC_AUTH_*)是在受信任 LAN 上或 VPN 後面的後端最快捷的選項,但不適合直接面向公網。要驗證您自己的身分提供者,請使用自架 OIDC 供應商(HERMES_DASHBOARD_OIDC_*)。無論哪種方式,非迴圈介面綁定(hermes dashboard --host 0.0.0.0)會啟用驗證閘門。參閱 Web Dashboard → Authentication 了解完整資訊。
| 變數 | 說明 |
|---|---|
HERMES_DASHBOARD_BASIC_AUTH_USERNAME | 內建使用者名稱/密碼儀表板驗證供應商的使用者名稱(plugins/dashboard_auth/basic)。與密碼一起設定時啟用供應商。覆寫 dashboard.basic_auth.username。 |
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD | 基本供應商的明文密碼(載入時在記憶體中雜湊)。優於設定檔 password_hash,因此您可以透過環境變數輪換。覆寫 dashboard.basic_auth.password。 |
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD_HASH | 基本供應商的 scrypt 密碼雜湊(首選 — 靜態無明文)。使用 python -c "from plugins.dashboard_auth.basic import hash_password; print(hash_password('PW'))" 計算。覆寫 dashboard.basic_auth.password_hash。 |
HERMES_DASHBOARD_BASIC_AUTH_SECRET | 用於簽署基本供應商無狀態會話令牌的 HMAC 金鑰(32+ 位元組,base64/hex/raw)。明確設定以使會話在重啟/跨多個 worker 後仍然有效;空白 → 每行程隨機(每次重啟都會被登出)。覆寫 dashboard.basic_auth.secret。 |
HERMES_DASHBOARD_BASIC_AUTH_TTL_SECONDS | 基本供應商的存取令牌生命週期(預設 12h)。覆寫 dashboard.basic_auth.session_ttl_seconds。 |
HERMES_DASHBOARD_OAUTH_CLIENT_ID | 用於閘門/公開儀表板的 OAuth client id(agent:{instance_id}),啟用 Nous(plugins/dashboard_auth/nous)供應商。覆寫 dashboard.oauth.client_id。透過 hermes dashboard register 配置。 |
HERMES_DASHBOARD_PUBLIC_URL | 到達儀表板的完整公開 URL,用於反向代理後的 OAuth 回呼建構。覆寫 dashboard.public_url。 |
HERMES_DASHBOARD_OIDC_ISSUER | 用於內建自架 OIDC 供應商(plugins/dashboard_auth/self_hosted)的 OIDC 發行者 URL。啟用時必填。覆寫 dashboard.oauth.self_hosted.issuer。 |
HERMES_DASHBOARD_OIDC_CLIENT_ID | 用於自架 OIDC 供應商的公開 OIDC client id(authorization-code + PKCE)。啟用時必填。覆寫 dashboard.oauth.self_hosted.client_id。 |
HERMES_DASHBOARD_OIDC_SCOPES | 用於自架 OIDC 供應商的請求 OIDC 範圍(預設 openid profile email)。覆寫 dashboard.oauth.self_hosted.scopes。 |
HERMES_DESKTOP_REMOTE_URL | (Desktop 端)遠端後端的基礎 URL,例如 http://host:9119。設定後,覆寫應用內的閘道器 URL;您仍需從閘道器設定面板登入(OAuth 重定向或使用者名稱/密碼,視後端宣稱的而定)。 |
Microsoft Graph(Teams 會議)
即將推出的 Teams 會議摘要管線所使用的 Microsoft Graph REST 用戶端的應用專用憑證。參閱 Register a Microsoft Graph application 了解 Azure 入口操作步驟和確切的 API 權限。
| 變數 | 說明 |
|---|---|
MSGRAPH_TENANT_ID | Graph 應用註冊的 Azure AD 租戶 ID(目錄 GUID)。 |
MSGRAPH_CLIENT_ID | Azure 應用註冊的 Application (client) ID。 |
MSGRAPH_CLIENT_SECRET | 應用註冊的 Client secret 值。儲存在 ~/.hermes/.env 中並設定 chmod 600;透過 Azure 入口定期輪換。 |
MSGRAPH_SCOPE | 用於客戶端憑證令牌請求的 OAuth2 範圍(預設:https://graph.microsoft.com/.default)。 |
MSGRAPH_AUTHORITY_URL | Microsoft 身分平台授權(預設:https://login.microsoftonline.com)。僅為國家/主權雲端覆寫(例如 GCC High 的 https://login.microsoftonline.us)。 |
Microsoft Graph Webhook 監聽器
用於 Graph 事件(Teams 會議、行事曆、聊天等)的入站變更通知監聽器。參閱 Microsoft Graph Webhook Listener 了解設定和安全強化。
| 變數 | 說明 |
|---|---|
MSGRAPH_WEBHOOK_ENABLED | 啟用 msgraph_webhook 閘道器平台(true/1/yes)。 |
MSGRAPH_WEBHOOK_PORT | 監聽器綁定的連接埠(預設:8646)。 |
MSGRAPH_WEBHOOK_CLIENT_STATE | Graph 在每個通知中回送的共享密鑰;使用 hmac.compare_digest 比對。使用 openssl rand -hex 32 產生。 |
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES | 逗號分隔的允許 Graph 資源路徑/模式的允許清單(例如 communications/onlineMeetings,chats/*/messages)。尾部 * 為前綴比對。空 = 接受所有。 |
MSGRAPH_WEBHOOK_ALLOWED_SOURCE_CIDRS | 逗號分隔的允許 POST 到監聽器的 CIDR 範圍(例如 52.96.0.0/14,52.104.0.0/14)。空 = 允許所有(預設)。在生產環境中限制為 Microsoft Graph 公佈的出口範圍。 |
Teams 會議摘要投遞
僅在啟用 teams_pipeline 外掛 時使用。設定也可在 config.yaml 的 platforms.teams.extra 下配置 — 兩者都設定時環境變數優先。參閱 Microsoft Teams → Meeting Summary Delivery。
| 變數 | 說明 |
|---|---|
TEAMS_DELIVERY_MODE | graph 或 incoming_webhook。 |
TEAMS_INCOMING_WEBHOOK_URL | Teams 產生的 webhook URL;當 TEAMS_DELIVERY_MODE=incoming_webhook 時必填。 |
TEAMS_GRAPH_ACCESS_TOKEN | 用於 Graph 投遞的預先取得委派存取令牌。極少需要 — 未設定時寫入器會回退到 MSGRAPH_* 應用憑證。 |
TEAMS_TEAM_ID | 用於頻道投遞(graph 模式)的目標 Team ID。 |
TEAMS_CHANNEL_ID | 目標頻道 ID(與 TEAMS_TEAM_ID 配對)。 |
TEAMS_CHAT_ID | 目標一對一或群組聊天 ID(graph 模式下替代 team+channel)。 |
LINE Messaging API
由內建 LINE 平台外掛(plugins/platforms/line/)使用。參閱 Messaging Gateway → LINE 了解完整設定。
| 變數 | 說明 |
|---|---|
LINE_CHANNEL_ACCESS_TOKEN | 來自 LINE Developers Console(Messaging API 分頁)的長期頻道存取令牌。必填。 |
LINE_CHANNEL_SECRET | 頻道密鑰(Basic settings 分頁);用於 HMAC-SHA256 webhook 簽名驗證。必填。 |
LINE_HOST | Webhook 綁定主機(預設:0.0.0.0)。 |
LINE_PORT | Webhook 綁定連接埠(預設:8646)。 |
LINE_PUBLIC_URL | 公開 HTTPS 基礎 URL(例如 https://my-tunnel.example.com)。發送圖片/音訊/影片時必填 — LINE 僅接受 HTTPS 可達的 URL。 |
LINE_ALLOWED_USERS | 逗號分隔的允許向機器人發私訊的使用者 ID(以 U 開頭)。 |
LINE_ALLOWED_GROUPS | 逗號分隔的機器人將回應的群組 ID(以 C 開頭)。 |
LINE_ALLOWED_ROOMS | 逗號分隔的機器人將回應的房間 ID(以 R 開頭)。 |
LINE_ALLOW_ALL_USERS | 僅限開發的逃生艙 — 接受任何來源。預設:false。 |
LINE_HOME_CHANNEL | 使用 deliver: line 的排程任務的預設投遞目標。 |
LINE_SLOW_RESPONSE_THRESHOLD | 慢速 LLM 模板按鈕回呼觸發前的秒數(預設:45)。設為 0 以停用並始終使用 Push 回退。 |
LINE_PENDING_TEXT | 與回呼按鈕一起顯示的氣泡文字。 |
LINE_BUTTON_LABEL | 回呼按鈕標籤(預設:Get answer)。 |
LINE_DELIVERED_TEXT | 再次點擊已投遞的回呼時的回覆(預設:Already replied ✅)。 |
LINE_INTERRUPTED_TEXT | 點擊被 /stop 棄置的回呼按鈕時的回覆(預設:Run was interrupted before completion.)。 |
ntfy(推送通知)
ntfy 是一個輕量級的基於 HTTP 的推送通知服務。從 ntfy 行動應用 訂閱一個主題,發佈到該主題即可與代理互動。
| 變數 | 說明 |
|---|---|
NTFY_TOPIC | 要訂閱的主題(接收訊息)。必填。 |
NY_SERVER_URL | 伺服器 URL(預設:https://ntfy.sh)。指向自架 ntfy 以保護隱私。 |
NTFY_TOKEN | 可選的驗證令牌。Bearer 令牌(例如 tk_xyz)或 Basic 驗證的 user:pass。 |
NTFY_PUBLISH_TOPIC | 用於出站回覆的主題(預設為 NTFY_TOPIC)。 |
NTFY_MARKDOWN | 設為 true 以使用 X-Markdown: true 標頭發送回覆。預設:false。 |
NTFY_ALLOWED_USERS | 允許清單(視為使用者 ID;在 ntfy 上這些是主題名稱)。通常設為與 NTFY_TOPIC 相同的值。 |
NTFY_ALLOW_ALL_USERS | 僅限開發的逃生艙 — 僅在有存取控制的私人主題上安全。預設:false。 |
NTFY_HOME_CHANNEL | 使用 deliver: ntfy 的排程任務的預設投遞目標。 |
NTFY_HOME_CHANNEL_NAME | 首頁頻道的人類標籤(預設為主題名稱)。 |
參閱 ntfy 訊息傳遞指南 — 特別是身分模型部分 — 在使用不受信任的主題部署之前。
進階訊息傳遞調校
各平台的進階調節閾值,用於限制出站訊息批次處理器。大多數使用者永遠不需要觸碰這些;預設值設定為在不感到遲鈍的情況下遵守每個平台的速率限制。
| 變數 | 說明 |
|---|---|
HERMES_TELEGRAM_TEXT_BATCH_DELAY_SECONDS | 在刷新排隊的 Telegram 文字塊前的寬限窗口(預設:0.6)。 |
HERMES_TELEGRAM_TEXT_BATCH_SPLIT_DELAY_SECONDS | 單條 Telegram 訊息超過長度限制時,分割塊之間的延遲(預設:2.0)。 |
HERMES_TELEGRAM_MEDIA_BATCH_DELAY_SECONDS | 在刷新排隊的 Telegram 媒體前的寬限窗口(預設:0.6)。 |
HERMES_TELEGRAM_FOLLOWUP_GRACE_SECONDS | 代理完成後發送後續訊息前的延遲,以避免與最後一個串流塊競爭。 |
HERMES_TELEGRAM_HTTP_CONNECT_TIMEOUT / _READ_TIMEOUT / _WRITE_TIMEOUT / _POOL_TIMEOUT | 覆寫底層 python-telegram-bot HTTP 超時(秒)。 |
HERMES_TELEGRAM_HTTP_POOL_SIZE | 到 Telegram API 的最大並行 HTTP 連線數。 |
HERMES_TELEGRAM_DISABLE_FALLBACK_IPS | 停用 DNS 失敗時使用的硬編碼 Cloudflare 備援 IP(true/false)。 |
HERMES_DISCORD_TEXT_BATCH_DELAY_SECONDS | 在刷新排隊的 Discord 文字塊前的寬限窗口(預設:0.6)。 |
HERMES_DISCORD_TEXT_BATCH_SPLIT_DELAY_SECONDS | Discord 訊息超過長度限制時,分割塊之間的延遲(預設:2.0)。 |
HERMES_MATRIX_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS | Telegram 批次調節閾值的 Matrix 等效設定。 |
HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS / _MAX_CHARS / _MAX_MESSAGES | 飛書批次處理器調校 — 延遲、分割延遲、每訊息最大字元數、每批次最大訊息數。 |
HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDS | 飛書媒體刷新延遲。 |
HERMES_FEISHU_DEDUP_CACHE_SIZE | 飛書 webhook 去重快取的大小(預設:1024)。 |
HERMES_WECOM_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDS | 企業微信批次處理器調校。 |
HERMES_VISION_DOWNLOAD_TIMEOUT | 在將圖片交給視覺模型前下載的超時,單位為秒(預設:30)。 |
HERMES_RESTART_DRAIN_TIMEOUT | 閘道器:在 /restart 時等待活躍執行排空的秒數,然後強制重啟(預設:900)。 |
HERMES_GATEWAY_PLATFORM_CONNECT_TIMEOUT | 閘道器啟動期間每個平台的連線超時(秒)。 |
HERMES_GATEWAY_BUSY_INPUT_MODE | 預設閘道器忙碌輸入行為:queue、steer 或 interrupt。可按聊天透過 /busy 覆寫。 |
HERMES_GATEWAY_BUSY_ACK_ENABLED | 閘道器是否在使用者於代理忙碌時發送輸入時傳送確認訊息(⚡/⏳/⏩)(預設:true)。設為 false 以完全抑制這些訊息 — 輸入仍正常排隊/引導/中斷,僅聊天回覆被靜音。從 config.yaml 的 display.busy_ack_enabled 橋接。 |
HERMES_GATEWAY_NO_SUPERVISE | 在 s6-overlay Docker 映像中,執行 hermes gateway run 時選擇退出自動監督,使用 pre-s6 前景語義(無自動重啟,閘道器為容器的主要行程)。真值:1、true、yes。等同於 --no-supervise CLI 旗標。在 s6 映像外無效。 |
HERMES_GATEWAY_BOOTSTRAP_STATE | 在 s6-overlay Docker 映像中,在全新卷上宣告閘道器的初始受監督狀態。在空白卷上沒有持久化的 gateway_state.json,因此啟動協調器註冊 gateway-default 插槽但保持停止(僅在上次記錄的狀態為 running 時自動啟動)。設為 running,首次啟動設定鉤子會在協調器運行前建立 gateway_state.json,因此閘道器在首次啟動時即啟動。僅接受字面值 running。僅限首次啟動:現有的 gateway_state.json 永不覆寫,因此故意停止的閘道器在重啟後仍保持停止。在 s6 映像外無效。 |
HERMES_FILE_MUTATION_VERIFIER | 啟用每回合檔案變更驗證器頁尾(預設:true)。啟用時,Hermes 會附加一份建議清單,列出本回合中失敗且未被成功寫入取代的任何 write_file / patch 呼叫。設為 0、false、no 或 off 以抑制。反映 config.yaml 中的 display.file_mutation_verifier;設定環境變數時優先。 |
HERMES_CRON_TIMEOUT | 排程任務代理運行的閒置超時,單位為秒(預設:600)。代理在積極呼叫工具或接收串流令牌時可以無限運行 — 僅在閒置時觸發。設為 0 表示無限。 |
HERMES_CRON_SCRIPT_TIMEOUT | 附加到排程任務的預運行腳本超時,單位為秒(預設:120)。為需要更長執行時間的腳本覆寫(例如用於反機器人計時的隨機延遲)。也可透過 config.yaml 的 cron.script_timeout_seconds 設定。 |
HERMES_CRON_MAX_PARALLEL | 每次計時的並行排程任務最大數量(預設:4)。 |
代理行為
| 變數 | 說明 |
|---|---|
HERMES_MAX_ITERATIONS | 每次對話的最大工具呼叫疊代次數(預設:90) |
HERMES_INFERENCE_MODEL | 在行程層級覆寫模型名稱(對會話優先於 config.yaml)。也可透過 -m/--model 旗標設定。 |
HERMES_YOLO_MODE | 設為 1 以繞過危險命令審批提示。等同於 --yolo。 |
HERMES_ACCEPT_HOOKS | 自動核准 config.yaml 中宣告的任何未見過的外殼鉤子,無需 TTY 提示。等同於 --accept-hooks 或 hooks_auto_accept: true。 |
HERMES_IGNORE_USER_CONFIG | 跳過 ~/.hermes/config.yaml 並使用內建預設值(.env 中的憑證仍載入)。等同於 --ignore-user-config。 |
HERMES_IGNORE_RULES | 跳過 AGENTS.md、SOUL.md、.cursorrules、記憶體和預載技能的自動注入。等同於 --ignore-rules。 |
HERMES_SAFE_MODE | 除錯模式:停用所有自訂 — 跳過外掛偵測和 MCP 伺服器載入。由 --safe-mode 自動設定(同時設定上述兩個旗標)。 |
HERMES_MD_NAMES | 逗號分隔的要自動注入的規則檔案名稱列表(預設:AGENTS.md,CLAUDE.md,.cursorrules,SOUL.md)。 |
HERMES_TOOL_PROGRESS | 已棄用的工具進度顯示相容性變數。偏好在 config.yaml 中使用 display.tool_progress。 |
HERMES_TOOL_PROGRESS_MODE | 已棄用的工具進度模式相容性變數。偏好在 config.yaml 中使用 display.tool_progress。 |
HERMES_HUMAN_DELAY_MODE | 回應節奏:off/natural/custom |
HERMES_HUMAN_DELAY_MIN_MS | 自訂延遲範圍最小值(ms) |
HERMES_HUMAN_DELAY_MAX_MS | 自訂延遲範圍最大值(ms) |
HERMES_QUIET | 抑制非必要輸出(true/false) |
CODEX_HOME | 啟用 Codex app-server 執行時 時,覆寫 Codex CLI 讀取其設定 + 驗證的目錄(預設:~/.codex)。Hermes 的遷移會將受管理區塊寫入 <CODEX_HOME>/config.toml。 |
HERMES_KANBAN_TASK | 看板排程器在產生 worker 時設定(任務 UUID)。Worker 和產生的 hermes-tools MCP 子行程會繼承它,以便看板工具正確閘控。請勿手動設定。 |
HERMES_API_TIMEOUT | LLM API 呼叫超時,單位為秒(預設:1800) |
HERMES_API_CALL_STALE_TIMEOUT | 非串流過期呼叫超時,單位為秒(預設:300)。本機供應商未設定時自動停用。也可透過 config.yaml 的 providers.<id>.stale_timeout_seconds 或 providers.<id>.models.<model>.stale_timeout_seconds 設定。 |
HERMES_STREAM_READ_TIMEOUT | 串流 Socket 讀取超時,單位為秒(預設:120)。本機供應商自動增加到 HERMES_API_TIMEOUT。如果本機 LLM 在長程式碼生成期間超時,請增加此值。 |
HERMES_STREAM_STALE_TIMEOUT | 過期串流偵測超時,單位為秒(預設:180)。本機供應商自動停用。如果在此時間窗口內沒有收到塊,觸發連線中斷。 |
HERMES_STREAM_RETRIES | 瞬態網路錯誤時的中間串流重新連線嘗試次數(預設:3)。 |
HERMES_AGENT_TIMEOUT | 閘道器對運行中代理的閒置超時,單位為秒(預設:900)。每次工具呼叫和串流令牌時重置。設為 0 以停用。 |
HERMES_AGENT_TIMEOUT_WARNING | 閘道器:在閒置這麼多秒後發送警告訊息(預設為 HERMES_AGENT_TIMEOUT 的 75%)。 |
HERMES_AGENT_NOTIFY_INTERVAL | 閘道器:長時間運行代理回合之間進度通知的間隔,單位為秒。 |
HERMES_CHECKPOINT_TIMEOUT | 檔案系統檢查點建立的超時,單位為秒(預設:30)。 |
HERMES_EXEC_ASK | 在閘道器模式下啟用執行審批提示(true/false) |
HERMES_ENABLE_PROJECT_PLUGINS | 為代理載入器和儀表板 Web 伺服器啟用從 ./.hermes/plugins/ 偵測本機外掛。接受標準真值集合:1 / true / yes / on(不區分大小寫)。其他所有值 — 包括 0、false、no、off 和空字串 — 視為停用(預設)。注意:截至 GHSA-5qr3-c538-wm9j(#29156),即使啟用此變數,儀表板 Web 伺服器也拒絕自動匯入專案外掛的 Python api 檔案 — 專案外掛可以透過靜態 JS/CSS 擴充 UI,但其後端路由僅在移動到 ~/.hermes/plugins/ 下時才載入。 |
HERMES_PLUGINS_DEBUG | 1/true 在 stderr 上顯示詳細外掛偵測日誌 — 掃描的目錄、解析的清單、跳過原因以及解析或 register() 失敗時的完整追蹤。面向外掛作者。 |
HERMES_BACKGROUND_NOTIFICATIONS | 閘道器中的背景行程通知模式:all(預設)、result、error、off |
HERMES_EPHEMERAL_SYSTEM_PROMPT | 在 API 呼叫時注入的暫時性系統提示(永不持久化到會話) |
HERMES_PREFILL_MESSAGES_FILE | 在 API 呼叫時注入的暫時性預填訊息 JSON 檔案路徑。 |
HERMES_ALLOW_PRIVATE_URLS | true/false — 允許工具抓取 localhost/私人網路 URL。閘道器模式下預設關閉。 |
HERMES_REDACT_SECRETS | true/false — 控制工具輸出、日誌和聊天回應中的密鑰編輯(預設:true)。 |
HERMES_WRITE_SAFE_ROOT | 可選的目錄前綴,限制 write_file/patch 寫入;超出路徑的需要審批。 |
HERMES_DISABLE_FILE_STATE_GUARD | 設為 1 以關閉 patch/write_file 上的「自您讀取以來檔案已變更」防護。 |
HERMES_CORE_TOOLS | 逗號分隔的標準核心工具列表覆寫(進階;極少需要)。 |
HERMES_BUNDLED_SKILLS | 逗號分隔的啟動時載入的內建技能列表覆寫。 |
HERMES_OPTIONAL_SKILLS | 逗號分隔的可選技能名稱列表,首次運行時自動安裝。 |
HERMES_DEBUG_INTERRUPT | 設為 1 以將詳細中斷/取消追蹤記錄到 agent.log。 |
HERMES_DUMP_REQUESTS | 將 API 請求內容轉儲到日誌檔案(true/false) |
HERMES_DUMP_REQUEST_STDOUT | 將 API 請求內容轉儲到標準輸出而非日誌檔案。 |
HERMES_OAUTH_TRACE | 設為 1 以記錄 OAuth 令牌交換和更新嘗試。包含已編輯的計時資訊。 |
HERMES_OAUTH_FILE | 覆寫用於 OAuth 憑證儲存的路徑(預設:~/.hermes/auth.json)。 |
HERMES_AGENT_HELP_GUIDANCE | 為自訂部署在系統提示中附加額外的指導文字。 |
HERMES_AGENT_LOGO | 覆寫 CLI 啟動時的 ASCII 橫幅標誌。 |
DELEGATION_MAX_CONCURRENT_CHILDREN | 每個 delegate_task 批次的最大並行子代理數(預設:3,下限為 1,無上限)。也可透過 config.yaml 的 delegation.max_concurrent_children 設定 — 設定檔值優先。 |
介面
| 變數 | 說明 |
|---|---|
HERMES_TUI | 設為 1 時啟動 TUI 而非傳統 CLI。等同於傳遞 --tui。 |
HERMES_TUI_DIR | 預先建構的 ui-tui/ 目錄路徑(必須包含 dist/entry.js 和已填充的 node_modules)。發行版和 Nix 用它來跳過首次啟動的 npm install。 |
HERMES_TUI_RESUME | 啟動時恢復特定 ID 的 TUI 會話。設定後,hermes --tui 跳過建立新會話而恢復指定的會話 — 適用於斷線或終端崩潰後重新附加。 |
HERMES_TUI_THEME | 強制 TUI 色彩主題:light、dark 或原始 6 字元背景十六進位碼(例如 ffffff 或 1a1a2e)。未設定時,Hermes 使用 COLORFGBG 和終端背景查詢自動偵測;此變數覆寫在不設定 COLORFGBG 的終端(Ghostty、Warp、iTerm2 等)上的偵測。 |
HERMES_INFERENCE_MODEL | 強制 hermes -z / hermes chat 的模型而不修改 config.yaml。搭配 --provider 旗標使用。適用於需要每次執行覆寫預設模型的腳本呼叫者(sweeper、CI、批次運行器)。 |
會話設定
| 變數 | 說明 |
|---|---|
SESSION_IDLE_MINUTES | 在 N 分鐘閒置後重置會話(預設:1440) |
SESSION_RESET_HOUR | 每日重置時間(24h 格式,預設:4 = 凌晨 4 點) |
HERMES_SESSION_ID | 自動匯出到每個工具子行程 Hermes 產生的(terminal、execute_code、持久性外殼、Docker/Singularity 後端、委派子代理運行)。由代理設定為當前會話 ID;從工具呼叫的使用者腳本可以讀取它以將其輸出、遙測或副作用與原始 Hermes 會話關聯。您不應手動設定 — 從父外殼覆寫僅在代理運行外生效,且在代理開始會話的瞬間即被覆寫。 |
背景壓縮(僅限 config.yaml)
背景壓縮僅透過 config.yaml 設定 — 沒有環境變數。閾值設定在 compression: 區塊中,摘要模型/供應商在 auxiliary.compression: 下。
compression:
enabled: true
threshold: 0.50
target_ratio: 0.20 # 保留為最近尾端的閾值比例
protect_last_n: 20 # 保持未壓縮的最少最近訊息數
資訊 — 舊版遷移
包含
compression.summary_model、compression.summary_provider和compression.summary_base_url的較舊設定會在首次載入時自動遷移到auxiliary.compression.*。
輔助任務覆寫
| 變數 | 說明 |
|---|---|
AUXILIARY_VISION_PROVIDER | 覆寫視覺任務的供應商 |
AUXILIARY_VISION_MODEL | 覆寫視覺任務的模型 |
AUXILIARY_VISION_BASE_URL | 視覺任務的直接 OpenAI 相容端點 |
AUXILIARY_VISION_API_KEY | 與 AUXILIARY_VISION_BASE_URL 配對的 API 金鑰 |
AUXILIARY_WEB_EXTRACT_PROVIDER | 覆寫網頁擷取/摘要的供應商 |
AUXILIARY_WEB_EXTRACT_MODEL | 覆寫網頁擷取/摘要的模型 |
AUXILIARY_WEB_EXTRACT_BASE_URL | 網頁擷取/摘要的直接 OpenAI 相容端點 |
AUXILIARY_WEB_EXTRACT_API_KEY | 與 AUXILIARY_WEB_EXTRACT_BASE_URL 配對的 API 金鑰 |
對於任務特定的直接端點,Hermes 使用任務的已設定 API 金鑰或 OPENAI_API_KEY。它不會為這些自訂端點重用 OPENROUTER_API_KEY。
備援供應商(僅限 config.yaml)
主要模型備援鏈僅透過 config.yaml 設定 — 沒有環境變數。新增帶有 provider 和 model 鍵的頂層 fallback_providers 列表,以在主要模型遇到錯誤時啟用自動故障轉移。供應商為 auto 的輔助任務也會在 Hermes 內建輔助偵測鏈之前查詢此鏈。
fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4
較舊的頂層 fallback_model 單供應商格式仍為向後相容而讀取,但新設定應使用 fallback_providers。對於任務特定的輔助策略,請在 config.yaml 中使用 auxiliary.<task>.fallback_chain;沒有對應的環境變數。
參閱 Fallback Providers 了解完整詳情。
供應商路由(僅限 config.yaml)
這些放在 ~/.hermes/config.yaml 的 provider_routing 區段下:
| 鍵 | 說明 |
|---|---|
sort | 排序供應商:"price"(預設)、"throughput" 或 "latency" |
only | 允許的供應商 slug 列表(例如 ["anthropic", "google"]) |
ignore | 要跳過的供應商 slug 列表 |
order | 按順序嘗試的供應商 slug 列表 |
require_parameters | 僅使用支援所有請求參數的供應商(true/false) |
data_collection | "allow"(預設)或 "deny" 以排除儲存資料的供應商 |
提示
使用
hermes config set設定環境變數 — 它會自動儲存到正確的檔案(.env用於密鑰,config.yaml用於其他所有內容)。