> 原文链接:Environment Variables Reference
环境变量
> 📖 本文档翻译自 Hermes Agent 官方文档 > 最后更新:2026-04-16
环境变量参考
所有变量都放在 ~/.hermes/.env 文件中。你也可以通过 hermes config set VAR value 来设置。
LLM Provider(大语言模型提供商)
| 变量 | 描述 |
|---|---|
OPENROUTER_API_KEY | OpenRouter API 密钥(推荐,灵活性最高) |
OPENROUTER_BASE_URL | 覆盖 OpenRouter 兼容的 Base URL(基础 URL) |
AI_GATEWAY_API_KEY | Vercel 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_TOKEN | Copilot API 的 GitHub Token(GitHub 令牌)——最高优先级(OAuth gho_* 或细粒度 PAT github_pat_*;经典 PAT ghp_* 不支持) |
GH_TOKEN | GitHub Token——Copilot 第二优先级(也被 gh CLI 使用) |
GITHUB_TOKEN | GitHub Token——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 Base URL |
GLM_API_KEY | z.ai / 智谱 AI GLM API 密钥(z.ai) |
ZAI_API_KEY | GLM_API_KEY 的别名 |
Z_AI_API_KEY | GLM_API_KEY 的别名 |
GLM_BASE_URL | 覆盖 z.ai Base URL(默认值:https://api.z.ai/api/paas/v4) |
KIMI_API_KEY | Kimi / Moonshot AI API 密钥(moonshot.ai) |
KIMI_BASE_URL | 覆盖 Kimi Base 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 Base URL(默认值:https://api.arcee.ai/api/v1) |
MINIMAX_API_KEY | MiniMax API 密钥——国际端点(minimax.io) |
MINIMAX_BASE_URL | 覆盖 MiniMax Base URL(默认值:https://api.minimax.io/v1) |
MINIMAX_CN_API_KEY | MiniMax API 密钥——国内端点(minimaxi.com) |
MINIMAX_CN_BASE_URL | 覆盖 MiniMax 国内版 Base URL(默认值:https://api.minimaxi.com/v1) |
KILOCODE_API_KEY | Kilo 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) |
HF_TOKEN | Hugging Face Token(令牌),用于 Inference Providers(推理提供商)(huggingface.co/settings/tokens) |
HF_BASE_URL | 覆盖 Hugging Face Base 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 Base URL |
ANTHROPIC_API_KEY | Anthropic 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://coding-intl.dashscope.aliyuncs.com/v1) |
DEEPSEEK_API_KEY | DeepSeek API 密钥,用于直接访问 DeepSeek(platform.deepseek.com) |
DEEPSEEK_BASE_URL | 自定义 DeepSeek API Base URL |
OPENCODE_ZEN_API_KEY | OpenCode Zen API 密钥——按量付费访问精选模型(opencode.ai) |
OPENCODE_ZEN_BASE_URL | 覆盖 OpenCode Zen Base URL |
OPENCODE_GO_API_KEY | OpenCode Go API 密钥——$10/月订阅,访问开源模型(opencode.ai) |
OPENCODE_GO_BASE_URL | 覆盖 OpenCode Go Base URL |
CLAUDE_CODE_OAUTH_TOKEN | 手动导出时的显式 Claude Code Token 覆盖 |
HERMES_MODEL | 在进程级别覆盖模型名称(由 Cron 调度器(定时任务调度器)使用;日常使用请优先在 config.yaml 中配置) |
VOICE_TOOLS_OPENAI_KEY | 用于 OpenAI Speech-to-Text(语音转文字)和 Text-to-Speech(文字转语音)提供商的首选 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)。同时限定 Gateway(网关)PID 文件和 systemd 服务名,因此多个安装实例可以并行运行 |
Provider Auth(提供商认证) — OAuth
对于原生 Anthropic 认证,当存在 Claude Code 自身的凭据文件时,Hermes 优先使用它们,因为这些凭据可以自动刷新。环境变量(如 ANTHROPIC_TOKEN)仍可作为手动覆盖使用,但不再是 Claude Pro/Max 登录的首选方式。
| 变量 | 描述 |
|---|---|
HERMES_INFERENCE_PROVIDER | 覆盖 Provider 选择:auto、openrouter、nous、openai-codex、copilot、copilot-acp、anthropic、huggingface、zai、kimi-coding、kimi-coding-cn、minimax、minimax-cn、kilocode、xiaomi、arcee、alibaba、deepseek、opencode-zen、opencode-go、ai-gateway(默认值:auto) |
HERMES_PORTAL_BASE_URL | 覆盖 Nous Portal URL(用于开发/测试) |
NOUS_INFERENCE_BASE_URL | 覆盖 Nous Inference(推理)API URL |
HERMES_NOUS_MIN_KEY_TTL_SECONDS | Agent Key(代理密钥)在重新签发前的最短 TTL(生存时间)(默认值:1800 = 30 分钟) |
HERMES_NOUS_TIMEOUT_SECONDS | Nous 凭据/Token 流程的 HTTP 超时时间 |
HERMES_DUMP_REQUESTS | 将 API 请求载荷(Payload)转储到日志文件(true/false) |
HERMES_PREFILL_MESSAGES_FILE | JSON 文件路径,包含在 API 调用时注入的临时预填充消息 |
HERMES_TIMEZONE | IANA 时区覆盖(例如 America/New_York) |
Tool API(工具 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) |
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(Chrome 开发者工具协议)URL(通过 /browser connect 设置,例如 ws://localhost:9222) |
CAMOFOX_URL | Camofox 本地反检测浏览器 URL(默认值:http://localhost:9377) |
BROWSER_INACTIVITY_TIMEOUT | 浏览器会话不活跃超时时间,单位为秒 |
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 Token(更高的 API 速率限制、技能发布) |
HONCHO_API_KEY | 跨会话用户建模(honcho.dev) |
HONCHO_BASE_URL | 自托管 Honcho 实例的 Base URL(默认值:Honcho 云端)。本地实例无需 API 密钥 |
SUPERMEMORY_API_KEY | 语义化长期记忆,支持配置文件召回和会话导入(supermemory.ai) |
TINKER_API_KEY | RL(强化学习)训练(tinker-console.thinkingmachines.ai) |
WANDB_API_KEY | RL 训练指标(wandb.ai) |
DAYTONA_API_KEY | Daytona 云沙箱(daytona.io) |
Terminal Backend(终端后端)
| 变量 | 描述 |
|---|---|
TERMINAL_ENV | 后端类型:local、docker、ssh、singularity、modal、daytona |
TERMINAL_DOCKER_IMAGE | Docker 镜像(默认值:nikolaik/python-nodejs:python3.11-nodejs20) |
TERMINAL_DOCKER_FORWARD_ENV | JSON 数组,指定要显式转发到 Docker 终端会话的环境变量名。注意:Skill 声明的 required_environment_variables 会自动转发——你只需设置未被任何 Skill 声明的变量 |
TERMINAL_DOCKER_VOLUMES | 额外的 Docker Volume 挂载(逗号分隔的 host:container 对) |
TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE | 高级选项:将启动时的当前工作目录挂载到 Docker 的 /workspace(true/false,默认值:false) |
TERMINAL_SINGULARITY_IMAGE | Singularity 镜像或 .sif 路径 |
TERMINAL_MODAL_IMAGE | Modal 容器镜像 |
TERMINAL_DAYTONA_IMAGE | Daytona 沙箱镜像 |
TERMINAL_TIMEOUT | 命令超时时间,单位为秒 |
TERMINAL_LIFETIME_SECONDS | 终端会话最大生存时间,单位为秒 |
TERMINAL_CWD | 所有终端会话的工作目录 |
SUDO_PASSWORD | 启用 sudo 而无需交互式密码提示 |
对于云沙箱后端,持久化是基于文件系统的。TERMINAL_LIFETIME_SECONDS 控制 Hermes 何时清理空闲的终端会话,后续恢复时可能会重建沙箱,而非保持相同的活跃进程。
SSH Backend(SSH 后端)
| 变量 | 描述 |
|---|---|
TERMINAL_SSH_HOST | 远程服务器主机名 |
TERMINAL_SSH_USER | SSH 用户名 |
TERMINAL_SSH_PORT | SSH 端口(默认值:22) |
TERMINAL_SSH_KEY | 私钥路径 |
TERMINAL_SSH_PERSISTENT | 覆盖 SSH 的持久化 Shell 设置(默认值:跟随 TERMINAL_PERSISTENT_SHELL) |
Container Resources(容器资源) — 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/) |
Persistent Shell(持久化 Shell)
| 变量 | 描述 |
|---|---|
TERMINAL_PERSISTENT_SHELL | 为非本地后端启用持久化 Shell(默认值:true)。也可通过 config.yaml 中的 terminal.persistent_shell 设置 |
TERMINAL_LOCAL_PERSISTENT | 为本地后端启用持久化 Shell(默认值:false) |
TERMINAL_SSH_PERSISTENT | 覆盖 SSH 后端的持久化 Shell 设置(默认值:跟随 TERMINAL_PERSISTENT_SHELL) |
Messaging(消息平台)
| 变量 | 描述 |
|---|---|
TELEGRAM_BOT_TOKEN | Telegram Bot Token(机器人令牌)(来自 @BotFather) |
TELEGRAM_ALLOWED_USERS | 逗号分隔的用户 ID 列表,仅允许这些用户使用机器人 |
TELEGRAM_HOME_CHANNEL | 用于 Cron 定时任务消息投递的默认 Telegram 聊天/频道 |
TELEGRAM_HOME_CHANNEL_NAME | Telegram 主频道的显示名称 |
TELEGRAM_WEBHOOK_URL | Webhook 模式的公共 HTTPS URL(启用 Webhook 替代轮询) |
TELEGRAM_WEBHOOK_PORT | Webhook 服务器的本地监听端口(默认值:8443) |
TELEGRAM_WEBHOOK_SECRET | 用于验证更新来自 Telegram 的密钥 Token |
TELEGRAM_REACTIONS | 在消息处理期间启用表情回应(默认值:false) |
TELEGRAM_IGNORED_THREADS | 逗号分隔的 Telegram 论坛话题/线程 ID,机器人不会在这些话题中响应 |
DISCORD_BOT_TOKEN | Discord Bot Token(机器人令牌) |
DISCORD_ALLOWED_USERS | 逗号分隔的 Discord 用户 ID 列表,仅允许这些用户使用机器人 |
DISCORD_HOME_CHANNEL | 用于 Cron 定时任务消息投递的默认 Discord 频道 |
DISCORD_HOME_CHANNEL_NAME | Discord 主频道的显示名称 |
DISCORD_REQUIRE_MENTION | 在服务器频道中需要 @提及才会响应 |
DISCORD_FREE_RESPONSE_CHANNELS | 逗号分隔的频道 ID,在这些频道中无需提及即可响应 |
DISCORD_AUTO_THREAD | 当支持时,自动将长回复转为线程 |
DISCORD_REACTIONS | 在消息处理期间启用表情回应(默认值:true) |
DISCORD_IGNORED_CHANNELS | 逗号分隔的频道 ID,机器人不会在这些频道中响应 |
DISCORD_NO_THREAD_CHANNELS | 逗号分隔的频道 ID,在这些频道中机器人直接回复而不自动创建线程 |
DISCORD_REPLY_TO_MODE | 回复引用行为:off、first(默认值)或 all |
SLACK_BOT_TOKEN | Slack Bot Token(机器人令牌)(xoxb-...) |
SLACK_APP_TOKEN | Slack App-Level Token(应用级令牌)(xapp-...,Socket Mode 必需) |
SLACK_ALLOWED_USERS | 逗号分隔的 Slack 用户 ID |
SLACK_HOME_CHANNEL | 用于 Cron 定时任务消息投递的默认 Slack 频道 |
SLACK_HOME_CHANNEL_NAME | Slack 主频道的显示名称 |
WHATSAPP_ENABLED | 启用 WhatsApp 桥接(true/false) |
WHATSAPP_MODE | bot(独立号码)或 self-chat(给自己发消息) |
WHATSAPP_ALLOWED_USERS | 逗号分隔的电话号码(带国家代码,不含 +),或 * 允许所有发送者 |
WHATSAPP_ALLOW_ALL_USERS | 允许所有 WhatsApp 发送者,无需白名单(true/false) |
WHATSAPP_DEBUG | 在桥接中记录原始消息事件,用于故障排查(true/false) |
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(账户 SID)(与电话技能共享) |
TWILIO_AUTH_TOKEN | Twilio Auth Token(认证令牌)(与电话技能共享;也用于 Webhook 签名验证) |
TWILIO_PHONE_NUMBER | Twilio 电话号码,E.164 格式(与电话技能共享) |
SMS_WEBHOOK_URL | 用于 Twilio 签名验证的公共 URL——必须与 Twilio 控制台中的 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 | 用于 Cron 定时任务/通知投递的电话号码 |
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 | 飞书/Lark 机器人的 App ID(应用 ID),来自 open.feishu.cn |
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 模式的可选验证 Token |
FEISHU_ALLOWED_USERS | 逗号分隔的飞书用户 ID,允许这些用户向机器人发消息 |
FEISHU_HOME_CHANNEL | 用于 Cron 定时任务和通知的飞书聊天 ID |
WECOM_BOT_ID | 企业微信 AI 机器人 ID,来自管理后台 |
WECOM_SECRET | 企业微信 AI 机器人密钥 |
WECOM_WEBSOCKET_URL | 自定义 WebSocket URL(默认值:wss://openws.work.weixin.qq.com) |
WECOM_ALLOWED_USERS | 逗号分隔的企业微信用户 ID,允许这些用户向机器人发消息 |
WECOM_HOME_CHANNEL | 用于 Cron 定时任务和通知的企业微信聊天 ID |
WECOM_CALLBACK_CORP_ID | 企业微信回调自建应用的企业 Corp ID(企业 ID) |
WECOM_CALLBACK_CORP_SECRET | 自建应用的企业密钥 |
WECOM_CALLBACK_AGENT_ID | 自建应用的 Agent ID(应用 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 | 私信策略:open、allowlist、pairing、disabled(默认值:open) |
WEIXIN_GROUP_POLICY | 群消息策略:open、allowlist、disabled(默认值:disabled) |
WEIXIN_ALLOWED_USERS | 逗号分隔的微信用户 ID,允许这些用户私信机器人 |
WEIXIN_GROUP_ALLOWED_USERS | 逗号分隔的微信群 ID,允许这些群与机器人交互 |
WEIXIN_HOME_CHANNEL | 用于 Cron 定时任务和通知的微信聊天 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 | 用于 Cron/通知投递的电话/邮箱 |
BLUEBUBBLES_ALLOWED_USERS | 逗号分隔的授权用户 |
BLUEBUBBLES_ALLOW_ALL_USERS | 允许所有用户(true/false) |
QQ_APP_ID | QQ 机器人 App ID(应用 ID),来自 q.qq.com |
QQ_CLIENT_SECRET | QQ 机器人 App Secret(应用密钥),来自 q.qq.com |
QQ_STT_API_KEY | 外部 STT 回退提供商的 API 密钥(可选,当 QQ 内置 ASR 未返回文本时使用) |
QQ_STT_BASE_URL | 外部 STT 提供商的 Base 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) |
QQ_HOME_CHANNEL | 用于 Cron 定时任务和通知的 QQ 用户/群 openID |
MATTERMOST_URL | Mattermost 服务器 URL(例如 https://mm.example.com) |
MATTERMOST_TOKEN | Mattermost 的 Bot Token 或个人访问令牌 |
MATTERMOST_ALLOWED_USERS | 逗号分隔的 Mattermost 用户 ID,允许这些用户向机器人发消息 |
MATTERMOST_HOME_CHANNEL | 用于主动消息投递(Cron、通知)的频道 ID |
MATTERMOST_REQUIRE_MENTION | 频道中需要 @mention 才会响应(默认值:true)。设为 false 可响应所有消息。 |
MATTERMOST_FREE_RESPONSE_CHANNELS | 逗号分隔的频道 ID,在这些频道中机器人无需 @mention 即可响应 |
MATTERMOST_REPLY_MODE | 回复风格:thread(线程回复)或 off(平铺消息,默认值) |
MATRIX_HOMESERVER | Matrix Homeserver(家庭服务器)URL(例如 https://matrix.org) |
MATRIX_ACCESS_TOKEN | 用于机器人认证的 Matrix Access Token(访问令牌) |
MATRIX_USER_ID | Matrix 用户 ID(例如 @hermes:matrix.org)——密码登录时必填,使用 Access Token 时可选 |
MATRIX_PASSWORD | Matrix 密码(Access Token 的替代方案) |
MATRIX_ALLOWED_USERS | 逗号分隔的 Matrix 用户 ID,允许这些用户向机器人发消息(例如 @alice:matrix.org) |
MATRIX_HOME_ROOM | 用于主动消息投递的房间 ID(例如 !abc123:matrix.org) |
MATRIX_ENCRYPTION | 启用端到端加密(End-to-End Encryption,true/false,默认值:false) |
MATRIX_REQUIRE_MENTION | 房间中需要 @mention 才会响应(默认值:true)。设为 false 可响应所有消息。 |
MATRIX_FREE_RESPONSE_ROOMS | 逗号分隔的房间 ID,在这些房间中机器人无需 @mention 即可响应 |
MATRIX_AUTO_THREAD | 为房间消息自动创建线程(默认值:true) |
MATRIX_DM_MENTION_THREADS | 在私信中被 @mention 时创建线程(默认值:false) |
MATRIX_RECOVERY_KEY | 设备密钥轮换后用于交叉签名验证的恢复密钥。建议在启用了交叉签名的 E2EE(端到端加密)设置中使用。 |
HASS_TOKEN | Home Assistant Long-Lived Access Token(长期访问令牌)(启用 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 Server(API 服务器)(true/false)。与其他平台并行运行。 |
API_SERVER_KEY | API 服务器认证的 Bearer Token(持有者令牌)。非本地绑定(non-loopback)时强制要求。 |
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)。使用 0.0.0.0 进行网络访问——需要设置 API_SERVER_KEY 和严格的 API_SERVER_CORS_ORIGINS 白名单。 |
API_SERVER_MODEL_NAME | 在 /v1/models 上广播的模型名称。默认为 Profile 名称(默认 Profile 使用 hermes-agent)。适用于多用户设置,例如 Open WebUI 等前端需要为每个连接指定不同的模型名称。 |
GATEWAY_PROXY_URL | 远程 Hermes API 服务器的 URL,用于转发消息(Proxy 模式)。设置后,Gateway 仅处理平台 I/O——所有 Agent 工作都委托给远程服务器。也可通过 config.yaml 中的 gateway.proxy_url 配置。 |
GATEWAY_PROXY_KEY | Proxy 模式下用于远程 API 服务器认证的 Bearer Token。必须与远程主机上的 API_SERVER_KEY 匹配。 |
MESSAGING_CWD | 消息模式下终端命令的工作目录(默认值:~) |
GATEWAY_ALLOWED_USERS | 逗号分隔的用户 ID,跨所有平台生效 |
GATEWAY_ALLOW_ALL_USERS | 允许所有用户,无需白名单(true/false,默认值:false) |
Agent Behavior(Agent 行为)
| 变量 | 描述 |
|---|---|
HERMES_MAX_ITERATIONS | 每次对话的最大 Tool Calling(工具调用)迭代次数(默认值:90) |
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_TIMEOUT | LLM API 调用超时时间,单位为秒(默认值:1800) |
HERMES_STREAM_READ_TIMEOUT | 流式 Socket(套接字)读取超时时间,单位为秒(默认值:120)。对于本地 Provider 会自动增加到 HERMES_API_TIMEOUT。如果本地 LLM 在长代码生成期间超时,请增大此值。 |
HERMES_STREAM_STALE_TIMEOUT | 流式过期检测超时时间,单位为秒(默认值:180)。对于本地 Provider 自动禁用。如果在此时间窗口内未收到任何数据块(Chunk),则触发连接终止。 |
HERMES_EXEC_ASK | 在 Gateway 模式下启用执行审批提示(true/false) |
HERMES_ENABLE_PROJECT_PLUGINS | 启用从 ./.hermes/plugins/ 自动发现项目本地插件(true/false,默认值:false) |
HERMES_BACKGROUND_NOTIFICATIONS | Gateway 中后台进程的通知模式:all(默认值)、result、error、off |
HERMES_EPHEMERAL_SYSTEM_PROMPT | 在 API 调用时注入的临时系统提示(System Prompt,不会持久化到会话中) |
Cron Scheduler(定时任务调度器)
| 变量 | 描述 |
|---|---|
HERMES_CRON_TIMEOUT | Cron 任务 Agent 运行的不活跃超时时间,单位为秒(默认值:600)。Agent 在主动调用工具或接收流式 Token 时可以无限期运行——此超时仅在空闲时触发。设为 0 表示无限制。 |
HERMES_CRON_SCRIPT_TIMEOUT | 附加到 Cron 任务的预运行脚本超时时间,单位为秒(默认值:120)。为需要更长执行时间的脚本覆盖此值(例如用于反机器人检测的随机延迟)。也可通过 config.yaml 中的 cron.script_timeout_seconds 配置。 |
Session Settings(会话设置)
| 变量 | 描述 |
|---|---|
SESSION_IDLE_MINUTES | 不活跃 N 分钟后重置会话(默认值:1440) |
SESSION_RESET_HOUR | 每日重置的小时数,24 小时制(默认值:4 = 凌晨 4 点) |
Context Compression(上下文压缩)— 仅 config.yaml
上下文压缩(Context Compression)仅通过 config.yaml 配置——没有对应的环境变量。阈值设置位于 compression: 配置块中,而摘要模型/Provider 位于 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 Task Overrides(辅助任务覆盖)
| 变量 | 描述 |
|---|---|
AUXILIARY_VISION_PROVIDER | 覆盖 Vision(视觉)任务的 Provider |
AUXILIARY_VISION_MODEL | 覆盖视觉任务的模型 |
AUXILIARY_VISION_BASE_URL | 视觉任务的直接 OpenAI 兼容端点 |
AUXILIARY_VISION_API_KEY | 与 AUXILIARY_VISION_BASE_URL 配套的 API 密钥 |
AUXILIARY_WEB_EXTRACT_PROVIDER | 覆盖 Web Extraction(网页提取)/摘要任务的 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。
Fallback Model(回退模型)— 仅 config.yaml
主模型回退(Fallback Model)仅通过 config.yaml 配置——没有对应的环境变量。添加包含 provider 和 model 键的 fallback_model 配置段,即可在主模型遇到错误时启用自动故障转移。
fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4
Provider Routing(Provider 路由)— 仅 config.yaml
这些配置放在 ~/.hermes/config.yaml 的 provider_routing 配置段下:
| 键 | 描述 |
|---|---|
sort | Provider 排序方式:"price"(默认值)、"throughput" 或 "latency" |
only | 允许的 Provider Slug 列表(例如 ["anthropic", "google"]) |
ignore | 要跳过的 Provider Slug 列表 |
order | 按顺序尝试的 Provider Slug 列表 |
require_parameters | 仅使用支持所有请求参数的 Provider(true/false) |
data_collection | "allow"(默认值)或 "deny" 以排除存储数据的 Provider |
> 💡 提示
>
> 使用 hermes config set 来设置环境变量——它会自动保存到正确的文件(密钥保存到 .env,其他保存到 config.yaml)。