Hermes-agent
This commit is contained in:
+1260
File diff suppressed because it is too large
Load Diff
+655
@@ -0,0 +1,655 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
title: "环境变量"
|
||||
description: "Hermes Agent 使用的所有环境变量完整参考"
|
||||
---
|
||||
|
||||
# 环境变量参考
|
||||
|
||||
所有变量均写入 `~/.hermes/.env`。也可以使用 `hermes config set VAR value` 进行设置。
|
||||
|
||||
## LLM 提供商
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `OPENROUTER_API_KEY` | OpenRouter API 密钥(推荐,灵活性强) |
|
||||
| `OPENROUTER_BASE_URL` | 覆盖 OpenRouter 兼容的 base URL |
|
||||
| `HERMES_OPENROUTER_CACHE` | 启用 OpenRouter 响应缓存(`1`/`true`/`yes`/`on`)。覆盖 config.yaml 中的 `openrouter.response_cache`。参见 [Response Caching](https://openrouter.ai/docs/guides/features/response-caching)。 |
|
||||
| `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 推理端点 |
|
||||
| `OPENAI_API_KEY` | 自定义 OpenAI 兼容端点的 API 密钥(与 `OPENAI_BASE_URL` 配合使用) |
|
||||
| `OPENAI_BASE_URL` | 自定义端点的 base URL(VLLM、SGLang 等) |
|
||||
| `COPILOT_GITHUB_TOKEN` | 用于 Copilot API 的 GitHub token——最高优先级(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 / ZhipuAI GLM API 密钥([z.ai](https://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](https://platform.moonshot.ai)) |
|
||||
| `KIMI_BASE_URL` | 覆盖 Kimi base URL(默认:`https://api.moonshot.ai/v1`) |
|
||||
| `KIMI_CN_API_KEY` | Kimi / Moonshot 中国区 API 密钥([moonshot.cn](https://platform.moonshot.cn)) |
|
||||
| `ARCEEAI_API_KEY` | Arcee AI API 密钥([chat.arcee.ai](https://chat.arcee.ai/)) |
|
||||
| `ARCEE_BASE_URL` | 覆盖 Arcee base URL(默认:`https://api.arcee.ai/api/v1`) |
|
||||
| `GMI_API_KEY` | GMI Cloud API 密钥([gmicloud.ai](https://www.gmicloud.ai/)) |
|
||||
| `GMI_BASE_URL` | 覆盖 GMI Cloud base URL(默认:`https://api.gmi-serving.com/v1`) |
|
||||
| `MINIMAX_API_KEY` | MiniMax API 密钥——全球端点([minimax.io](https://www.minimax.io))。**`minimax-oauth` 不使用此变量**(OAuth 路径通过浏览器登录)。 |
|
||||
| `MINIMAX_BASE_URL` | 覆盖 MiniMax base URL(默认:`https://api.minimax.io/anthropic`——Hermes 使用 MiniMax 的 Anthropic Messages 兼容端点)。**`minimax-oauth` 不使用此变量**。 |
|
||||
| `MINIMAX_CN_API_KEY` | MiniMax API 密钥——中国区端点([minimaxi.com](https://www.minimaxi.com))。**`minimax-oauth` 不使用此变量**(OAuth 路径通过浏览器登录)。 |
|
||||
| `MINIMAX_CN_BASE_URL` | 覆盖 MiniMax 中国区 base URL(默认:`https://api.minimaxi.com/anthropic`)。**`minimax-oauth` 不使用此变量**。 |
|
||||
| `KILOCODE_API_KEY` | Kilo Code API 密钥([kilo.ai](https://kilo.ai)) |
|
||||
| `KILOCODE_BASE_URL` | 覆盖 Kilo Code base URL(默认:`https://api.kilo.ai/api/gateway`) |
|
||||
| `XIAOMI_API_KEY` | 小米 MiMo API 密钥([platform.xiaomimimo.com](https://platform.xiaomimimo.com)) |
|
||||
| `XIAOMI_BASE_URL` | 覆盖小米 MiMo base URL(默认:`https://api.xiaomimimo.com/v1`) |
|
||||
| `TOKENHUB_API_KEY` | 腾讯 TokenHub API 密钥([tokenhub.tencentmaas.com](https://tokenhub.tencentmaas.com)) |
|
||||
| `TOKENHUB_BASE_URL` | 覆盖腾讯 TokenHub base URL(默认:`https://tokenhub.tencentmaas.com/v1`) |
|
||||
| `AZURE_FOUNDRY_API_KEY` | Microsoft Foundry / Azure OpenAI API 密钥([ai.azure.com](https://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 Workload Identity / OIDC 流程的联合 token 文件路径 |
|
||||
| `AZURE_AUTHORITY_HOST` | 主权云 authority 覆盖(例如 Azure Government 使用 `https://login.microsoftonline.us`)。参见 [Azure Foundry 指南](/guides/azure-foundry#sovereign-clouds-government-china) |
|
||||
| `IDENTITY_ENDPOINT` / `MSI_ENDPOINT` | App Service、Functions 和 Container Apps 的托管标识端点;VM 通常使用 IMDS 而不设置这些变量 |
|
||||
| `HF_TOKEN` | Hugging Face Inference Providers token([huggingface.co/settings/tokens](https://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](https://aistudio.google.com/app/apikey)) |
|
||||
| `GEMINI_API_KEY` | `GOOGLE_API_KEY` 的别名 |
|
||||
| `GEMINI_BASE_URL` | 覆盖 Google AI Studio base 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](https://console.anthropic.com/)) |
|
||||
| `ANTHROPIC_TOKEN` | 手动或旧版 Anthropic OAuth/setup-token 覆盖 |
|
||||
| `DASHSCOPE_API_KEY` | Qwen Cloud(阿里巴巴 DashScope)Qwen 模型 API 密钥([modelstudio.console.alibabacloud.com](https://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_KEY` | 直接访问 DeepSeek 的 API 密钥([platform.deepseek.com](https://platform.deepseek.com/api_keys)) |
|
||||
| `DEEPSEEK_BASE_URL` | 自定义 DeepSeek API base URL |
|
||||
| `NOVITA_API_KEY` | NovitaAI API 密钥——面向 Model API、Agent Sandbox 和 GPU Cloud 的 AI 原生云([novita.ai/settings/key-management](https://novita.ai/settings/key-management)) |
|
||||
| `NOVITA_BASE_URL` | 覆盖 NovitaAI base URL(默认:`https://api.novita.ai/openai/v1`) |
|
||||
| `NVIDIA_API_KEY` | NVIDIA NIM API 密钥——Nemotron 及开源模型([build.nvidia.com](https://build.nvidia.com)) |
|
||||
| `NVIDIA_BASE_URL` | 覆盖 NVIDIA base URL(默认:`https://integrate.api.nvidia.com/v1`;本地 NIM 端点设为 `http://localhost:8000/v1`) |
|
||||
| `STEPFUN_API_KEY` | StepFun API 密钥——Step 系列模型([platform.stepfun.com](https://platform.stepfun.com)) |
|
||||
| `STEPFUN_BASE_URL` | 覆盖 StepFun base URL(默认:`https://api.stepfun.com/v1`) |
|
||||
| `OLLAMA_API_KEY` | Ollama Cloud API 密钥——无需本地 GPU 的托管 Ollama 目录([ollama.com/settings/keys](https://ollama.com/settings/keys)) |
|
||||
| `OLLAMA_BASE_URL` | 覆盖 Ollama Cloud base URL(默认:`https://ollama.com/v1`) |
|
||||
| `XAI_API_KEY` | xAI(Grok)API 密钥,支持聊天、TTS 和网络搜索([console.x.ai](https://console.x.ai/)) |
|
||||
| `XAI_BASE_URL` | 覆盖 xAI base URL(默认:`https://api.x.ai/v1`) |
|
||||
| `MISTRAL_API_KEY` | Mistral API 密钥,用于 Voxtral TTS 和 Voxtral STT([console.mistral.ai](https://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 runtime base URL(默认:`https://bedrock-runtime.us-east-1.amazonaws.com`;通常不设置,改用 `AWS_REGION`) |
|
||||
| `HERMES_QWEN_BASE_URL` | Qwen Portal base URL 覆盖(默认:`https://portal.qwen.ai/v1`) |
|
||||
| `OPENCODE_ZEN_API_KEY` | OpenCode Zen API 密钥——按需付费访问精选模型([opencode.ai](https://opencode.ai/auth)) |
|
||||
| `OPENCODE_ZEN_BASE_URL` | 覆盖 OpenCode Zen base URL |
|
||||
| `OPENCODE_GO_API_KEY` | OpenCode Go API 密钥——$10/月订阅开源模型([opencode.ai](https://opencode.ai/auth)) |
|
||||
| `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 语音转文字和文字转语音提供商的首选 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 服务名称,允许多个安装并发运行 |
|
||||
| `HERMES_GIT_BASH_PATH` | **仅 Windows。** 覆盖终端工具的 `bash.exe` 发现路径。可指向任意 bash——完整 Git-for-Windows 安装、通过符号链接的 WSL bash、MSYS2、Cygwin。安装程序会自动将其设置为所配置的 PortableGit。参见 [Windows(原生)指南](../user-guide/windows-native.md#how-hermes-runs-shell-commands-on-windows) |
|
||||
| `HERMES_DISABLE_WINDOWS_UTF8` | **仅 Windows。** 设为 `1` 可禁用 UTF-8 stdio shim(`configure_windows_stdio()`),回退到控制台的本地代码页。用于排查编码问题;正常操作中极少需要 |
|
||||
| `HERMES_KANBAN_HOME` | 覆盖锚定 kanban 看板(数据库 + 工作区 + 工作日志)的共享 Hermes 根目录。回退到 `get_default_hermes_root()`(任意活动 profile 的父目录)。适用于测试和非常规部署 |
|
||||
| `HERMES_KANBAN_BOARD` | 为当前进程固定活动 kanban 看板。优先于 `~/.hermes/kanban/current`;调度器将其注入工作进程子进程环境,使工作进程无法看到其他看板上的任务。默认为 `default`。slug 验证:小写字母数字 + 连字符 + 下划线,1-64 字符 |
|
||||
| `HERMES_KANBAN_DB` | 直接固定 kanban 数据库文件路径(最高优先级;优先于 `HERMES_KANBAN_BOARD` 和 `HERMES_KANBAN_HOME`)。调度器将其注入工作进程子进程环境,使 profile 工作进程收敛到调度器的看板 |
|
||||
| `HERMES_KANBAN_WORKSPACES_ROOT` | 直接固定 kanban 工作区根目录(工作区最高优先级;优先于 `HERMES_KANBAN_HOME`)。调度器将其注入工作进程子进程环境 |
|
||||
| `HERMES_KANBAN_DISPATCH_IN_GATEWAY` | `kanban.dispatch_in_gateway` 的运行时覆盖。设为 `0`、`false`、`no` 或 `off` 可阻止 gateway 启动内嵌 Kanban 调度器;任何其他非空值则启用。适用于独立调度器进程拥有看板的场景。 |
|
||||
|
||||
## 提供商认证(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` | 重新铸造前的最小 agent 密钥 TTL(默认:1800 = 30 分钟) |
|
||||
| `HERMES_NOUS_TIMEOUT_SECONDS` | Nous 凭证/token 流程的 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](https://parallel.ai/)) |
|
||||
| `FIRECRAWL_API_KEY` | 网页抓取和云浏览器([firecrawl.dev](https://firecrawl.dev/)) |
|
||||
| `FIRECRAWL_API_URL` | 自托管实例的自定义 Firecrawl API 端点(可选) |
|
||||
| `TAVILY_API_KEY` | Tavily API 密钥,用于 AI 原生网络搜索、提取和爬取([app.tavily.com](https://app.tavily.com/home)) |
|
||||
| `SEARXNG_URL` | 免费自托管网络搜索的 SearXNG 实例 URL——无需 API 密钥([searxng.github.io](https://searxng.github.io/searxng/)) |
|
||||
| `TAVILY_BASE_URL` | 覆盖 Tavily API 端点。适用于企业代理和自托管 Tavily 兼容搜索后端。与 `GROQ_BASE_URL` 模式相同。 |
|
||||
| `EXA_API_KEY` | Exa API 密钥,用于 AI 原生网络搜索和内容获取([exa.ai](https://exa.ai/)) |
|
||||
| `BROWSERBASE_API_KEY` | 浏览器自动化([browserbase.com](https://browserbase.com/)) |
|
||||
| `BROWSERBASE_PROJECT_ID` | Browserbase 项目 ID |
|
||||
| `BROWSER_USE_API_KEY` | Browser Use 云浏览器 API 密钥([browser-use.com](https://browser-use.com/)) |
|
||||
| `FIRECRAWL_BROWSER_TTL` | Firecrawl 浏览器会话 TTL(秒,默认:300) |
|
||||
| `BROWSER_CDP_URL` | 本地浏览器的 Chrome DevTools Protocol(CDP)URL(通过 `/browser connect` 设置,例如 `ws://localhost:9222`) |
|
||||
| `CAMOFOX_URL` | Camofox 本地反检测浏览器 URL(默认:`http://localhost:9377`) |
|
||||
| `CAMOFOX_USER_ID` | 可选的外部管理 Camofox 用户 ID,用于共享可见会话 |
|
||||
| `CAMOFOX_SESSION_KEY` | 为 `CAMOFOX_USER_ID` 创建标签页时使用的可选 Camofox 会话密钥 |
|
||||
| `CAMOFOX_ADOPT_EXISTING_TAB` | 设为 `true` 可在创建新标签页前复用现有 Camofox 标签页 |
|
||||
| `BROWSER_INACTIVITY_TIMEOUT` | 浏览器会话不活动超时(秒) |
|
||||
| `AGENT_BROWSER_ARGS` | 额外的 Chromium 启动标志(逗号或换行分隔)。以 root 身份运行或在 AppArmor 限制的非特权用户命名空间(Ubuntu 23.10+、DGX Spark、许多容器镜像)中运行时,Hermes 自动注入 `--no-sandbox,--disable-dev-shm-usage`;仅在需要覆盖或添加其他标志时手动设置。 |
|
||||
| `FAL_KEY` | 图像生成([fal.ai](https://fal.ai/)) |
|
||||
| `GROQ_API_KEY` | Groq Whisper STT API 密钥([groq.com](https://groq.com/)) |
|
||||
| `ELEVENLABS_API_KEY` | ElevenLabs 高级 TTS 语音([elevenlabs.io](https://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](https://honcho.dev/)) |
|
||||
| `HONCHO_BASE_URL` | 自托管 Honcho 实例的 base URL(默认:Honcho 云)。本地实例无需 API 密钥 |
|
||||
| `HINDSIGHT_TIMEOUT` | Hindsight 内存提供商 API 调用超时(秒,默认:`60`)。如果 Hindsight 实例在 `/sync` 或 `on_session_switch` 期间响应缓慢并出现超时,请增大此值,并检查 `errors.log`。 |
|
||||
| `SUPERMEMORY_API_KEY` | 支持 profile 召回和会话摄取的语义长期记忆([supermemory.ai](https://supermemory.ai)) |
|
||||
| `DAYTONA_API_KEY` | Daytona 云沙箱([daytona.io](https://daytona.io/)) |
|
||||
|
||||
### Langfuse 可观测性
|
||||
|
||||
内置 [`observability/langfuse`](/user-guide/features/built-in-plugins#observabilitylangfuse) 插件的环境变量。在 `~/.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` | trace 上的环境标签(`production`、`staging` 等) |
|
||||
| `HERMES_LANGFUSE_RELEASE` | trace 上的发布/版本标签 |
|
||||
| `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 Tool Gateway
|
||||
|
||||
这些变量为付费 Nous 订阅者或自托管 gateway 部署配置 [Tool Gateway](/user-guide/features/tool-gateway)。大多数用户无需设置——gateway 通过 `hermes model` 或 `hermes tools` 自动配置。
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `TOOL_GATEWAY_DOMAIN` | Tool Gateway 路由的基础域名(默认:`nousresearch.com`) |
|
||||
| `TOOL_GATEWAY_SCHEME` | gateway URL 的 HTTP 或 HTTPS 协议(默认:`https`) |
|
||||
| `TOOL_GATEWAY_USER_TOKEN` | Tool Gateway 的认证 token(通常由 Nous 认证自动填充) |
|
||||
| `FIRECRAWL_GATEWAY_URL` | 专门覆盖 Firecrawl gateway 端点的 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_CWD` | 终端会话的工作目录(仅 gateway/cron;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 的持久 shell(默认:跟随 `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` | 工作区和 overlay 的宿主机目录(默认:`~/.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_TOKEN` | Telegram bot token(来自 @BotFather) |
|
||||
| `TELEGRAM_ALLOWED_USERS` | 允许使用 bot 的逗号分隔用户 ID(适用于私聊、群组和论坛) |
|
||||
| `TELEGRAM_GROUP_ALLOWED_USERS` | 仅在群组/论坛中授权的逗号分隔发送者用户 ID(**不**授予私聊权限)。以 `-` 开头的聊天 ID 形式值仍作为聊天 ID 处理,以向后兼容 #17686 之前的配置,并显示弃用警告。 |
|
||||
| `TELEGRAM_GROUP_ALLOWED_CHATS` | 逗号分隔的群组/论坛聊天 ID;任意成员均可授权 |
|
||||
| `TELEGRAM_HOME_CHANNEL` | cron 投递的默认 Telegram 聊天/频道 |
|
||||
| `TELEGRAM_HOME_CHANNEL_NAME` | Telegram 主频道的显示名称 |
|
||||
| `TELEGRAM_CRON_THREAD_ID` | 接收 cron 投递的论坛话题 ID;仅对 cron 覆盖 `TELEGRAM_HOME_CHANNEL_THREAD_ID`。在话题模式下使用,使 cron 消息的回复开启新会话而非进入系统大厅(#24409)。 |
|
||||
| `TELEGRAM_WEBHOOK_URL` | webhook 模式的公共 HTTPS URL(启用 webhook 而非轮询) |
|
||||
| `TELEGRAM_WEBHOOK_PORT` | webhook 服务器本地监听端口(默认:`8443`) |
|
||||
| `TELEGRAM_WEBHOOK_SECRET` | Telegram 在每次更新中回传的密钥 token,用于验证。**设置 `TELEGRAM_WEBHOOK_URL` 时必填**——未设置时 gateway 拒绝启动(GHSA-3vpc-7q5r-276h)。使用 `openssl rand -hex 32` 生成。 |
|
||||
| `TELEGRAM_REACTIONS` | 处理期间在消息上启用 emoji 反应(默认:`false`) |
|
||||
| `TELEGRAM_REQUIRE_MENTION` | 在 Telegram 群组中响应前要求显式触发。等同于 `config.yaml` 中的 `telegram.require_mention`。 |
|
||||
| `TELEGRAM_MENTION_PATTERNS` | 启用 Telegram 群组 mention 门控时接受的正则唤醒词模式,JSON 数组、换行分隔列表或逗号分隔列表。等同于 `telegram.mention_patterns`。 |
|
||||
| `TELEGRAM_EXCLUSIVE_BOT_MENTIONS` | 启用后,Telegram 群组中的显式 `@...bot` mention 仅路由到被 mention 的 bot 用户名,然后再执行回复或唤醒词回退。默认:`true`。等同于 `telegram.exclusive_bot_mentions`。 |
|
||||
| `TELEGRAM_REPLY_TO_MODE` | 回复引用行为:`off`、`first`(默认)或 `all`。与 Discord 模式一致。 |
|
||||
| `TELEGRAM_IGNORED_THREADS` | bot 永不响应的逗号分隔 Telegram 论坛话题/线程 ID |
|
||||
| `TELEGRAM_PROXY` | Telegram 连接的代理 URL——覆盖 `HTTPS_PROXY`。支持 `http://`、`https://`、`socks5://` |
|
||||
| `DISCORD_BOT_TOKEN` | Discord bot token |
|
||||
| `DISCORD_ALLOWED_USERS` | 允许使用 bot 的逗号分隔 Discord 用户 ID |
|
||||
| `DISCORD_ALLOWED_ROLES` | 允许使用 bot 的逗号分隔 Discord 角色 ID(与 `DISCORD_ALLOWED_USERS` 取 OR)。自动启用 Members intent。适用于管理团队频繁变动的场景——角色授权自动传播。 |
|
||||
| `DISCORD_ALLOWED_CHANNELS` | 逗号分隔的 Discord 频道 ID。设置后,bot 仅在这些频道(以及允许的私聊)中响应。覆盖 `config.yaml` 中的 `discord.allowed_channels`。 |
|
||||
| `DISCORD_PROXY` | Discord 连接的代理 URL——覆盖 `HTTPS_PROXY`。支持 `http://`、`https://`、`socks5://` |
|
||||
| `DISCORD_HOME_CHANNEL` | cron 投递的默认 Discord 频道 |
|
||||
| `DISCORD_HOME_CHANNEL_NAME` | Discord 主频道的显示名称 |
|
||||
| `DISCORD_COMMAND_SYNC_POLICY` | Discord 斜杠命令启动同步策略:`safe`(差异对比并协调)、`bulk`(旧版 `tree.sync()`)或 `off` |
|
||||
| `DISCORD_REQUIRE_MENTION` | 在服务器频道中响应前要求 @mention |
|
||||
| `DISCORD_FREE_RESPONSE_CHANNELS` | 不需要 mention 的逗号分隔频道 ID |
|
||||
| `DISCORD_AUTO_THREAD` | 支持时自动将长回复转为线程 |
|
||||
| `DISCORD_ALLOW_ANY_ATTACHMENT` | 设为 `true` 时接受任意文件类型的附件(不仅限于内置的 PDF/文本/zip/office 白名单)。未知类型被缓存并以本地路径形式提供给 agent,供其通过 `terminal`/`read_file`/`ffprobe` 检查。默认 `false`。 |
|
||||
| `DISCORD_MAX_ATTACHMENT_BYTES` | gateway 缓存的每个附件最大字节数。默认 `33554432`(32 MiB)。设为 `0` 表示无上限(附件在写入时保存在内存中)。 |
|
||||
| `DISCORD_REACTIONS` | 处理期间在消息上启用 emoji 反应(默认:`true`) |
|
||||
| `DISCORD_IGNORED_CHANNELS` | bot 永不响应的逗号分隔频道 ID |
|
||||
| `DISCORD_NO_THREAD_CHANNELS` | bot 不自动创建线程的逗号分隔频道 ID |
|
||||
| `DISCORD_REPLY_TO_MODE` | 回复引用行为:`off`、`first`(默认)或 `all` |
|
||||
| `DISCORD_ALLOW_MENTION_EVERYONE` | 允许 bot ping `@everyone`/`@here`(默认:`false`)。参见 [Mention 控制](../user-guide/messaging/discord.md#mention-control)。 |
|
||||
| `DISCORD_ALLOW_MENTION_ROLES` | 允许 bot ping `@role` mention(默认:`false`)。 |
|
||||
| `DISCORD_ALLOW_MENTION_USERS` | 允许 bot ping 单个 `@user` mention(默认:`true`)。 |
|
||||
| `DISCORD_ALLOW_MENTION_REPLIED_USER` | 回复消息时 ping 原作者(默认:`true`)。 |
|
||||
| `SLACK_BOT_TOKEN` | Slack bot token(`xoxb-...`) |
|
||||
| `SLACK_APP_TOKEN` | Slack 应用级 token(`xapp-...`,Socket Mode 必需) |
|
||||
| `SLACK_ALLOWED_USERS` | 逗号分隔的 Slack 用户 ID |
|
||||
| `SLACK_HOME_CHANNEL` | cron 投递的默认 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` | 允许与 bot 聊天的逗号分隔用户邮箱 |
|
||||
| `GOOGLE_CHAT_ALLOW_ALL_USERS` | 允许任意 Google Chat 用户触发 bot(仅用于开发) |
|
||||
| `GOOGLE_CHAT_HOME_CHANNEL` | cron 投递的默认空间(例如 `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` | 启动时探测以解析 bot 自身 `users/{id}` 的逗号分隔额外空间 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`) |
|
||||
| `SIGNAL_HTTP_URL` | signal-cli 守护进程 HTTP 端点(例如 `http://127.0.0.1:8080`) |
|
||||
| `SIGNAL_ACCOUNT` | E.164 格式的 bot 手机号码 |
|
||||
| `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(与电话技能共享) |
|
||||
| `TWILIO_AUTH_TOKEN` | Twilio Auth Token(与电话技能共享;也用于 webhook 签名验证) |
|
||||
| `TWILIO_PHONE_NUMBER` | E.164 格式的 Twilio 手机号码(与电话技能共享) |
|
||||
| `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` | cron 任务/通知投递的手机号码 |
|
||||
| `SMS_HOME_CHANNEL_NAME` | SMS 主频道的显示名称 |
|
||||
| `EMAIL_ADDRESS` | Email gateway 适配器的邮箱地址 |
|
||||
| `EMAIL_PASSWORD` | 邮箱账户的密码或应用密码 |
|
||||
| `EMAIL_IMAP_HOST` | 邮件适配器的 IMAP 主机名 |
|
||||
| `EMAIL_IMAP_PORT` | IMAP 端口 |
|
||||
| `EMAIL_SMTP_HOST` | 邮件适配器的 SMTP 主机名 |
|
||||
| `EMAIL_SMTP_PORT` | SMTP 端口 |
|
||||
| `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](https://open.dingtalk.com)) |
|
||||
| `DINGTALK_CLIENT_SECRET` | 来自开发者门户的钉钉 bot AppSecret |
|
||||
| `DINGTALK_ALLOWED_USERS` | 允许向 bot 发送消息的逗号分隔钉钉用户 ID |
|
||||
| `FEISHU_APP_ID` | 来自 [open.feishu.cn](https://open.feishu.cn/) 的飞书/Lark bot App ID |
|
||||
| `FEISHU_APP_SECRET` | 飞书/Lark bot 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` | 允许向 bot 发送消息的逗号分隔飞书用户 ID |
|
||||
| `FEISHU_ALLOW_BOTS` | `none`(默认)/`mentions`/`all`——接受来自其他 bot 的入站消息。参见 [bot 间消息传递](../user-guide/messaging/feishu.md#bot-to-bot-messaging) |
|
||||
| `FEISHU_REQUIRE_MENTION` | `true`(默认)/`false`——群组消息是否必须 @mention bot。可通过 `group_rules.<chat_id>.require_mention` 按聊天覆盖。 |
|
||||
| `FEISHU_HOME_CHANNEL` | cron 投递和通知的飞书聊天 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` | cron 投递和通知的企业微信聊天 ID |
|
||||
| `WECOM_CALLBACK_CORP_ID` | 企业微信回调自建应用的企业 Corp ID |
|
||||
| `WECOM_CALLBACK_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` | 私信策略:`open`、`allowlist`、`pairing`、`disabled`(默认:`open`) |
|
||||
| `WEIXIN_GROUP_POLICY` | 群消息策略:`open`、`allowlist`、`disabled`(默认:`disabled`) |
|
||||
| `WEIXIN_ALLOWED_USERS` | 允许私信 bot 的逗号分隔微信用户 ID |
|
||||
| `WEIXIN_GROUP_ALLOWED_USERS` | 允许与 bot 互动的逗号分隔微信**群聊 ID**(非成员用户 ID)。变量名为历史遗留——期望传入群 ID。仅当 iLink 实际投递群事件时生效;扫码登录的 iLink bot 身份(`...@im.bot`)通常不接收普通微信群消息。 |
|
||||
| `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` | 来自 [q.qq.com](https://q.qq.com) 的 QQ Bot App ID |
|
||||
| `QQ_CLIENT_SECRET` | 来自 [q.qq.com](https://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` | cron 投递和通知的 QQ 用户/群 openID |
|
||||
| `QQBOT_HOME_CHANNEL_NAME` | QQ 主频道的显示名称 |
|
||||
| `QQ_PORTAL_HOST` | 覆盖 QQ portal 主机(设为 `sandbox.q.qq.com` 可通过沙箱 gateway 路由;默认:`q.qq.com`)。 |
|
||||
| `MATTERMOST_URL` | Mattermost 服务器 URL(例如 `https://mm.example.com`) |
|
||||
| `MATTERMOST_TOKEN` | Mattermost 的 bot token 或个人访问 token |
|
||||
| `MATTERMOST_ALLOWED_USERS` | 允许向 bot 发送消息的逗号分隔 Mattermost 用户 ID |
|
||||
| `MATTERMOST_HOME_CHANNEL` | 主动消息投递(cron、通知)的频道 ID |
|
||||
| `MATTERMOST_REQUIRE_MENTION` | 在频道中要求 `@mention`(默认:`true`)。设为 `false` 可响应所有消息。 |
|
||||
| `MATTERMOST_FREE_RESPONSE_CHANNELS` | bot 无需 `@mention` 即可响应的逗号分隔频道 ID |
|
||||
| `MATTERMOST_REPLY_MODE` | 回复风格:`thread`(线程回复)或 `off`(平铺消息,默认) |
|
||||
| `MATRIX_HOMESERVER` | Matrix homeserver URL(例如 `https://matrix.org`) |
|
||||
| `MATRIX_ACCESS_TOKEN` | bot 认证的 Matrix 访问 token |
|
||||
| `MATRIX_USER_ID` | Matrix 用户 ID(例如 `@hermes:matrix.org`)——密码登录时必填,使用访问 token 时可选 |
|
||||
| `MATRIX_PASSWORD` | Matrix 密码(访问 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` | 用于 E2EE 跨重启持久化的稳定 Matrix 设备 ID(例如 `HERMES_BOT`)。不设置时,E2EE 密钥每次启动都会轮换,历史房间解密将失败。 |
|
||||
| `MATRIX_REACTIONS` | 对入站消息启用处理生命周期 emoji 反应(默认:`true`)。设为 `false` 可禁用。 |
|
||||
| `MATRIX_REQUIRE_MENTION` | 在房间中要求 `@mention`(默认:`true`)。设为 `false` 可响应所有消息。 |
|
||||
| `MATRIX_FREE_RESPONSE_ROOMS` | bot 无需 `@mention` 即可响应的逗号分隔房间 ID |
|
||||
| `MATRIX_AUTO_THREAD` | 为房间消息自动创建线程(默认:`true`) |
|
||||
| `MATRIX_DM_MENTION_THREADS` | 在私聊中被 `@mention` 时创建线程(默认:`false`) |
|
||||
| `MATRIX_RECOVERY_KEY` | 设备密钥轮换后交叉签名验证的恢复密钥。推荐用于启用了交叉签名的 E2EE 设置。 |
|
||||
| `HASS_TOKEN` | Home Assistant 长期访问 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 服务器(`true`/`false`)。与其他平台并行运行。 |
|
||||
| `API_SERVER_KEY` | API 服务器认证的 Bearer token。非回环绑定时强制执行。 |
|
||||
| `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([代理模式](/user-guide/messaging/matrix#proxy-mode-e2ee-on-macos))。设置后,gateway 仅处理平台 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 客户端的仅应用凭证。Azure 门户操作步骤和所需 API 权限详见[注册 Microsoft Graph 应用程序](/guides/microsoft-graph-app-registration)。
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `MSGRAPH_TENANT_ID` | Graph 应用注册的 Azure AD 租户 ID(目录 GUID)。 |
|
||||
| `MSGRAPH_CLIENT_ID` | Azure 应用注册的应用程序(客户端)ID。 |
|
||||
| `MSGRAPH_CLIENT_SECRET` | 应用注册的客户端密钥值。存储在 `~/.hermes/.env` 中并设置 `chmod 600`;定期通过 Azure 门户轮换。 |
|
||||
| `MSGRAPH_SCOPE` | 客户端凭证 token 请求的 OAuth2 范围(默认:`https://graph.microsoft.com/.default`)。 |
|
||||
| `MSGRAPH_AUTHORITY_URL` | Microsoft 身份平台 authority(默认:`https://login.microsoftonline.com`)。仅对国家/主权云覆盖(例如 GCC High 使用 `https://login.microsoftonline.us`)。 |
|
||||
|
||||
### Microsoft Graph Webhook 监听器
|
||||
|
||||
Graph 事件(Teams 会议、日历、聊天等)的入站变更通知监听器。设置和安全加固详见 [Microsoft Graph Webhook 监听器](/user-guide/messaging/msgraph-webhook)。
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `MSGRAPH_WEBHOOK_ENABLED` | 启用 `msgraph_webhook` gateway 平台(`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` 插件](/user-guide/messaging/msgraph-webhook)时使用。设置也可在 `config.yaml` 的 `platforms.teams.extra` 下配置——两者都设置时环境变量优先。参见 [Microsoft Teams → 会议摘要投递](/user-guide/messaging/teams#meeting-summary-delivery-teams-meeting-pipeline)。
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `TEAMS_DELIVERY_MODE` | `graph` 或 `incoming_webhook`。 |
|
||||
| `TEAMS_INCOMING_WEBHOOK_URL` | Teams 生成的 webhook URL;`TEAMS_DELIVERY_MODE=incoming_webhook` 时必填。 |
|
||||
| `TEAMS_GRAPH_ACCESS_TOKEN` | Graph 投递的预获取委托访问 token。极少需要——未设置时 writer 回退到 `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/`)使用。完整设置详见 [消息 Gateway → LINE](/user-guide/messaging/line)。
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `LINE_CHANNEL_ACCESS_TOKEN` | 来自 LINE Developers Console(Messaging API 标签)的长期频道访问 token。必填。 |
|
||||
| `LINE_CHANNEL_SECRET` | 频道密钥(Basic settings 标签);用于 HMAC-SHA256 webhook 签名验证。必填。 |
|
||||
| `LINE_HOST` | webhook 绑定主机(默认:`0.0.0.0`)。 |
|
||||
| `LINE_PORT` | webhook 绑定端口(默认:`8646`)。 |
|
||||
| `LINE_PUBLIC_URL` | 公共 HTTPS base URL(例如 `https://my-tunnel.example.com`)。发送图片/音频/视频时必填——LINE 仅接受 HTTPS 可访问的 URL。 |
|
||||
| `LINE_ALLOWED_USERS` | 允许私信 bot 的逗号分隔用户 ID(`U` 前缀)。 |
|
||||
| `LINE_ALLOWED_GROUPS` | bot 将在其中响应的逗号分隔群组 ID(`C` 前缀)。 |
|
||||
| `LINE_ALLOWED_ROOMS` | bot 将在其中响应的逗号分隔房间 ID(`R` 前缀)。 |
|
||||
| `LINE_ALLOW_ALL_USERS` | 仅用于开发的逃生舱——接受任意来源。默认:`false`。 |
|
||||
| `LINE_HOME_CHANNEL` | `deliver: line` 的 cron 任务的默认投递目标。 |
|
||||
| `LINE_SLOW_RESPONSE_THRESHOLD` | 慢速 LLM Template Buttons postback 触发前的等待秒数(默认:`45`)。设为 `0` 可禁用并始终使用 Push 回退。 |
|
||||
| `LINE_PENDING_TEXT` | 与 postback 按钮一起显示的气泡文本。 |
|
||||
| `LINE_BUTTON_LABEL` | Postback 按钮标签(默认:`Get answer`)。 |
|
||||
| `LINE_DELIVERED_TEXT` | 再次点击已投递 postback 时的回复(默认:`Already replied ✅`)。 |
|
||||
| `LINE_INTERRUPTED_TEXT` | 点击 `/stop` 孤立 postback 按钮时的回复(默认:`Run was interrupted before completion.`)。 |
|
||||
|
||||
### ntfy(推送通知)
|
||||
|
||||
[ntfy](https://ntfy.sh/) 是一个轻量级基于 HTTP 的推送通知服务。通过 [ntfy 移动应用](https://ntfy.sh/docs/subscribe/phone/)订阅话题,向该话题发布消息即可与 agent 交互。
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `NTFY_TOPIC` | 订阅的话题(入站消息)。必填。 |
|
||||
| `NTFY_SERVER_URL` | 服务器 URL(默认:`https://ntfy.sh`)。指向自托管 ntfy 以保护隐私。 |
|
||||
| `NTFY_TOKEN` | 可选认证 token。Bearer token(例如 `tk_xyz`)或 `user:pass` 用于 Basic 认证。 |
|
||||
| `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` 的 cron 任务的默认投递目标。 |
|
||||
| `NTFY_HOME_CHANNEL_NAME` | 主频道的人类可读标签(默认为话题名称)。 |
|
||||
|
||||
在使用不受信任的话题部署前,请参阅 [ntfy 消息指南](/user-guide/messaging/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` | agent 完成后发送后续消息前的延迟,以避免与最后一个流块竞争。 |
|
||||
| `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` | Matrix 等同于 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` | Gateway:`/restart` 时等待活跃运行排空的秒数,超时后强制重启(默认:`900`)。 |
|
||||
| `HERMES_GATEWAY_PLATFORM_CONNECT_TIMEOUT` | gateway 启动期间每个平台的连接超时(秒)。 |
|
||||
| `HERMES_GATEWAY_BUSY_INPUT_MODE` | 默认 gateway 繁忙输入行为:`queue`、`steer` 或 `interrupt`。可通过 `/busy` 按聊天覆盖。 |
|
||||
| `HERMES_GATEWAY_BUSY_ACK_ENABLED` | gateway 是否在用户 agent 繁忙时发送确认消息(⚡/⏳/⏩)(默认:`true`)。设为 `false` 可完全抑制这些消息——输入仍会正常排队/引导/中断,只是聊天回复被静默。从 `config.yaml` 中的 `display.busy_ack_enabled` 桥接。 |
|
||||
| `HERMES_GATEWAY_NO_SUPERVISE` | 在 s6-overlay Docker 镜像内部运行 `hermes gateway run` 时跳过 s6 自动监管,退回到 pre-s6 前台语义(无自动重启,gateway 作为容器主进程)。真值:`1`、`true`、`yes`。等同于 `--no-supervise` CLI 标志。在 s6 镜像之外为空操作。 |
|
||||
| `HERMES_FILE_MUTATION_VERIFIER` | 启用每轮文件变更验证器页脚(默认:`true`)。启用后,Hermes 附加一个建议列表,列出本轮中失败且未被成功写入覆盖的 `write_file`/`patch` 调用。设为 `0`、`false`、`no` 或 `off` 可抑制。镜像 `config.yaml` 中的 `display.file_mutation_verifier`;设置时环境变量优先。 |
|
||||
| `HERMES_CRON_TIMEOUT` | cron 任务 agent 运行的不活动超时(秒,默认:`600`)。agent 在主动调用工具或接收流 token 时可无限运行——仅在空闲时触发。设为 `0` 表示无限制。 |
|
||||
| `HERMES_CRON_SCRIPT_TIMEOUT` | cron 任务附加的预运行脚本超时(秒,默认:`120`)。对需要更长执行时间的脚本(例如随机延迟的反机器人计时)可增大此值。也可通过 `config.yaml` 中的 `cron.script_timeout_seconds` 配置。 |
|
||||
| `HERMES_CRON_MAX_PARALLEL` | 每次 tick 并行运行的最大 cron 任务数(默认:`4`)。 |
|
||||
|
||||
## Agent 行为
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `HERMES_MAX_ITERATIONS` | 每次对话的最大工具调用迭代次数(默认:90) |
|
||||
| `HERMES_INFERENCE_MODEL` | 在进程级别覆盖模型名称(优先于本次会话的 `config.yaml`)。也可通过 `-m`/`--model` 标志设置。 |
|
||||
| `HERMES_YOLO_MODE` | 设为 `1` 可绕过危险命令审批提示。等同于 `--yolo`。 |
|
||||
| `HERMES_ACCEPT_HOOKS` | 无需 TTY 提示自动批准 `config.yaml` 中声明的任何未见过的 shell hook。等同于 `--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_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`) |
|
||||
| `CODEX_HOME` | 启用 [Codex 应用服务器运行时](../user-guide/features/codex-app-server-runtime)时,覆盖 Codex CLI 读取其配置 + 认证的目录(默认:`~/.codex`)。Hermes 的迁移将托管块写入 `<CODEX_HOME>/config.toml`。 |
|
||||
| `HERMES_KANBAN_TASK` | kanban 调度器生成工作进程时设置(任务 UUID)。工作进程和生成的 `hermes-tools` MCP 子进程继承它,以便 kanban 工具正确门控。请勿手动设置。 |
|
||||
| `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` | gateway 中运行 agent 的不活动超时(秒,默认:`900`)。每次工具调用和流 token 时重置。设为 `0` 可禁用。 |
|
||||
| `HERMES_AGENT_TIMEOUT_WARNING` | Gateway:不活动超过此秒数后发送警告消息(默认:`HERMES_AGENT_TIMEOUT` 的 75%)。 |
|
||||
| `HERMES_AGENT_NOTIFY_INTERVAL` | Gateway:长时间运行的 agent 轮次中进度通知的间隔(秒)。 |
|
||||
| `HERMES_CHECKPOINT_TIMEOUT` | 文件系统检查点创建超时(秒,默认:`30`)。 |
|
||||
| `HERMES_EXEC_ASK` | 在 gateway 模式下启用执行审批提示(`true`/`false`) |
|
||||
| `HERMES_ENABLE_PROJECT_PLUGINS` | 为 agent 加载器和仪表板 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 上输出详细的插件发现日志——扫描的目录、解析的 manifest、跳过原因以及解析或 `register()` 失败时的完整回溯。面向插件作者。 |
|
||||
| `HERMES_BACKGROUND_NOTIFICATIONS` | gateway 中后台进程通知模式:`all`(默认)、`result`、`error`、`off` |
|
||||
| `HERMES_EPHEMERAL_SYSTEM_PROMPT` | 在 API 调用时注入的临时系统 prompt(永不持久化到会话) |
|
||||
| `HERMES_PREFILL_MESSAGES_FILE` | 包含在 API 调用时注入的临时预填消息的 JSON 文件路径。 |
|
||||
| `HERMES_ALLOW_PRIVATE_URLS` | `true`/`false`——允许工具获取 localhost/私有网络 URL。gateway 模式下默认关闭。 |
|
||||
| `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 请求载荷转储到 stdout 而非日志文件。 |
|
||||
| `HERMES_OAUTH_TRACE` | 设为 `1` 可记录 OAuth token 交换和刷新尝试。包含脱敏的时序信息。 |
|
||||
| `HERMES_OAUTH_FILE` | 覆盖 OAuth 凭证存储路径(默认:`~/.hermes/auth.json`)。 |
|
||||
| `HERMES_AGENT_HELP_GUIDANCE` | 为自定义部署在系统 prompt 中追加额外指导文本。 |
|
||||
| `HERMES_AGENT_LOGO` | 覆盖 CLI 启动时的 ASCII 横幅 logo。 |
|
||||
| `DELEGATION_MAX_CONCURRENT_CHILDREN` | 每个 `delegate_task` 批次的最大并行子 agent 数(默认:`3`,下限为 1,无上限)。也可通过 `config.yaml` 中的 `delegation.max_concurrent_children` 配置——config 值优先。 |
|
||||
|
||||
## 界面
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `HERMES_TUI` | 设为 `1` 时启动 [TUI](../user-guide/tui.md) 而非经典 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` | 24 小时制每日重置时间(默认:4 = 凌晨 4 点) |
|
||||
| `HERMES_SESSION_ID` | **自动导出到 Hermes 生成的每个工具子进程**(`terminal`、`execute_code`、持久 shell、Docker/Singularity 后端、委托子 agent 运行)。由 agent 设置为当前会话 ID;从工具调用的用户脚本可读取它,以将其输出、遥测或副作用与原始 Hermes 会话关联。**不应手动设置**——从父 shell 覆盖仅在 agent 运行外生效,且 agent 启动会话时会被覆盖。 |
|
||||
|
||||
## 上下文压缩(仅 config.yaml)
|
||||
|
||||
上下文压缩完全通过 `config.yaml` 配置——没有对应的环境变量。阈值设置位于 `compression:` 块,摘要模型/提供商位于 `auxiliary.compression:` 下。
|
||||
|
||||
```yaml
|
||||
compression:
|
||||
enabled: true
|
||||
threshold: 0.50
|
||||
target_ratio: 0.20 # fraction of threshold to preserve as recent tail
|
||||
protect_last_n: 20 # minimum recent messages to keep uncompressed
|
||||
```
|
||||
|
||||
:::info 旧版迁移
|
||||
包含 `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` 列表,以在主模型遇到错误时启用自动故障转移。
|
||||
|
||||
```yaml
|
||||
fallback_providers:
|
||||
- provider: openrouter
|
||||
model: anthropic/claude-sonnet-4
|
||||
```
|
||||
|
||||
旧版顶层 `fallback_model` 单提供商格式仍可向后兼容读取,但新配置应使用 `fallback_providers`。
|
||||
|
||||
详见 [回退提供商](/user-guide/features/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"` 以排除存储数据的提供商 |
|
||||
|
||||
:::tip
|
||||
使用 `hermes config set` 设置环境变量——它会自动将其保存到正确的文件(密钥保存到 `.env`,其他所有内容保存到 `config.yaml`)。
|
||||
:::
|
||||
@@ -0,0 +1,859 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
title: "常见问题与故障排查"
|
||||
description: "Hermes Agent 常见问题解答及常见问题解决方案"
|
||||
---
|
||||
|
||||
# 常见问题与故障排查
|
||||
|
||||
针对最常见问题的快速解答与修复方法。
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Hermes 支持哪些 LLM 提供商?
|
||||
|
||||
Hermes Agent 可与任何兼容 OpenAI 的 API 配合使用。支持的提供商包括:
|
||||
|
||||
- **[OpenRouter](https://openrouter.ai/)** — 通过一个 API key 访问数百个模型(推荐,灵活性强)
|
||||
- **Nous Portal** — Nous Research 自有推理端点
|
||||
- **OpenAI** — GPT-5.4、GPT-5-codex、GPT-4.1、GPT-4o 等
|
||||
- **Anthropic** — Claude 模型(直接 API、通过 `hermes auth add anthropic` 进行 OAuth、OpenRouter 或任何兼容代理)
|
||||
- **Google** — Gemini 模型(通过 `gemini` 提供商直接调用 API、`google-gemini-cli` OAuth 提供商、OpenRouter 或兼容代理)
|
||||
- **z.ai / ZhipuAI** — GLM 模型
|
||||
- **Kimi / Moonshot AI** — Kimi 模型
|
||||
- **MiniMax** — 全球及中国区端点
|
||||
- **本地模型** — 通过 [Ollama](https://ollama.com/)、[vLLM](https://docs.vllm.ai/)、[llama.cpp](https://github.com/ggerganov/llama.cpp)、[SGLang](https://github.com/sgl-project/sglang) 或任何兼容 OpenAI 的服务器
|
||||
|
||||
使用 `hermes model` 设置提供商,或直接编辑 `~/.hermes/.env`。所有提供商 key 请参阅[环境变量](./environment-variables.md)参考文档。
|
||||
|
||||
### 支持 Windows 吗?
|
||||
|
||||
**原生不支持。** Hermes Agent 需要类 Unix 环境。在 Windows 上,请安装 [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install) 并在其中运行 Hermes。标准安装命令在 WSL2 中可完美运行:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
|
||||
```
|
||||
|
||||
### 我在 WSL2 中运行 Hermes,如何控制 Windows 上的普通 Chrome?
|
||||
|
||||
推荐使用 MCP bridge(桥接),而非 `/browser connect`。
|
||||
|
||||
推荐方案:
|
||||
|
||||
- 在 WSL2 内运行 Hermes
|
||||
- 继续使用 Windows 上已登录的普通 Chrome
|
||||
- 通过 `cmd.exe` 或 `powershell.exe` 将 `chrome-devtools-mcp` 添加为 MCP 服务器
|
||||
- 让 Hermes 使用生成的 MCP 浏览器工具
|
||||
|
||||
这比强制 Hermes 核心浏览器传输直接跨越 WSL2/Windows 边界进行附加更为可靠。
|
||||
|
||||
参见:
|
||||
|
||||
- [在 Hermes 中使用 MCP](../guides/use-mcp-with-hermes.md#wsl2-bridge-hermes-in-wsl-to-windows-chrome)
|
||||
- [浏览器自动化](../user-guide/features/browser.md#wsl2--windows-chrome-prefer-mcp-over-browser-connect)
|
||||
|
||||
### 支持 Android / Termux 吗?
|
||||
|
||||
支持 — Hermes 现已为 Android 手机提供经过测试的 Termux 安装路径。
|
||||
|
||||
快速安装:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
|
||||
```
|
||||
|
||||
完整的手动步骤、支持的扩展及当前限制,请参阅 [Termux 指南](../getting-started/termux.md)。
|
||||
|
||||
重要说明:完整的 `.[all]` 扩展目前在 Android 上不可用,因为 `voice` 扩展依赖 `faster-whisper` → `ctranslate2`,而 `ctranslate2` 未发布 Android wheel 包。请改用经过测试的 `.[termux]` 扩展。
|
||||
|
||||
### 我的数据会被发送到哪里?
|
||||
|
||||
API 调用**仅发送至您配置的 LLM 提供商**(例如 OpenRouter、您本地的 Ollama 实例)。Hermes Agent 不收集遥测数据、使用数据或分析数据。您的对话、记忆和技能均存储在本地 `~/.hermes/` 目录中。
|
||||
|
||||
### 可以离线使用 / 使用本地模型吗?
|
||||
|
||||
可以。运行 `hermes model`,选择**自定义端点**,然后输入您服务器的 URL:
|
||||
|
||||
```bash
|
||||
hermes model
|
||||
# 选择:Custom endpoint(手动输入 URL)
|
||||
# API base URL: http://localhost:11434/v1
|
||||
# API key: ollama
|
||||
# Model name: qwen3.5:27b
|
||||
# Context length: 32768 ← 设置为与您服务器实际上下文窗口匹配的值
|
||||
```
|
||||
|
||||
或直接在 `config.yaml` 中配置:
|
||||
|
||||
```yaml
|
||||
model:
|
||||
default: qwen3.5:27b
|
||||
provider: custom
|
||||
base_url: http://localhost:11434/v1
|
||||
```
|
||||
|
||||
Hermes 会将端点、提供商和 base URL 持久化到 `config.yaml`,重启后仍然有效。如果您的本地服务器只加载了一个模型,`/model custom` 会自动检测到它。您也可以在 config.yaml 中设置 `provider: custom` — 这是一个一等提供商,不是其他任何东西的别名。
|
||||
|
||||
此方式适用于 Ollama、vLLM、llama.cpp server、SGLang、LocalAI 等。详情请参阅[配置指南](../user-guide/configuration.md)。
|
||||
|
||||
:::tip Ollama 用户
|
||||
如果您在 Ollama 中设置了自定义 `num_ctx`(例如 `ollama run --num_ctx 16384`),请确保在 Hermes 中设置匹配的上下文长度 — Ollama 的 `/api/show` 报告的是模型的*最大*上下文,而非您配置的实际 `num_ctx`。
|
||||
:::
|
||||
|
||||
:::tip 本地模型超时问题
|
||||
Hermes 会自动检测本地端点并放宽流式传输超时(读取超时从 120s 提升至 1800s,禁用停滞流检测)。如果在非常大的上下文下仍然超时,请在 `.env` 中设置 `HERMES_STREAM_READ_TIMEOUT=1800`。详情请参阅[本地 LLM 指南](../guides/local-llm-on-mac.md#timeouts)。
|
||||
:::
|
||||
|
||||
### 费用是多少?
|
||||
|
||||
Hermes Agent 本身**免费且开源**(MIT 许可证)。您只需为所选提供商的 LLM API 用量付费。本地模型完全免费运行。
|
||||
|
||||
### 多人可以使用同一个实例吗?
|
||||
|
||||
可以。[消息网关](../user-guide/messaging/index.md)允许多个用户通过 Telegram、Discord、Slack、WhatsApp 或 Home Assistant 与同一个 Hermes Agent 实例交互。访问权限通过白名单(特定用户 ID)和私信配对(第一个发消息的用户获得访问权)来控制。
|
||||
|
||||
### 记忆(memory)和技能(skills)有什么区别?
|
||||
|
||||
- **记忆**存储**事实** — 智能体了解的关于您、您的项目和偏好的信息。记忆根据相关性自动检索。
|
||||
- **技能**存储**流程** — 如何完成某件事的分步说明。当智能体遇到类似任务时会调用技能。
|
||||
|
||||
两者均跨会话持久化。详情请参阅[记忆](../user-guide/features/memory.md)和[技能](../user-guide/features/skills.md)。
|
||||
|
||||
### 可以在我自己的 Python 项目中使用吗?
|
||||
|
||||
可以。导入 `AIAgent` 类,以编程方式使用 Hermes:
|
||||
|
||||
```python
|
||||
from run_agent import AIAgent
|
||||
|
||||
agent = AIAgent(model="anthropic/claude-opus-4.7")
|
||||
response = agent.chat("Explain quantum computing briefly")
|
||||
```
|
||||
|
||||
完整 API 用法请参阅 [Python 库指南](../user-guide/features/code-execution.md)。
|
||||
|
||||
---
|
||||
|
||||
## 故障排查
|
||||
|
||||
### 安装问题
|
||||
|
||||
#### 安装后出现 `hermes: command not found`
|
||||
|
||||
**原因:** Shell 未重新加载更新后的 PATH。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 重新加载 shell 配置文件
|
||||
source ~/.bashrc # bash
|
||||
source ~/.zshrc # zsh
|
||||
|
||||
# 或开启一个新的终端会话
|
||||
```
|
||||
|
||||
如果仍然无效,请验证安装位置:
|
||||
```bash
|
||||
which hermes
|
||||
ls ~/.local/bin/hermes
|
||||
```
|
||||
|
||||
:::tip
|
||||
安装程序会将 `~/.local/bin` 添加到您的 PATH。如果您使用非标准 shell 配置,请手动添加 `export PATH="$HOME/.local/bin:$PATH"`。
|
||||
:::
|
||||
|
||||
#### Python 版本过旧
|
||||
|
||||
**原因:** Hermes 需要 Python 3.11 或更新版本。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
python3 --version # 检查当前版本
|
||||
|
||||
# 安装更新的 Python
|
||||
sudo apt install python3.12 # Ubuntu/Debian
|
||||
brew install python@3.12 # macOS
|
||||
```
|
||||
|
||||
安装程序会自动处理此问题 — 如果在手动安装时看到此错误,请先升级 Python。
|
||||
|
||||
#### 终端命令提示 `node: command not found`(或 `nvm`、`pyenv`、`asdf` 等)
|
||||
|
||||
**原因:** Hermes 在启动时通过运行一次 `bash -l` 构建每个会话的环境快照。bash 登录 shell 会读取 `/etc/profile`、`~/.bash_profile` 和 `~/.profile`,但**不会 source `~/.bashrc`** — 因此在 `~/.bashrc` 中安装自身的工具(`nvm`、`asdf`、`pyenv`、`cargo`、自定义 `PATH` 导出)对快照不可见。当 Hermes 在 systemd 下运行或在未预加载交互式 shell 配置的最小 shell 中运行时,此问题最为常见。
|
||||
|
||||
**解决方案:** Hermes 默认自动 source `~/.bashrc`。如果这还不够 — 例如您是 zsh 用户,PATH 在 `~/.zshrc` 中,或者您从独立文件初始化 `nvm` — 请在 `~/.hermes/config.yaml` 中列出需要额外 source 的文件:
|
||||
|
||||
```yaml
|
||||
terminal:
|
||||
shell_init_files:
|
||||
- ~/.zshrc # zsh 用户:将 zsh 管理的 PATH 引入 bash 快照
|
||||
- ~/.nvm/nvm.sh # 直接初始化 nvm(不依赖 shell 类型)
|
||||
- /etc/profile.d/cargo.sh # 系统级 rc 文件
|
||||
# 设置此列表后,默认的 ~/.bashrc 自动 source 不会被添加 —
|
||||
# 如需同时保留,请显式包含:
|
||||
# - ~/.bashrc
|
||||
# - ~/.zshrc
|
||||
```
|
||||
|
||||
缺失的文件会被静默跳过。source 在 bash 中执行,因此依赖 zsh 专有语法的文件可能报错 — 如有顾虑,建议只 source PATH 设置部分(例如直接 source nvm 的 `nvm.sh`),而非整个 rc 文件。
|
||||
|
||||
如需禁用自动 source 行为(仅使用严格的登录 shell 语义):
|
||||
|
||||
```yaml
|
||||
terminal:
|
||||
auto_source_bashrc: false
|
||||
```
|
||||
|
||||
#### `uv: command not found`
|
||||
|
||||
**原因:** `uv` 包管理器未安装或不在 PATH 中。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
#### 安装时出现权限拒绝错误
|
||||
|
||||
**原因:** 对安装目录的写入权限不足。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 不要对安装程序使用 sudo — 它安装到 ~/.local/bin
|
||||
# 如果之前使用 sudo 安装,请先清理:
|
||||
sudo rm /usr/local/bin/hermes
|
||||
# 然后重新运行标准安装程序
|
||||
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 提供商与模型问题
|
||||
|
||||
#### `/model` 只显示一个提供商 / 无法切换提供商
|
||||
|
||||
**原因:** 会话内的 `/model` 只能在您**已配置**的提供商之间切换。如果您只设置了 OpenRouter,`/model` 就只会显示 OpenRouter。
|
||||
|
||||
**解决方案:** 退出当前会话,在终端中使用 `hermes model` 添加新提供商:
|
||||
|
||||
```bash
|
||||
# 先退出 Hermes 聊天会话(Ctrl+C 或 /quit)
|
||||
|
||||
# 运行完整的提供商设置向导
|
||||
hermes model
|
||||
|
||||
# 此命令可以:添加提供商、运行 OAuth、输入 API key、配置端点
|
||||
```
|
||||
|
||||
通过 `hermes model` 添加新提供商后,启动新的聊天会话 — `/model` 将显示所有已配置的提供商。
|
||||
|
||||
:::tip 快速参考
|
||||
| 目标 | 使用方式 |
|
||||
|-----------|-----|
|
||||
| 添加新提供商 | `hermes model`(从终端) |
|
||||
| 输入/更改 API key | `hermes model`(从终端) |
|
||||
| 会话中途切换模型 | `/model <name>`(会话内) |
|
||||
| 切换到其他已配置的提供商 | `/model provider:model`(会话内) |
|
||||
:::
|
||||
|
||||
#### API key 不起作用
|
||||
|
||||
**原因:** key 缺失、已过期、设置错误或属于错误的提供商。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查您的配置
|
||||
hermes config show
|
||||
|
||||
# 重新配置您的提供商
|
||||
hermes model
|
||||
|
||||
# 或直接设置
|
||||
hermes config set OPENROUTER_API_KEY sk-or-v1-xxxxxxxxxxxx
|
||||
```
|
||||
|
||||
:::warning
|
||||
请确保 key 与提供商匹配。OpenAI 的 key 无法用于 OpenRouter,反之亦然。检查 `~/.hermes/.env` 中是否有冲突条目。
|
||||
:::
|
||||
|
||||
#### 模型不可用 / 找不到模型
|
||||
|
||||
**原因:** 模型标识符不正确,或该模型在您的提供商上不可用。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 列出您的提供商可用的模型
|
||||
hermes model
|
||||
|
||||
# 设置有效的模型
|
||||
hermes config set HERMES_MODEL anthropic/claude-opus-4.7
|
||||
|
||||
# 或按会话指定
|
||||
hermes chat --model openrouter/meta-llama/llama-3.1-70b-instruct
|
||||
```
|
||||
|
||||
#### 速率限制(429 错误)
|
||||
|
||||
**原因:** 您已超出提供商的速率限制。
|
||||
|
||||
**解决方案:** 稍等片刻后重试。对于持续使用,请考虑:
|
||||
- 升级您的提供商套餐
|
||||
- 切换到其他模型或提供商
|
||||
- 使用 `hermes chat --provider <alternative>` 路由到其他后端
|
||||
|
||||
#### 上下文长度超限
|
||||
|
||||
**原因:** 对话内容超出模型的上下文窗口,或 Hermes 检测到的模型上下文长度有误。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 压缩当前会话
|
||||
/compress
|
||||
|
||||
# 或开始新会话
|
||||
hermes chat
|
||||
|
||||
# 使用上下文窗口更大的模型
|
||||
hermes chat --model openrouter/google/gemini-3-flash-preview
|
||||
```
|
||||
|
||||
如果在第一次长对话时就出现此问题,Hermes 可能检测到了错误的模型上下文长度。检查检测结果:
|
||||
|
||||
查看 CLI 启动行 — 它会显示检测到的上下文长度(例如 `📊 Context limit: 128000 tokens`)。您也可以在会话中使用 `/usage` 查看。
|
||||
|
||||
如需修正上下文检测,请显式设置:
|
||||
|
||||
```yaml
|
||||
# 在 ~/.hermes/config.yaml 中
|
||||
model:
|
||||
default: your-model-name
|
||||
context_length: 131072 # 您模型的实际上下文窗口
|
||||
```
|
||||
|
||||
或对于自定义端点,按模型添加:
|
||||
|
||||
```yaml
|
||||
custom_providers:
|
||||
- name: "My Server"
|
||||
base_url: "http://localhost:11434/v1"
|
||||
models:
|
||||
qwen3.5:27b:
|
||||
context_length: 32768
|
||||
```
|
||||
|
||||
有关自动检测的工作原理及所有覆盖选项,请参阅[上下文长度检测](../integrations/providers.md#context-length-detection)。
|
||||
|
||||
---
|
||||
|
||||
### 终端问题
|
||||
|
||||
#### 命令被标记为危险而阻止
|
||||
|
||||
**原因:** Hermes 检测到潜在的破坏性命令(例如 `rm -rf`、`DROP TABLE`)。这是一项安全功能。
|
||||
|
||||
**解决方案:** 出现提示时,检查命令并输入 `y` 批准执行。您也可以:
|
||||
- 要求智能体使用更安全的替代方案
|
||||
- 在[安全文档](../user-guide/security.md)中查看完整的危险模式列表
|
||||
|
||||
:::tip
|
||||
这是预期行为 — Hermes 绝不会静默执行破坏性命令。审批提示会向您显示将要执行的确切内容。
|
||||
:::
|
||||
|
||||
#### 通过消息网关时 `sudo` 不起作用
|
||||
|
||||
**原因:** 消息网关在没有交互式终端的情况下运行,因此 `sudo` 无法提示输入密码。
|
||||
|
||||
**解决方案:**
|
||||
- 在消息中避免使用 `sudo` — 请智能体寻找替代方案
|
||||
- 如果必须使用 `sudo`,在 `/etc/sudoers` 中为特定命令配置免密 sudo
|
||||
- 或切换到终端界面执行管理任务:`hermes chat`
|
||||
|
||||
#### Docker 后端无法连接
|
||||
|
||||
**原因:** Docker 守护进程未运行,或用户缺少相应权限。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查 Docker 是否在运行
|
||||
docker info
|
||||
|
||||
# 将您的用户添加到 docker 组
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker
|
||||
|
||||
# 验证
|
||||
docker run hello-world
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 消息问题
|
||||
|
||||
#### Bot 不响应消息
|
||||
|
||||
**原因:** Bot 未运行、未授权,或您的用户不在白名单中。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查网关是否在运行
|
||||
hermes gateway status
|
||||
|
||||
# 启动网关
|
||||
hermes gateway start
|
||||
|
||||
# 查看错误日志
|
||||
cat ~/.hermes/logs/gateway.log | tail -50
|
||||
```
|
||||
|
||||
#### 消息未送达
|
||||
|
||||
**原因:** 网络问题、bot token 已过期,或平台 webhook 配置错误。
|
||||
|
||||
**解决方案:**
|
||||
- 使用 `hermes gateway setup` 验证您的 bot token 是否有效
|
||||
- 检查网关日志:`cat ~/.hermes/logs/gateway.log | tail -50`
|
||||
- 对于基于 webhook 的平台(Slack、WhatsApp),确保您的服务器可公开访问
|
||||
|
||||
#### 白名单混淆 — 谁可以与 bot 交互?
|
||||
|
||||
**原因:** 授权模式决定谁可以获得访问权限。
|
||||
|
||||
**解决方案:**
|
||||
|
||||
| 模式 | 工作方式 |
|
||||
|------|-------------|
|
||||
| **白名单** | 只有配置中列出的用户 ID 可以交互 |
|
||||
| **私信配对** | 第一个在私信中发消息的用户获得独占访问权 |
|
||||
| **开放** | 任何人都可以交互(不建议用于生产环境) |
|
||||
|
||||
在 `~/.hermes/config.yaml` 中您的网关设置下进行配置。请参阅[消息文档](../user-guide/messaging/index.md)。
|
||||
|
||||
#### 网关无法启动
|
||||
|
||||
**原因:** 缺少依赖项、端口冲突或 token 配置错误。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 安装核心消息网关依赖项
|
||||
pip install "hermes-agent[messaging]" # Telegram、Discord、Slack 及共享网关依赖
|
||||
|
||||
# 检查端口冲突
|
||||
lsof -i :8080
|
||||
|
||||
# 验证配置
|
||||
hermes config show
|
||||
```
|
||||
|
||||
#### WSL:网关持续断开连接或 `hermes gateway start` 失败
|
||||
|
||||
**原因:** WSL 的 systemd 支持不稳定。许多 WSL2 安装未启用 systemd,即使启用,服务也可能在 WSL 重启或 Windows 空闲关机后无法存活。
|
||||
|
||||
**解决方案:** 使用前台模式代替 systemd 服务:
|
||||
|
||||
```bash
|
||||
# 方案一:直接前台运行(最简单)
|
||||
hermes gateway run
|
||||
|
||||
# 方案二:通过 tmux 持久运行(关闭终端后仍存活)
|
||||
tmux new -s hermes 'hermes gateway run'
|
||||
# 稍后重新连接:tmux attach -t hermes
|
||||
|
||||
# 方案三:通过 nohup 后台运行
|
||||
nohup hermes gateway run > ~/.hermes/logs/gateway.log 2>&1 &
|
||||
```
|
||||
|
||||
如果仍想尝试 systemd,请确保已启用:
|
||||
|
||||
1. 打开 `/etc/wsl.conf`(不存在则创建)
|
||||
2. 添加:
|
||||
```ini
|
||||
[boot]
|
||||
systemd=true
|
||||
```
|
||||
3. 在 PowerShell 中执行:`wsl --shutdown`
|
||||
4. 重新打开 WSL 终端
|
||||
5. 验证:`systemctl is-system-running` 应显示 "running" 或 "degraded"
|
||||
|
||||
:::tip Windows 开机自启
|
||||
如需可靠的自启动,使用 Windows 任务计划程序在登录时启动 WSL + 网关:
|
||||
1. 创建一个任务,运行 `wsl -d Ubuntu -- bash -lc 'hermes gateway run'`
|
||||
2. 设置在用户登录时触发
|
||||
:::
|
||||
|
||||
#### macOS:网关找不到 Node.js / ffmpeg / 其他工具
|
||||
|
||||
**原因:** launchd 服务继承的是最小 PATH(`/usr/bin:/bin:/usr/sbin:/sbin`),不包含 Homebrew、nvm、cargo 或其他用户安装的工具目录。这通常会导致 WhatsApp bridge(`node not found`)或语音转录(`ffmpeg not found`)失败。
|
||||
|
||||
**解决方案:** 网关在您运行 `hermes gateway install` 时会捕获您的 shell PATH。如果您在设置网关后安装了新工具,请重新运行 install 以捕获更新后的 PATH:
|
||||
|
||||
```bash
|
||||
hermes gateway install # 重新快照当前 PATH
|
||||
hermes gateway start # 检测到更新的 plist 并重新加载
|
||||
```
|
||||
|
||||
您可以验证 plist 中的 PATH 是否正确:
|
||||
```bash
|
||||
/usr/libexec/PlistBuddy -c "Print :EnvironmentVariables:PATH" \
|
||||
~/Library/LaunchAgents/ai.hermes.gateway.plist
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 性能问题
|
||||
|
||||
#### 响应缓慢
|
||||
|
||||
**原因:** 模型较大、API 服务器距离较远,或系统 prompt(提示词)包含过多工具。
|
||||
|
||||
**解决方案:**
|
||||
- 尝试更快/更小的模型:`hermes chat --model openrouter/meta-llama/llama-3.1-8b-instruct`
|
||||
- 减少激活的工具集:`hermes chat -t "terminal"`
|
||||
- 检查到提供商的网络延迟
|
||||
- 对于本地模型,确保有足够的 GPU VRAM
|
||||
|
||||
#### token 用量过高
|
||||
|
||||
**原因:** 对话过长、系统 prompt 冗长,或大量工具调用积累了上下文。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 压缩对话以减少 token
|
||||
/compress
|
||||
|
||||
# 查看会话 token 用量
|
||||
/usage
|
||||
```
|
||||
|
||||
:::tip
|
||||
在长会话中定期使用 `/compress`。它会对对话历史进行摘要,在保留上下文的同时显著减少 token 用量。
|
||||
:::
|
||||
|
||||
#### 会话过长
|
||||
|
||||
**原因:** 长时间对话积累了大量消息和工具输出,接近上下文限制。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 压缩当前会话(保留关键上下文)
|
||||
/compress
|
||||
|
||||
# 开始新会话并引用旧会话
|
||||
hermes chat
|
||||
|
||||
# 如需稍后继续特定会话
|
||||
hermes chat --continue
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### MCP 问题
|
||||
|
||||
#### MCP 服务器无法连接
|
||||
|
||||
**原因:** 找不到服务器二进制文件、命令路径错误或缺少运行时。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 确保 MCP 依赖项已安装(标准安装中已包含)
|
||||
cd ~/.hermes/hermes-agent && uv pip install -e ".[mcp]"
|
||||
|
||||
# 对于基于 npm 的服务器,确保 Node.js 可用
|
||||
node --version
|
||||
npx --version
|
||||
|
||||
# 手动测试服务器
|
||||
npx -y @modelcontextprotocol/server-filesystem /tmp
|
||||
```
|
||||
|
||||
验证您的 `~/.hermes/config.yaml` 中的 MCP 配置:
|
||||
```yaml
|
||||
mcp_servers:
|
||||
filesystem:
|
||||
command: "npx"
|
||||
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/docs"]
|
||||
```
|
||||
|
||||
#### MCP 服务器的工具未显示
|
||||
|
||||
**原因:** 服务器已启动但工具发现失败、工具被配置过滤掉,或服务器不支持您期望的 MCP 能力。
|
||||
|
||||
**解决方案:**
|
||||
- 检查网关/智能体日志中的 MCP 连接错误
|
||||
- 确保服务器响应 `tools/list` RPC 方法
|
||||
- 检查该服务器下的 `tools.include`、`tools.exclude`、`tools.resources`、`tools.prompts` 或 `enabled` 设置
|
||||
- 请注意,资源/prompt 工具仅在会话实际支持相应能力时才会注册
|
||||
- 更改配置后使用 `/reload-mcp`
|
||||
|
||||
```bash
|
||||
# 验证 MCP 服务器已配置
|
||||
hermes config show | grep -A 12 mcp_servers
|
||||
|
||||
# 更改配置后重启 Hermes 或重新加载 MCP
|
||||
hermes chat
|
||||
```
|
||||
|
||||
另请参阅:
|
||||
- [MCP(模型上下文协议)](/user-guide/features/mcp)
|
||||
- [在 Hermes 中使用 MCP](/guides/use-mcp-with-hermes)
|
||||
- [MCP 配置参考](/reference/mcp-config-reference)
|
||||
|
||||
#### MCP 超时错误
|
||||
|
||||
**原因:** MCP 服务器响应时间过长,或在执行过程中崩溃。
|
||||
|
||||
**解决方案:**
|
||||
- 如果 MCP 服务器配置支持,增加超时时间
|
||||
- 检查 MCP 服务器进程是否仍在运行
|
||||
- 对于远程 HTTP MCP 服务器,检查网络连接
|
||||
|
||||
:::warning
|
||||
如果 MCP 服务器在请求中途崩溃,Hermes 会报告超时。请检查服务器自身的日志(而非仅 Hermes 日志)以诊断根本原因。
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Profiles(配置文件)
|
||||
|
||||
### Profiles 与直接设置 HERMES_HOME 有何不同?
|
||||
|
||||
Profiles 是构建在 `HERMES_HOME` 之上的托管层。您*可以*在每次命令前手动设置 `HERMES_HOME=/some/path`,但 profiles 会为您处理所有底层工作:创建目录结构、生成 shell 别名(`hermes-work`)、在 `~/.hermes/active_profile` 中跟踪活动 profile,以及自动跨所有 profiles 同步技能更新。它们还与 tab 补全集成,让您无需记忆路径。
|
||||
|
||||
### 两个 profiles 可以共享同一个 bot token 吗?
|
||||
|
||||
不可以。每个消息平台(Telegram、Discord 等)都需要对 bot token 的独占访问权。如果两个 profiles 同时尝试使用同一个 token,第二个网关将无法连接。请为每个 profile 创建单独的 bot — 对于 Telegram,请与 [@BotFather](https://t.me/BotFather) 对话以创建额外的 bot。
|
||||
|
||||
### Profiles 共享记忆或会话吗?
|
||||
|
||||
不共享。每个 profile 都有自己独立的记忆存储、会话数据库和技能目录,完全隔离。如果您想用现有的记忆和会话创建新 profile,请使用 `hermes profile create newname --clone-all` 从当前 profile 复制所有内容,或添加 `--clone-from <profile>` 从指定源 profile 复制。
|
||||
|
||||
### 运行 `hermes update` 时会发生什么?
|
||||
|
||||
`hermes update` 拉取最新代码并重新安装依赖项**一次**(不是每个 profile 各一次)。然后自动将更新的技能同步到所有 profiles。您只需运行一次 `hermes update` — 它覆盖机器上的每个 profile。
|
||||
|
||||
### 可以运行多少个 profiles?
|
||||
|
||||
没有硬性限制。每个 profile 只是 `~/.hermes/profiles/` 下的一个目录。实际限制取决于您的磁盘空间以及系统能处理多少个并发网关(每个网关是一个轻量级 Python 进程)。运行数十个 profiles 完全没问题;每个空闲的 profile 不占用任何资源。
|
||||
|
||||
---
|
||||
|
||||
## 工作流与模式
|
||||
|
||||
### 针对不同任务使用不同模型(多模型工作流)
|
||||
|
||||
**场景:** 您日常使用 GPT-5.4,但 Gemini 或 Grok 写社交媒体内容更好。每次手动切换模型很繁琐。
|
||||
|
||||
**解决方案:委托配置。** Hermes 可以自动将子智能体路由到不同的模型。在 `~/.hermes/config.yaml` 中设置:
|
||||
|
||||
```yaml
|
||||
delegation:
|
||||
model: "google/gemini-3-flash-preview" # 子智能体使用此模型
|
||||
provider: "openrouter" # 子智能体的提供商
|
||||
```
|
||||
|
||||
现在当您告诉 Hermes "帮我写一个关于 X 的 Twitter 帖子"并生成 `delegate_task` 子智能体时,该子智能体将在 Gemini 上运行,而非您的主模型。您的主对话仍在 GPT-5.4 上进行。
|
||||
|
||||
您也可以在 prompt 中明确指定:*"委托一个任务来撰写关于我们产品发布的社交媒体帖子。让你的子智能体负责实际写作。"* 智能体将使用 `delegate_task`,它会自动读取委托配置。
|
||||
|
||||
如需一次性切换模型而不使用委托,请在 CLI 中使用 `/model`:
|
||||
|
||||
```bash
|
||||
/model google/gemini-3-flash-preview # 在本次会话中切换
|
||||
# ... 撰写内容 ...
|
||||
/model openai/gpt-5.4 # 切换回来
|
||||
```
|
||||
|
||||
有关委托工作原理的更多信息,请参阅[子智能体委托](../user-guide/features/delegation.md)。
|
||||
|
||||
### 在一个 WhatsApp 号码上运行多个智能体(按聊天绑定)
|
||||
|
||||
**场景:** 在 OpenClaw 中,您可以将多个独立智能体绑定到特定的 WhatsApp 聊天 — 一个用于家庭购物清单群组,另一个用于您的私聊。Hermes 能做到吗?
|
||||
|
||||
**当前限制:** Hermes 的每个 profile 都需要自己的 WhatsApp 号码/会话。您无法将多个 profiles 绑定到同一个 WhatsApp 号码上的不同聊天 — WhatsApp bridge(Baileys)每个号码使用一个已认证的会话。
|
||||
|
||||
**变通方案:**
|
||||
|
||||
1. **使用单个 profile 配合人格切换。** 创建不同的 `AGENTS.md` 上下文文件或使用 `/personality` 命令按聊天更改行为。智能体能感知当前所在的聊天并进行适应。
|
||||
|
||||
2. **使用 cron 作业处理专项任务。** 对于购物清单跟踪器,设置一个监控特定聊天并管理清单的 cron 作业 — 无需单独的智能体。
|
||||
|
||||
3. **使用独立号码。** 如果您需要真正独立的智能体,将每个 profile 与其自己的 WhatsApp 号码配对。Google Voice 等服务提供的虚拟号码可用于此目的。
|
||||
|
||||
4. **改用 Telegram 或 Discord。** 这些平台更自然地支持按聊天绑定 — 每个 Telegram 群组或 Discord 频道获得自己的会话,您可以在同一账户上运行多个 bot token(每个 profile 一个)。
|
||||
|
||||
详情请参阅 [Profiles](../user-guide/profiles.md) 和 [WhatsApp 设置](../user-guide/messaging/whatsapp.md)。
|
||||
|
||||
### 控制 Telegram 中显示的内容(隐藏日志和推理过程)
|
||||
|
||||
**场景:** 您在 Telegram 中看到了网关执行日志、Hermes 推理过程和工具调用详情,而不是最终输出。
|
||||
|
||||
**解决方案:** `config.yaml` 中的 `display.tool_progress` 设置控制显示多少工具活动:
|
||||
|
||||
```yaml
|
||||
display:
|
||||
tool_progress: "off" # 选项:off、new、all、verbose
|
||||
```
|
||||
|
||||
- **`off`** — 仅显示最终响应。无工具调用、无推理过程、无日志。
|
||||
- **`new`** — 实时显示新的工具调用(简短单行)。
|
||||
- **`all`** — 显示所有工具活动,包括结果。
|
||||
- **`verbose`** — 完整详情,包括工具参数和输出。
|
||||
|
||||
对于消息平台,通常选择 `off` 或 `new`。编辑 `config.yaml` 后,重启网关使更改生效。
|
||||
|
||||
您也可以通过 `/verbose` 命令按会话切换(如果已启用):
|
||||
|
||||
```yaml
|
||||
display:
|
||||
tool_progress_command: true # 在网关中启用 /verbose
|
||||
```
|
||||
|
||||
### 在 Telegram 上管理技能(slash 命令限制)
|
||||
|
||||
**场景:** Telegram 有 100 个 slash 命令的限制,您的技能数量已超过此限制。您想禁用 Telegram 上不需要的技能,但 `hermes skills config` 设置似乎没有生效。
|
||||
|
||||
**解决方案:** 使用 `hermes skills config` 按平台禁用技能。这会写入 `config.yaml`:
|
||||
|
||||
```yaml
|
||||
skills:
|
||||
disabled: [] # 全局禁用的技能
|
||||
platform_disabled:
|
||||
telegram: [skill-a, skill-b] # 仅在 telegram 上禁用
|
||||
```
|
||||
|
||||
更改后,**重启网关**(`hermes gateway restart` 或终止并重新启动)。Telegram bot 命令菜单在启动时重建。
|
||||
|
||||
:::tip
|
||||
描述过长的技能在 Telegram 菜单中会被截断为 40 个字符,以符合 payload 大小限制。如果技能未出现,可能是总 payload 大小问题而非 100 个命令数量限制 — 禁用未使用的技能对两者都有帮助。
|
||||
:::
|
||||
|
||||
### 共享线程会话(多用户,一个对话)
|
||||
|
||||
**场景:** 您有一个 Telegram 或 Discord 线程,多人在其中 @ bot。您希望该线程中的所有 @ 都属于一个共享对话,而非每个用户各自独立的会话。
|
||||
|
||||
**当前行为:** Hermes 在大多数平台上按用户 ID 创建会话,因此每个人都有自己的对话上下文。这是出于隐私和上下文隔离的设计考量。
|
||||
|
||||
**变通方案:**
|
||||
|
||||
1. **使用 Slack。** Slack 会话按线程而非用户进行键控。同一线程中的多个用户共享一个对话 — 正是您描述的行为。这是最自然的选择。
|
||||
|
||||
2. **使用单用户的群聊。** 如果由一个人作为指定"操作员"转达问题,会话保持统一。其他人可以旁观。
|
||||
|
||||
3. **使用 Discord 频道。** Discord 会话按频道键控,因此同一频道中的所有用户共享上下文。为共享对话使用专用频道。
|
||||
|
||||
### 将 Hermes 迁移到另一台机器
|
||||
|
||||
**场景:** 您在一台机器上积累了技能、cron 作业和记忆,想将所有内容迁移到新的专用 Linux 机器。
|
||||
|
||||
**解决方案:**
|
||||
|
||||
1. 在新机器上安装 Hermes Agent:
|
||||
```bash
|
||||
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
|
||||
```
|
||||
|
||||
2. 在**源机器**上创建完整备份:
|
||||
```bash
|
||||
hermes backup
|
||||
```
|
||||
这会将您整个 `~/.hermes/` 目录(配置、API key、记忆、技能、会话和 profiles)打包为 zip 文件,保存到主目录 `~/hermes-backup-<timestamp>.zip`。
|
||||
|
||||
3. 将 zip 文件复制到新机器并导入:
|
||||
```bash
|
||||
# 在源机器上
|
||||
scp ~/hermes-backup-<timestamp>.zip newmachine:~/
|
||||
|
||||
# 在新机器上
|
||||
hermes import ~/hermes-backup-<timestamp>.zip
|
||||
```
|
||||
|
||||
4. 在新机器上运行 `hermes setup` 以验证 API key 和提供商配置是否正常工作。
|
||||
|
||||
### 将单个 profile 迁移到另一台机器
|
||||
|
||||
**场景:** 您想迁移或共享某个特定 profile,而非整个安装。
|
||||
|
||||
```bash
|
||||
# 在源机器上
|
||||
hermes profile export work ./work-backup.tar.gz
|
||||
|
||||
# 将文件复制到目标机器,然后:
|
||||
hermes profile import ./work-backup.tar.gz work
|
||||
```
|
||||
|
||||
导入的 profile 将包含导出时的所有配置、记忆、会话和技能。如果新机器的设置不同,您可能需要更新路径或重新向提供商进行身份验证。
|
||||
|
||||
### `hermes backup` 与 `hermes profile export` 的对比
|
||||
|
||||
| 功能 | `hermes backup` | `hermes profile export` |
|
||||
| :--- | :--- | :--- |
|
||||
| **使用场景** | **整机迁移** | **移植/共享特定 profile** |
|
||||
| **范围** | 全局(整个 `~/.hermes` 目录) | 局部(单个 profile 目录) |
|
||||
| **包含内容** | 所有 profiles、全局配置、API key、会话 | 单个 profile:SOUL.md、记忆、会话、技能 |
|
||||
| **凭据** | **包含**(`.env` 和 `auth.json`) | **排除**(为安全共享而剥离) |
|
||||
| **格式** | `.zip` | `.tar.gz` |
|
||||
|
||||
**手动备选方案(rsync):** 如果您倾向于直接复制文件,请排除代码仓库:
|
||||
```bash
|
||||
rsync -av --exclude='hermes-agent' ~/.hermes/ newmachine:~/.hermes/
|
||||
```
|
||||
|
||||
:::tip
|
||||
`hermes backup` 即使在 Hermes 正在运行时也能生成一致的快照。还原的归档文件不包含机器本地的运行时文件,如 `gateway.pid` 和 `cron.pid`。
|
||||
:::
|
||||
|
||||
### 安装后重新加载 shell 时出现权限拒绝
|
||||
|
||||
**场景:** 运行 Hermes 安装程序后,`source ~/.zshrc` 提示权限拒绝错误。
|
||||
|
||||
**原因:** 这通常发生在 `~/.zshrc`(或 `~/.bashrc`)文件权限不正确,或安装程序无法干净写入时。这不是 Hermes 特有的问题 — 而是 shell 配置权限问题。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查权限
|
||||
ls -la ~/.zshrc
|
||||
|
||||
# 如需修复(应为 -rw-r--r-- 或 644)
|
||||
chmod 644 ~/.zshrc
|
||||
|
||||
# 然后重新加载
|
||||
source ~/.zshrc
|
||||
|
||||
# 或直接打开新终端窗口 — 它会自动读取 PATH 更改
|
||||
```
|
||||
|
||||
如果安装程序已添加 PATH 行但权限有误,您可以手动添加:
|
||||
```bash
|
||||
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
|
||||
```
|
||||
|
||||
### 首次运行智能体时出现 400 错误
|
||||
|
||||
**场景:** 设置顺利完成,但第一次聊天尝试失败,提示 HTTP 400。
|
||||
|
||||
**原因:** 通常是模型名称不匹配 — 配置的模型在您的提供商上不存在,或 API key 没有访问该模型的权限。
|
||||
|
||||
**解决方案:**
|
||||
```bash
|
||||
# 检查已配置的模型和提供商
|
||||
hermes config show | head -20
|
||||
|
||||
# 重新运行模型选择
|
||||
hermes model
|
||||
|
||||
# 或使用已知可用的模型测试
|
||||
hermes chat -q "hello" --model anthropic/claude-opus-4.7
|
||||
```
|
||||
|
||||
如果使用 OpenRouter,请确保您的 API key 有余额。OpenRouter 返回 400 通常意味着该模型需要付费套餐,或模型 ID 有拼写错误。
|
||||
|
||||
---
|
||||
|
||||
## 仍然遇到问题?
|
||||
|
||||
如果您的问题未在此处涵盖:
|
||||
|
||||
1. **搜索现有 issue:** [GitHub Issues](https://github.com/NousResearch/hermes-agent/issues)
|
||||
2. **向社区提问:** [Nous Research Discord](https://discord.gg/nousresearch)
|
||||
3. **提交 bug 报告:** 请包含您的操作系统、Python 版本(`python3 --version`)、Hermes 版本(`hermes --version`)以及完整的错误信息
|
||||
+249
@@ -0,0 +1,249 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
title: "MCP 配置参考"
|
||||
description: "Hermes Agent MCP 配置键、过滤语义及工具策略参考"
|
||||
---
|
||||
|
||||
# MCP 配置参考
|
||||
|
||||
本页是主 MCP 文档的简明参考手册。
|
||||
|
||||
概念说明请参阅:
|
||||
- [MCP(Model Context Protocol)](/user-guide/features/mcp)
|
||||
- [在 Hermes 中使用 MCP](/guides/use-mcp-with-hermes)
|
||||
|
||||
## 根配置结构
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
<server_name>:
|
||||
command: "..." # stdio servers
|
||||
args: []
|
||||
env: {}
|
||||
|
||||
# OR
|
||||
url: "..." # HTTP servers
|
||||
headers: {}
|
||||
|
||||
enabled: true
|
||||
timeout: 120
|
||||
connect_timeout: 60
|
||||
supports_parallel_tool_calls: false
|
||||
tools:
|
||||
include: []
|
||||
exclude: []
|
||||
resources: true
|
||||
prompts: true
|
||||
```
|
||||
|
||||
## 服务器键
|
||||
|
||||
| 键 | 类型 | 适用范围 | 含义 |
|
||||
|---|---|---|---|
|
||||
| `command` | string | stdio | 要启动的可执行文件 |
|
||||
| `args` | list | stdio | 子进程的参数 |
|
||||
| `env` | mapping | stdio | 传递给子进程的环境变量 |
|
||||
| `url` | string | HTTP | 远程 MCP 端点 |
|
||||
| `headers` | mapping | HTTP | 远程服务器请求的请求头 |
|
||||
| `enabled` | bool | 两者 | 为 false 时完全跳过该服务器 |
|
||||
| `timeout` | number | 两者 | 工具调用超时时间 |
|
||||
| `connect_timeout` | number | 两者 | 初始连接超时时间 |
|
||||
| `supports_parallel_tool_calls` | bool | 两者 | 允许该服务器的工具并发执行 |
|
||||
| `tools` | mapping | 两者 | 过滤及工具策略 |
|
||||
| `auth` | string | HTTP | 认证方式。设为 `oauth` 可启用带 PKCE 的 OAuth 2.1 |
|
||||
| `sampling` | mapping | 两者 | 服务器发起的 LLM 请求策略(参见 MCP 指南) |
|
||||
|
||||
## `tools` 策略键
|
||||
|
||||
| 键 | 类型 | 含义 |
|
||||
|---|---|---|
|
||||
| `include` | string 或 list | 白名单:指定允许注册的服务器原生 MCP 工具 |
|
||||
| `exclude` | string 或 list | 黑名单:指定禁止注册的服务器原生 MCP 工具 |
|
||||
| `resources` | bool-like | 启用/禁用 `list_resources` + `read_resource` |
|
||||
| `prompts` | bool-like | 启用/禁用 `list_prompts` + `get_prompt` |
|
||||
|
||||
## 过滤语义
|
||||
|
||||
### `include`
|
||||
|
||||
若设置了 `include`,则只注册其中列出的服务器原生 MCP 工具。
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
include: [create_issue, list_issues]
|
||||
```
|
||||
|
||||
### `exclude`
|
||||
|
||||
若设置了 `exclude` 且未设置 `include`,则注册除列出名称之外的所有服务器原生 MCP 工具。
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
exclude: [delete_customer]
|
||||
```
|
||||
|
||||
### 优先级
|
||||
|
||||
若两者同时设置,`include` 优先。
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
include: [create_issue]
|
||||
exclude: [create_issue, delete_issue]
|
||||
```
|
||||
|
||||
结果:
|
||||
- `create_issue` 仍被允许
|
||||
- `delete_issue` 被忽略,因为 `include` 优先级更高
|
||||
|
||||
## 工具策略
|
||||
|
||||
Hermes 可为每个 MCP 服务器注册以下工具包装器:
|
||||
|
||||
Resources(资源):
|
||||
- `list_resources`
|
||||
- `read_resource`
|
||||
|
||||
Prompts(提示词):
|
||||
- `list_prompts`
|
||||
- `get_prompt`
|
||||
|
||||
### 禁用 resources
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
resources: false
|
||||
```
|
||||
|
||||
### 禁用 prompts
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
prompts: false
|
||||
```
|
||||
|
||||
### 能力感知注册
|
||||
|
||||
即使设置了 `resources: true` 或 `prompts: true`,Hermes 也只在 MCP 会话实际暴露对应能力时才注册相应工具。
|
||||
|
||||
因此以下情况属于正常现象:
|
||||
- 你启用了 prompts
|
||||
- 但没有出现任何 prompt 工具
|
||||
- 原因是该服务器不支持 prompts
|
||||
|
||||
## `enabled: false`
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
legacy:
|
||||
url: "https://mcp.legacy.internal"
|
||||
enabled: false
|
||||
```
|
||||
|
||||
行为:
|
||||
- 不发起连接
|
||||
- 不进行服务发现
|
||||
- 不注册工具
|
||||
- 配置保留,供后续复用
|
||||
|
||||
## 空结果行为
|
||||
|
||||
若过滤后服务器原生工具全部被移除,且没有工具被注册,Hermes 不会为该服务器创建空的 MCP 运行时工具集。
|
||||
|
||||
## 配置示例
|
||||
|
||||
### GitHub 安全白名单
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
github:
|
||||
command: "npx"
|
||||
args: ["-y", "@modelcontextprotocol/server-github"]
|
||||
env:
|
||||
GITHUB_PERSONAL_ACCESS_TOKEN: "***"
|
||||
tools:
|
||||
include: [list_issues, create_issue, update_issue, search_code]
|
||||
resources: false
|
||||
prompts: false
|
||||
```
|
||||
|
||||
### Stripe 黑名单
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
stripe:
|
||||
url: "https://mcp.stripe.com"
|
||||
headers:
|
||||
Authorization: "Bearer ***"
|
||||
tools:
|
||||
exclude: [delete_customer, refund_payment]
|
||||
```
|
||||
|
||||
### 仅资源的文档服务器
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
docs:
|
||||
url: "https://mcp.docs.example.com"
|
||||
tools:
|
||||
include: []
|
||||
resources: true
|
||||
prompts: false
|
||||
```
|
||||
|
||||
## 重新加载配置
|
||||
|
||||
修改 MCP 配置后,使用以下命令重新加载服务器:
|
||||
|
||||
```text
|
||||
/reload-mcp
|
||||
```
|
||||
|
||||
## 工具命名
|
||||
|
||||
服务器原生 MCP 工具的命名格式为:
|
||||
|
||||
```text
|
||||
mcp_<server>_<tool>
|
||||
```
|
||||
|
||||
示例:
|
||||
- `mcp_github_create_issue`
|
||||
- `mcp_filesystem_read_file`
|
||||
- `mcp_my_api_query_data`
|
||||
|
||||
工具包装器遵循相同的前缀规则:
|
||||
- `mcp_<server>_list_resources`
|
||||
- `mcp_<server>_read_resource`
|
||||
- `mcp_<server>_list_prompts`
|
||||
- `mcp_<server>_get_prompt`
|
||||
|
||||
### 名称规范化
|
||||
|
||||
服务器名称和工具名称中的连字符(`-`)和点号(`.`)在注册前均会替换为下划线。这确保工具名称是 LLM function-calling API 的合法标识符。
|
||||
|
||||
例如,名为 `my-api` 的服务器暴露了名为 `list-items.v2` 的工具,注册后变为:
|
||||
|
||||
```text
|
||||
mcp_my_api_list_items_v2
|
||||
```
|
||||
|
||||
编写 `include` / `exclude` 过滤器时请注意——使用**原始** MCP 工具名称(含连字符/点号),而非规范化后的名称。
|
||||
|
||||
## OAuth 2.1 认证
|
||||
|
||||
对于需要 OAuth 的 HTTP 服务器,在服务器条目中设置 `auth: oauth`:
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
protected_api:
|
||||
url: "https://mcp.example.com/mcp"
|
||||
auth: oauth
|
||||
```
|
||||
|
||||
行为:
|
||||
- Hermes 使用 MCP SDK 的 OAuth 2.1 PKCE 流程(元数据发现、动态客户端注册、token 交换及刷新)
|
||||
- 首次连接时,浏览器窗口将打开以完成授权
|
||||
- Token 持久化至 `~/.hermes/mcp-tokens/<server>.json`,跨会话复用
|
||||
- Token 刷新自动进行;仅在刷新失败时才需重新授权
|
||||
- 仅适用于 HTTP/StreamableHTTP 传输(基于 `url` 的服务器)
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
---
|
||||
sidebar_position: 11
|
||||
title: 模型目录
|
||||
description: 远程托管的清单文件,驱动 OpenRouter 和 Nous Portal 的精选模型选择器列表。
|
||||
---
|
||||
|
||||
# 模型目录
|
||||
|
||||
Hermes 从托管于文档站点旁的 JSON 清单中获取 **OpenRouter** 和 **Nous Portal** 的精选模型列表。这样维护者无需发布新的 `hermes-agent` 版本即可更新选择器列表。
|
||||
|
||||
当清单不可达时(离线、网络受阻、托管故障),Hermes 会静默回退到随 CLI 一同发布的仓库内置快照。清单永远不会导致选择器崩溃——最坏情况下,你看到的是与已安装版本捆绑的列表。
|
||||
|
||||
## 线上清单 URL
|
||||
|
||||
```
|
||||
https://hermes-agent.nousresearch.com/docs/api/model-catalog.json
|
||||
```
|
||||
|
||||
每次合并到 `main` 时,通过现有的 `deploy-site.yml` GitHub Pages 流水线发布。真实来源位于仓库的 `website/static/api/model-catalog.json`。
|
||||
|
||||
## Schema(模式)
|
||||
|
||||
```json
|
||||
{
|
||||
"version": 1,
|
||||
"updated_at": "2026-04-25T22:00:00Z",
|
||||
"metadata": {},
|
||||
"providers": {
|
||||
"openrouter": {
|
||||
"metadata": {},
|
||||
"models": [
|
||||
{"id": "moonshotai/kimi-k2.6", "description": "recommended", "metadata": {}},
|
||||
{"id": "openai/gpt-5.4", "description": ""}
|
||||
]
|
||||
},
|
||||
"nous": {
|
||||
"metadata": {},
|
||||
"models": [
|
||||
{"id": "anthropic/claude-opus-4.7"},
|
||||
{"id": "moonshotai/kimi-k2.6"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
字段说明:
|
||||
|
||||
- **`version`** — 整数类型的 schema 版本号。未来的 schema 会递增此值;Hermes 拒绝处理版本号未知的清单,并回退到硬编码快照。
|
||||
- **`metadata`** — 清单、provider 及模型级别的自由格式字典,支持任意键。Hermes 会忽略未知字段,因此你可以为条目添加注解(如 `"tier": "paid"`、`"tags": [...]` 等),无需协调 schema 变更。
|
||||
- **`description`** — 仅限 OpenRouter。驱动选择器徽章文本(`"recommended"`、`"free"` 或空字符串)。Nous Portal 不使用此字段——免费层级的限制由 Portal 的定价端点实时决定。
|
||||
- **定价和上下文长度**不在清单中。这些数据在获取时来自各 provider 的实时 API(`/v1/models` 端点、models.dev)。
|
||||
|
||||
## 获取行为
|
||||
|
||||
| 时机 | 行为 |
|
||||
|---|---|
|
||||
| `/model` 或 `hermes model` | 若磁盘缓存已过期则重新获取,否则使用缓存 |
|
||||
| 磁盘缓存新鲜(< TTL) | 不发起网络请求 |
|
||||
| 网络故障且有缓存 | 静默回退到缓存,输出一行日志 |
|
||||
| 网络故障且无缓存 | 静默回退到仓库内置快照 |
|
||||
| 清单未通过 schema 校验 | 视为不可达 |
|
||||
|
||||
缓存位置:`~/.hermes/cache/model_catalog.json`。
|
||||
|
||||
## 配置
|
||||
|
||||
```yaml
|
||||
model_catalog:
|
||||
enabled: true
|
||||
url: https://hermes-agent.nousresearch.com/docs/api/model-catalog.json
|
||||
ttl_hours: 1
|
||||
providers: {}
|
||||
```
|
||||
|
||||
将 `enabled` 设为 `false` 可完全禁用远程获取,始终使用仓库内置快照。
|
||||
|
||||
### 按 provider 覆盖 URL
|
||||
|
||||
第三方可使用相同 schema 自托管自己的精选列表。将某个 provider 指向自定义 URL:
|
||||
|
||||
```yaml
|
||||
model_catalog:
|
||||
providers:
|
||||
openrouter:
|
||||
url: https://example.com/my-openrouter-curation.json
|
||||
```
|
||||
|
||||
覆盖清单只需填充其关心的 provider 块,其他 provider 继续从主 URL 解析。
|
||||
|
||||
## 更新清单
|
||||
|
||||
维护者操作:
|
||||
|
||||
```bash
|
||||
# 从仓库内硬编码列表重新生成(在编辑 hermes_cli/models.py 中的
|
||||
# OPENROUTER_MODELS 或 _PROVIDER_MODELS["nous"] 后保持清单同步)。
|
||||
python scripts/build_model_catalog.py
|
||||
```
|
||||
|
||||
然后将 `website/static/api/model-catalog.json` 的变更提交 PR 到 `main`。文档站点在合并后自动部署,新清单将在几分钟内生效。
|
||||
|
||||
你也可以直接手动编辑 JSON,用于不适合放入仓库内置快照的细粒度元数据变更——生成脚本只是便捷工具,并非唯一的真实来源。
|
||||
+205
@@ -0,0 +1,205 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
title: "可选技能目录"
|
||||
description: "hermes-agent 附带的官方可选技能 — 通过 hermes skills install official/<category>/<skill> 安装"
|
||||
---
|
||||
|
||||
# 可选技能目录
|
||||
|
||||
可选技能随 hermes-agent 一起发布,位于 `optional-skills/` 目录下,但**默认未激活**。请显式安装:
|
||||
|
||||
```bash
|
||||
hermes skills install official/<category>/<skill>
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
hermes skills install official/blockchain/solana
|
||||
hermes skills install official/mlops/flash-attention
|
||||
```
|
||||
|
||||
下方每个技能均链接至专属页面,包含完整定义、配置和使用说明。
|
||||
|
||||
卸载方式:
|
||||
|
||||
```bash
|
||||
hermes skills uninstall <skill-name>
|
||||
```
|
||||
|
||||
## autonomous-ai-agents
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**blackbox**](/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-blackbox) | 将编码任务委托给 Blackbox AI CLI agent。内置评判机制的多模型 agent,通过多个 LLM 运行任务并选出最佳结果。需要 blackbox CLI 和 Blackbox AI API 密钥。 |
|
||||
| [**honcho**](/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-honcho) | 配置并使用 Honcho 记忆与 Hermes — 跨会话用户建模、多配置文件对等隔离、观测配置、辩证推理、会话摘要及上下文预算执行。适用于配置 Honcho、故障排查等场景。 |
|
||||
|
||||
## blockchain
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**evm**](/user-guide/skills/optional/blockchain/blockchain-evm) | 只读 EVM 客户端:支持 8 条链的钱包、代币、Gas 查询。 |
|
||||
| [**hyperliquid**](/user-guide/skills/optional/blockchain/blockchain-hyperliquid) | Hyperliquid 市场数据、账户历史、交易回顾。 |
|
||||
| [**solana**](/user-guide/skills/optional/blockchain/blockchain-solana) | 查询 Solana 链上数据并附带 USD 定价 — 钱包余额、带估值的代币组合、交易详情、NFT、巨鲸检测及实时网络统计。使用 Solana RPC + CoinGecko,无需 API 密钥。 |
|
||||
|
||||
## communication
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**one-three-one-rule**](/user-guide/skills/optional/communication/communication-one-three-one-rule) | 用于技术提案和权衡分析的结构化决策框架。当用户面临多种方案选择(架构决策、工具选型、重构策略、迁移路径)时,本技能提供系统化的分析流程。 |
|
||||
|
||||
## creative
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**blender-mcp**](/user-guide/skills/optional/creative/creative-blender-mcp) | 通过 socket 连接 blender-mcp 插件,直接从 Hermes 控制 Blender。创建 3D 对象、材质、动画,并运行任意 Blender Python(bpy)代码。适用于用户希望在 Blender 中创建或修改任何内容的场景。 |
|
||||
| [**concept-diagrams**](/user-guide/skills/optional/creative/creative-concept-diagrams) | 生成扁平、极简、支持亮色/暗色模式的 SVG 图表,输出为独立 HTML 文件,采用统一的教育视觉语言,包含 9 种语义色阶、句首大写排版及自动暗色模式。最适合教育和说明类内容。 |
|
||||
| [**hyperframes**](/user-guide/skills/optional/creative/creative-hyperframes) | 使用 HyperFrames 创建基于 HTML 的视频合成、动态标题卡、社交叠层、字幕访谈视频、音频响应视觉效果及着色器转场。HTML 是视频的唯一来源。适用于用户希望制作任何视频内容的场景。 |
|
||||
| [**kanban-video-orchestrator**](/user-guide/skills/optional/creative/creative-kanban-video-orchestrator) | 规划、搭建并监控由 Hermes Kanban 支撑的多 agent 视频制作流水线。适用于用户希望制作任何类型视频的场景 — 叙事影片、产品/营销视频、MV、解说视频、ASCII/终端艺术、抽象/生成式循环等。 |
|
||||
| [**meme-generation**](/user-guide/skills/optional/creative/creative-meme-generation) | 通过选取模板并使用 Pillow 叠加文字来生成真实的 meme 图片,输出实际的 .png 文件。 |
|
||||
|
||||
## devops
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**inference-sh-cli**](/user-guide/skills/optional/devops/devops-cli) | 通过 inference.sh CLI(infsh)运行 150+ AI 应用 — 图像生成、视频创作、LLM、搜索、3D、社交自动化。使用终端工具。触发词:inference.sh、infsh、ai apps、flux、veo、图像生成、视频生成、seedrea 等。 |
|
||||
| [**docker-management**](/user-guide/skills/optional/devops/devops-docker-management) | 管理 Docker 容器、镜像、卷、网络及 Compose 栈 — 生命周期操作、调试、清理及 Dockerfile 优化。 |
|
||||
| [**pinggy-tunnel**](/user-guide/skills/optional/devops/devops-pinggy-tunnel) | 通过 Pinggy 经 SSH 实现零安装本地隧道。 |
|
||||
| [**watchers**](/user-guide/skills/optional/devops/devops-watchers) | 轮询 RSS、JSON API 和 GitHub,并使用水印去重。 |
|
||||
|
||||
## dogfood
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**adversarial-ux-test**](/user-guide/skills/optional/dogfood/dogfood-adversarial-ux-test) | 扮演产品中最难应对的技术抵触型用户。以该角色浏览应用,找出所有 UX 痛点,再通过实用主义过滤层区分真实问题与噪音,生成可执行的工单。 |
|
||||
|
||||
## email
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**agentmail**](/user-guide/skills/optional/email/email-agentmail) | 通过 AgentMail 为 agent 提供专属邮箱。使用 agent 专属邮件地址(如 hermes-agent@agentmail.to)自主发送、接收和管理邮件。 |
|
||||
|
||||
## finance
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**3-statement-model**](/user-guide/skills/optional/finance/finance-3-statement-model) | 在 Excel 中构建完整集成的三表模型(利润表、资产负债表、现金流量表),包含营运资本计划、折旧摊销滚动、债务计划及使现金与留存收益平衡的勾稽项。与 excel-author 配合使用。 |
|
||||
| [**comps-analysis**](/user-guide/skills/optional/finance/finance-comps-analysis) | 在 Excel 中构建可比公司分析 — 运营指标、估值倍数、与同行集合的统计基准对比。与 excel-author 配合使用。适用于上市公司估值、IPO 定价、行业基准或异常值检测。 |
|
||||
| [**dcf-model**](/user-guide/skills/optional/finance/finance-dcf-model) | 在 Excel 中构建机构级 DCF 估值模型 — 收入预测、自由现金流构建、WACC、终值、悲观/基准/乐观情景及 5×5 敏感性分析表。与 excel-author 配合使用。适用于内在价值股权分析。 |
|
||||
| [**excel-author**](/user-guide/skills/optional/finance/finance-excel-author) | 使用 openpyxl 无头构建可审计的 Excel 工作簿 — 蓝/黑/绿单元格规范、公式优先于硬编码、命名区域、余额校验、敏感性分析表。适用于财务模型、审计输出、对账。 |
|
||||
| [**lbo-model**](/user-guide/skills/optional/finance/finance-lbo-model) | 在 Excel 中构建杠杆收购模型 — 资金来源与用途、债务计划、现金清偿、退出倍数、IRR/MOIC 敏感性分析。与 excel-author 配合使用。适用于 PE 筛选、主导方案估值或 pitch 中的示意性 LBO。 |
|
||||
| [**merger-model**](/user-guide/skills/optional/finance/finance-merger-model) | 在 Excel 中构建增厚/摊薄(并购)模型 — 合并后利润表、协同效应、融资结构、每股收益影响。与 excel-author 配合使用。适用于并购 pitch、董事会材料或交易评估。 |
|
||||
| [**pptx-author**](/user-guide/skills/optional/finance/finance-pptx-author) | 使用 python-pptx 无头构建 PowerPoint 演示文稿。与 excel-author 配合,制作每个数字均可追溯至工作簿单元格的模型支撑型幻灯片。适用于 pitch deck、投委会备忘录、盈利说明。 |
|
||||
| [**stocks**](/user-guide/skills/optional/finance/finance-stocks) | 通过 Yahoo 获取股票报价、历史数据、搜索、对比及加密货币行情。 |
|
||||
|
||||
## health
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**fitness-nutrition**](/user-guide/skills/optional/health/health-fitness-nutrition) | 健身训练计划与营养追踪。通过 wger 按肌肉群、器械或类别搜索 690+ 种训练动作。通过 USDA FoodData Central 查询 380,000+ 种食物的宏量营养素和热量。计算 BMI、TDEE、单次最大重量、宏量营养素分配及体成分。 |
|
||||
| [**neuroskill-bci**](/user-guide/skills/optional/health/health-neuroskill-bci) | 连接运行中的 NeuroSkill 实例,将用户的实时认知和情绪状态(专注度、放松度、情绪、认知负荷、困倦度、心率、HRV、睡眠分期及 40+ 项衍生 EXG 评分)融入响应中。 |
|
||||
|
||||
## mcp
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**fastmcp**](/user-guide/skills/optional/mcp/mcp-fastmcp) | 使用 Python 中的 FastMCP 构建、测试、检查、安装和部署 MCP 服务器。适用于创建新 MCP 服务器、将 API 或数据库封装为 MCP 工具、暴露资源或 prompt(提示词),或为 Claude Code、Cursor 等准备 FastMCP 服务器的场景。 |
|
||||
| [**mcporter**](/user-guide/skills/optional/mcp/mcp-mcporter) | 使用 mcporter CLI 列出、配置、鉴权并直接调用 MCP 服务器/工具(HTTP 或 stdio),包括临时服务器、配置编辑及 CLI/类型生成。 |
|
||||
|
||||
## migration
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**openclaw-migration**](/user-guide/skills/optional/migration/migration-openclaw-migration) | 将用户的 OpenClaw 自定义配置迁移至 Hermes Agent。从 ~/.openclaw 导入兼容 Hermes 的记忆、SOUL.md、命令白名单、用户技能及选定的工作区资产,并报告无法迁移的内容。 |
|
||||
|
||||
## mlops
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**huggingface-accelerate**](/user-guide/skills/optional/mlops/mlops-accelerate) | 最简单的分布式训练 API。仅需 4 行代码即可为任意 PyTorch 脚本添加分布式支持。统一支持 DeepSpeed/FSDP/Megatron/DDP 的 API。自动设备放置,混合精度(FP16/BF16/FP8)。交互式配置,单一启动命令。 |
|
||||
| [**axolotl**](/user-guide/skills/optional/mlops/mlops-training-axolotl) | Axolotl:基于 YAML 配置的 LLM 微调(LoRA、DPO、GRPO)。 |
|
||||
| [**chroma**](/user-guide/skills/optional/mlops/mlops-chroma) | 面向 AI 应用的开源 embedding(向量嵌入)数据库。存储 embedding 和元数据,执行向量及全文搜索,按元数据过滤。简洁的 4 函数 API,从 notebook 扩展至生产集群。适用于语义搜索、RAG 等场景。 |
|
||||
| [**clip**](/user-guide/skills/optional/mlops/mlops-clip) | OpenAI 连接视觉与语言的模型。支持零样本图像分类、图文匹配及跨模态检索。在 4 亿图文对上训练。适用于图像搜索、内容审核或视觉语言任务。 |
|
||||
| [**faiss**](/user-guide/skills/optional/mlops/mlops-faiss) | Facebook 用于高效相似性搜索和稠密向量聚类的库。支持数十亿向量、GPU 加速及多种索引类型(Flat、IVF、HNSW)。适用于快速 k-NN 搜索、大规模向量检索等场景。 |
|
||||
| [**optimizing-attention-flash**](/user-guide/skills/optional/mlops/mlops-flash-attention) | 使用 Flash Attention 优化 transformer 注意力机制,实现 2-4 倍加速和 10-20 倍显存降低。适用于训练/运行长序列(>512 token)transformer、遇到注意力 GPU 显存问题或需要更快推理的场景。 |
|
||||
| [**guidance**](/user-guide/skills/optional/mlops/mlops-guidance) | 使用 Guidance(微软研究院的约束生成框架)通过正则表达式和语法控制 LLM 输出,保证生成有效的 JSON/XML/代码,强制结构化格式,并构建多步骤工作流。 |
|
||||
| [**huggingface-tokenizers**](/user-guide/skills/optional/mlops/mlops-huggingface-tokenizers) | 为研究和生产优化的快速 tokenizer(分词器)。基于 Rust 实现,可在 20 秒内对 1GB 文本完成分词。支持 BPE、WordPiece 和 Unigram 算法。训练自定义词表、追踪对齐、处理填充/截断,与 HuggingFace 生态集成。 |
|
||||
| [**instructor**](/user-guide/skills/optional/mlops/mlops-instructor) | 使用 Instructor(久经考验的结构化输出库)从 LLM 响应中提取带 Pydantic 验证的结构化数据,自动重试失败的提取,以类型安全方式解析复杂 JSON,并流式传输部分结果。 |
|
||||
| [**lambda-labs-gpu-cloud**](/user-guide/skills/optional/mlops/mlops-lambda-labs) | 用于 ML 训练和推理的按需及预留 GPU 云实例。适用于需要通过简单 SSH 访问专用 GPU 实例、持久化文件系统或用于大规模训练的高性能多节点集群的场景。 |
|
||||
| [**llava**](/user-guide/skills/optional/mlops/mlops-llava) | 大型语言与视觉助手。支持视觉指令微调和基于图像的对话。结合 CLIP 视觉编码器与 Vicuna/LLaMA 语言模型。支持多轮图像对话、视觉问答及指令跟随。 |
|
||||
| [**modal-serverless-gpu**](/user-guide/skills/optional/mlops/mlops-modal) | 用于运行 ML 工作负载的 serverless GPU 云平台。适用于无需基础设施管理的按需 GPU 访问、将 ML 模型部署为 API 或运行自动扩缩容批处理任务的场景。 |
|
||||
| [**nemo-curator**](/user-guide/skills/optional/mlops/mlops-nemo-curator) | 面向 LLM 训练的 GPU 加速数据整理工具。支持文本/图像/视频/音频。具备模糊去重(快 16 倍)、质量过滤(30+ 启发式规则)、语义去重、PII 脱敏、NSFW 检测等功能,可跨 GPU 扩展。 |
|
||||
| [**outlines**](/user-guide/skills/optional/mlops/mlops-inference-outlines) | Outlines:结构化 JSON/正则表达式/Pydantic LLM 生成。 |
|
||||
| [**peft-fine-tuning**](/user-guide/skills/optional/mlops/mlops-peft) | 使用 LoRA、QLoRA 及 25+ 种方法对 LLM 进行参数高效微调(PEFT)。适用于在有限 GPU 显存下微调大型模型(7B-70B)、仅训练不到 1% 参数且精度损失极小,或进行多适配器服务的场景。 |
|
||||
| [**pinecone**](/user-guide/skills/optional/mlops/mlops-pinecone) | 面向生产 AI 应用的托管向量数据库。全托管、自动扩缩容,支持混合搜索(稠密+稀疏)、元数据过滤和命名空间。低延迟(p95 <100ms)。适用于生产 RAG、推荐系统等场景。 |
|
||||
| [**pytorch-fsdp**](/user-guide/skills/optional/mlops/mlops-pytorch-fsdp) | PyTorch FSDP 全分片数据并行训练专家指导 — 参数分片、混合精度、CPU 卸载、FSDP2。 |
|
||||
| [**pytorch-lightning**](/user-guide/skills/optional/mlops/mlops-pytorch-lightning) | 高层 PyTorch 框架,提供 Trainer 类、自动分布式训练(DDP/FSDP/DeepSpeed)、回调系统及极少样板代码。同一套代码可从笔记本扩展至超算。适用于希望训练循环简洁、同时保留完整 PyTorch 灵活性的场景。 |
|
||||
| [**qdrant-vector-search**](/user-guide/skills/optional/mlops/mlops-qdrant) | 高性能向量相似性搜索引擎,适用于 RAG 和语义搜索。适用于构建需要快速近邻搜索、带过滤的混合搜索或基于 Rust 高性能的可扩展向量存储的生产 RAG 系统。 |
|
||||
| [**sparse-autoencoder-training**](/user-guide/skills/optional/mlops/mlops-saelens) | 提供使用 SAELens 训练和分析稀疏自编码器(SAE)的指导,将神经网络激活分解为可解释特征。适用于发现可解释特征、分析叠加现象或研究神经网络内部结构的场景。 |
|
||||
| [**simpo-training**](/user-guide/skills/optional/mlops/mlops-simpo) | 用于 LLM 对齐的简单偏好优化(SimPO)。无需参考模型的 DPO 替代方案,性能更优(在 AlpacaEval 2.0 上提升 +6.4 分)。比 DPO 更高效。适用于希望简化偏好对齐流程的场景。 |
|
||||
| [**slime-rl-training**](/user-guide/skills/optional/mlops/mlops-slime) | 提供使用 slime(Megatron+SGLang 框架)进行 LLM RL 后训练的指导。适用于训练 GLM 模型、实现自定义数据生成工作流或需要紧密 Megatron-LM 集成以进行 RL 扩展的场景。 |
|
||||
| [**stable-diffusion-image-generation**](/user-guide/skills/optional/mlops/mlops-stable-diffusion) | 通过 HuggingFace Diffusers 使用 Stable Diffusion 模型进行最先进的文本到图像生成。适用于从文本 prompt 生成图像、图像到图像转换、图像修复或构建自定义扩散流水线的场景。 |
|
||||
| [**tensorrt-llm**](/user-guide/skills/optional/mlops/mlops-tensorrt-llm) | 使用 NVIDIA TensorRT 优化 LLM 推理,实现最大吞吐量和最低延迟。适用于在 NVIDIA GPU(A100/H100)上进行生产部署、需要比 PyTorch 快 10-100 倍的推理,或使用量化服务模型的场景。 |
|
||||
| [**distributed-llm-pretraining-torchtitan**](/user-guide/skills/optional/mlops/mlops-torchtitan) | 使用 torchtitan 进行 PyTorch 原生分布式 LLM 预训练,支持 4D 并行(FSDP2、TP、PP、CP)。适用于在 8 到 512+ GPU 上预训练 Llama 3.1、DeepSeek V3 或自定义模型,并使用 Float8、torch.compile 及分布式检查点的场景。 |
|
||||
| [**fine-tuning-with-trl**](/user-guide/skills/optional/mlops/mlops-training-trl-fine-tuning) | TRL:用于 LLM RLHF 的 SFT、DPO、PPO、GRPO 及奖励建模。 |
|
||||
| [**unsloth**](/user-guide/skills/optional/mlops/mlops-training-unsloth) | Unsloth:2-5 倍更快的 LoRA/QLoRA 微调,更低 VRAM 占用。 |
|
||||
| [**whisper**](/user-guide/skills/optional/mlops/mlops-whisper) | OpenAI 的通用语音识别模型。支持 99 种语言、转录、翻译为英语及语言识别。六种模型规格,从 tiny(39M 参数)到 large(1550M 参数)。适用于语音转文字、播客转录等场景。 |
|
||||
|
||||
## productivity
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**canvas**](/user-guide/skills/optional/productivity/productivity-canvas) | Canvas LMS 集成 — 使用 API token 认证获取已注册课程和作业。 |
|
||||
| [**here.now**](/user-guide/skills/optional/productivity/productivity-here-now) | 将静态站点发布至 {slug}.here.now,并将私有文件存储在云端 Drive 中以供 agent 间交接。 |
|
||||
| [**memento-flashcards**](/user-guide/skills/optional/productivity/productivity-memento-flashcards) | 间隔重复闪卡系统。从事实或文本创建卡片,通过 agent 评分的自由文本回答与闪卡对话,从 YouTube 字幕生成测验,使用自适应调度复习到期卡片,并支持导出/导入。 |
|
||||
| [**shop-app**](/user-guide/skills/optional/productivity/productivity-shop-app) | Shop.app:商品搜索、订单追踪、退货、重新下单。 |
|
||||
| [**shopify**](/user-guide/skills/optional/productivity/productivity-shopify) | 通过 curl 使用 Shopify Admin 和 Storefront GraphQL API。支持商品、订单、客户、库存、元字段。 |
|
||||
| [**siyuan**](/user-guide/skills/optional/productivity/productivity-siyuan) | 通过 curl 使用 SiYuan Note API,在自托管知识库中搜索、读取、创建和管理块与文档。 |
|
||||
| [**telephony**](/user-guide/skills/optional/productivity/productivity-telephony) | 为 Hermes 添加电话能力,无需修改核心工具。配置并持久化 Twilio 号码,发送和接收 SMS/MMS,拨打直接通话,并通过 Bland.ai 或 Vapi 发起 AI 驱动的外呼。 |
|
||||
|
||||
## research
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**bioinformatics**](/user-guide/skills/optional/research/research-bioinformatics) | 通往 bioSkills 和 ClawBio 400+ 生物信息学技能的入口。涵盖基因组学、转录组学、单细胞、变异检测、药物基因组学、宏基因组学、结构生物学等领域,按需获取特定领域参考资料。 |
|
||||
| [**darwinian-evolver**](/user-guide/skills/optional/research/research-darwinian-evolver) | 使用 Imbue 的进化循环演化 prompt/正则表达式/SQL/代码。 |
|
||||
| [**domain-intel**](/user-guide/skills/optional/research/research-domain-intel) | 使用 Python 标准库进行被动域名侦察。子域名发现、SSL 证书检查、WHOIS 查询、DNS 记录、域名可用性检测及批量多域名分析。无需 API 密钥。 |
|
||||
| [**drug-discovery**](/user-guide/skills/optional/research/research-drug-discovery) | 药物发现工作流的制药研究助手。在 ChEMBL 上搜索生物活性化合物,计算类药性(Lipinski Ro5、QED、TPSA、合成可及性),通过 OpenFDA 查询药物相互作用,解读 ADMET 属性。 |
|
||||
| [**duckduckgo-search**](/user-guide/skills/optional/research/research-duckduckgo-search) | 通过 DuckDuckGo 免费网络搜索 — 文本、新闻、图片、视频。无需 API 密钥。优先使用已安装的 `ddgs` CLI;仅在确认当前运行时中 `ddgs` 可用后才使用 Python DDGS 库。 |
|
||||
| [**gitnexus-explorer**](/user-guide/skills/optional/research/research-gitnexus-explorer) | 使用 GitNexus 为代码库建立索引,并通过 Web UI + Cloudflare 隧道提供交互式知识图谱。 |
|
||||
| [**osint-investigation**](/user-guide/skills/optional/research/research-osint-investigation) | 公开记录 OSINT 调查框架 — SEC EDGAR 文件、USAspending 合同、参议院游说记录、OFAC 制裁、ICIJ 离岸泄露、纽约市房产记录(ACRIS)、OpenCorporates 注册信息、CourtListener 法院记录、Wayback Machine 等。 |
|
||||
| [**parallel-cli**](/user-guide/skills/optional/research/research-parallel-cli) | Parallel CLI 的可选厂商技能 — agent 原生网络搜索、提取、深度研究、数据增强、FindAll 及监控。优先使用 JSON 输出和非交互式流程。 |
|
||||
| [**qmd**](/user-guide/skills/optional/research/research-qmd) | 使用 qmd(一款结合 BM25、向量搜索和 LLM 重排序的混合检索引擎)在本地搜索个人知识库、笔记、文档和会议记录。支持 CLI 和 MCP 集成。 |
|
||||
| [**scrapling**](/user-guide/skills/optional/research/research-scrapling) | 使用 Scrapling 进行网页抓取 — 通过 CLI 和 Python 实现 HTTP 获取、隐身浏览器自动化、Cloudflare 绕过及爬虫抓取。 |
|
||||
| [**searxng-search**](/user-guide/skills/optional/research/research-searxng-search) | 通过 SearXNG 免费元搜索 — 聚合 70+ 搜索引擎的结果。可自托管或使用公共实例。无需 API 密钥。当网络搜索工具集不可用时自动回退。 |
|
||||
|
||||
## security
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**1password**](/user-guide/skills/optional/security/security-1password) | 配置并使用 1Password CLI(op)。适用于安装 CLI、启用桌面应用集成、登录及为命令读取/注入密钥的场景。 |
|
||||
| [**oss-forensics**](/user-guide/skills/optional/security/security-oss-forensics) | 针对 GitHub 仓库的供应链调查、证据恢复和取证分析。涵盖已删除提交恢复、强制推送检测、IOC 提取、多源证据收集、假设形成/验证等。 |
|
||||
| [**sherlock**](/user-guide/skills/optional/security/security-sherlock) | 跨 400+ 社交网络的 OSINT 用户名搜索。通过用户名追踪社交媒体账号。 |
|
||||
|
||||
## software-development
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**rest-graphql-debug**](/user-guide/skills/optional/software-development/software-development-rest-graphql-debug) | 调试 REST/GraphQL API:状态码、认证、schema、问题复现。 |
|
||||
|
||||
## web-development
|
||||
|
||||
| 技能 | 描述 |
|
||||
|-------|-------------|
|
||||
| [**page-agent**](/user-guide/skills/optional/web-development/web-development-page-agent) | 将 alibaba/page-agent 嵌入您自己的 Web 应用 — 一个纯 JavaScript 页内 GUI agent,以单个 `<script>` 标签或 npm 包形式提供,让您网站的终端用户可以用自然语言驱动 UI(如"点击登录,填写用户名...")。 |
|
||||
|
||||
---
|
||||
|
||||
## 贡献可选技能
|
||||
|
||||
向仓库添加新的可选技能:
|
||||
|
||||
1. 在 `optional-skills/<category>/<skill-name>/` 下创建目录
|
||||
2. 添加包含标准 frontmatter 的 `SKILL.md`(name、description、version、author)
|
||||
3. 在 `references/`、`templates/` 或 `scripts/` 子目录中包含所有支撑文件
|
||||
4. 提交 pull request — 合并后该技能将出现在本目录并获得专属文档页面
|
||||
+467
@@ -0,0 +1,467 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
# Profile 命令参考
|
||||
|
||||
本页涵盖所有与 [Hermes profiles](../user-guide/profiles.md) 相关的命令。通用 CLI 命令请参阅 [CLI 命令参考](./cli-commands.md)。
|
||||
|
||||
## `hermes profile`
|
||||
|
||||
```bash
|
||||
hermes profile <subcommand>
|
||||
```
|
||||
|
||||
管理 profile 的顶级命令。不带子命令运行 `hermes profile` 将显示帮助信息。
|
||||
|
||||
| 子命令 | 描述 |
|
||||
|------------|-------------|
|
||||
| `list` | 列出所有 profile。 |
|
||||
| `use` | 设置当前活跃(默认)profile。 |
|
||||
| `create` | 创建新 profile。 |
|
||||
| `delete` | 删除 profile。 |
|
||||
| `show` | 显示 profile 详情。 |
|
||||
| `alias` | 重新生成 profile 的 shell alias。 |
|
||||
| `rename` | 重命名 profile。 |
|
||||
| `export` | 将 profile 导出为 tar.gz 归档文件。 |
|
||||
| `import` | 从 tar.gz 归档文件导入 profile。 |
|
||||
| `install` | 从 git URL 或本地目录安装 profile 发行版。参见 [Profile 发行版](../user-guide/profile-distributions.md)。 |
|
||||
| `update` | 重新拉取发行版管理的 profile 并重新应用其 bundle。 |
|
||||
| `info` | 显示 profile 的发行版元数据(来源 URL、commit、最后更新时间)。 |
|
||||
|
||||
## `hermes profile list`
|
||||
|
||||
```bash
|
||||
hermes profile list
|
||||
```
|
||||
|
||||
列出所有 profile。当前活跃的 profile 以 `*` 标记。
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
$ hermes profile list
|
||||
default
|
||||
* work
|
||||
dev
|
||||
personal
|
||||
```
|
||||
|
||||
无选项。
|
||||
|
||||
## `hermes profile use`
|
||||
|
||||
```bash
|
||||
hermes profile use <name>
|
||||
```
|
||||
|
||||
将 `<name>` 设为活跃 profile。此后所有 `hermes` 命令(不带 `-p`)都将使用该 profile。
|
||||
|
||||
| 参数 | 描述 |
|
||||
|----------|-------------|
|
||||
| `<name>` | 要激活的 profile 名称。使用 `default` 可返回基础 profile。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes profile use work
|
||||
hermes profile use default
|
||||
```
|
||||
|
||||
## `hermes profile create`
|
||||
|
||||
```bash
|
||||
hermes profile create <name> [options]
|
||||
```
|
||||
|
||||
创建新 profile。
|
||||
|
||||
| 参数 / 选项 | 描述 |
|
||||
|-------------------|-------------|
|
||||
| `<name>` | 新 profile 的名称。必须是合法的目录名(字母数字、连字符、下划线)。 |
|
||||
| `--clone` | 从当前 profile 复制 `config.yaml`、`.env`、`SOUL.md` 和 skills。 |
|
||||
| `--clone-all` | 从当前 profile 复制所有内容(config、memories、skills、cron、plugins)。会排除每个 profile 自己的历史数据:sessions、`state.db`、backups、state-snapshots、checkpoints。 |
|
||||
| `--clone-from <profile>` | 从指定 profile 克隆 config/skills/SOUL,而非当前 profile。除非与 `--clone-all` 配合使用,否则会隐含 `--clone`。 |
|
||||
| `--no-alias` | 跳过 wrapper 脚本创建。 |
|
||||
| `--description "<text>"` | 一到两句话描述该 profile 的用途。供 kanban 编排器根据角色而非仅凭 profile 名称来路由任务。可跳过,稍后通过 `hermes profile describe` 添加。持久化保存在 `<profile_dir>/profile.yaml` 中。 |
|
||||
| `--no-skills` | 创建一个**空** profile,不启用任何内置 skill。会在 profile 目录中写入 `.no-bundled-skills` 标记,使后续 `hermes update` 不再重新植入内置 skill 集,且拒绝与 `--clone`、`--clone-from` 或 `--clone-all` 组合使用(因为这些选项会复制 skill)。适用于不应继承完整 skill 目录的窄化编排器 profile 或沙箱 profile。 |
|
||||
|
||||
创建 profile **不会**将该 profile 目录设为终端命令的默认项目/工作目录。如需让某个 profile 从特定项目目录启动,请在该 profile 的 `config.yaml` 中设置 `terminal.cwd`。
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
# 空白 profile — 需要完整配置
|
||||
hermes profile create mybot
|
||||
|
||||
# 仅从当前 profile 克隆 config
|
||||
hermes profile create work --clone
|
||||
|
||||
# 从当前 profile 克隆所有内容
|
||||
hermes profile create backup --clone-all
|
||||
|
||||
# 从指定 profile 克隆 config
|
||||
hermes profile create work2 --clone-from work
|
||||
|
||||
# 从指定 profile 克隆所有内容
|
||||
hermes profile create work2-backup --clone-from work --clone-all
|
||||
```
|
||||
|
||||
## `hermes profile describe`
|
||||
|
||||
```bash
|
||||
hermes profile describe [<name>] [options]
|
||||
```
|
||||
|
||||
读取或设置 profile 的描述。描述由 kanban 编排器使用,用于根据每个 profile 的能力路由任务,而非仅凭 profile 名称猜测。持久化保存在 `<profile_dir>/profile.yaml` 中,重启后仍有效,并与 gateway 共享。
|
||||
|
||||
不带任何标志时,打印当前描述(若为空则显示 `(no description set for '<name>')`)。
|
||||
|
||||
| 参数 / 选项 | 描述 |
|
||||
|-------------------|-------------|
|
||||
| `<name>` | 要描述的 profile。除非使用 `--all --auto`,否则必填。 |
|
||||
| `--text "<text>"` | 将描述设置为此精确文本(用户编写)。覆盖已有描述。 |
|
||||
| `--auto` | 通过辅助 LLM 自动生成 1-2 句描述,依据为该 profile 已安装的 skill、配置的模型和名称。在 `config.yaml` 的 `auxiliary.profile_describer` 下配置模型。自动生成的描述会标记 `description_auto: true`,以便 dashboard 标记供审查。 |
|
||||
| `--overwrite` | 与 `--auto` 配合使用时,也替换用户编写的描述(默认:跳过已明确设置描述的 profile)。 |
|
||||
| `--all` | 与 `--auto` 配合使用时,扫描所有缺少描述的 profile。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
# 读取当前描述
|
||||
hermes profile describe researcher
|
||||
|
||||
# 显式设置描述
|
||||
hermes profile describe researcher --text "Reads source code and writes findings."
|
||||
|
||||
# 让 LLM 生成描述
|
||||
hermes profile describe researcher --auto
|
||||
|
||||
# 为所有没有描述的 profile 填充描述
|
||||
hermes profile describe --all --auto
|
||||
```
|
||||
|
||||
## `hermes profile delete`
|
||||
|
||||
```bash
|
||||
hermes profile delete <name> [options]
|
||||
```
|
||||
|
||||
删除 profile 并移除其 shell alias。
|
||||
|
||||
| 参数 / 选项 | 描述 |
|
||||
|-------------------|-------------|
|
||||
| `<name>` | 要删除的 profile。 |
|
||||
| `--yes`, `-y` | 跳过确认提示。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes profile delete mybot
|
||||
hermes profile delete mybot --yes
|
||||
```
|
||||
|
||||
:::warning
|
||||
此操作将永久删除 profile 的整个目录,包括所有 config、memories、sessions 和 skills。无法删除当前活跃的 profile。
|
||||
:::
|
||||
|
||||
## `hermes profile show`
|
||||
|
||||
```bash
|
||||
hermes profile show <name>
|
||||
```
|
||||
|
||||
显示 profile 的详细信息,包括其主目录、配置的模型、gateway 状态、skill 数量和配置文件状态。
|
||||
|
||||
此处显示的是 profile 的 Hermes 主目录,而非终端工作目录。终端命令从 `terminal.cwd` 启动(或在本地后端 `cwd: "."` 时从启动目录启动)。
|
||||
|
||||
| 参数 | 描述 |
|
||||
|----------|-------------|
|
||||
| `<name>` | 要查看的 profile。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
$ hermes profile show work
|
||||
Profile: work
|
||||
Path: ~/.hermes/profiles/work
|
||||
Model: anthropic/claude-sonnet-4 (anthropic)
|
||||
Gateway: stopped
|
||||
Skills: 12
|
||||
.env: exists
|
||||
SOUL.md: exists
|
||||
Alias: ~/.local/bin/work
|
||||
```
|
||||
|
||||
## `hermes profile alias`
|
||||
|
||||
```bash
|
||||
hermes profile alias <name> [options]
|
||||
```
|
||||
|
||||
重新生成位于 `~/.local/bin/<name>` 的 shell alias 脚本。适用于 alias 被意外删除,或移动 Hermes 安装目录后需要更新的情况。
|
||||
|
||||
| 参数 / 选项 | 描述 |
|
||||
|-------------------|-------------|
|
||||
| `<name>` | 要创建/更新 alias 的 profile。 |
|
||||
| `--remove` | 移除 wrapper 脚本而非创建。 |
|
||||
| `--name <alias>` | 自定义 alias 名称(默认:profile 名称)。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes profile alias work
|
||||
# 创建/更新 ~/.local/bin/work
|
||||
|
||||
hermes profile alias work --name mywork
|
||||
# 创建 ~/.local/bin/mywork
|
||||
|
||||
hermes profile alias work --remove
|
||||
# 移除 wrapper 脚本
|
||||
```
|
||||
|
||||
## `hermes profile rename`
|
||||
|
||||
```bash
|
||||
hermes profile rename <old-name> <new-name>
|
||||
```
|
||||
|
||||
重命名 profile,同时更新目录和 shell alias。
|
||||
|
||||
| 参数 | 描述 |
|
||||
|----------|-------------|
|
||||
| `<old-name>` | 当前 profile 名称。 |
|
||||
| `<new-name>` | 新 profile 名称。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes profile rename mybot assistant
|
||||
# ~/.hermes/profiles/mybot → ~/.hermes/profiles/assistant
|
||||
# ~/.local/bin/mybot → ~/.local/bin/assistant
|
||||
```
|
||||
|
||||
## `hermes profile export`
|
||||
|
||||
```bash
|
||||
hermes profile export <name> [options]
|
||||
```
|
||||
|
||||
将 profile 导出为压缩的 tar.gz 归档文件。
|
||||
|
||||
| 参数 / 选项 | 描述 |
|
||||
|-------------------|-------------|
|
||||
| `<name>` | 要导出的 profile。 |
|
||||
| `-o`, `--output <path>` | 输出文件路径(默认:`<name>.tar.gz`)。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes profile export work
|
||||
# 在当前目录创建 work.tar.gz
|
||||
|
||||
hermes profile export work -o ./work-2026-03-29.tar.gz
|
||||
```
|
||||
|
||||
## `hermes profile import`
|
||||
|
||||
```bash
|
||||
hermes profile import <archive> [options]
|
||||
```
|
||||
|
||||
从 tar.gz 归档文件导入 profile。
|
||||
|
||||
| 参数 / 选项 | 描述 |
|
||||
|-------------------|-------------|
|
||||
| `<archive>` | 要导入的 tar.gz 归档文件路径。 |
|
||||
| `--name <name>` | 导入后的 profile 名称(默认:从归档文件推断)。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes profile import ./work-2026-03-29.tar.gz
|
||||
# 从归档文件推断 profile 名称
|
||||
|
||||
hermes profile import ./work-2026-03-29.tar.gz --name work-restored
|
||||
```
|
||||
|
||||
## 发行版命令
|
||||
|
||||
:::tip
|
||||
**初次接触发行版?** 请先阅读 [Profile 发行版用户指南](../user-guide/profile-distributions.md) — 其中通过完整示例介绍了原因、时机和方法。以下章节是在你已知需求时使用的简明 CLI 参考。
|
||||
:::
|
||||
|
||||
发行版将 profile 转变为可共享、有版本的制品,以 **git 仓库**形式发布。接收方只需一条命令即可安装发行版,并可在不影响本地 memories、sessions 或凭据的情况下就地更新。
|
||||
|
||||
`auth.json` 和 `.env` 永远不属于发行版的一部分 — 它们保留在安装用户的机器上。
|
||||
|
||||
接收方的用户数据(memories、sessions、auth、对 `.env` 的自有编辑)在初次安装和后续更新中始终得到保留。
|
||||
|
||||
:::info
|
||||
`hermes profile export` / `import` 仍是在**本机进行 profile 本地备份和恢复**的正确命令。发行版(`install` / `update` / `info`)是独立概念:通过 git 分发 profile,供他人安装。
|
||||
:::
|
||||
|
||||
### `hermes profile install`
|
||||
|
||||
```bash
|
||||
hermes profile install <source> [--name <name>] [--alias] [--force] [--yes]
|
||||
```
|
||||
|
||||
从 git URL 或本地目录安装 profile 发行版。
|
||||
|
||||
| 选项 | 描述 |
|
||||
|--------|-------------|
|
||||
| `<source>` | Git URL(`github.com/user/repo`、`https://...`、`git@...`、`ssh://`、`git://`)或包含 `distribution.yaml` 的本地目录根路径。 |
|
||||
| `--name NAME` | 覆盖 manifest 中的 profile 名称。 |
|
||||
| `--alias` | 同时创建 shell wrapper(例如 `telemetry` → `hermes -p telemetry`)。 |
|
||||
| `--force` | 覆盖同名的已有 profile。用户数据仍会保留。 |
|
||||
| `-y`, `--yes` | 跳过 manifest 预览确认提示。 |
|
||||
|
||||
安装程序会显示 manifest、列出所需的环境变量,并在询问确认前提示 cron 任务信息。所需环境变量会写入 `.env.EXAMPLE` 文件,复制为 `.env` 后填写即可。
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
# 从 GitHub 仓库安装(简写)
|
||||
hermes profile install github.com/kyle/telemetry-distribution --alias
|
||||
|
||||
# 从完整 HTTPS git URL 安装
|
||||
hermes profile install https://github.com/kyle/telemetry-distribution.git
|
||||
|
||||
# 从 SSH 安装
|
||||
hermes profile install git@github.com:kyle/telemetry-distribution.git
|
||||
|
||||
# 开发时从本地目录安装
|
||||
hermes profile install ./telemetry/
|
||||
```
|
||||
|
||||
### `hermes profile update`
|
||||
|
||||
```bash
|
||||
hermes profile update <name> [--force-config] [--yes]
|
||||
```
|
||||
|
||||
从记录的来源重新克隆发行版并应用更新。发行版所有的文件(SOUL.md、skills/、cron/、mcp.json)会被覆盖;用户数据(memories、sessions、auth、.env)不会被修改。
|
||||
|
||||
默认保留 `config.yaml` 以保持本地覆盖设置。传入 `--force-config` 可将其重置为发行版附带的 config。
|
||||
|
||||
### `hermes profile info`
|
||||
|
||||
```bash
|
||||
hermes profile info <name>
|
||||
```
|
||||
|
||||
打印 profile 的发行版 manifest — 名称、版本、所需 Hermes 版本、作者、环境变量要求、来源 URL/路径,以及发行版最后一次 `install` 或 `update` 时记录的 `Installed:` 时间戳。适用于安装前检查共享 profile 的需求,以及发现"该 profile 已安装 6 个月未更新"等情况。
|
||||
|
||||
`hermes profile list` 也会在 `Distribution` 列中显示发行版名称和版本,`hermes profile show <name>` / `delete <name>` 会显示来源 URL,让你一眼看出哪些 profile 来自 git 仓库,哪些是本地创建的。
|
||||
|
||||
### 私有发行版
|
||||
|
||||
私有 git 仓库无需额外配置即可作为发行版来源 — 安装时会调用系统的 `git` 二进制文件,因此 shell 已配置的任何认证方式(SSH 密钥、`git credential` helper、GitHub CLI 存储的 HTTPS 凭据)均可透明生效。
|
||||
|
||||
```bash
|
||||
# 使用 SSH 密钥,与普通 `git clone` 相同
|
||||
hermes profile install git@github.com:your-org/internal-assistant.git
|
||||
|
||||
# 使用 git credential helper
|
||||
hermes profile install https://github.com/your-org/internal-assistant.git
|
||||
```
|
||||
|
||||
如果克隆时在终端交互式提示输入凭据,该提示会正常显示。请先按照对同一仓库执行 `git clone` 的方式配置好认证,再执行安装。
|
||||
|
||||
### 发行版 manifest(`distribution.yaml`)
|
||||
|
||||
每个发行版在其仓库根目录都有一个 `distribution.yaml`:
|
||||
|
||||
```yaml
|
||||
name: telemetry
|
||||
version: 0.1.0
|
||||
description: "Compliance monitoring harness"
|
||||
hermes_requires: ">=0.12.0"
|
||||
author: "Your Name"
|
||||
license: "MIT"
|
||||
env_requires:
|
||||
- name: OPENAI_API_KEY
|
||||
description: "OpenAI API key"
|
||||
required: true
|
||||
- name: GRAPHITI_MCP_URL
|
||||
description: "Memory graph URL"
|
||||
required: false
|
||||
default: "http://127.0.0.1:8000/sse"
|
||||
distribution_owned: # optional; defaults to SOUL.md, config.yaml,
|
||||
# mcp.json, skills/, cron/, distribution.yaml
|
||||
- SOUL.md
|
||||
- skills/compliance/
|
||||
- cron/
|
||||
```
|
||||
|
||||
`hermes_requires` 支持 `>=`、`<=`、`==`、`!=`、`>`、`<`,或裸版本号(视为 `>=`)。若当前 Hermes 版本不满足规格,安装将失败并给出明确错误。
|
||||
|
||||
`distribution_owned` 为可选项。若设置,更新时仅替换这些路径;profile 中的其他内容保持用户所有。若省略,则应用上述默认值。
|
||||
|
||||
### 发布发行版
|
||||
|
||||
编写发行版就是一次 git push:
|
||||
|
||||
1. 在你的 profile 目录中创建 `distribution.yaml`,至少包含 `name` 和 `version`。
|
||||
2. 初始化 git 仓库(或使用已有仓库),推送到 GitHub / GitLab / 任何 Hermes 可克隆的托管平台。
|
||||
3. 告知接收方运行 `hermes profile install <your-repo-url>`。
|
||||
|
||||
使用 git tag 进行版本化发布 — 克隆 `HEAD` 的接收方将获得最新状态,你也可以随时在 manifest 中更新 `version:`。
|
||||
|
||||
## `hermes -p` / `hermes --profile`
|
||||
|
||||
```bash
|
||||
hermes -p <name> <command> [options]
|
||||
hermes --profile <name> <command> [options]
|
||||
```
|
||||
|
||||
全局标志,用于在不更改默认 profile 的情况下,在指定 profile 下运行任意 Hermes 命令。仅在该命令执行期间覆盖活跃 profile。
|
||||
|
||||
| 选项 | 描述 |
|
||||
|--------|-------------|
|
||||
| `-p <name>`, `--profile <name>` | 本次命令使用的 profile。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
hermes -p work chat -q "Check the server status"
|
||||
hermes --profile dev gateway start
|
||||
hermes -p personal skills list
|
||||
hermes -p work config edit
|
||||
```
|
||||
|
||||
## `hermes completion`
|
||||
|
||||
```bash
|
||||
hermes completion <shell>
|
||||
```
|
||||
|
||||
生成 shell 补全脚本。包含对 profile 名称和 profile 子命令的补全。
|
||||
|
||||
| 参数 | 描述 |
|
||||
|----------|-------------|
|
||||
| `<shell>` | 要生成补全脚本的 shell:`bash`、`zsh` 或 `fish`。 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```bash
|
||||
# 安装补全脚本
|
||||
hermes completion bash >> ~/.bashrc
|
||||
hermes completion zsh >> ~/.zshrc
|
||||
hermes completion fish > ~/.config/fish/completions/hermes.fish
|
||||
|
||||
# 重新加载 shell
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
安装后,Tab 补全适用于:
|
||||
- `hermes profile <TAB>` — 子命令(list、use、create 等)
|
||||
- `hermes profile use <TAB>` — profile 名称
|
||||
- `hermes -p <TAB>` — profile 名称
|
||||
|
||||
## 另请参阅
|
||||
|
||||
- [Profiles 用户指南](../user-guide/profiles.md)
|
||||
- [CLI 命令参考](./cli-commands.md)
|
||||
- [FAQ — Profiles 章节](./faq.md#profiles)
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
title: "内置技能目录"
|
||||
description: "随 Hermes Agent 附带的内置技能目录"
|
||||
---
|
||||
|
||||
# 内置技能目录
|
||||
|
||||
Hermes 附带一个大型内置技能库,安装时会复制到 `~/.hermes/skills/`。下方每个技能均链接至专属页面,包含完整定义、配置和用法说明。
|
||||
|
||||
Hermes 在执行 `hermes update` 时也会同步内置技能,但同步清单会尊重本地删除和用户编辑。如果此处列出的某个技能在你的 `~/.hermes/skills/` 目录树中缺失,它仍随 Hermes 一同发布;可通过 `hermes skills reset <name> --restore` 恢复。
|
||||
|
||||
如果某个技能未出现在此列表中但存在于仓库中,目录由 `website/scripts/generate-skill-docs.py` 重新生成。
|
||||
|
||||
## apple
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`apple-notes`](/user-guide/skills/bundled/apple/apple-apple-notes) | 通过 memo CLI 管理 Apple Notes:创建、搜索、编辑。 | `apple/apple-notes` |
|
||||
| [`apple-reminders`](/user-guide/skills/bundled/apple/apple-apple-reminders) | 通过 remindctl 操作 Apple Reminders:添加、列出、完成。 | `apple/apple-reminders` |
|
||||
| [`findmy`](/user-guide/skills/bundled/apple/apple-findmy) | 在 macOS 上通过 FindMy.app 追踪 Apple 设备/AirTag。 | `apple/findmy` |
|
||||
| [`imessage`](/user-guide/skills/bundled/apple/apple-imessage) | 在 macOS 上通过 imsg CLI 发送和接收 iMessage/SMS。 | `apple/imessage` |
|
||||
| [`macos-computer-use`](/user-guide/skills/bundled/apple/apple-macos-computer-use) | 在后台驱动 macOS 桌面——截图、鼠标、键盘、滚动、拖拽——不抢占用户的光标、键盘焦点或 Space。适用于任何支持工具调用的模型。每当需要 `computer_use` 工具时加载此技能。 | `apple/macos-computer-use` |
|
||||
|
||||
## autonomous-ai-agents
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`claude-code`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-claude-code) | 将编码任务委托给 Claude Code CLI(功能开发、PR)。 | `autonomous-ai-agents/claude-code` |
|
||||
| [`codex`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-codex) | 将编码任务委托给 OpenAI Codex CLI(功能开发、PR)。 | `autonomous-ai-agents/codex` |
|
||||
| [`hermes-agent`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent) | 配置、扩展或贡献 Hermes Agent。 | `autonomous-ai-agents/hermes-agent` |
|
||||
| [`opencode`](/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-opencode) | 将编码任务委托给 OpenCode CLI(功能开发、PR 审查)。 | `autonomous-ai-agents/opencode` |
|
||||
|
||||
## creative
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`architecture-diagram`](/user-guide/skills/bundled/creative/creative-architecture-diagram) | 以 HTML 形式生成深色主题的 SVG 架构/云/基础设施图。 | `creative/architecture-diagram` |
|
||||
| [`ascii-art`](/user-guide/skills/bundled/creative/creative-ascii-art) | ASCII 艺术:pyfiglet、cowsay、boxes、图像转 ASCII。 | `creative/ascii-art` |
|
||||
| [`ascii-video`](/user-guide/skills/bundled/creative/creative-ascii-video) | ASCII 视频:将视频/音频转换为彩色 ASCII MP4/GIF。 | `creative/ascii-video` |
|
||||
| [`baoyu-infographic`](/user-guide/skills/bundled/creative/creative-baoyu-infographic) | 信息图(可视化):21 种布局 × 21 种风格。 | `creative/baoyu-infographic` |
|
||||
| [`claude-design`](/user-guide/skills/bundled/creative/creative-claude-design) | 设计一次性 HTML 制品(落地页、幻灯片、原型)。 | `creative/claude-design` |
|
||||
| [`comfyui`](/user-guide/skills/bundled/creative/creative-comfyui) | 使用 ComfyUI 生成图像、视频和音频——安装、启动、管理节点/模型、运行带参数注入的工作流。使用官方 comfy-cli 管理生命周期,通过 REST/WebSocket API 直接执行。 | `creative/comfyui` |
|
||||
| [`design-md`](/user-guide/skills/bundled/creative/creative-design-md) | 编写/验证/导出 Google 的 DESIGN.md token 规范文件。 | `creative/design-md` |
|
||||
| [`excalidraw`](/user-guide/skills/bundled/creative/creative-excalidraw) | 手绘风格的 Excalidraw JSON 图表(架构、流程、时序)。 | `creative/excalidraw` |
|
||||
| [`humanizer`](/user-guide/skills/bundled/creative/creative-humanizer) | 人性化文本:去除 AI 腔,加入真实语气。 | `creative/humanizer` |
|
||||
| [`manim-video`](/user-guide/skills/bundled/creative/creative-manim-video) | Manim CE 动画:3Blue1Brown 风格数学/算法视频。 | `creative/manim-video` |
|
||||
| [`p5js`](/user-guide/skills/bundled/creative/creative-p5js) | p5.js 草图:生成艺术、着色器、交互、3D。 | `creative/p5js` |
|
||||
| [`popular-web-designs`](/user-guide/skills/bundled/creative/creative-popular-web-designs) | 54 种真实设计系统(Stripe、Linear、Vercel)的 HTML/CSS 实现。 | `creative/popular-web-designs` |
|
||||
| [`pretext`](/user-guide/skills/bundled/creative/creative-pretext) | 使用 @chenglou/pretext 构建创意浏览器 demo——无 DOM 的文本布局,支持 ASCII 艺术、绕障碍物的排版流、文字即几何游戏、动态排版和文字驱动的生成艺术。生成单文件 HTML。 | `creative/pretext` |
|
||||
| [`sketch`](/user-guide/skills/bundled/creative/creative-sketch) | 一次性 HTML 原型:生成 2-3 个设计变体供对比。 | `creative/sketch` |
|
||||
| [`songwriting-and-ai-music`](/user-guide/skills/bundled/creative/creative-songwriting-and-ai-music) | 歌曲创作技巧与 Suno AI 音乐 prompt(提示词)。 | `creative/songwriting-and-ai-music` |
|
||||
| [`touchdesigner-mcp`](/user-guide/skills/bundled/creative/creative-touchdesigner-mcp) | 通过 twozero MCP 控制运行中的 TouchDesigner 实例——创建算子、设置参数、连接节点、执行 Python、构建实时视觉效果。36 个原生工具。 | `creative/touchdesigner-mcp` |
|
||||
|
||||
## data-science
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`jupyter-live-kernel`](/user-guide/skills/bundled/data-science/data-science-jupyter-live-kernel) | 通过实时 Jupyter kernel(hamelnb)进行迭代式 Python 开发。 | `data-science/jupyter-live-kernel` |
|
||||
|
||||
## devops
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`kanban-orchestrator`](/user-guide/skills/bundled/devops/devops-kanban-orchestrator) | 面向编排器(orchestrator)配置文件的分解策略与反诱惑规则,用于通过 Kanban 路由工作。"不要自己做工作"规则和基本生命周期会自动注入每个 Kanban worker 的系统 prompt;如需更深入的细节,请加载此技能。 | `devops/kanban-orchestrator` |
|
||||
| [`kanban-worker`](/user-guide/skills/bundled/devops/devops-kanban-worker) | Hermes Kanban worker 的陷阱、示例和边界情况。生命周期本身会作为 `KANBAN_GUIDANCE` 自动注入每个 worker 的系统 prompt(来自 `agent/prompt_builder.py`);当需要更深入细节时加载此技能。 | `devops/kanban-worker` |
|
||||
|
||||
## dogfood
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`dogfood`](/user-guide/skills/bundled/dogfood/dogfood-dogfood) | Web 应用探索性 QA:发现 bug、收集证据、生成报告。 | `dogfood` |
|
||||
|
||||
## email
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`himalaya`](/user-guide/skills/bundled/email/email-himalaya) | Himalaya CLI:在终端中收发 IMAP/SMTP 邮件。 | `email/himalaya` |
|
||||
|
||||
## gaming
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
|
||||
## github
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`codebase-inspection`](/user-guide/skills/bundled/github/github-codebase-inspection) | 使用 pygount 检查代码库:代码行数、语言、占比。 | `github/codebase-inspection` |
|
||||
| [`github-auth`](/user-guide/skills/bundled/github/github-github-auth) | GitHub 认证配置:HTTPS token、SSH 密钥、gh CLI 登录。 | `github/github-auth` |
|
||||
| [`github-code-review`](/user-guide/skills/bundled/github/github-github-code-review) | 审查 PR:通过 gh 或 REST API 查看 diff、添加行内评论。 | `github/github-code-review` |
|
||||
| [`github-issues`](/user-guide/skills/bundled/github/github-github-issues) | 通过 gh 或 REST API 创建、分类、标记、分配 GitHub issue。 | `github/github-issues` |
|
||||
| [`github-pr-workflow`](/user-guide/skills/bundled/github/github-github-pr-workflow) | GitHub PR 生命周期:分支、提交、开启、CI、合并。 | `github/github-pr-workflow` |
|
||||
| [`github-repo-management`](/user-guide/skills/bundled/github/github-github-repo-management) | 克隆/创建/fork 仓库;管理远程、发布版本。 | `github/github-repo-management` |
|
||||
|
||||
## mcp
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
|
||||
## media
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`gif-search`](/user-guide/skills/bundled/media/media-gif-search) | 通过 curl + jq 从 Tenor 搜索/下载 GIF。 | `media/gif-search` |
|
||||
| [`heartmula`](/user-guide/skills/bundled/media/media-heartmula) | HeartMuLa:根据歌词 + 标签生成类 Suno 风格的歌曲。 | `media/heartmula` |
|
||||
| [`songsee`](/user-guide/skills/bundled/media/media-songsee) | 通过 CLI 生成音频频谱图/特征(mel、chroma、MFCC)。 | `media/songsee` |
|
||||
| [`youtube-content`](/user-guide/skills/bundled/media/media-youtube-content) | 将 YouTube 字幕转换为摘要、推文串、博客文章。 | `media/youtube-content` |
|
||||
|
||||
## mlops
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`audiocraft-audio-generation`](/user-guide/skills/bundled/mlops/mlops-models-audiocraft) | AudioCraft:MusicGen 文本转音乐、AudioGen 文本转音效。 | `mlops/models/audiocraft` |
|
||||
| [`huggingface-hub`](/user-guide/skills/bundled/mlops/mlops-huggingface-hub) | HuggingFace hf CLI:搜索/下载/上传模型、数据集。 | `mlops/huggingface-hub` |
|
||||
| [`llama-cpp`](/user-guide/skills/bundled/mlops/mlops-inference-llama-cpp) | llama.cpp 本地 GGUF 推理 + HF Hub 模型发现。 | `mlops/inference/llama-cpp` |
|
||||
| [`evaluating-llms-harness`](/user-guide/skills/bundled/mlops/mlops-evaluation-lm-evaluation-harness) | lm-eval-harness:对 LLM 进行基准测试(MMLU、GSM8K 等)。 | `mlops/evaluation/lm-evaluation-harness` |
|
||||
| [`segment-anything-model`](/user-guide/skills/bundled/mlops/mlops-models-segment-anything) | SAM:通过点、框、掩码进行零样本图像分割。 | `mlops/models/segment-anything` |
|
||||
| [`serving-llms-vllm`](/user-guide/skills/bundled/mlops/mlops-inference-vllm) | vLLM:高吞吐量 LLM 服务、OpenAI API 兼容、量化支持。 | `mlops/inference/vllm` |
|
||||
| [`weights-and-biases`](/user-guide/skills/bundled/mlops/mlops-evaluation-weights-and-biases) | W&B:记录 ML 实验、超参数搜索、模型注册表、仪表盘。 | `mlops/evaluation/weights-and-biases` |
|
||||
|
||||
## note-taking
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`obsidian`](/user-guide/skills/bundled/note-taking/note-taking-obsidian) | 在 Obsidian 知识库中读取、搜索、创建和编辑笔记。 | `note-taking/obsidian` |
|
||||
|
||||
## productivity
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`airtable`](/user-guide/skills/bundled/productivity/productivity-airtable) | 通过 curl 调用 Airtable REST API:记录增删改查、过滤、upsert。 | `productivity/airtable` |
|
||||
| [`google-workspace`](/user-guide/skills/bundled/productivity/productivity-google-workspace) | 通过 gws CLI 或 Python 操作 Gmail、Calendar、Drive、Docs、Sheets。 | `productivity/google-workspace` |
|
||||
| [`maps`](/user-guide/skills/bundled/productivity/productivity-maps) | 通过 OpenStreetMap/OSRM 进行地理编码、POI 查询、路线规划、时区查询。 | `productivity/maps` |
|
||||
| [`nano-pdf`](/user-guide/skills/bundled/productivity/productivity-nano-pdf) | 通过 nano-pdf CLI 编辑 PDF 文本/错别字/标题(自然语言 prompt)。 | `productivity/nano-pdf` |
|
||||
| [`notion`](/user-guide/skills/bundled/productivity/productivity-notion) | Notion API + ntn CLI:页面、数据库、Markdown、Workers。 | `productivity/notion` |
|
||||
| [`ocr-and-documents`](/user-guide/skills/bundled/productivity/productivity-ocr-and-documents) | 从 PDF/扫描件中提取文本(pymupdf、marker-pdf)。 | `productivity/ocr-and-documents` |
|
||||
| [`powerpoint`](/user-guide/skills/bundled/productivity/productivity-powerpoint) | 创建、读取、编辑 .pptx 演示文稿、幻灯片、备注、模板。 | `productivity/powerpoint` |
|
||||
| [`teams-meeting-pipeline`](/user-guide/skills/bundled/productivity/productivity-teams-meeting-pipeline) | 通过 Hermes CLI 操作 Teams 会议摘要流水线——汇总会议、检查流水线状态、重放任务、管理 Microsoft Graph 订阅。 | `productivity/teams-meeting-pipeline` |
|
||||
|
||||
## research
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`arxiv`](/user-guide/skills/bundled/research/research-arxiv) | 按关键词、作者、分类或 ID 搜索 arXiv 论文。 | `research/arxiv` |
|
||||
| [`blogwatcher`](/user-guide/skills/bundled/research/research-blogwatcher) | 通过 blogwatcher-cli 工具监控博客和 RSS/Atom 订阅源。 | `research/blogwatcher` |
|
||||
| [`llm-wiki`](/user-guide/skills/bundled/research/research-llm-wiki) | Karpathy 的 LLM Wiki:构建/查询互联 Markdown 知识库。 | `research/llm-wiki` |
|
||||
| [`polymarket`](/user-guide/skills/bundled/research/research-polymarket) | 查询 Polymarket:市场、价格、订单簿、历史数据。 | `research/polymarket` |
|
||||
| [`research-paper-writing`](/user-guide/skills/bundled/research/research-research-paper-writing) | 为 NeurIPS/ICML/ICLR 撰写 ML 论文:从设计到投稿。 | `research/research-paper-writing` |
|
||||
|
||||
## smart-home
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`openhue`](/user-guide/skills/bundled/smart-home/smart-home-openhue) | 通过 OpenHue CLI 控制 Philips Hue 灯光、场景、房间。 | `smart-home/openhue` |
|
||||
|
||||
## social-media
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`xurl`](/user-guide/skills/bundled/social-media/social-media-xurl) | 通过 xurl CLI 操作 X/Twitter:发帖、搜索、私信、媒体、v2 API。 | `social-media/xurl` |
|
||||
|
||||
## software-development
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`hermes-agent-skill-authoring`](/user-guide/skills/bundled/software-development/software-development-hermes-agent-skill-authoring) | 编写仓库内 SKILL.md:frontmatter、验证器、结构规范。 | `software-development/hermes-agent-skill-authoring` |
|
||||
| [`node-inspect-debugger`](/user-guide/skills/bundled/software-development/software-development-node-inspect-debugger) | 通过 --inspect + Chrome DevTools Protocol CLI 调试 Node.js。 | `software-development/node-inspect-debugger` |
|
||||
| [`plan`](/user-guide/skills/bundled/software-development/software-development-plan) | 计划模式:将 Markdown 计划写入 `.hermes/plans/`,不执行。 | `software-development/plan` |
|
||||
| [`python-debugpy`](/user-guide/skills/bundled/software-development/software-development-python-debugpy) | 调试 Python:pdb REPL + debugpy 远程调试(DAP)。 | `software-development/python-debugpy` |
|
||||
| [`requesting-code-review`](/user-guide/skills/bundled/software-development/software-development-requesting-code-review) | 提交前审查:安全扫描、质量门控、自动修复。 | `software-development/requesting-code-review` |
|
||||
| [`spike`](/user-guide/skills/bundled/software-development/software-development-spike) | 一次性实验,在正式构建前验证想法。 | `software-development/spike` |
|
||||
| [`systematic-debugging`](/user-guide/skills/bundled/software-development/software-development-systematic-debugging) | 四阶段根因调试:先理解 bug,再修复。 | `software-development/systematic-debugging` |
|
||||
| [`test-driven-development`](/user-guide/skills/bundled/software-development/software-development-test-driven-development) | TDD:强制执行红-绿-重构流程,先写测试再写代码。 | `software-development/test-driven-development` |
|
||||
|
||||
## yuanbao
|
||||
|
||||
| 技能 | 描述 | 路径 |
|
||||
|-------|-------------|------|
|
||||
| [`yuanbao`](/user-guide/skills/bundled/yuanbao/yuanbao-yuanbao) | 元宝(Yuanbao)群组:@提及用户、查询信息/成员。 | `yuanbao` |
|
||||
+258
@@ -0,0 +1,258 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
title: "斜杠命令参考"
|
||||
description: "交互式 CLI 和消息平台斜杠命令完整参考"
|
||||
---
|
||||
|
||||
# 斜杠命令参考
|
||||
|
||||
Hermes 有两个斜杠命令入口,均由 `hermes_cli/commands.py` 中的中央 `COMMAND_REGISTRY` 驱动:
|
||||
|
||||
- **交互式 CLI 斜杠命令** — 由 `cli.py` 分发,支持从注册表自动补全
|
||||
- **消息平台斜杠命令** — 由 `gateway/run.py` 分发,帮助文本和平台菜单均从注册表生成
|
||||
|
||||
已安装的 skill(技能)也会在两个入口以动态斜杠命令的形式暴露。这包括内置 skill,如 `/plan`,它会打开计划模式并将 markdown 计划保存在活动工作区/后端工作目录下的 `.hermes/plans/` 中。
|
||||
|
||||
## 权限与管理员/用户分级
|
||||
|
||||
每个支持按用户白名单的消息平台(Telegram、Discord、Slack、Matrix、Mattermost、Signal 等)都支持两级斜杠命令分级:**管理员**可使用所有已注册命令,**普通用户**只能使用你在 `user_allowed_commands` 中列出的命令(以及始终允许的 `/help` 和 `/whoami`)。在 `~/.hermes/gateway-config.yaml` 中对应平台的 `extra:` 块内配置 `allow_admin_from` 和 `user_allowed_commands`(以及群组等效项 `group_allow_admin_from` / `group_user_allowed_commands`)。
|
||||
|
||||
各平台文档中有示例——结构在各平台间完全一致:
|
||||
|
||||
- [Telegram](../user-guide/messaging/telegram.md#slash-command-access-control)
|
||||
- [Discord](../user-guide/messaging/discord.md)
|
||||
- [Slack](../user-guide/messaging/slack.md)
|
||||
- [Matrix](../user-guide/messaging/matrix.md)
|
||||
- [Mattermost](../user-guide/messaging/mattermost.md)
|
||||
- [Signal](../user-guide/messaging/signal.md)
|
||||
|
||||
如果某个作用域未设置 `allow_admin_from`,该作用域将保持不受限的向后兼容模式——所有允许的用户均可运行所有命令。
|
||||
|
||||
## 交互式 CLI 斜杠命令
|
||||
|
||||
在 CLI 中输入 `/` 可打开自动补全菜单。内置命令不区分大小写。
|
||||
|
||||
### 会话
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/new [name]`(别名:`/reset`) | 开始新会话(全新会话 ID + 历史记录)。可选的 `[name]` 设置初始会话标题——例如 `/new my-experiment` 打开一个已命名为 `my-experiment` 的新会话,便于之后用 `/resume` 或 `/sessions` 查找。追加 `now`、`--yes` 或 `-y` 可跳过确认弹窗——例如 `/reset now`、`/new --yes my-experiment`。 |
|
||||
| `/clear` | 清屏并开始新会话 |
|
||||
| `/history` | 显示对话历史 |
|
||||
| `/save` | 保存当前对话 |
|
||||
| `/retry` | 重试最后一条消息(重新发送给 agent) |
|
||||
| `/undo` | 移除最后一轮用户/助手对话 |
|
||||
| `/title` | 为当前会话设置标题(用法:/title My Session Name) |
|
||||
| `/compress [focus topic]` | 手动压缩对话上下文(刷新记忆 + 摘要)。可选的焦点主题可缩小摘要保留的范围。 |
|
||||
| `/rollback` | 列出或恢复文件系统检查点(用法:/rollback [number]) |
|
||||
| `/snapshot [create\|restore <id>\|prune]`(别名:`/snap`) | 创建或恢复 Hermes 配置/状态的快照。`create [label]` 保存快照,`restore <id>` 回滚到该快照,`prune [N]` 删除旧快照,不带参数则列出所有快照。 |
|
||||
| `/stop` | 终止所有正在运行的后台进程 |
|
||||
| `/queue <prompt>`(别名:`/q`) | 将 prompt(提示词)加入队列等待下一轮处理(不会中断当前 agent 响应)。 |
|
||||
| `/steer <prompt>` | 在**下一次工具调用之后**向 agent 注入一条中途说明——不中断、不产生新的用户轮次。当前工具完成后,该文本会追加到最后一条工具结果的内容中,在不打断当前工具调用循环的情况下为 agent 提供新上下文。可用于在任务进行中调整方向(例如在 agent 运行测试时说"专注于 auth 模块")。 |
|
||||
| `/goal <text>` | 设置一个持续目标,Hermes 将跨轮次持续推进——这是我们对 Ralph loop 的实现。每轮结束后,辅助裁判模型会判断目标是否完成;若未完成,Hermes 自动继续。子命令:`/goal status`、`/goal pause`、`/goal resume`、`/goal clear`。预算默认为 20 轮(`goals.max_turns`);任何真实用户消息都会抢占继续循环,状态在 `/resume` 后保留。完整说明见 [持续目标](/user-guide/features/goals)。 |
|
||||
| `/subgoal <text>` | 在循环进行中向活动目标追加一个用户自定义条件。继续 prompt 会将所有子目标原文呈现给 agent,裁判也会将其纳入 DONE/CONTINUE 判断——因此只有原始目标**和**所有子目标都满足时,目标才会被标记为完成。子命令:`/subgoal`(列出)、`/subgoal remove <N>`、`/subgoal clear`。需要有活动的 `/goal`。 |
|
||||
| `/resume [name]` | 恢复之前命名的会话 |
|
||||
| `/sessions` | 在交互式选择器中浏览并恢复历史会话 |
|
||||
| `/redraw` | 强制完整重绘 UI(在 tmux 调整大小、鼠标选择产生残影等导致终端错位后恢复)。 |
|
||||
| `/status` | 显示会话信息——模型、提供商、profile、会话 ID、工作目录、标题、创建/更新时间戳、token 总量、agent 运行状态——随后显示本地**会话摘要**块(近期用户/助手轮次数、工具结果数、最常用工具、最近访问的文件、最新用户 prompt 和最新助手回复)。摘要从内存中的对话本地计算,不调用 LLM,不影响 prompt 缓存。 |
|
||||
| `/agents`(别名:`/tasks`) | 显示当前会话中的活动 agent 和运行中的任务。 |
|
||||
| `/background <prompt>`(别名:`/bg`、`/btw`) | 在独立的后台会话中运行 prompt。agent 独立处理你的 prompt——当前会话保持空闲可继续其他工作。任务完成后结果以面板形式显示。见 [CLI 后台会话](/user-guide/cli#background-sessions)。 |
|
||||
| `/branch [name]`(别名:`/fork`) | 分支当前会话(探索不同路径) |
|
||||
| `/handoff <platform>` | **仅限 CLI。** 将当前会话移交给消息平台(Telegram、Discord、Slack、WhatsApp、Signal、Matrix)。gateway 立即接管,在支持线程的平台上创建新线程(Telegram 话题、Discord 文字频道线程、Slack 消息锚定线程),将目标重新绑定到你的 CLI session_id 以重放完整的角色感知转录,并伪造一条合成用户轮次让 agent 确认已在新位置工作。成功后 CLI 干净退出并提示 `/resume`;随时可用 `/resume <title>` 在本地恢复。轮次进行中拒绝执行。需要 gateway 正在运行且目标平台已配置 home 频道(从目标聊天中执行 `/sethome`)。见 [跨平台移交](/user-guide/sessions#cross-platform-handoff)。 |
|
||||
|
||||
### 配置
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/config` | 显示当前配置 |
|
||||
| `/model [model-name]` | 显示或更改当前模型。支持:`/model claude-sonnet-4`、`/model provider:model`(切换提供商)、`/model custom:model`(自定义端点)、`/model custom:name:model`(命名自定义提供商)、`/model custom`(从端点自动检测),以及用户自定义别名(`/model fav`、`/model grok`——见[自定义模型别名](#custom-model-aliases))。使用 `--global` 将更改持久化到 config.yaml。**注意:** `/model` 只能在已配置的提供商之间切换。如需添加新提供商,请退出会话后在终端运行 `hermes model`。 |
|
||||
| `/codex-runtime [auto\|codex_app_server\|on\|off]` | 切换 OpenAI/Codex 模型的可选 [Codex app-server runtime](../user-guide/features/codex-app-server-runtime)。`auto`(默认)使用 Hermes 标准 chat completions;`codex_app_server` 将轮次交给 `codex app-server` 子进程,支持原生 shell、apply_patch、ChatGPT 订阅认证和迁移的 Codex 插件。下次会话生效。 |
|
||||
| `/personality` | 设置预定义的 personality(人格) |
|
||||
| `/verbose` | 循环切换工具进度显示:off → new → all → verbose。可通过配置[为消息平台启用](#notes)。 |
|
||||
| `/fast [normal\|fast\|status]` | 切换快速模式——OpenAI Priority Processing / Anthropic Fast Mode。选项:`normal`、`fast`、`status`。 |
|
||||
| `/reasoning` | 管理推理力度和显示(用法:/reasoning [level\|show\|hide]) |
|
||||
| `/skin` | 显示或更改显示皮肤/主题 |
|
||||
| `/statusbar`(别名:`/sb`) | 切换上下文/模型状态栏的显示与隐藏 |
|
||||
| `/voice [on\|off\|tts\|status]` | 切换 CLI 语音模式和语音播放。录音使用 `voice.record_key`(默认:`Ctrl+B`)。 |
|
||||
| `/yolo` | 切换 YOLO 模式——跳过所有危险命令审批提示。 |
|
||||
| `/footer [on\|off\|status]` | 切换最终回复中的 gateway 运行时元数据页脚(显示模型、工具调用次数、耗时)。 |
|
||||
| `/busy [queue\|steer\|interrupt\|status]` | 仅限 CLI:控制 Hermes 工作时按下 Enter 的行为——将新消息加入队列、中途引导,或立即中断。 |
|
||||
| `/indicator [kaomoji\|emoji\|unicode\|ascii]` | 仅限 CLI:选择 TUI 忙碌指示器样式。 |
|
||||
|
||||
### 工具与 Skill
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/tools [list\|disable\|enable] [name...]` | 管理工具:列出可用工具,或为当前会话禁用/启用特定工具。禁用工具会将其从 agent 工具集中移除并触发会话重置。 |
|
||||
| `/toolsets` | 列出可用工具集 |
|
||||
| `/browser [connect\|disconnect\|status]` | 管理本地 Chromium 系浏览器的 CDP 连接。`connect` 将浏览器工具附加到正在运行的 Chrome、Brave、Chromium 或 Edge 实例(默认:`http://127.0.0.1:9222`)。`disconnect` 断开连接。`status` 显示当前连接状态。若未检测到调试器,则自动启动支持的 Chromium 系浏览器。 |
|
||||
| `/skills` | 从在线注册表搜索、安装、检查或管理 skill |
|
||||
| `/cron` | 管理定时任务(列出、添加/创建、编辑、暂停、恢复、运行、删除) |
|
||||
| `/curator` | 后台 skill 维护——`status`、`run`、`pin`、`archive`。见 [Curator](/user-guide/features/curator)。 |
|
||||
| `/kanban <action>` | 无需离开聊天即可操作多 profile、多项目协作看板。完整的 `hermes kanban` 命令面均可用:`/kanban list`、`/kanban show t_abc`、`/kanban create "title" --assignee X`、`/kanban comment t_abc "text"`、`/kanban unblock t_abc`、`/kanban dispatch` 等。支持多看板:`/kanban boards list`、`/kanban boards create <slug>`、`/kanban boards switch <slug>`、`/kanban --board <slug> <action>`。见 [Kanban 斜杠命令](/user-guide/features/kanban#kanban-slash-command)。 |
|
||||
| `/reload-mcp`(别名:`/reload_mcp`) | 从 config.yaml 重新加载 MCP 服务器 |
|
||||
| `/reload-skills`(别名:`/reload_skills`) | 重新扫描 `~/.hermes/skills/` 以发现新安装或已删除的 skill |
|
||||
| `/reload` | 将 `.env` 变量重新加载到运行中的会话(无需重启即可获取新 API 密钥) |
|
||||
| `/plugins` | 列出已安装的插件及其状态 |
|
||||
|
||||
### 信息
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/help` | 显示帮助信息 |
|
||||
| `/version` | 显示 Hermes Agent 版本、构建及环境信息。 |
|
||||
| `/usage` | 显示 token 用量、费用明细、会话时长,以及——当活动提供商支持时——从提供商 API 实时拉取的**账户限额**部分,包含剩余配额/积分/套餐用量。 |
|
||||
| `/insights` | 显示用量洞察和分析(最近 30 天) |
|
||||
| `/platforms`(别名:`/gateway`) | 显示 gateway/消息平台状态(仅限 CLI 摘要视图)。 |
|
||||
| `/platform <list\|pause\|resume> [name]` | 操作正在运行的 gateway 平台。`/platform list` 列出所有适配器及其状态(运行中、熔断器暂停、手动暂停);`/platform pause <name>` 停止向该适配器分发新消息但不卸载它;`/platform resume <name>` 重新启用它。当适配器的熔断器因反复可重试失败(网络/限流/5xx)触发时,gateway 也会自动暂停该适配器——上游恢复健康后使用 `/platform resume <name>` 清除熔断器。在 gateway 可达的任何地方均可使用(CLI 会话、Telegram、Discord 等)。 |
|
||||
| `/paste` | 附加剪贴板图片 |
|
||||
| `/copy [number]` | 将最后一条助手回复复制到剪贴板(或用数字指定倒数第 N 条)。仅限 CLI。 |
|
||||
| `/image <path>` | 为下一条 prompt 附加本地图片文件。 |
|
||||
| `/debug` | 上传调试报告(系统信息 + 日志)并获取可分享链接。消息平台中也可用。 |
|
||||
| `/profile` | 显示活动 profile 名称和主目录 |
|
||||
| `/gquota` | 以进度条形式显示 Google Gemini Code Assist 配额用量(仅在 `google-gemini-cli` 提供商激活时可用)。 |
|
||||
|
||||
### 退出
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/quit` | 退出 CLI(也可用:`/exit`)。关于 `/q` 请参见上方 `/queue` 的说明。传入 `--delete`(或 `-d`)——例如 `/exit --delete`——可在退出前永久删除当前会话的 SQLite 历史记录和磁盘上的转录文件。适用于隐私敏感或一次性任务。 |
|
||||
|
||||
### 动态 CLI 斜杠命令
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/<skill-name>` | 将任意已安装的 skill 作为按需命令加载。示例:`/gif-search`、`/github-pr-workflow`、`/excalidraw`。 |
|
||||
| `/skills ...` | 从注册表和官方可选 skill 目录搜索、浏览、检查、安装、审计、发布和配置 skill。 |
|
||||
|
||||
### 快捷命令
|
||||
|
||||
用户自定义快捷命令将一个短斜杠命令映射到 shell 命令或另一个斜杠命令。在 `~/.hermes/config.yaml` 中配置:
|
||||
|
||||
```yaml
|
||||
quick_commands:
|
||||
status:
|
||||
type: exec
|
||||
command: systemctl status hermes-agent
|
||||
deploy:
|
||||
type: exec
|
||||
command: scripts/deploy.sh
|
||||
inbox:
|
||||
type: alias
|
||||
target: /gmail unread
|
||||
```
|
||||
|
||||
然后在 CLI 或消息平台中输入 `/status`、`/deploy` 或 `/inbox`。快捷命令在分发时解析,可能不会出现在所有内置自动补全/帮助表中。
|
||||
|
||||
不支持将纯字符串 prompt 快捷方式作为快捷命令。较长的可复用 prompt 请放入 skill,或使用 `type: alias` 指向现有斜杠命令。
|
||||
|
||||
### 自定义模型别名
|
||||
|
||||
为常用模型定义自己的短名称,然后在 CLI 或任意消息平台中通过 `/model <alias>` 调用。别名在两者中的行为完全一致,支持仅会话(默认)和 `--global` 切换。
|
||||
|
||||
支持两种配置格式:
|
||||
|
||||
**完整格式** — 固定精确的模型、提供商,以及可选的 base URL。写入 `~/.hermes/config.yaml`:
|
||||
|
||||
```yaml
|
||||
model_aliases:
|
||||
fav:
|
||||
model: claude-sonnet-4.6
|
||||
provider: anthropic
|
||||
grok:
|
||||
model: grok-4
|
||||
provider: x-ai
|
||||
ollama-qwen:
|
||||
model: qwen3-coder:30b
|
||||
provider: custom
|
||||
base_url: http://localhost:11434/v1
|
||||
```
|
||||
|
||||
**简短格式** — 用一个字符串表示 `provider/model`。无需编辑 YAML,直接从 shell 设置:
|
||||
|
||||
```bash
|
||||
hermes config set model.aliases.fav anthropic/claude-opus-4.6
|
||||
hermes config set model.aliases.grok x-ai/grok-4
|
||||
```
|
||||
|
||||
然后在聊天中:
|
||||
|
||||
```
|
||||
/model fav # 仅当前会话
|
||||
/model grok --global # 同时将当前模型更改持久化到 config.yaml
|
||||
```
|
||||
|
||||
用户别名优先于内置短名称,因此将别名命名为 `sonnet`、`kimi`、`opus` 等会覆盖内置名称。别名名称不区分大小写。
|
||||
|
||||
### 别名解析
|
||||
|
||||
命令支持前缀匹配:输入 `/h` 解析为 `/help`,`/mod` 解析为 `/model`。当前缀有歧义(匹配多个命令)时,注册表顺序中的第一个匹配项优先。完整命令名和已注册别名始终优先于前缀匹配。
|
||||
|
||||
## 消息平台斜杠命令
|
||||
|
||||
消息 gateway 在 Telegram、Discord、Slack、WhatsApp、Signal、Email、Home Assistant 和 Teams 聊天中支持以下内置命令:
|
||||
|
||||
| 命令 | 描述 |
|
||||
|---------|-------------|
|
||||
| `/new` | 开始新对话。 |
|
||||
| `/reset` | 重置对话历史。 |
|
||||
| `/status` | 显示会话信息,随后显示本地**会话摘要**块(近期轮次数、最常用工具、访问的文件、最新 prompt + 回复)。 |
|
||||
| `/stop` | 终止所有正在运行的后台进程并中断运行中的 agent。 |
|
||||
| `/model [provider:model]` | 显示或更改模型。支持提供商切换(`/model zai:glm-5`)、自定义端点(`/model custom:model`)、命名自定义提供商(`/model custom:local:qwen`)、自动检测(`/model custom`),以及用户自定义别名(`/model fav`、`/model grok`——见[自定义模型别名](#custom-model-aliases))。使用 `--global` 将更改持久化到 config.yaml。**注意:** `/model` 只能在已配置的提供商之间切换。如需添加新提供商或设置 API 密钥,请在终端(聊天会话外)运行 `hermes model`。 |
|
||||
| `/codex-runtime [auto\|codex_app_server\|on\|off]` | 切换可选的 [Codex app-server runtime](../user-guide/features/codex-app-server-runtime)。持久化到 config.yaml 中的 `model.openai_runtime` 并驱逐缓存的 agent,使下一条消息使用新 runtime。下次会话生效。 |
|
||||
| `/personality [name]` | 为会话设置 personality 覆盖层。 |
|
||||
| `/fast [normal\|fast\|status]` | 切换快速模式——OpenAI Priority Processing / Anthropic Fast Mode。 |
|
||||
| `/retry` | 重试最后一条消息。 |
|
||||
| `/undo` | 移除最后一轮对话。 |
|
||||
| `/sethome`(别名:`/set-home`) | 将当前聊天标记为该平台的 home 频道,用于消息投递。 |
|
||||
| `/compress [focus topic]` | 手动压缩对话上下文。可选的焦点主题可缩小摘要保留的范围。 |
|
||||
| `/topic [off\|help\|session-id]` | **仅限 Telegram DM。** 管理用户自主的多会话话题模式。`/topic` 启用或显示状态;`/topic off` 禁用并清除绑定;`/topic help` 显示用法;在话题中执行 `/topic <session-id>` 可恢复之前的会话。见 [多会话 DM 模式](/user-guide/messaging/telegram#multi-session-dm-mode-topic)。 |
|
||||
| `/title [name]` | 设置或显示会话标题。 |
|
||||
| `/resume [name]` | 恢复之前命名的会话。 |
|
||||
| `/usage` | 显示 token 用量、估算费用明细(输入/输出)、上下文窗口状态、会话时长,以及——当活动提供商支持时——从提供商 API 实时拉取的**账户限额**部分,包含剩余配额/积分。 |
|
||||
| `/insights [days]` | 显示用量分析。 |
|
||||
| `/reasoning [level\|show\|hide]` | 更改推理力度或切换推理显示。 |
|
||||
| `/voice [on\|off\|tts\|join\|channel\|leave\|status]` | 控制聊天中的语音回复。`join`/`channel`/`leave` 管理 Discord 语音频道模式。 |
|
||||
| `/rollback [number]` | 列出或恢复文件系统检查点。 |
|
||||
| `/background <prompt>` | 在独立的后台会话中运行 prompt。任务完成后结果投递回同一聊天。见 [消息平台后台会话](/user-guide/messaging/#background-sessions)。 |
|
||||
| `/queue <prompt>`(别名:`/q`) | 将 prompt 加入队列等待下一轮处理,不中断当前轮次。 |
|
||||
| `/steer <prompt>` | 在下一次工具调用后注入一条消息,不中断——模型在下一次迭代时获取,而非作为新轮次。 |
|
||||
| `/goal <text>` | 设置一个持续目标,Hermes 将跨轮次持续推进——这是我们对 Ralph loop 的实现。裁判模型在每轮后检查;若未完成,Hermes 自动继续,直到完成、你暂停/清除,或达到轮次预算(默认 20)。子命令:`/goal status`、`/goal pause`、`/goal resume`、`/goal clear`。agent 运行中可安全执行 status/pause/clear;设置新目标需先执行 `/stop`。见 [持续目标](/user-guide/features/goals)。 |
|
||||
| `/footer [on\|off\|status]` | 切换最终回复中的运行时元数据页脚(显示模型、工具调用次数、耗时)。 |
|
||||
| `/curator [status\|run\|pin\|archive]` | 后台 skill 维护控制。 |
|
||||
| `/kanban <action>` | 从聊天中操作多 profile、多项目协作看板——参数与 CLI 完全一致。绕过运行中 agent 的保护,因此 `/kanban unblock t_abc`、`/kanban comment t_abc "…"`、`/kanban list --mine`、`/kanban boards switch <slug>` 等均可在轮次进行中使用。`/kanban create …` 会自动将发起聊天订阅到新任务的终态事件。见 [Kanban 斜杠命令](/user-guide/features/kanban#kanban-slash-command)。 |
|
||||
| `/reload-mcp`(别名:`/reload_mcp`) | 从配置重新加载 MCP 服务器。 |
|
||||
| `/yolo` | 切换 YOLO 模式——跳过所有危险命令审批提示。 |
|
||||
| `/commands [page]` | 浏览所有命令和 skill(分页)。 |
|
||||
| `/approve [session\|always]` | 审批并执行待处理的危险命令。`session` 仅为本次会话审批;`always` 添加到永久白名单。 |
|
||||
| `/deny` | 拒绝待处理的危险命令。 |
|
||||
| `/update` | 将 Hermes Agent 更新到最新版本。 |
|
||||
| `/restart` | 在排空活动运行后优雅重启 gateway。gateway 重新上线后,会向请求者的聊天/线程发送确认消息。 |
|
||||
| `/debug` | 上传调试报告(系统信息 + 日志)并获取可分享链接。 |
|
||||
| `/help` | 显示消息平台帮助。 |
|
||||
| `/<skill-name>` | 按名称调用任意已安装的 skill。 |
|
||||
|
||||
## 注意事项
|
||||
|
||||
- `/skin`、`/snapshot`、`/gquota`、`/reload`、`/tools`、`/toolsets`、`/browser`、`/config`、`/cron`、`/skills`、`/platforms`、`/paste`、`/image`、`/statusbar`、`/plugins`、`/busy`、`/indicator`、`/redraw`、`/clear`、`/history`、`/save`、`/copy`、`/handoff` 和 `/quit` 是**仅限 CLI** 的命令。
|
||||
- `/verbose` **默认仅限 CLI**,但可通过在 `config.yaml` 中设置 `display.tool_progress_command: true` 为消息平台启用。启用后,它会循环切换 `display.tool_progress` 模式并保存到配置。
|
||||
- `/sethome`、`/update`、`/restart`、`/approve`、`/deny`、`/topic` 和 `/commands` 是**仅限消息平台**的命令。
|
||||
- `/status`、`/version`、`/background`、`/queue`、`/steer`、`/voice`、`/reload-mcp`、`/reload-skills`、`/rollback`、`/debug`、`/fast`、`/footer`、`/curator`、`/kanban`、`/sessions` 和 `/yolo` 在 **CLI 和消息 gateway 中均可使用**。
|
||||
- `/voice join`、`/voice channel` 和 `/voice leave` 仅在 Discord 上有意义。
|
||||
|
||||
## 破坏性命令的确认提示
|
||||
|
||||
CLI 在执行会丢弃未保存会话状态的斜杠命令前会提示确认。当前破坏性命令集为:
|
||||
|
||||
| 命令 | 销毁的内容 |
|
||||
|---------|------------------|
|
||||
| `/clear` | 清屏并开始新会话——当前会话 ID 和内存中的历史记录将丢失。 |
|
||||
| `/new` / `/reset` | 开始新会话(新会话 ID + 空历史记录)。 |
|
||||
| `/undo` | 从历史记录中移除最后一轮用户/助手对话。 |
|
||||
| `/exit --delete` / `/quit --delete` | 退出**并**永久删除当前会话的 SQLite 历史记录和磁盘上的转录文件。 |
|
||||
|
||||
对于上述每个命令,CLI 会打开一个三选项弹窗:**Approve Once**(本次执行)、**Always Approve**(执行并持久化 `approvals.destructive_slash_confirm: false`,使未来的破坏性命令无需提示直接运行),或 **Cancel**。
|
||||
|
||||
**内联跳过:** 追加 `now`、`--yes` 或 `-y` 可为单次调用绕过弹窗——例如 `/reset now`、`/new --yes my-session`、`/clear -y`、`/undo -y`。适用于弹窗在你的终端无法正常渲染的情况(见 [issue #30768](https://github.com/NousResearch/hermes-agent/issues/30768),原生 Windows PowerShell)或对 CLI 进行脚本化操作时。
|
||||
|
||||
在 `~/.hermes/config.yaml` 中设置 `approvals.destructive_slash_confirm: false` 可全局禁用提示;设置回 `true` 可重新启用。背景说明见 [安全——破坏性斜杠命令确认](../user-guide/security.md#dangerous-command-approval)。
|
||||
+267
@@ -0,0 +1,267 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
title: "内置工具参考"
|
||||
description: "Hermes 内置工具权威参考,按工具集分组"
|
||||
---
|
||||
|
||||
# 内置工具参考
|
||||
|
||||
本页记录 Hermes 的内置工具,按工具集分组。可用性因平台、凭据和已启用的工具集而异。
|
||||
|
||||
**当前注册表快速统计:** 约 71 个工具 —— 10 个浏览器工具(核心)+ 2 个 CDP 门控浏览器工具、4 个文件工具、4 个 Home Assistant 工具、2 个终端工具、2 个 Web 工具、5 个 Feishu 工具、7 个 Spotify 工具(由内置 `spotify` 插件注册)、5 个 Yuanbao 工具、9 个 kanban 工具(在 kanban 调度器生成 agent 时注册)、2 个 Discord 工具,以及若干独立工具(`memory`、`clarify`、`delegate_task`、`execute_code`、`cronjob`、`session_search`、`skill_view`/`skill_manage`/`skills_list`、`text_to_speech`、`image_generate`、`video_generate`、`vision_analyze`、`video_analyze`、`mixture_of_agents`、`send_message`、`todo`、`computer_use`、`process`)。
|
||||
|
||||
:::tip MCP 工具
|
||||
除内置工具外,Hermes 还可从 MCP 服务器动态加载工具。MCP 工具以 `mcp_<server>_` 为前缀(例如,`github` MCP 服务器的 `mcp_github_create_issue`)。配置方法见 [MCP 集成](/user-guide/features/mcp)。
|
||||
:::
|
||||
|
||||
## `browser` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `browser_back` | 在浏览器历史记录中导航回上一页。需先调用 `browser_navigate`。 | — |
|
||||
| `browser_click` | 点击快照中由 ref ID 标识的元素(如 `@e5`)。ref ID 显示在快照输出的方括号中。需先调用 `browser_navigate` 和 `browser_snapshot`。 | — |
|
||||
| `browser_console` | 获取当前页面的浏览器控制台输出和 JavaScript 错误。返回 `console.log`/`warn`/`error`/`info` 消息及未捕获的 JS 异常。用于检测静默 JavaScript 错误、失败的 API 调用和应用警告。需先调用… | — |
|
||||
| `browser_get_images` | 获取当前页面所有图片的列表,包含 URL 和 alt 文本。可用于查找供 vision 工具分析的图片。需先调用 `browser_navigate`。 | — |
|
||||
| `browser_navigate` | 在浏览器中导航到某个 URL,初始化会话并加载页面。必须在其他浏览器工具之前调用。对于简单信息检索,优先使用 `web_search` 或 `web_extract`(更快、更省)。当需要… 时使用浏览器工具。 | — |
|
||||
| `browser_press` | 按下键盘按键。适用于提交表单(Enter)、导航(Tab)或键盘快捷键。需先调用 `browser_navigate`。 | — |
|
||||
| `browser_scroll` | 向某个方向滚动页面。用于显示当前视口上方或下方的更多内容。需先调用 `browser_navigate`。 | — |
|
||||
| `browser_snapshot` | 获取当前页面无障碍树的文本快照。返回带 ref ID(如 `@e1`、`@e2`)的交互元素,供 `browser_click` 和 `browser_type` 使用。`full=false`(默认):仅含交互元素的紧凑视图。`full=true`:完整… | — |
|
||||
| `browser_type` | 向由 ref ID 标识的输入框中输入文本。先清空字段,再输入新文本。需先调用 `browser_navigate` 和 `browser_snapshot`。 | — |
|
||||
| `browser_vision` | 对当前页面截图并用视觉 AI 分析。当需要直观理解页面内容时使用——尤其适用于 CAPTCHA、视觉验证挑战、复杂布局,或文本快照… 时。 | — |
|
||||
|
||||
## `browser` 工具集(CDP 门控工具)
|
||||
|
||||
这两个工具属于 `browser` 工具集,但仅在会话启动时可访问 Chrome DevTools Protocol(CDP)端点时才注册——通过 `/browser connect`、`browser.cdp_url` 配置、Browserbase 会话或 Camofox。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `browser_cdp` | 发送原始 Chrome DevTools Protocol 命令。用于高层 `browser_*` 工具未覆盖的浏览器操作的逃生舱口。参见 https://chromedevtools.github.io/devtools-protocol/ | CDP 端点 |
|
||||
| `browser_dialog` | 响应原生 JavaScript 对话框(alert / confirm / prompt / beforeunload)。先调用 `browser_snapshot`——待处理的对话框会出现在其 `pending_dialogs` 字段中。然后调用 `browser_dialog(action='accept'\|'dismiss')`。 | CDP 端点 |
|
||||
|
||||
## `clarify` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `clarify` | 在需要澄清、反馈或决策时向用户提问。支持两种模式:1. **多选** —— 提供最多 4 个选项,用户从中选择或通过第 5 个"其他"选项自行输入。2.… | — |
|
||||
|
||||
## `code_execution` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `execute_code` | 运行可以编程方式调用 Hermes 工具的 Python 脚本。当需要 3 次以上工具调用且调用之间有处理逻辑、需要在大型工具输出进入上下文前过滤/压缩、需要条件分支(…)时使用。 | — |
|
||||
|
||||
## `cronjob` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `cronjob` | 统一的定时任务管理器。使用 `action="create"`、`"list"`、`"update"`、`"pause"`、`"resume"`、`"run"` 或 `"remove"` 管理任务。支持带一个或多个附加 skill 的 skill 驱动任务,`update` 时 `skills=[]` 可清除已附加的 skill。Cron 任务在无当前聊天上下文的全新会话中运行。 | — |
|
||||
|
||||
## `delegation` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `delegate_task` | 生成一个或多个子 agent,在隔离上下文中处理任务。每个子 agent 拥有独立的对话、终端会话和工具集。仅返回最终摘要——中间工具结果不会进入你的上下文窗口。两种… | — |
|
||||
|
||||
## `feishu_doc` 工具集
|
||||
|
||||
仅限飞书文档评论智能回复处理器(`gateway/platforms/feishu_comment.py`)使用。不在 `hermes-cli` 或常规飞书聊天适配器中暴露。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `feishu_doc_read` | 根据 `file_type` 和 token 读取飞书/Lark 文档(Docx、Doc 或 Sheet)的完整文本内容。 | 飞书应用凭据 |
|
||||
|
||||
## `feishu_drive` 工具集
|
||||
|
||||
仅限飞书文档评论处理器使用。驱动云盘文件的评论读写操作。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `feishu_drive_add_comment` | 在飞书/Lark 文档或文件上添加顶级评论。 | 飞书应用凭据 |
|
||||
| `feishu_drive_list_comments` | 列出飞书/Lark 文件的全文档评论,最新的排在最前。 | 飞书应用凭据 |
|
||||
| `feishu_drive_list_comment_replies` | 列出特定飞书评论线程(全文档或局部选区)的回复。 | 飞书应用凭据 |
|
||||
| `feishu_drive_reply_comment` | 在飞书评论线程上发布回复,支持可选的 `@` 提及。 | 飞书应用凭据 |
|
||||
|
||||
## `file` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `patch` | 对文件进行精准的查找替换编辑。用于替代终端中的 `sed`/`awk`。使用模糊匹配(9 种策略),轻微的空白/缩进差异不会导致失败。返回统一差异格式。编辑后自动运行语法检查… | — |
|
||||
| `read_file` | 带行号和分页功能读取文本文件。用于替代终端中的 `cat`/`head`/`tail`。输出格式:`LINE_NUM\|CONTENT`。找不到文件时建议相似文件名。对大文件使用 `offset` 和 `limit`。注意:无法读取图片或… | — |
|
||||
| `search_files` | 搜索文件内容或按名称查找文件。用于替代终端中的 `grep`/`rg`/`find`/`ls`。基于 Ripgrep,比 shell 等效命令更快。内容搜索(`target='content'`):在文件内进行正则搜索。输出模式:带行号的完整匹配… | — |
|
||||
| `write_file` | 将内容写入文件,完全替换现有内容。用于替代终端中的 `echo`/`cat heredoc`。自动创建父目录。**覆盖整个文件** —— 精准编辑请使用 `patch`。 | — |
|
||||
|
||||
## `homeassistant` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `ha_call_service` | 调用 Home Assistant 服务以控制设备。使用 `ha_list_services` 发现各域的可用服务及其参数。 | — |
|
||||
| `ha_get_state` | 获取单个 Home Assistant 实体的详细状态,包括所有属性(亮度、颜色、温度设定值、传感器读数等)。 | — |
|
||||
| `ha_list_entities` | 列出 Home Assistant 实体。可按域(light、switch、climate、sensor、binary_sensor、cover、fan 等)或区域名称(客厅、厨房、卧室等)过滤。 | — |
|
||||
| `ha_list_services` | 列出用于设备控制的可用 Home Assistant 服务(动作)。显示每种设备类型可执行的操作及其接受的参数。用于发现如何控制通过 `ha_list_entities` 找到的设备。 | — |
|
||||
|
||||
## `computer_use` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `computer_use` | 通过 cua-driver 在后台控制 macOS 桌面——截图(SOM / vision / AX)、点击 / 拖拽 / 滚动 / 输入 / 按键 / 等待、`list_apps`、`focus_app`。**不会**抢占用户的光标或键盘焦点。适用于任何支持工具的模型。仅限 macOS。 | `cua-driver` 在 `$PATH` 中(通过 `hermes tools` 安装)。 |
|
||||
|
||||
:::note
|
||||
**Honcho 工具**(`honcho_profile`、`honcho_search`、`honcho_context`、`honcho_reasoning`、`honcho_conclude`)不再是内置工具。它们通过 `plugins/memory/honcho/` 的 Honcho 记忆提供者插件提供。安装和使用方法见 [Memory Providers](../user-guide/features/memory-providers.md)。
|
||||
:::
|
||||
|
||||
## `image_gen` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `image_generate` | 使用 FAL.ai 从文本 prompt(提示词)生成高质量图片。底层模型由用户配置(默认:FLUX 2 Klein 9B,生成时间低于 1 秒),agent 不可选择。返回单个图片 URL。使用… 显示。 | FAL_KEY |
|
||||
|
||||
## `kanban` 工具集
|
||||
|
||||
在以下情况下注册:(a) agent 由 kanban 调度器生成(设置了 `HERMES_KANBAN_TASK` 环境变量),或 (b) 在显式启用 `kanban` 工具集的 profile 中运行。任务范围的 worker 使用生命周期工具处理其分配的任务;编排器 profile 还额外获得 `kanban_list` 和 `kanban_unblock` 等看板路由工具。完整工作流见 [Kanban 多 Agent](/user-guide/features/kanban)。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `kanban_show` | 显示分配给当前 worker 的活跃 kanban 任务(标题、描述、评论、依赖项)。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_list` | 带过滤器列出看板任务。仅限编排器;对调度器生成的任务 worker 隐藏。 | 含 `kanban` 工具集的 profile |
|
||||
| `kanban_complete` | 用结构化交接载荷(结果、产物、后续事项)将当前任务标记为完成。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_block` | 因需向用户提问而阻塞当前任务——调度器暂停、呈现问题,并在人工回复后恢复。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_heartbeat` | 在长时间运行的操作期间发送进度心跳,让调度器知道 worker 仍在运行。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_comment` | 在不改变任务状态的情况下向任务线程添加评论——适用于呈现中间发现。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_create` | 从当前任务派生子任务。由编排器和生成后续任务的 worker 使用。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_link` | 用父 → 子依赖边链接任务。 | `HERMES_KANBAN_TASK` 或 `kanban` 工具集 |
|
||||
| `kanban_unblock` | 将被阻塞的任务恢复为 `ready` 状态。仅限编排器;对调度器生成的任务 worker 隐藏。 | 含 `kanban` 工具集的 profile |
|
||||
|
||||
## `memory` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `memory` | 将重要信息保存到跨会话持久化的记忆中。你的记忆会在会话启动时出现在系统 prompt 中——这是你在对话之间记住用户信息和环境信息的方式。何时保存… | — |
|
||||
|
||||
## `messaging` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `send_message` | 向已连接的消息平台发送消息,或列出可用目标。重要:当用户要求发送到特定频道或人员(而非仅平台名称)时,请先调用 `send_message(action='list')` 查看可用目标… | — |
|
||||
|
||||
## `moa` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `mixture_of_agents` | 将难题路由给多个前沿 LLM 协作处理。进行 5 次 API 调用(4 个参考模型 + 1 个聚合器),以最大推理力度运行——请谨慎用于真正困难的问题。最适合:复杂数学、高级算法… | OPENROUTER_API_KEY |
|
||||
|
||||
## `session_search` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `session_search` | 搜索存储在本地会话数据库中的历史会话,或在某个会话内滚动浏览。基于 FTS5 检索;返回数据库中的实际消息(无 LLM 调用)。三种形态:发现(传入 `query`)、滚动(传入 `session_id` + `around_message_id`)、浏览(无参数)。 | — |
|
||||
|
||||
## `skills` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `skill_manage` | 管理 skill(创建、更新、删除)。Skill 是你的程序性记忆——针对重复任务类型的可复用方法。新 skill 保存到 `~/.hermes/skills/`;现有 skill 可在其所在位置修改。操作:create(完整 SKILL.m…) | — |
|
||||
| `skill_view` | Skill 允许加载特定任务和工作流的信息,以及脚本和模板。加载某个 skill 的完整内容或访问其链接文件(参考资料、模板、脚本)。首次调用返回 SKILL.md 内容及… | — |
|
||||
| `skills_list` | 列出可用 skill(名称 + 描述)。使用 `skill_view(name)` 加载完整内容。 | — |
|
||||
|
||||
## `terminal` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `process` | 管理通过 `terminal(background=true)` 启动的后台进程。操作:`list`(显示所有)、`poll`(检查状态 + 新输出)、`log`(带分页的完整输出)、`wait`(阻塞直到完成或超时)、`kill`(终止)、`write`(发送…) | — |
|
||||
| `terminal` | 在 Linux 环境中执行 shell 命令。文件系统在调用之间持久化。对长时间运行的服务器设置 `background=true`。设置 `notify_on_complete=true`(配合 `background=true`)可在进程完成时自动收到通知——无需轮询。**不要**使用 `cat`/`head`/`tail`——使用 `read_file`。**不要**使用 `grep`/`rg`/`find`——使用 `search_files`。 | — |
|
||||
|
||||
## `todo` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `todo` | 管理当前会话的任务列表。适用于包含 3 个以上步骤的复杂任务,或用户提供多个任务时。不带参数调用可读取当前列表。写入:- 提供 `todos` 数组以创建/更新条目 - `merge=`… | — |
|
||||
|
||||
## `vision` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `vision_analyze` | 使用 AI 视觉分析图片。在支持视觉的主模型上,将原始图片像素作为多模态工具结果返回,使模型在下一轮能原生看到图片。在纯文本主模型上,回退到辅助视觉模型描述图片并以文本形式返回描述。两种情况下工具签名完全相同。 | — |
|
||||
|
||||
## `video` 工具集
|
||||
|
||||
可选工具集(默认 `hermes-cli` 集中不加载)。通过 `--toolsets video` 添加,或在 `toolsets:` 配置中包含 `video`。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `video_analyze` | 分析来自 URL 或文件路径的视频内容——字幕、场景分解、关键时间戳和视觉描述。 | — |
|
||||
|
||||
## `video_gen` 工具集
|
||||
|
||||
可选工具集(默认 `hermes-cli` 集中不加载)。通过 `--toolsets video_gen` 添加,或在 `hermes tools` → Video Generation 中启用(同时引导你选择后端)。
|
||||
|
||||
后端以插件形式存放于 `plugins/video_gen/<name>/`:
|
||||
|
||||
- **xAI Grok-Imagine** —— 文本生成视频和图片生成视频(SuperGrok OAuth 或 `XAI_API_KEY`)。
|
||||
- **FAL.ai** —— Veo 3.1、Pixverse v6、Kling O3(需要 `FAL_KEY`)。
|
||||
|
||||
单个 `video_generate` 工具涵盖两种模态——传入 `image_url` 可为静态图片制作动画,省略则从文本生成。活跃后端自动路由到正确的端点。工具描述在会话启动时重建,以反映活跃后端的实际能力(模态、宽高比、分辨率、时长范围、最大参考图片数、音频支持)。后端开发见 [视频生成提供者插件](/developer-guide/video-gen-provider-plugin)。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `video_generate` | 使用用户配置的视频生成后端,从文本 prompt 生成视频(文本生成视频)或为静态图片制作动画(图片生成视频)。传入 `image_url` 可为该图片制作动画;省略则从文本生成。后端自动路由到正确端点。在 `video` 字段中返回 HTTP URL 或绝对文件路径。 | 活跃的 `video_gen` 插件 + 其凭据(如 `XAI_API_KEY`、`FAL_KEY`) |
|
||||
|
||||
## `web` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `web_search` | 在网络上搜索信息。默认返回最多 5 条结果,包含标题、URL 和描述。接受可选的 `limit`(1-100,默认 5)。查询直接传递给配置的后端,因此当后端支持时,`site:domain`、`filetype:pdf`、`intitle:word`、`-term`、`"exact phrase"` 等运算符可能有效。 | EXA_API_KEY 或 PARALLEL_API_KEY 或 FIRECRAWL_API_KEY 或 TAVILY_API_KEY |
|
||||
| `web_extract` | 从网页 URL 提取内容。以 Markdown 格式返回页面内容。也支持 PDF URL——直接传入 PDF 链接即可转换为 Markdown 文本。5000 字符以下的页面返回完整 Markdown;更大的页面由 LLM 摘要处理。 | EXA_API_KEY 或 PARALLEL_API_KEY 或 FIRECRAWL_API_KEY 或 TAVILY_API_KEY |
|
||||
|
||||
## `x_search` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `x_search` | 使用 xAI 内置的 `x_search` Responses 工具搜索 X(Twitter)帖子、主页和话题串。用于获取 X 上的当前讨论、反应或观点,而非通用网页。默认关闭——通过 `hermes tools` → 🐦 X (Twitter) Search 选择启用。仅在配置了 xAI 凭据时注册 schema(check_fn 门控)。 | XAI_API_KEY **或** xAI Grok OAuth(SuperGrok / Premium+)登录 |
|
||||
|
||||
## `tts` 工具集
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `text_to_speech` | 将文本转换为语音音频。返回平台以语音消息形式传递的 `MEDIA:` 路径。在 Telegram 上以语音气泡播放,在 Discord/WhatsApp 上作为音频附件。在 CLI 模式下保存到 `~/voice-memos/`。语音和提供者… | — |
|
||||
|
||||
## `discord` 工具集
|
||||
|
||||
在 `hermes-discord` 平台工具集(仅 gateway)上注册。使用与消息适配器相同的 bot token。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `discord` | 读取并参与 Discord 服务器。操作包括 `search_members`、`fetch_messages`、`send_message`、`react`、`fetch_channel`、`list_channels` 等。 | `DISCORD_BOT_TOKEN` |
|
||||
|
||||
## `discord_admin` 工具集
|
||||
|
||||
在 `hermes-discord` 平台工具集上注册。审核操作需要 bot 持有相应的 Discord 权限。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `discord_admin` | 通过 REST API 管理 Discord 服务器:列出 guild/频道/角色,创建/编辑/删除频道,管理角色授予、禁言、踢出和封禁。 | `DISCORD_BOT_TOKEN` + bot 权限 |
|
||||
|
||||
## `spotify` 工具集
|
||||
|
||||
由内置 `spotify` 插件注册。需要 OAuth token——运行一次 `hermes spotify setup` 进行授权。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `spotify_playback` | 控制 Spotify 播放、查看当前播放状态或获取最近播放的曲目。 | Spotify OAuth |
|
||||
| `spotify_devices` | 列出 Spotify Connect 设备或将播放转移到其他设备。 | Spotify OAuth |
|
||||
| `spotify_queue` | 查看用户的 Spotify 队列或向其添加项目。 | Spotify OAuth |
|
||||
| `spotify_search` | 在 Spotify 目录中搜索曲目、专辑、艺术家、播放列表、节目或单集。 | Spotify OAuth |
|
||||
| `spotify_playlists` | 列出、查看、创建、更新和修改 Spotify 播放列表。 | Spotify OAuth |
|
||||
| `spotify_albums` | 获取 Spotify 专辑元数据或专辑曲目。 | Spotify OAuth |
|
||||
| `spotify_library` | 列出、保存或移除用户已保存的 Spotify 曲目或专辑。 | Spotify OAuth |
|
||||
|
||||
## `hermes-yuanbao` 工具集
|
||||
|
||||
仅在 `hermes-yuanbao` 平台工具集上注册。元宝是腾讯的聊天应用;这些工具驱动其私信/群组/表情包 API。
|
||||
|
||||
| 工具 | 描述 | 所需环境 |
|
||||
|------|------|----------|
|
||||
| `yb_query_group_info` | 查询群组(应用内称为"派/Pai")的基本信息:名称、群主、成员数。 | 元宝凭据 |
|
||||
| `yb_query_group_members` | 查询群组成员(用于 `@` 提及、按名称查找用户、列出机器人)。 | 元宝凭据 |
|
||||
| `yb_send_dm` | 向群组中的用户发送私信,支持可选的媒体文件。 | 元宝凭据 |
|
||||
| `yb_search_sticker` | 按关键词搜索元宝内置表情(TIM 表情)目录。 | 元宝凭据 |
|
||||
| `yb_send_sticker` | 向当前元宝聊天发送内置表情。 | 元宝凭据 |
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
title: "工具集参考"
|
||||
description: "Hermes 核心、复合、平台及动态工具集参考"
|
||||
---
|
||||
|
||||
# 工具集参考
|
||||
|
||||
工具集(Toolset)是工具的命名集合,用于控制 agent 可以执行的操作。它是按平台、按会话或按任务配置工具可用性的主要机制。
|
||||
|
||||
## 工具集的工作原理
|
||||
|
||||
每个工具恰好属于一个工具集。启用某个工具集后,该集合中的所有工具都将对 agent 可用。工具集分为三种类型:
|
||||
|
||||
- **核心(Core)** — 一组相关工具的逻辑分组(例如,`file` 包含 `read_file`、`write_file`、`patch`、`search_files`)
|
||||
- **复合(Composite)** — 将多个核心工具集组合用于常见场景(例如,`debugging` 包含 file、terminal 和 web 工具)
|
||||
- **平台(Platform)** — 针对特定部署环境的完整工具配置(例如,`hermes-cli` 是交互式 CLI 会话的默认配置)
|
||||
|
||||
## 配置工具集
|
||||
|
||||
### 按会话(CLI)
|
||||
|
||||
```bash
|
||||
hermes chat --toolsets web,file,terminal
|
||||
hermes chat --toolsets debugging # composite — expands to file + terminal + web
|
||||
hermes chat --toolsets all # everything
|
||||
```
|
||||
|
||||
### 按平台(config.yaml)
|
||||
|
||||
```yaml
|
||||
toolsets:
|
||||
- hermes-cli # default for CLI
|
||||
# - hermes-telegram # override for Telegram gateway
|
||||
```
|
||||
|
||||
### 交互式管理
|
||||
|
||||
```bash
|
||||
hermes tools # curses UI to enable/disable per platform
|
||||
```
|
||||
|
||||
或在会话中:
|
||||
|
||||
```
|
||||
/tools list
|
||||
/tools disable browser
|
||||
/tools enable homeassistant
|
||||
```
|
||||
|
||||
## 核心工具集
|
||||
|
||||
| 工具集 | 工具 | 用途 |
|
||||
|--------|------|------|
|
||||
| `browser` | `browser_back`, `browser_cdp`, `browser_click`, `browser_console`, `browser_dialog`, `browser_get_images`, `browser_navigate`, `browser_press`, `browser_scroll`, `browser_snapshot`, `browser_type`, `browser_vision`, `web_search` | 核心浏览器自动化。包含 `web_search` 作为快速查询的备用方案。`browser_cdp` 和 `browser_dialog` 在运行时受限——仅在会话启动时 CDP 端点可达(通过 `/browser connect`、`browser.cdp_url` 配置、Browserbase 或 Camofox)时才注册。`browser_dialog` 与 `browser_snapshot` 在附加 CDP supervisor 时添加的 `pending_dialogs` 和 `frame_tree` 字段配合使用。 |
|
||||
| `clarify` | `clarify` | 当 agent 需要澄清时向用户提问。 |
|
||||
| `code_execution` | `execute_code` | 运行以编程方式调用 Hermes 工具的 Python 脚本。 |
|
||||
| `cronjob` | `cronjob` | 调度和管理周期性任务。 |
|
||||
| `debugging` | 复合(`file` + `terminal` + `web`) | 调试套件——文件、进程/终端、网页提取/搜索。 |
|
||||
| `delegation` | `delegate_task` | 生成隔离的子 agent 实例以并行执行工作。 |
|
||||
| `discord` | `discord` | 核心 Discord 文本/嵌入/私信操作(仅限 gateway)。在 `hermes-discord` 工具集上激活。 |
|
||||
| `discord_admin` | `discord_admin` | Discord 管理操作(封禁、角色变更、频道管理)。在 `hermes-discord` 工具集上激活;需要 bot 持有相关 Discord 权限。 |
|
||||
| `feishu_doc` | `feishu_doc_read` | 读取飞书/Lark 文档内容。由飞书文档评论智能回复处理器使用。 |
|
||||
| `feishu_drive` | `feishu_drive_add_comment`, `feishu_drive_list_comments`, `feishu_drive_list_comment_replies`, `feishu_drive_reply_comment` | 飞书/Lark 云盘评论操作。仅限评论 agent 使用;不在 `hermes-cli` 或其他消息工具集上暴露。 |
|
||||
| `file` | `patch`, `read_file`, `search_files`, `write_file` | 文件读取、写入、搜索和编辑。 |
|
||||
| `homeassistant` | `ha_call_service`, `ha_get_state`, `ha_list_entities`, `ha_list_services` | 通过 Home Assistant 进行智能家居控制。仅在设置 `HASS_TOKEN` 时可用。 |
|
||||
| `computer_use` | `computer_use` | 通过 cua-driver 进行后台 macOS 桌面控制——不抢占光标/焦点。适用于任何支持工具调用的模型。仅限 macOS;需要 `cua-driver` 在 `$PATH` 中。 |
|
||||
| `image_gen` | `image_generate` | 通过 FAL.ai 进行文本生成图像(支持可选的 OpenAI / xAI 后端)。 |
|
||||
| `video_gen` | `video_generate` | 通过插件注册的后端(xAI Grok-Imagine、FAL.ai Veo 3.1 / Pixverse v6 / Kling O3)进行文本生成视频和图像生成视频。传入 `image_url` 可对图像进行动画化;省略则为文本生成视频。 |
|
||||
| `kanban` | `kanban_block`, `kanban_comment`, `kanban_complete`, `kanban_create`, `kanban_heartbeat`, `kanban_link`, `kanban_list`, `kanban_show`, `kanban_unblock` | 多 agent 协调工具。为调度器生成的任务工作者(`HERMES_KANBAN_TASK`)以及显式启用 `kanban` 工具集的 profile 注册。工作者可标记任务完成、阻塞、心跳、评论以及创建/关联后续任务;编排器 profile 还额外获得看板路由工具,如 list/unblock。 |
|
||||
| `memory` | `memory` | 持久化跨会话记忆管理。 |
|
||||
| `messaging` | `send_message` | 在会话中向其他平台(Telegram、Discord 等)发送消息。 |
|
||||
| `moa` | `mixture_of_agents` | 通过 Mixture of Agents 实现多模型共识。 |
|
||||
| `safe` | `image_generate`, `vision_analyze`, `web_extract`, `web_search`(通过 `includes`) | 只读研究 + 媒体生成。无文件写入、无终端、无代码执行。 |
|
||||
| `search` | `web_search` | 仅网页搜索(不含提取)。 |
|
||||
| `session_search` | `session_search` | 搜索历史会话记录。 |
|
||||
| `skills` | `skill_manage`, `skill_view`, `skills_list` | 技能的增删改查与浏览。 |
|
||||
| `spotify` | `spotify_albums`, `spotify_devices`, `spotify_library`, `spotify_playback`, `spotify_playlists`, `spotify_queue`, `spotify_search` | 原生 Spotify 控制(播放、队列、搜索、播放列表、专辑、音乐库)。由内置 `spotify` 插件注册。 |
|
||||
| `terminal` | `process`, `terminal` | Shell 命令执行和后台进程管理。 |
|
||||
| `todo` | `todo` | 会话内任务列表管理。 |
|
||||
| `tts` | `text_to_speech` | 文本转语音音频生成。 |
|
||||
| `vision` | `vision_analyze` | 通过视觉能力模型进行图像分析。 |
|
||||
| `video` | `video_analyze` | 视频分析与理解工具(需手动启用,不在默认工具集中——通过 `--toolsets` 显式添加)。 |
|
||||
| `web` | `web_extract`, `web_search` | 网页搜索和页面内容提取。 |
|
||||
| `x_search` | `x_search` | 通过 xAI 内置的 `x_search` Responses 工具搜索 X(Twitter)帖子和话题。默认关闭;通过 `hermes tools` 启用。仅在配置了 xAI 凭据(SuperGrok OAuth 或 `XAI_API_KEY`)时注册 schema。 |
|
||||
| `yuanbao` | `yb_query_group_info`, `yb_query_group_members`, `yb_search_sticker`, `yb_send_dm`, `yb_send_sticker` | 元宝私信/群组操作和表情包搜索。仅在 `hermes-yuanbao` 上注册。 |
|
||||
|
||||
## 平台工具集
|
||||
|
||||
平台工具集定义了部署目标的完整工具配置。大多数消息平台使用与 `hermes-cli` 相同的配置:
|
||||
|
||||
| 工具集 | 与 `hermes-cli` 的差异 |
|
||||
|--------|------------------------|
|
||||
| `hermes-cli` | 完整工具集——交互式 CLI 会话的默认配置。包含 file、terminal、web、browser、memory、skills、vision、image_gen、todo、tts、delegation、code_execution、cronjob、session_search、clarify 和 `safe`(只读)套件,以及标准消息工具。 |
|
||||
| `hermes-acp` | 移除了 `clarify`、`cronjob`、`image_generate`、`send_message`、`text_to_speech` 以及全部四个 Home Assistant 工具。专注于 IDE 环境中的编码任务。 |
|
||||
| `hermes-api-server` | 移除了 `clarify`、`send_message` 和 `text_to_speech`。保留其他所有工具——适用于无法进行用户交互的程序化访问场景。 |
|
||||
| `hermes-cron` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-telegram` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-discord` | 在 `hermes-cli` 基础上添加了 `discord` 和 `discord_admin`。 |
|
||||
| `hermes-slack` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-whatsapp` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-signal` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-matrix` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-mattermost` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-email` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-sms` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-bluebubbles` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-dingtalk` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-feishu` | 添加了五个 `feishu_doc_*` / `feishu_drive_*` 工具(仅由文档评论处理器使用,不用于常规聊天适配器)。 |
|
||||
| `hermes-qqbot` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-wecom` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-wecom-callback` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-weixin` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-yuanbao` | 在 `hermes-cli` 基础上添加了五个 `yb_*` 工具(私信/群组/表情包)。 |
|
||||
| `hermes-homeassistant` | 与 `hermes-cli` 相同(Home Assistant 工具默认已存在,在设置 `HASS_TOKEN` 时激活)。 |
|
||||
| `hermes-webhook` | 与 `hermes-cli` 相同。 |
|
||||
| `hermes-gateway` | 内部 gateway 编排器工具集——所有 `hermes-<platform>` 工具集的并集;当 gateway 需要接受任意消息来源时使用。 |
|
||||
|
||||
## 动态工具集
|
||||
|
||||
### MCP server 工具集
|
||||
|
||||
每个已配置的 MCP server 在运行时会生成一个 `mcp-<server>` 工具集。例如,若配置了 `github` MCP server,则会创建包含该 server 所有暴露工具的 `mcp-github` 工具集。
|
||||
|
||||
```yaml
|
||||
# config.yaml
|
||||
mcp_servers:
|
||||
github:
|
||||
command: npx
|
||||
args: ["-y", "@modelcontextprotocol/server-github"]
|
||||
```
|
||||
|
||||
这将创建一个 `mcp-github` 工具集,可在 `--toolsets` 或平台配置中引用。
|
||||
|
||||
### 插件工具集
|
||||
|
||||
插件可在初始化期间通过 `ctx.register_tool()` 注册自己的工具集。这些工具集与内置工具集并列显示,可以用相同方式启用/禁用。
|
||||
|
||||
### 自定义工具集
|
||||
|
||||
在 `config.yaml` 中定义自定义工具集,以创建项目专属的工具集合:
|
||||
|
||||
```yaml
|
||||
toolsets:
|
||||
- hermes-cli
|
||||
custom_toolsets:
|
||||
data-science:
|
||||
- file
|
||||
- terminal
|
||||
- code_execution
|
||||
- web
|
||||
- vision
|
||||
```
|
||||
|
||||
### 通配符
|
||||
|
||||
- `all` 或 `*` — 展开为所有已注册的工具集(内置 + 动态 + 插件)
|
||||
|
||||
## 与 `hermes tools` 的关系
|
||||
|
||||
`hermes tools` 命令提供基于 curses 的 UI,用于按平台切换单个工具的启用/禁用状态。该操作在工具级别进行(比工具集更细粒度),并持久化到 `config.yaml`。即使工具集已启用,被禁用的工具也会被过滤掉。
|
||||
|
||||
另请参阅:[工具参考](./tools-reference.md),获取所有单个工具及其参数的完整列表。
|
||||
Reference in New Issue
Block a user