Skip to content

配置

Hermes Agent 的所有配置通过两个文件管理:

文件用途
~/.hermes/config.yaml主配置文件(非敏感配置)
~/.hermes/.env密钥与凭据(API Key 等)

原则:凡是涉及密钥、Token、密码的配置项,一律写入 .env;其余配置写入 config.yaml


配置管理命令

bash
# 查看所有当前配置
hermes config show

# 设置单个配置项
hermes config set key value

# 打开编辑器编辑完整配置
hermes config edit

# 迁移旧版配置格式到新版
hermes config migrate

模型与提供商配置

通过交互式选择器配置默认模型:

bash
hermes model

或直接在 config.yaml 中指定:

yaml
provider:
  # 默认提供商
  default: nous_portal  # nous_portal | openrouter | openai | anthropic | google | deepseek | ollama

  # 各提供商的模型选择
  models:
    nous_portal: hermes-3-llama-3.1-70b
    openrouter: anthropic/claude-3-5-sonnet
    openai: gpt-4o
    anthropic: claude-3-5-sonnet-20241022
    google: gemini-1.5-pro
    deepseek: deepseek-chat
    ollama: llama3.2

  # OpenAI 兼容自定义端点
  custom_openai:
    base_url: https://your-endpoint.com/v1
    model: your-model-name

对应的 .env 密钥:

bash
NOUS_API_KEY=nsk-xxxxxxxxxxxx
OPENROUTER_API_KEY=sk-or-xxxxxxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxx
GOOGLE_API_KEY=AIzaxxxxxxxxxx
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxx

记忆配置

控制持久记忆和用户画像功能:

yaml
memory:
  # 是否启用跨会话持久记忆
  memory_enabled: true

  # 是否启用用户画像积累
  user_profile_enabled: true

  # 记忆条目上限(超出后自动压缩/淘汰旧记忆)
  max_memory_entries: 500

  # 用户画像最大长度(Token 数)
  max_profile_tokens: 2000

  # 记忆检索相关性阈值(0.0 ~ 1.0)
  retrieval_threshold: 0.7

  # 使用向量数据库增强检索(需安装 vector extra)
  vector_store:
    enabled: false
    backend: chroma  # chroma | qdrant
    path: ~/.hermes/vectordb

终端后端配置

控制 Hermes Agent 如何执行终端命令:

yaml
terminal:
  # 后端类型
  # local       - 直接在宿主机执行(默认)
  # docker      - 在 Docker 容器中执行(推荐,更安全)
  # ssh         - 在远程服务器上执行
  # singularity - HPC 集群环境
  # modal       - Modal 无服务器执行
  # daytona     - Daytona 云开发环境
  backend: local

  # 命令执行超时(秒)
  timeout: 300

  # Docker 后端配置
  docker:
    image: nousresearch/hermes-sandbox:latest
    # 允许挂载的宿主机目录(逗号分隔)
    allowed_mounts:
      - ~/projects
      - /tmp
    # 容器内工作目录
    workdir: /workspace
    # 网络模式
    network: bridge
    # 内存限制
    memory_limit: 2g
    # CPU 限制
    cpu_limit: "2.0"

  # SSH 后端配置
  ssh:
    host: your-server.example.com
    port: 22
    user: ubuntu
    key_file: ~/.ssh/id_rsa
    # 或使用密码(不推荐)
    # password: your_password

  # Singularity 后端配置
  singularity:
    image: /path/to/hermes.sif
    bind_paths:
      - /scratch:/workspace

  # Modal 后端配置
  modal:
    app_name: hermes-agent
    cpu: 2
    memory: 4096

对话压缩配置

当对话上下文超过模型 Token 限制时,自动进行摘要压缩:

yaml
compression:
  # 是否启用自动压缩
  enabled: true

  # 触发压缩的 Token 阈值(占模型上下文窗口的比例)
  threshold: 0.8

  # 用于生成摘要的模型(可使用更便宜的模型)
  summary_model: openai/gpt-4o-mini

  # 压缩时保留的最近消息数(不参与压缩)
  keep_recent: 10

显示配置

控制终端界面的显示行为:

yaml
display:
  # 输入忙碌时的行为
  # block  - 阻止输入,等待响应完成
  # queue  - 将输入加入队列
  # allow  - 允许打断当前响应(默认)
  busy_input_mode: allow

  # 工具调用预览的最大字符数
  # 超出部分折叠显示
  tool_preview_length: 500

  # 响应完成时是否响铃提示
  bell_on_complete: false

  # 是否显示 Token 用量统计
  show_token_usage: true

  # 代码块语法高亮主题
  # 支持所有 pygments 主题
  code_theme: monokai

  # 是否启用流式输出(打字机效果)
  streaming: true

  # 时间戳格式
  timestamp_format: "%H:%M:%S"

技能目录配置

除默认的 ~/.hermes/skills/ 外,还可以挂载额外的技能目录:

yaml
skills:
  # 额外的技能目录(绝对路径)
  external_dirs:
    - ~/my-team-skills
    - /opt/shared-skills
    - /home/user/projects/custom-skills

  # 是否自动从对话中提炼技能
  auto_extract: true

  # 技能提炼的置信度阈值(0.0 ~ 1.0)
  extraction_threshold: 0.8

人格(Personality)配置

定义智能体的行为风格和专业角色:

