跳到主要内容

环境变量参考

所有变量均写入 ~/.hermes/.env,也可以通过 hermes config set VAR value 进行设置。

LLM 提供商

变量描述
OPENROUTER_API_KEYOpenRouter API 密钥(推荐,灵活性强)
OPENROUTER_BASE_URL覆盖 OpenRouter 兼容的 base URL
HERMES_OPENROUTER_CACHE启用 OpenRouter 响应缓存(1/true/yes/on)。覆盖 config.yaml 中的 openrouter.response_cache。参见 响应缓存
HERMES_OPENROUTER_CACHE_TTL缓存 TTL(秒),范围 1-86400。覆盖 config.yaml 中的 openrouter.response_cache_ttl
NOUS_BASE_URL覆盖 Nous Portal base URL(很少需要;仅用于开发/测试)
NOUS_INFERENCE_BASE_URL直接覆盖 Nous 推理端点
AI_GATEWAY_API_KEYVercel AI Gateway API 密钥(ai-gateway.vercel.sh
AI_GATEWAY_BASE_URL覆盖 AI Gateway base URL(默认:https://ai-gateway.vercel.sh/v1
OPENAI_API_KEY自定义 OpenAI 兼容端点的 API 密钥(与 OPENAI_BASE_URL 配合使用)
OPENAI_BASE_URL自定义端点的 base URL(VLLM、SGLang 等)
COPILOT_GITHUB_TOKENCopilot API 的 GitHub token — 最高优先级(OAuth gho_* 或细粒度 PAT github_pat_*;经典 PAT ghp_* 不支持
GH_TOKENGitHub token — Copilot 第二优先级(也被 gh CLI 使用)
GITHUB_TOKENGitHub token — Copilot 第三优先级
HERMES_COPILOT_ACP_COMMAND覆盖 Copilot ACP CLI 二进制路径(默认:copilot
COPILOT_CLI_PATHHERMES_COPILOT_ACP_COMMAND 的别名
HERMES_COPILOT_ACP_ARGS覆盖 Copilot ACP 参数(默认:--acp --stdio
COPILOT_ACP_BASE_URL覆盖 Copilot ACP base URL
GLM_API_KEYz.ai / ZhipuAI GLM API 密钥(z.ai
ZAI_API_KEYGLM_API_KEY 的别名
Z_AI_API_KEYGLM_API_KEY 的别名
GLM_BASE_URL覆盖 z.ai base URL(默认:https://api.z.ai/api/paas/v4
KIMI_API_KEYKimi / Moonshot AI API 密钥(moonshot.ai
KIMI_BASE_URL覆盖 Kimi base URL(默认:https://api.moonshot.ai/v1
KIMI_CN_API_KEYKimi / Moonshot 中国区 API 密钥(moonshot.cn
ARCEEAI_API_KEYArcee AI API 密钥(chat.arcee.ai
ARCEE_BASE_URL覆盖 Arcee base URL(默认:https://api.arcee.ai/api/v1
MINIMAX_API_KEYMiniMax API 密钥 — 国际端点(minimax.io)。minimax-oauth 不使用(OAuth 路径通过浏览器登录,无需 API 密钥)。
MINIMAX_BASE_URL覆盖 MiniMax base URL(默认:https://api.minimax.io/anthropic — Hermes 使用 MiniMax 的 Anthropic Messages 兼容端点)。minimax-oauth 不使用
MINIMAX_CN_API_KEYMiniMax API 密钥 — 中国区端点(minimaxi.com)。minimax-oauth 不使用(OAuth 路径通过浏览器登录)。
MINIMAX_CN_BASE_URL覆盖 MiniMax 中国区 base URL(默认:https://api.minimaxi.com/anthropic)。minimax-oauth 不使用
KILOCODE_API_KEYKilo Code API 密钥(kilo.ai
KILOCODE_BASE_URL覆盖 Kilo Code base URL(默认:https://api.kilo.ai/api/gateway
XIAOMI_API_KEY小米 MiMo API 密钥(platform.xiaomimimo.com
XIAOMI_BASE_URL覆盖小米 MiMo base URL(默认:https://api.xiaomimimo.com/v1
TOKENHUB_API_KEY腾讯 TokenHub API 密钥(tokenhub.tencentmaas.com
TOKENHUB_BASE_URL覆盖腾讯 TokenHub base URL(默认:https://tokenhub.tencentmaas.com/v1
AZURE_FOUNDRY_API_KEYAzure AI Foundry / Azure OpenAI API 密钥(ai.azure.com
AZURE_FOUNDRY_BASE_URLAzure AI Foundry 端点 URL(例如 https://<resource>.openai.azure.com/openai/v1 用于 OpenAI 风格,或 https://<resource>.services.ai.azure.com/anthropic 用于 Anthropic 风格)
AZURE_ANTHROPIC_KEYAzure Anthropic API 密钥,用于 provider: anthropic + base_url 指向 Azure Foundry Claude 部署(同时配置了 Anthropic 和 Azure Anthropic 时可替代 ANTHROPIC_API_KEY
HF_TOKENHugging Face 推理提供商 token(huggingface.co/settings/tokens
HF_BASE_URL覆盖 Hugging Face base URL(默认:https://router.huggingface.co/v1
GOOGLE_API_KEYGoogle AI Studio API 密钥(aistudio.google.com/app/apikey
GEMINI_API_KEYGOOGLE_API_KEY 的别名
GEMINI_BASE_URL覆盖 Google AI Studio base URL
HERMES_GEMINI_CLIENT_IDgoogle-gemini-cli PKCE 登录的 OAuth 客户端 ID(可选;默认使用 Google 的公共 gemini-cli 客户端)
HERMES_GEMINI_CLIENT_SECRETgoogle-gemini-cli 的 OAuth 客户端密钥(可选)
HERMES_GEMINI_PROJECT_ID付费 Gemini 套餐的 GCP 项目 ID(免费套餐自动分配)
ANTHROPIC_API_KEYAnthropic Console API 密钥(console.anthropic.com
ANTHROPIC_TOKEN手动或旧版 Anthropic OAuth/setup-token 覆盖
DASHSCOPE_API_KEY阿里云 DashScope API 密钥,用于通义千问模型(modelstudio.console.alibabacloud.com
DASHSCOPE_BASE_URL自定义 DashScope base URL(默认:https://dashscope-intl.aliyuncs.com/compatible-mode/v1;中国大陆区域使用 https://dashscope.aliyuncs.com/compatible-mode/v1
DEEPSEEK_API_KEYDeepSeek API 密钥,直接访问 DeepSeek(platform.deepseek.com
DEEPSEEK_BASE_URL自定义 DeepSeek API base URL
NVIDIA_API_KEYNVIDIA NIM API 密钥 — Nemotron 及开源模型(build.nvidia.com
NVIDIA_BASE_URL覆盖 NVIDIA base URL(默认:https://integrate.api.nvidia.com/v1;设为 http://localhost:8000/v1 使用本地 NIM 端点)
NOVITA_API_KEYNovitaAI API key — AI 原生云平台,提供模型 API、Agent 沙箱和 GPU 云(novita.ai/settings/key-management
NOVITA_BASE_URL覆盖 NovitaAI base URL(默认:https://api.novita.ai/openai/v1
STEPFUN_API_KEYStepFun API 密钥 — Step 系列模型(platform.stepfun.com
STEPFUN_BASE_URL覆盖 StepFun base URL(默认:https://api.stepfun.com/v1
OLLAMA_API_KEYOllama Cloud API 密钥 — 无需本地 GPU 的托管 Ollama 目录(ollama.com/settings/keys
OLLAMA_BASE_URL覆盖 Ollama Cloud base URL(默认:https://ollama.com/v1
XAI_API_KEYxAI(Grok)API 密钥,用于聊天 + TTS(console.x.ai
XAI_BASE_URL覆盖 xAI base URL(默认:https://api.x.ai/v1
MISTRAL_API_KEYMistral API 密钥,用于 Voxtral TTS 和 Voxtral STT(console.mistral.ai
AWS_REGIONBedrock 推理的 AWS 区域(例如 us-east-1eu-central-1),由 boto3 读取。
AWS_PROFILEBedrock 认证的 AWS 命名配置文件(读取 ~/.aws/credentials)。不设置则使用默认 boto3 凭证链。
BEDROCK_BASE_URL覆盖 Bedrock runtime base URL(默认:https://bedrock-runtime.us-east-1.amazonaws.com;通常保持不设置,改用 AWS_REGION
HERMES_QWEN_BASE_URL通义千问 Portal base URL 覆盖(默认:https://portal.qwen.ai/v1
OPENCODE_ZEN_API_KEYOpenCode Zen API 密钥 — 按量计费访问精选模型(opencode.ai
OPENCODE_ZEN_BASE_URL覆盖 OpenCode Zen base URL
OPENCODE_GO_API_KEYOpenCode Go API 密钥 — $10/月订阅,访问开源模型(opencode.ai
OPENCODE_GO_BASE_URL覆盖 OpenCode Go base URL
CLAUDE_CODE_OAUTH_TOKEN手动导出时的 Claude Code token 显式覆盖
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](../user-guide/windows-native.md#how-hermes-runs-shell-commands-on-windows)
HERMES_DISABLE_WINDOWS_UTF8仅 Windows. 设为 1 禁用 UTF-8 stdio 填充层(configure_windows_stdio())并回退到控制台的 locale 代码页。适用于二分排查编码 bug;正常情况下很少是正确的设置
HERMES_KANBAN_HOME覆盖共享 Hermes 根目录,该目录承载看板(数据库 + 工作区 + 工作日志)。回退到 get_default_hermes_root()(任意活动配置文件的父目录)。适用于测试和非标准部署
HERMES_KANBAN_BOARD为当前进程固定活动看板。优先于 ~/.hermes/kanban/current;调度器将其注入工作子进程环境,使工作进程无法访问其他看板上的任务。默认为 default。Slug 验证:小写字母数字 + 连字符 + 下划线,1-64 字符
HERMES_KANBAN_DB直接固定看板数据库文件路径(最高优先级;优先于 HERMES_KANBAN_BOARDHERMES_KANBAN_HOME)。调度器将其注入工作子进程环境,使配置文件工作进程收敛到调度器的看板
HERMES_KANBAN_WORKSPACES_ROOT直接固定看板工作区根目录(工作区的最高优先级;优先于 HERMES_KANBAN_HOME)。调度器将其注入工作子进程环境

提供商认证(OAuth)

对于原生 Anthropic 认证,Hermes 会优先使用 Claude Code 自身的凭证文件(若存在),因为这些凭证可以自动刷新。向 Anthropic 进行 OAuth 认证需要购买了额外使用额度的 Claude Max 计划 — Hermes 以 Claude Code 身份路由,仅消耗 Max 计划的额外/超额额度,而非基础 Max 额度,且不适用于 Claude Pro。没有 Max + 额外额度时,请改用 API 密钥。ANTHROPIC_TOKEN 等环境变量作为手动覆盖仍然有用,但不再是 Claude Max 登录的首选路径。

变量描述
HERMES_INFERENCE_PROVIDER覆盖提供商选择:autocustomopenrouternousopenai-codexcopilotcopilot-acpanthropichuggingfacegeminizaikimi-codingkimi-coding-cnminimaxminimax-cnminimax-oauth(浏览器 OAuth 登录 — 无需 API 密钥;参见 MiniMax OAuth 指南)、kilocodexiaomiarceegmistepfunalibabaalibaba-coding-plan(别名 alibaba_coding)、deepseeknvidiaollama-cloudxai(别名 grok)、google-gemini-cliqwen-oauthbedrockopencode-zenopencode-goai-gatewaytencent-tokenhub(默认:auto
HERMES_PORTAL_BASE_URL覆盖 Nous Portal URL(用于开发/测试)
NOUS_INFERENCE_BASE_URL覆盖 Nous 推理 API URL
HERMES_NOUS_MIN_KEY_TTL_SECONDSAgent 密钥重新生成前的最小 TTL(默认:1800 = 30分钟)
HERMES_NOUS_TIMEOUT_SECONDSNous 凭证/token 流的 HTTP 超时时间
HERMES_DUMP_REQUESTS将 API 请求有效载荷转储到日志文件(true/false
HERMES_PREFILL_MESSAGES_FILE包含临时预填充消息的 JSON 文件路径,在 API 调用时注入
HERMES_TIMEZONEIANA 时区覆盖(例如 America/New_York

工具 API

变量描述
PARALLEL_API_KEYAI 原生网页搜索(parallel.ai
FIRECRAWL_API_KEY网页抓取和云端浏览器(firecrawl.dev
FIRECRAWL_API_URL自托管实例的自定义 Firecrawl API 端点(可选)
TAVILY_API_KEYTavily API 密钥,用于 AI 原生网页搜索、提取和爬取(app.tavily.com
SEARXNG_URLSearXNG 实例 URL,免费自托管网页搜索 — 无需 API 密钥(searxng.github.io
TAVILY_BASE_URL覆盖 Tavily API 端点。适用于企业代理和自托管 Tavily 兼容搜索后端。模式与 GROQ_BASE_URL 相同。
EXA_API_KEYExa API 密钥,用于 AI 原生网页搜索和内容获取(exa.ai
BROWSERBASE_API_KEY浏览器自动化(browserbase.com
BROWSERBASE_PROJECT_IDBrowserbase 项目 ID
BROWSER_USE_API_KEYBrowser Use 云端浏览器 API 密钥(browser-use.com
FIRECRAWL_BROWSER_TTLFirecrawl 浏览器会话 TTL(秒,默认:300)
BROWSER_CDP_URL本地浏览器的 Chrome DevTools Protocol URL(通过 /browser connect 设置,例如 ws://localhost:9222
CAMOFOX_URLCamofox 本地反检测浏览器 URL(默认:http://localhost:9377
CAMOFOX_USER_ID可选外部管理的 Camofox 用户 ID,用于共享可见会话
CAMOFOX_SESSION_KEYCAMOFOX_USER_ID 创建标签页时使用的可选 Camofox 会话密钥
CAMOFOX_ADOPT_EXISTING_TAB设为 true 可在创建新标签页之前复用已有的 Camofox 标签页
AGENT_BROWSER_ARGS额外的 Chromium 启动参数(逗号或换行分隔)。Hermes 在以 root 运行或在 AppArmor 受限的无特权用户命名空间(Ubuntu 23.10+、DGX Spark、许多容器镜像)上运行时,会自动注入 --no-sandbox --disable-dev-shm-usage;仅在需要覆盖或添加其他参数时手动设置此项。
BROWSER_INACTIVITY_TIMEOUT浏览器会话非活跃超时时间(秒)
FAL_KEY图像生成(fal.ai
GROQ_API_KEYGroq Whisper STT API 密钥(groq.com
ELEVENLABS_API_KEYElevenLabs 高品质 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技能中心的 GitHub token(更高的 API 速率限制,技能发布)
HONCHO_API_KEY跨会话用户建模(honcho.dev
HONCHO_BASE_URL自托管 Honcho 实例的 base URL(默认:Honcho 云端)。本地实例无需 API 密钥
HINDSIGHT_TIMEOUTHindsight 记忆提供商 API 调用超时时间(秒,默认:60)。如果 Hindsight 实例在 /syncon_session_switch 期间响应较慢并出现超时,请提高此值。
SUPERMEMORY_API_KEY具有配置文件召回和会话摄入功能的语义长期记忆(supermemory.ai
TINKER_API_KEYRL 训练(tinker-console.thinkingmachines.ai
WANDB_API_KEYRL 训练指标(wandb.ai
DAYTONA_API_KEYDaytona 云端沙箱(daytona.io
VERCEL_TOKENVercel 沙箱访问 token(vercel.com
VERCEL_PROJECT_IDVercel 项目 ID(与 VERCEL_TOKEN 配合使用时必填)
VERCEL_TEAM_IDVercel 团队 ID(与 VERCEL_TOKEN 配合使用时必填)
VERCEL_OIDC_TOKENVercel 短期 OIDC token(仅限开发环境替代方案)

| CODEX_HOME | 启用 Codex app-server 运行时 时,覆盖 Codex CLI 读取其配置和认证信息的目录(默认:~/.codex)。Hermes 的迁移操作会将托管配置块写入 <CODEX_HOME>/config.toml。 |

Langfuse 可观测性

内置 observability/langfuse 插件的环境变量。通过 hermes tools → Langfuse Observability 或在 ~/.hermes/.env 中手动设置。插件还需要先启用(hermes plugins enable observability/langfuse),这些变量才会生效。

变量描述
HERMES_LANGFUSE_PUBLIC_KEYLangfuse 项目公钥(pk-lf-...)。必填。
HERMES_LANGFUSE_SECRET_KEYLangfuse 项目密钥(sk-lf-...)。必填。
HERMES_LANGFUSE_BASE_URLLangfuse 服务器 URL(默认:https://cloud.langfuse.com)。自托管时设置。
HERMES_LANGFUSE_ENVtraces 上的环境标签(productionstaging 等)
HERMES_LANGFUSE_RELEASEtraces 上的发布/版本标签
HERMES_LANGFUSE_SAMPLE_RATESDK 采样率 0.0–1.0(默认:1.0
HERMES_LANGFUSE_MAX_CHARS序列化有效载荷的按字段截断长度(默认:12000
HERMES_LANGFUSE_DEBUGtrue 启用详细插件日志记录到 agent.log
LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY / LANGFUSE_BASE_URL标准 Langfuse SDK 变量名。当对应的 HERMES_LANGFUSE_* 变量未设置时作为回退使用。

Nous 工具网关

这些变量用于为付费 Nous 订阅者或自托管网关部署配置工具网关。大多数用户无需设置 — 网关通过 hermes modelhermes tools 自动配置。

变量描述
TOOL_GATEWAY_DOMAIN工具网关路由的基础域名(默认:nousresearch.com
TOOL_GATEWAY_SCHEME网关 URL 的 HTTP 或 HTTPS 协议(默认:https
TOOL_GATEWAY_USER_TOKEN工具网关的认证 token(通常由 Nous 认证自动填充)
FIRECRAWL_GATEWAY_URL专门覆盖 Firecrawl 网关端点的 URL

终端后端

变量描述
TERMINAL_ENV后端:localdockersshsingularitymodaldaytonavercel_sandbox
HERMES_DOCKER_BINARY覆盖 Hermes 调用的容器二进制文件(例如 podman/usr/local/bin/docker)。未设置时,Hermes 自动发现 PATH 上的 dockerpodman。当两者都安装且需要使用非默认的,或二进制文件在 PATH 之外时需要设置。
TERMINAL_DOCKER_IMAGEDocker 镜像(默认: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高级选项:将启动目录挂载到 Docker /workspacetrue/false,默认:false
TERMINAL_SINGULARITY_IMAGESingularity 镜像或 .sif 文件路径
TERMINAL_MODAL_IMAGEModal 容器镜像
TERMINAL_DAYTONA_IMAGEDaytona 沙箱镜像
TERMINAL_VERCEL_RUNTIMEVercel 沙箱运行时(node24node22python3.13
TERMINAL_TIMEOUT命令超时时间(秒)
TERMINAL_LIFETIME_SECONDS终端会话的最大存活时间(秒)
TERMINAL_CWD终端会话的工作目录(仅限网关/定时任务;CLI 使用启动目录)
SUDO_PASSWORD无需交互提示即可使用 sudo

对于云端沙箱后端,持久性以文件系统为导向。TERMINAL_LIFETIME_SECONDS 控制 Hermes 清理空闲终端会话的时机,后续恢复可能会重新创建沙箱,而非保持相同的活跃进程。

SSH 后端

变量描述
TERMINAL_SSH_HOST远程服务器主机名
TERMINAL_SSH_USERSSH 用户名
TERMINAL_SSH_PORTSSH 端口(默认:22)
TERMINAL_SSH_KEY私钥路径
TERMINAL_SSH_PERSISTENT覆盖 SSH 的持久 shell(默认:遵循 TERMINAL_PERSISTENT_SHELL

容器资源(Docker、Singularity、Modal、Daytona)

变量描述
TERMINAL_CONTAINER_CPUCPU 核心数(默认:1)
TERMINAL_CONTAINER_MEMORY内存(MB,默认:5120)
TERMINAL_CONTAINER_DISK磁盘(MB,默认:51200)
TERMINAL_CONTAINER_PERSISTENT跨会话持久化容器文件系统(默认:true
TERMINAL_SANDBOX_DIR工作区和覆盖层的宿主机目录(默认:~/.hermes/sandboxes/

持久 Shell

变量描述
TERMINAL_PERSISTENT_SHELL为非本地后端启用持久 shell(默认:true)。也可通过 config.yaml 中的 terminal.persistent_shell 设置
TERMINAL_LOCAL_PERSISTENT为本地后端启用持久 shell(默认:false
TERMINAL_SSH_PERSISTENT覆盖 SSH 后端的持久 shell(默认:遵循 TERMINAL_PERSISTENT_SHELL

消息平台

变量描述
TELEGRAM_BOT_TOKENTelegram bot token(来自 @BotFather)
TELEGRAM_ALLOWED_USERS允许使用 bot 的逗号分隔用户 ID(适用于私聊、群组和论坛)
TELEGRAM_GROUP_ALLOWED_USERS仅在群组/论坛中授权的逗号分隔发送者用户 ID(授予私聊权限)。以 - 开头的聊天 ID 格式值仍作为聊天 ID 处理以向后兼容,会显示弃用警告。
TELEGRAM_GROUP_ALLOWED_CHATS逗号分隔的群组/论坛聊天 ID;任意成员均被授权
TELEGRAM_HOME_CHANNEL定时任务投递的默认 Telegram 聊天/频道
TELEGRAM_HOME_CHANNEL_NAMETelegram 主频道的显示名称
TELEGRAM_WEBHOOK_URLWebhook 模式的公网 HTTPS URL(启用 webhook 而非轮询)
TELEGRAM_WEBHOOK_PORTWebhook 服务器本地监听端口(默认:8443
TELEGRAM_WEBHOOK_SECRETTelegram 在每次更新中回传的密钥 token,用于验证。凡设置了 TELEGRAM_WEBHOOK_URL 时必填 — 否则网关拒绝启动(GHSA-3vpc-7q5r-276h)。使用 openssl rand -hex 32 生成。
TELEGRAM_REACTIONS处理期间在消息上启用表情符号回应(默认:false
TELEGRAM_REPLY_TO_MODE回复引用行为:offfirst(默认)或 all。与 Discord 模式一致。
TELEGRAM_IGNORED_THREADSbot 永不响应的逗号分隔 Telegram 论坛话题/线程 ID
TELEGRAM_PROXYTelegram 连接的代理 URL — 覆盖 HTTPS_PROXY。支持 http://https://socks5://
DISCORD_BOT_TOKENDiscord bot token
DISCORD_ALLOWED_USERS允许使用 bot 的逗号分隔 Discord 用户 ID
DISCORD_ALLOWED_ROLES允许使用 bot 的逗号分隔 Discord 角色 ID(与 DISCORD_ALLOWED_USERS 取并集)。自动启用 Members intent。适合管理团队频繁变动时 — 角色授权自动传播。
DISCORD_ALLOWED_CHANNELS逗号分隔的 Discord 频道 ID。设置后,bot 仅在这些频道响应(若允许则包括私聊)。覆盖 config.yaml 中的 discord.allowed_channels
DISCORD_PROXYDiscord 连接的代理 URL — 覆盖 HTTPS_PROXY。支持 http://https://socks5://
DISCORD_HOME_CHANNEL定时任务投递的默认 Discord 频道
DISCORD_HOME_CHANNEL_NAMEDiscord 主频道的显示名称
DISCORD_COMMAND_SYNC_POLICYDiscord 斜杠命令启动同步策略:safe(差异对比并调和)、bulk(旧版 tree.sync())或 off
DISCORD_REQUIRE_MENTION在服务器频道中响应前需要 @mention
DISCORD_FREE_RESPONSE_CHANNELS无需 mention 即可响应的逗号分隔频道 ID
DISCORD_AUTO_THREAD支持时自动将长回复转为线程
DISCORD_REACTIONS处理期间在消息上启用表情符号回应(默认:true
DISCORD_IGNORED_CHANNELSbot 永不响应的逗号分隔频道 ID
DISCORD_NO_THREAD_CHANNELSbot 不自动创建线程、直接响应的逗号分隔频道 ID
DISCORD_REPLY_TO_MODE回复引用行为:offfirst(默认)或 all
DISCORD_ALLOW_MENTION_EVERYONE允许 bot 提及 @everyone/@here(默认:false)。参见提及控制
DISCORD_ALLOW_MENTION_ROLES允许 bot 提及 @role(默认:false)。
DISCORD_ALLOW_MENTION_USERS允许 bot 提及单个 @user(默认:true)。
DISCORD_ALLOW_MENTION_REPLIED_USER回复消息时提及原作者(默认:true)。
SLACK_BOT_TOKENSlack bot token(xoxb-...
SLACK_APP_TOKENSlack 应用级 token(xapp-...,Socket Mode 必填)
SLACK_ALLOWED_USERS逗号分隔的 Slack 用户 ID
SLACK_HOME_CHANNEL定时任务投递的默认 Slack 频道
SLACK_HOME_CHANNEL_NAMESlack 主频道的显示名称
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_JSONService 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_NAMEGoogle Chat 主空间的显示名称
GOOGLE_CHAT_MAX_MESSAGESPub/Sub FlowControl 最大并发消息数(默认:1
GOOGLE_CHAT_MAX_BYTESPub/Sub FlowControl 最大并发字节数(默认:16777216,16 MiB)
GOOGLE_CHAT_BOOTSTRAP_SPACES启动时用于探测机器人自身 users/{id} 的额外空间 ID(逗号分隔)
GOOGLE_CHAT_DEBUG_RAW设置任意值以在 DEBUG 级别记录脱敏后的 Pub/Sub 信封(仅调试)
WHATSAPP_ENABLED启用 WhatsApp 桥接(true/false
WHATSAPP_MODEbot(独立号码)或 self-chat(发消息给自己)
WHATSAPP_ALLOWED_USERS逗号分隔的电话号码(含国家代码,不含 +),或 * 允许所有发送者
WHATSAPP_ALLOW_ALL_USERS无需白名单即允许所有 WhatsApp 发送者(true/false
WHATSAPP_DEBUG在桥接中记录原始消息事件以便排错(true/false
SIGNAL_HTTP_URLsignal-cli 守护进程 HTTP 端点(例如 http://127.0.0.1:8080
SIGNAL_ACCOUNTE.164 格式的 bot 电话号码
SIGNAL_ALLOWED_USERS逗号分隔的 E.164 电话号码或 UUID
SIGNAL_GROUP_ALLOWED_USERS逗号分隔的群组 ID,或 * 允许所有群组
SIGNAL_HOME_CHANNEL_NAMESignal 主频道的显示名称
SIGNAL_IGNORE_STORIES忽略 Signal 动态/状态更新
SIGNAL_ALLOW_ALL_USERS无需白名单即允许所有 Signal 用户
TWILIO_ACCOUNT_SIDTwilio Account SID(与电话技能共用)
TWILIO_AUTH_TOKENTwilio Auth Token(与电话技能共用;也用于 webhook 签名验证)
TWILIO_PHONE_NUMBERE.164 格式的 Twilio 电话号码(与电话技能共用)
SMS_WEBHOOK_URLTwilio 签名验证的公网 URL — 必须与 Twilio 控制台中的 webhook URL 一致(必填)
SMS_WEBHOOK_PORT入站短信的 Webhook 监听端口(默认:8080
SMS_WEBHOOK_HOSTWebhook 绑定地址(默认:0.0.0.0
SMS_INSECURE_NO_SIGNATURE设为 true 禁用 Twilio 签名验证(仅限本地开发 — 不适用于生产环境)
SMS_ALLOWED_USERS允许聊天的逗号分隔 E.164 电话号码
SMS_ALLOW_ALL_USERS无需白名单即允许所有短信发送者
SMS_HOME_CHANNEL定时任务/通知投递的电话号码
SMS_HOME_CHANNEL_NAMESMS 主频道的显示名称
EMAIL_ADDRESSEmail 网关适配器的电子邮件地址
EMAIL_PASSWORD电子邮件账户的密码或应用密码
EMAIL_IMAP_HOST电子邮件适配器的 IMAP 主机名
EMAIL_IMAP_PORTIMAP 端口
EMAIL_SMTP_HOST电子邮件适配器的 SMTP 主机名
EMAIL_SMTP_PORTSMTP 端口
EMAIL_ALLOWED_USERS允许向 bot 发消息的逗号分隔电子邮件地址
EMAIL_HOME_ADDRESS主动投递电子邮件的默认收件人
EMAIL_HOME_ADDRESS_NAME电子邮件主目标的显示名称
EMAIL_POLL_INTERVAL电子邮件轮询间隔(秒)
EMAIL_ALLOW_ALL_USERS允许所有入站邮件发送者
DINGTALK_CLIENT_ID来自开发者门户的钉钉 bot AppKey(open.dingtalk.com
DINGTALK_CLIENT_SECRET来自开发者门户的钉钉 bot AppSecret
DINGTALK_ALLOWED_USERS允许向 bot 发消息的逗号分隔钉钉用户 ID
FEISHU_APP_ID来自 open.feishu.cn 的飞书/Lark bot App ID
FEISHU_APP_SECRET飞书/Lark bot App Secret
FEISHU_DOMAINfeishu(中国)或 lark(国际)。默认:feishu
FEISHU_CONNECTION_MODEwebsocket(推荐)或 webhook。默认:websocket
FEISHU_ENCRYPT_KEYwebhook 模式的可选加密密钥
FEISHU_VERIFICATION_TOKENwebhook 模式的可选验证 token
FEISHU_ALLOWED_USERS允许向 bot 发消息的逗号分隔飞书用户 ID
FEISHU_ALLOW_BOTSnone(默认)/ mentions / all — 接受来自其他 bot 的入站消息。参见 bot 间消息通信
FEISHU_REQUIRE_MENTIONtrue(默认)/ false — 群组消息是否必须 @mention bot。可通过 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允许向 bot 发消息的逗号分隔企业微信用户 ID
WECOM_HOME_CHANNEL定时任务投递和通知的企业微信聊天 ID
WECOM_CALLBACK_CORP_ID回调自建应用的企业微信 Corp ID
WECOM_CALLBACK_CORP_SECRET自建应用的 Corp Secret
WECOM_CALLBACK_AGENT_ID自建应用的 Agent ID
WECOM_CALLBACK_TOKEN回调验证 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 二维码登录获取的微信账号 ID
WEIXIN_TOKEN通过 iLink Bot API 二维码登录获取的微信认证 token
WEIXIN_BASE_URL覆盖微信 iLink Bot API base URL(默认:https://ilinkai.weixin.qq.com
WEIXIN_CDN_BASE_URL覆盖微信媒体 CDN base URL(默认:https://novac2c.cdn.weixin.qq.com/c2c
WEIXIN_DM_POLICY私信策略:openallowlistpairingdisabled(默认:open
WEIXIN_GROUP_POLICY群组消息策略:openallowlistdisabled(默认:disabled
WEIXIN_ALLOWED_USERS允许私聊 bot 的逗号分隔微信用户 ID
WEIXIN_GROUP_ALLOWED_USERS允许与 bot 交互的逗号分隔微信群聊 ID(非成员用户 ID)。变量名沿用旧称 — 实际需填入群组 ID。仅在 iLink 实际投递群组事件时生效;QR 登录 iLink bot 身份(...@im.bot)通常无法接收普通微信群消息。
WEIXIN_HOME_CHANNEL定时任务投递和通知的微信聊天 ID
WEIXIN_HOME_CHANNEL_NAME微信主频道的显示名称
WEIXIN_ALLOW_ALL_USERS无需白名单即允许所有微信用户(true/false
BLUEBUBBLES_SERVER_URLBlueBubbles 服务器 URL(例如 http://192.168.1.10:1234
BLUEBUBBLES_PASSWORDBlueBubbles 服务器密码
BLUEBUBBLES_WEBHOOK_HOSTWebhook 监听器绑定地址(默认:127.0.0.1
BLUEBUBBLES_WEBHOOK_PORTWebhook 监听器端口(默认: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 提供商的 base URL(可选)
QQ_STT_MODEL外部 STT 提供商的模型名称(可选)
QQ_ALLOWED_USERS允许向 bot 发消息的逗号分隔 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_NAMEQQ 主频道的显示名称
QQ_PORTAL_HOST覆盖 QQ portal 主机(设为 sandbox.q.qq.com 通过沙箱网关路由;默认:q.qq.com)。
MATTERMOST_URLMattermost 服务器 URL(例如 https://mm.example.com
MATTERMOST_TOKENMattermost 的 bot token 或个人访问 token
MATTERMOST_ALLOWED_USERS允许向 bot 发消息的逗号分隔 Mattermost 用户 ID
MATTERMOST_HOME_CHANNEL主动消息投递的频道 ID(定时任务、通知)
MATTERMOST_REQUIRE_MENTION频道中需要 @mention(默认:true)。设为 false 响应所有消息。
MATTERMOST_FREE_RESPONSE_CHANNELSbot 无需 @mention 即响应的逗号分隔频道 ID
MATTERMOST_REPLY_MODE回复风格:thread(线程回复)或 off(扁平消息,默认)
MATRIX_HOMESERVERMatrix 服务器 URL(例如 https://matrix.org
MATRIX_ACCESS_TOKENbot 认证的 Matrix 访问 token
MATRIX_USER_IDMatrix 用户 ID(例如 @hermes:matrix.org)— 密码登录必填,使用访问 token 时可选
MATRIX_PASSWORDMatrix 密码(访问 token 的替代方案)
MATRIX_ALLOWED_USERS允许向 bot 发消息的逗号分隔 Matrix 用户 ID(例如 @alice:matrix.org
MATRIX_HOME_ROOM主动消息投递的房间 ID(例如 !abc123:matrix.org
MATRIX_ENCRYPTION启用端对端加密(true/false,默认:false
MATRIX_DEVICE_ID稳定的 Matrix 设备 ID,用于跨重启的 E2EE 持久性(例如 HERMES_BOT)。不设置时,E2EE 密钥每次启动都会轮换,历史房间解密会失败。
MATRIX_REACTIONS对入站消息启用处理生命周期表情符号回应(默认:true)。设为 false 禁用。
MATRIX_REQUIRE_MENTION房间中需要 @mention(默认:true)。设为 false 响应所有消息。
MATRIX_FREE_RESPONSE_ROOMSbot 无需 @mention 即响应的逗号分隔房间 ID
MATRIX_AUTO_THREAD为房间消息自动创建线程(默认:true
MATRIX_DM_MENTION_THREADS私聊中 bot 被 @mentioned 时创建线程(默认:false
MATRIX_RECOVERY_KEY设备密钥轮换后交叉签名验证的恢复密钥。推荐在启用了交叉签名的 E2EE 设置中使用。
HASS_TOKENHome Assistant 长期访问 token(启用 HA 平台 + 工具)
HASS_URLHome Assistant URL(默认:http://homeassistant.local:8123
WEBHOOK_ENABLED启用 webhook 平台适配器(true/false
WEBHOOK_PORT接收 webhook 的 HTTP 服务器端口(默认:8644
WEBHOOK_SECRETwebhook 签名验证的全局 HMAC 密钥(路由未指定自己的密钥时作为备用)
API_SERVER_ENABLED启用 OpenAI 兼容 API 服务器(true/false)。与其他平台并行运行。
API_SERVER_KEYAPI 服务器认证的 Bearer token。非回环绑定时强制执行。
API_SERVER_CORS_ORIGINS允许直接调用 API 服务器的逗号分隔浏览器来源(例如 http://localhost:3000,http://127.0.0.1:3000)。默认:禁用。
API_SERVER_PORTAPI 服务器端口(默认:8642
API_SERVER_HOSTAPI 服务器主机/绑定地址(默认:127.0.0.1)。使用 0.0.0.0 开放网络访问 — 需要 API_SERVER_KEY 和严格限制的 API_SERVER_CORS_ORIGINS 白名单。
API_SERVER_MODEL_NAME/v1/models 上公告的模型名称。默认为配置文件名称(默认配置文件为 hermes-agent)。适用于 Open WebUI 等前端需要每个连接有不同模型名称的多用户设置。
GATEWAY_PROXY_URL将消息转发到的远程 Hermes API 服务器 URL(代理模式)。设置后,网关仅处理平台 I/O — 所有 Agent 工作委派给远程服务器。也可通过 config.yaml 中的 gateway.proxy_url 配置。
GATEWAY_PROXY_KEY代理模式下向远程 API 服务器认证的 Bearer token。必须与远程主机上的 API_SERVER_KEY 匹配。
MESSAGING_CWD消息平台模式下终端命令的工作目录(默认:~
GATEWAY_ALLOWED_USERS跨所有平台允许的逗号分隔用户 ID
GATEWAY_ALLOW_ALL_USERS无需白名单即允许所有用户(true/false,默认:false

Microsoft Graph(Teams 会议)

即将推出的 Teams 会议摘要管道的 Microsoft Graph REST 客户端的仅应用凭据。参见 注册 Microsoft Graph 应用 了解 Azure 门户演练和所需的确切 API 权限。

变量描述
MSGRAPH_TENANT_IDGraph 应用注册的 Azure AD 租户 ID(目录 GUID)。
MSGRAPH_CLIENT_IDAzure 应用注册的应用程序(客户端)ID。
MSGRAPH_CLIENT_SECRET应用注册客户端密钥值。存储在 ~/.hermes/.env 中并使用 chmod 600;通过 Azure 门户定期轮换。
MSGRAPH_SCOPE客户端凭据令牌请求的 OAuth2 范围(默认:https://graph.microsoft.com/.default)。
MSGRAPH_AUTHORITY_URLMicrosoft 身份平台颁发机构(默认:https://login.microsoftonline.com)。仅针对国家/主权云覆盖(例如 https://login.microsoftonline.us 用于 GCC High)。

Microsoft Graph Webhook 监听器

Graph 事件(Teams 会议、日历、聊天等)的入站变更通知监听器。参见 Microsoft Graph Webhook 监听器 了解设置和安全加固。

变量描述
MSGRAPH_WEBHOOK_ENABLED启用 msgraph_webhook 网关平台(true/1/yes)。
MSGRAPH_WEBHOOK_PORT监听器绑定的端口(默认:8646)。
MSGRAPH_WEBHOOK_CLIENT_STATEGraph 在每个通知中回传的共享密钥;与 hmac.compare_digest 比较。使用 openssl rand -hex 32 生成。
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCESGraph 资源路径/模式的逗号分隔允许列表(例如 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.yamlplatforms.teams.extra 下配置 — 两者都设置时环境变量优先。参见 Microsoft Teams → 会议摘要投递

变量描述
TEAMS_DELIVERY_MODEgraphincoming_webhook
TEAMS_INCOMING_WEBHOOK_URLTeams 生成的 webhook URL;当 TEAMS_DELIVERY_MODE=incoming_webhook 时必填。
TEAMS_GRAPH_ACCESS_TOKEN为 Graph 投递预获取的委派访问令牌。很少需要 — 写入器在未设置时回退到 MSGRAPH_* 应用凭据。
TEAMS_TEAM_ID频道投递的目标 Team ID(graph 模式)。
TEAMS_CHANNEL_ID目标频道 ID(与 TEAMS_TEAM_ID 配对)。
TEAMS_CHAT_ID目标 1:1 或群组聊天 ID(graph 模式的 Team+Channel 替代方案)。

LINE Messaging API

由捆绑的 LINE 平台插件(plugins/platforms/line/)使用。完整设置参见 消息网关 → LINE

变量描述
LINE_CHANNEL_ACCESS_TOKEN来自 LINE Developers Console(Messaging API 标签)的长期渠道访问令牌。必填。
LINE_CHANNEL_SECRET渠道密钥(Basic settings 标签);用于 HMAC-SHA256 webhook 签名验证。必填。
LINE_HOSTWebhook 绑定主机(默认:0.0.0.0)。
LINE_PORTWebhook 绑定端口(默认:8646)。
LINE_PUBLIC_URL公共 HTTPS 基础 URL(例如 https://my-tunnel.example.com)。图像/音频/视频发送必需 — LINE 仅接受 HTTPS 可达的 URL。
LINE_ALLOWED_USERS允许向 bot 发送私聊的逗号分隔用户 ID(U 前缀)。
LINE_ALLOWED_GROUPSbot 将响应的逗号分隔群组 ID(C 前缀)。
LINE_ALLOWED_ROOMSbot 将响应的逗号分隔房间 ID(R 前缀)。
LINE_ALLOW_ALL_USERS仅开发环境逃生舱 — 接受任何来源。默认:false
LINE_HOME_CHANNELdeliver: 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.)。

高级消息调优

用于限制出站消息批处理器的高级单平台控制旋钮。大多数用户无需调整 — 默认值在遵守各平台速率限制的同时保持响应流畅。

变量描述
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_SECONDSAgent 完成后发送跟进消息前的延迟,以避免与最后一个流块竞争。
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_SECONDSDiscord 消息超出长度限制时,分块之间的延迟(默认:2.0)。
HERMES_MATRIX_TEXT_BATCH_DELAY_SECONDS / _SPLIT_DELAY_SECONDSMatrix 版本的 Telegram 批处理控制旋钮。
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默认网关繁忙输入行为:queuesteerinterrupt。可通过 /busy 按聊天覆盖。
HERMES_GATEWAY_BUSY_ACK_ENABLED网关在 Agent 繁忙时收到用户输入是否发送确认消息(⚡/⏳/⏩)(默认:true)。设为 false 完全屏蔽这些消息 — 输入仍会按正常方式排队/导引/中断,只是不发送聊天回复。对应 config.yaml 中的 display.busy_ack_enabled
HERMES_CRON_TIMEOUT定时任务 Agent 运行的非活跃超时时间(秒,默认:600)。Agent 在主动调用工具或接收流 token 时可无限运行 — 仅在空闲时触发。设为 0 表示无限制。
HERMES_CRON_SCRIPT_TIMEOUT附加到定时任务的预运行脚本超时时间(秒,默认:120)。对于需要更长执行时间的脚本(例如随机延迟以避免机器人检测)请提高此值。也可通过 config.yaml 中的 cron.script_timeout_seconds 配置。
HERMES_CRON_MAX_PARALLEL每次触发并行运行的最大定时任务数(默认:4)。

| HERMES_FILE_MUTATION_VERIFIER | 启用每轮文件变更验证脚注(默认:true)。启用时,Hermes 会追加一个提示,列出本轮中失败且未被成功写入覆盖的 write_file / patch 调用。设为 0falsenooff 可禁用。对应 config.yaml 中的 display.file_mutation_verifier;环境变量优先于配置文件。 |

Agent 行为

变量描述
HERMES_MAX_ITERATIONS每次对话的最大工具调用迭代次数(默认:90)
HERMES_INFERENCE_MODEL在进程级别覆盖模型名称(优先于会话的 config.yaml)。也可通过 -m/--model 标志设置。
HERMES_YOLO_MODE设为 1 绕过危险命令审批提示。等同于 --yolo
HERMES_ACCEPT_HOOKS无需 TTY 提示自动批准 config.yaml 中声明的任何未见过的 shell 钩子。等同于 --accept-hookshooks_auto_accept: true
HERMES_IGNORE_USER_CONFIG跳过 ~/.hermes/config.yaml 并使用内置默认值(.env 中的凭证仍会加载)。等同于 --ignore-user-config
HERMES_IGNORE_RULES跳过 AGENTS.mdSOUL.md.cursorrules、记忆和预加载技能的自动注入。等同于 --ignore-rules
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自定义延迟范围最小值(毫秒)
HERMES_HUMAN_DELAY_MAX_MS自定义延迟范围最大值(毫秒)
HERMES_QUIET抑制非必要输出(true/false
HERMES_API_TIMEOUTLLM API 调用超时时间(秒,默认:1800
HERMES_API_CALL_STALE_TIMEOUT非流式陈旧调用超时时间(秒,默认:300)。本地提供商未设置时自动禁用。也可通过 config.yaml 中的 providers.<id>.stale_timeout_secondsproviders.<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网关中运行中 Agent 的非活跃超时时间(秒,默认:900)。每次工具调用和流 token 都会重置。设为 0 禁用。
HERMES_AGENT_TIMEOUT_WARNING网关:非活跃多少秒后发送警告消息(默认:HERMES_AGENT_TIMEOUT 的 75%)。
HERMES_AGENT_NOTIFY_INTERVAL网关:长时间运行的 Agent 轮次进度通知的间隔秒数。
HERMES_CHECKPOINT_TIMEOUT文件系统检查点创建超时时间(秒,默认:30)。
HERMES_EXEC_ASK在网关模式下启用执行审批提示(true/false
HERMES_ENABLE_PROJECT_PLUGINS启用从 ./.hermes/plugins/ 自动发现仓库本地插件(true/false,默认:false
HERMES_PLUGINS_DEBUG1/true 以在 stderr 上显示详细的插件发现日志 — 扫描的目录、解析的清单、跳过原因,以及解析或 register() 失败时的完整回溯。面向插件作者。
HERMES_BACKGROUND_NOTIFICATIONS网关中后台进程通知模式:all(默认)、resulterroroff
HERMES_EPHEMERAL_SYSTEM_PROMPT在 API 调用时注入的临时系统提示(从不持久化到会话)
HERMES_PREFILL_MESSAGES_FILE包含在 API 调用时注入的临时预填充消息的 JSON 文件路径。
HERMES_ALLOW_PRIVATE_URLStrue/false — 允许工具获取 localhost/私有网络 URL。网关模式下默认关闭。
HERMES_REDACT_SECRETStrue/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 请求有效载荷转储到 stdout 而非日志文件。
HERMES_OAUTH_TRACE设为 1 记录 OAuth token 交换和刷新尝试。包含脱敏的时间信息。
HERMES_OAUTH_FILE覆盖 OAuth 凭证存储路径(默认:~/.hermes/auth.json)。
HERMES_AGENT_HELP_GUIDANCE为自定义部署在系统提示中追加额外指导文本。
HERMES_AGENT_LOGO覆盖 CLI 启动时的 ASCII 横幅 logo。
DELEGATION_MAX_CONCURRENT_CHILDREN每次 delegate_task 批次的最大并行子 Agent 数(默认: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 颜色主题:lightdark 或原始 6 字符背景十六进制颜色(例如 ffffff1a1a2e)。未设置时,Hermes 使用 COLORFGBG 和终端背景查询自动检测;此变量覆盖不设置 COLORFGBG 的终端(Ghostty、Warp、iTerm2 等)上的检测结果。
HERMES_INFERENCE_MODELhermes -z / hermes chat 强制指定模型,不修改 config.yaml。与 HERMES_INFERENCE_PROVIDER 配合使用。适用于需要按运行覆盖默认模型的脚本调用者(sweeper、CI、批量运行器)。

会话设置

变量描述
SESSION_IDLE_MINUTESN 分钟不活跃后重置会话(默认:1440)
SESSION_RESET_HOUR24 小时制每日重置时间(默认:4 = 凌晨 4 点)

上下文压缩(仅限 config.yaml)

上下文压缩仅通过 config.yaml 配置 — 无相应的环境变量。阈值设置位于 compression: 块中,而摘要模型/提供商位于 auxiliary.compression: 下。

compression:
enabled: true
threshold: 0.50
target_ratio: 0.20 # 保留为近期尾部的阈值比例
protect_last_n: 20 # 保持不压缩的最少近期消息数
旧版迁移

包含 compression.summary_modelcompression.summary_providercompression.summary_base_url 的旧版配置在首次加载时会自动迁移到 auxiliary.compression.*

辅助任务覆盖

变量描述
AUXILIARY_VISION_PROVIDER覆盖视觉任务的提供商
AUXILIARY_VISION_MODEL覆盖视觉任务的模型
AUXILIARY_VISION_BASE_URL视觉任务的直连 OpenAI 兼容端点
AUXILIARY_VISION_API_KEYAUXILIARY_VISION_BASE_URL 配对的 API 密钥
AUXILIARY_WEB_EXTRACT_PROVIDER覆盖网页提取/摘要任务的提供商
AUXILIARY_WEB_EXTRACT_MODEL覆盖网页提取/摘要任务的模型
AUXILIARY_WEB_EXTRACT_BASE_URL网页提取/摘要任务的直连 OpenAI 兼容端点
AUXILIARY_WEB_EXTRACT_API_KEYAUXILIARY_WEB_EXTRACT_BASE_URL 配对的 API 密钥

对于任务专用的直连端点,Hermes 使用任务配置的 API 密钥或 OPENAI_API_KEY。这些自定义端点不复用 OPENROUTER_API_KEY

备用提供商(仅限 config.yaml)

主模型备用链仅通过 config.yaml 配置 — 无相应的环境变量。在顶层 fallback_providers 列表中添加带 providermodel 键的条目,可在主模型遇到错误时启用自动故障转移。

fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4

旧版单提供商格式的顶层 fallback_model 仍可向后兼容地读取,但新配置应使用 fallback_providers

详情参见备用提供商

提供商路由(仅限 config.yaml)

以下内容写入 ~/.hermes/config.yamlprovider_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)。