yaml
agent:
  personalities:
    # 人格 ID(通过 hermes --persona <id> 激活)
    - id: default
      name: Hermes
      description: 通用助手
      system_prompt: |
        你是 Hermes,一个由 Nous Research 开发的 AI 助手。
        你博学多才,乐于助人,回复简洁清晰。
        在中国环境中,优先使用中文回复。

    - id: dev
      name: 开发助手
      description: 专注于软件开发的技术助手
      system_prompt: |
        你是一名资深软件工程师,专注于代码质量和最佳实践。
        回复时优先给出可直接运行的代码示例,并附上简要说明。
        对于架构问题,先了解需求再给出建议。

    - id: writer
      name: 写作助手
      description: 专注于内容创作和文字润色
      system_prompt: |
        你是一名专业文字工作者,擅长各种文体的写作和润色。
        回复时注重文字的准确性、流畅性和感染力。

激活指定人格:

bash
hermes --persona dev
hermes --persona writer

快捷命令配置

定义常用命令的快捷方式:

yaml
quick_commands:
  # 格式:命令名: 完整提示词
  commands:
    standup: "生成今日工作日报,包括昨日完成事项、今日计划和遇到的问题"
    review: "对以下代码进行 code review,关注性能、安全性和可维护性"
    translate: "将以下内容翻译成英文,保持原文风格和格式"
    summarize: "用三句话总结以下内容的核心要点"
    commit: "根据 git diff 内容,生成符合 Conventional Commits 规范的提交信息"

使用快捷命令:

bash
hermes /standup
hermes /review < mycode.py

审批模式配置

控制 Hermes Agent 在执行敏感操作前是否需要用户确认:

yaml
approvals:
  # 审批模式
  # manual  - 手动审批(默认,最安全)
  # smart   - 由 LLM 评估风险,低风险自动批准
  # off     - 关闭审批,自动批准所有操作(危险!)
  mode: manual

  # 手动审批超时(秒),超时后自动拒绝
  timeout: 30

  # smart 模式下,风险评分低于此阈值时自动批准(0.0 ~ 1.0)
  auto_approve_threshold: 0.2

  # 始终需要审批的操作类型(即使在 smart 或 off 模式下)
  always_require:
    - recursive_delete
    - system_modification
    - network_expose

安全配置

yaml
security:
  # 网站访问黑名单(支持域名和 IP 段)
  website_blocklist:
    - "*.torrent"
    - "*.onion"
    - "192.168.0.0/16"  # 阻止访问内网
    - "10.0.0.0/8"

  # 是否启用 SSRF 防护
  ssrf_protection: true

  # 是否启用 Tirith 预执行安全扫描
  tirith_scanning: true

  # 凭据自动脱敏(在日志和输出中隐藏 API Key)
  credential_redaction: true

MCP 服务器配置

将外部 MCP 服务器的工具集成到 Hermes Agent:

yaml
mcp:
  servers:
    # 本地 MCP 服务器(stdio 协议)
    - name: filesystem
      type: stdio
      command: npx
      args:
        - "-y"
        - "@modelcontextprotocol/server-filesystem"
        - "/home/user/documents"

    # 远程 MCP 服务器(SSE 协议)
    - name: custom-tools
      type: sse
      url: https://your-mcp-server.example.com/sse
      headers:
        Authorization: "Bearer ${MCP_SERVER_TOKEN}"

    # Brave Search MCP
    - name: brave-search
      type: stdio
      command: npx
      args:
        - "-y"
        - "@modelcontextprotocol/server-brave-search"
      env:
        BRAVE_API_KEY: "${BRAVE_API_KEY}"

TTS(文字转语音)配置

yaml
tts:
  # TTS 引擎
  # edge       - Microsoft Edge TTS(免费,无需 API Key)
  # elevenlabs - ElevenLabs(高质量,需要 API Key)
  # openai     - OpenAI TTS(需要 API Key)
  engine: edge

  # Edge TTS 配置
  edge:
    voice: zh-CN-XiaoxiaoNeural  # 中文女声
    rate: "+0%"    # 语速(-50% ~ +200%)
    pitch: "+0Hz"  # 音调

  # ElevenLabs 配置
  elevenlabs:
    voice_id: your_voice_id
    model: eleven_multilingual_v2
    stability: 0.5
    similarity_boost: 0.75

  # OpenAI TTS 配置
  openai:
    model: tts-1-hd
    voice: nova  # alloy | echo | fable | onyx | nova | shimmer
    speed: 1.0

  # 是否在响应完成后自动朗读
  auto_speak: false

对应的 .env 密钥:

bash
ELEVENLABS_API_KEY=your_key_here

完整配置示例

以下是一份面向中文用户的推荐配置:

yaml
provider:
  default: openrouter
  models:
    openrouter: anthropic/claude-3-5-sonnet

memory:
  memory_enabled: true
  user_profile_enabled: true
  max_memory_entries: 300

terminal:
  backend: docker
  timeout: 180
  docker:
    image: nousresearch/hermes-sandbox:latest
    allowed_mounts:
      - ~/projects

compression:
  enabled: true
  threshold: 0.8
  summary_model: openai/gpt-4o-mini

display:
  busy_input_mode: allow
  tool_preview_length: 300
  bell_on_complete: true
  show_token_usage: true
  streaming: true

approvals:
  mode: smart
  timeout: 30
  auto_approve_threshold: 0.2

security:
  ssrf_protection: true
  credential_redaction: true

tts:
  engine: edge
  edge:
    voice: zh-CN-XiaoxiaoNeural
  auto_speak: false

基于 MIT 许可发布 | 由 Nous Research 开发