本文是 Hermes Agent 系列的第二篇。如果你还没安装,建议先阅读 《Hermes Agent 安装与使用指南》

概览

安装只是第一步,真正让 Hermes Agent 发挥全部威力的是深度配置进阶用法。本文将从核心配置文件出发,一步步带你掌握自定义技能开发、多代理协作、自定义后端、安全强化等高级主题。

flowchart TD
subgraph "配置层"
A[config.yaml] --> B[模型路由]
A --> C[终端后端]
A --> D[消息网关]
A --> E[安全策略]
end

subgraph "能力层"
F[自定义技能开发]
G[多代理管线]
H[记忆策略调优]
I[定时任务编排]
end

subgraph "部署层"
J[Docker Compose]
K[SSH 集群]
L[Daytona Cloud]
M[Modal Serverless]
end

B & C & D & E --> F & G & H & I
F & G & H & I --> J & K & L & M

style A fill:#7C3AED,color:#fff
style F fill:#F59E0B,color:#000
style J fill:#10B981,color:#fff

1. 核心配置深度解析

Hermes Agent 的配置体系分为两层:

层级 文件 用途 示例
非敏感配置 ~/.hermes/config.yaml 模型、后端、平台、行为 默认模型、终端类型
密钥配置 ~/.hermes/.env API Keys、Tokens ANTHROPIC_API_KEY=sk-ant-xxx

1.1 config.yaml 全字段详解

# ============ 模型配置 ============
model: anthropic/claude-sonnet-4-20250514 # 默认模型
# 模型格式: provider/model-name
# 常见: openai/gpt-4o, deepseek/deepseek-chat, google/gemini-2.5-flash

# ============ 回退模型 ============
fallback_models: # 主模型不可用时自动回退
- anthropic/claude-haiku-3-20250313
- openai/gpt-4o-mini
- openrouter/meta-llama/llama-4-scout

# ============ 上下文窗口 ============
max_tokens: 200000 # 最大上下文 token 数
max_output_tokens: 8192 # 每次回复最大输出
context_compression: auto # auto | manual | off
compress_at_pct: 80 # 上下文使用达 80% 时自动压缩

# ============ 温度与采样 ============
temperature: 0.3 # 创造力 (0.0-2.0)
top_p: 0.95 # 核采样阈值
top_k: 40 # Top-K 采样

# ============ 终端后端 ============
terminal:
backend: local # local | docker | ssh | daytona | modal
work_dir: /home/user/hermes-workspace # 默认工作目录
isolated: true # 隔离模式(禁止访问 ~ 外目录)
network: false # 禁止终端访问网络
timeout: 120 # 命令最长时间(秒)

# ============ 消息网关 ============
gateway:
host: 0.0.0.0 # 监听地址
port: 6742 # SDK 端口
auto_start: true # 会话启动时自动启动网关
whitelist: # 白名单用户(为空则拒绝所有)
- telegram:123456789
- discord:user@example.com

# ============ 记忆配置 ============
memory:
engine: builtin # builtin | honcho | qdrant
auto_summarize: true # 自动摘要旧会话
retention_days: 90 # 会话保留天数
user_profile: true # 启用用户画像
profile_depth: 2 # 画像分析深度 (1-5)

# ============ 技能系统 ============
skills:
auto_create: true # 代理自主创建技能
hub: https://agentskills.io # 技能市场地址
local_dir: ~/.hermes/skills # 本地技能存放目录

# ============ 安全策略 ============
security:
approval_required: true # 高危命令需审批
sandbox: false # 强制沙箱执行
allowed_commands: # 命令白名单
- git
- npm
- python3
blocked_commands: # 命令黑名单
- rm -rf /
- dd
rate_limit: 30 # 每分钟最大命令数

# ============ 定时任务 ============
scheduler:
enabled: true # 启用 Cron 调度
timezone: Asia/Shanghai # 时区
max_concurrent: 3 # 最大并行任务数

# ============ 日志与调试 ============
logging:
level: info # debug | info | warn | error
file: ~/.hermes/logs/hermes.log # 日志文件路径
max_size: 50MB # 日志轮转大小

1.2 配置生效顺序

flowchart LR
A[默认值] --> B[config.yaml]
B --> C[CLI 参数]
C --> D[会话内 /model 命令]
D --> E[最终配置]

A -.- F["最低安全配置"]
B -.- G["用户偏好"]
C -.- H["临时覆盖"]
D -.- I["实时切换"]

style E fill:#7C3AED,color:#fff
style I fill:#F59E0B,color:#000

即:会话内 /model → CLI 参数 → config.yaml → 硬编码默认值,优先级从高到低。

1.3 .env 密钥管理

所有 API Key 统一存放在 ~/.hermes/.env

# 模型提供商
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxx
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxx
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxx
OPENROUTER_API_KEY=sk-or-xxxxxxxxxxxx
GOOGLE_API_KEY=AIzaxxxxxxxxxxxx
GROQ_API_KEY=gsk_xxxxxxxxxxxx
XAI_API_KEY=xai-xxxxxxxxxxxx
MISTRAL_API_KEY=xxxxxxxxxxxx

# 消息平台
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234
DISCORD_BOT_TOKEN=MTE4Mzxxxxxxxxx
SLACK_BOT_TOKEN=xoxb-xxxxxxxxx
FEISHU_APP_ID=cli_xxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxx

# 其他服务
# 你可以在这里添加任意自定义密钥

⚠️ 安全提醒.env 文件权限自动设为 600(仅所有者可读写),永远不要将这个文件提交到 Git。


2. 多模型策略

2.1 按任务类型路由

通过 Hermes 的提示词注入能力,你可以让不同模型处理不同类型的任务:

# 编码类任务 → DeepSeek Coder
hermes -m deepseek/deepseek-coder "用 Python 写一个快速排序"

# 创意类任务 → Claude Sonnet
hermes -m anthropic/claude-sonnet-4 "写一首关于代码的诗"

# 快速回答 → GPT-4o-mini
hermes -m openai/gpt-4o-mini "今天天气怎么样?"

2.2 模型回退链

当主模型限流或不可用时,Hermes 自动按 fallback_models 列表降级:

主模型: Claude Sonnet 4
↓ 限流/超时
回退 1: Claude Haiku 3
↓ 仍不可用
回退 2: GPT-4o-mini
↓ 还不行
回退 3: Llama 4 Scout(OpenRouter)

每种回退触发都会记录日志,你可以后续查看并调整提供商配额。

2.3 自定义模型端点

想用本地部署的模型(Ollama / VLLM / LM Studio)?配置自定义提供商:

hermes config set CUSTOM_LLAMA_BASE_URL http://localhost:11434/v1
hermes config set CUSTOM_LLAMA_MODEL llama3.1:70b

然后在 .env 中添加:

# 不需要额外 Key(本地模型)
CUSTOM_LLAMA_API_KEY=not-needed

之后就可以用 custom-llama/llama3.1:70b 来调用。


3. 记忆系统深度配置

3.1 三种记忆引擎对比

引擎 存储方式 适用场景 查询能力
builtin 文件系统(Markdown) 单机、个人使用 FTS5 全文搜索
honcho 外部 Honcho 服务 辩证用户画像 语义搜索 + 辩证建模
qdrant Qdrant 向量数据库 大规模语义检索 向量相似度搜索

切换引擎:

hermes config set memory.engine qdrant
hermes config set memory.qdrant_url http://localhost:6333

3.2 记忆调优参数

memory:
engine: builtin
# —— 自动摘要 ——
auto_summarize: true # 每次会话结束时自动生成摘要
summary_model: openai/gpt-4o-mini # 专门用于摘要的轻量模型
summary_length: 300 # 摘要最大字数

# —— 记忆持久化 ——
retention_days: 90 # 超过 90 天自动归档
archive_after: 30 # 30 天后转为归档(不在活跃搜索中)

# —— 用户画像 ——
user_profile: true
profile_depth: 3 # 1=基础事实,3=深度习惯与偏好,5=行为预测
profile_interval: 7 # 每 7 天更新一次用户画像

# —— 回想要点 ——
recall_max_results: 5 # 每次搜索返回最多 5 条结果
recall_min_score: 0.6 # 相似度阈值

3.3 记忆维护操作

# 手动触发记忆维护
hermes memory vacuum # 清理过期记忆
hermes memory summarize --all # 为所有旧会话生成摘要
hermes memory rebuild --engine qdrant # 重建向量索引

# 查看记忆状态
hermes memory stats # 查看记忆规模
hermes memory search "数据库设计" # 搜索记忆

# 直接编辑
hermes memory edit MEMORY.md # 在编辑器中打开记忆文件

4. 自定义技能开发

这是 Hermes Agent 最强大的能力之一——你可以教它做任何事,而且它会自己记住。

4.1 技能结构

每个技能是一个包含 SKILL.md 的目录:

~/.hermes/skills/
├── database-admin/
│ ├── SKILL.md # 技能描述 + 使用说明(必须)
│ ├── init.sh # 初始化脚本(可选)
│ └── assets/ # 资源文件(可选)
├── my-custom-deploy/
│ └── SKILL.md
└── weather-reporter/
└── SKILL.md

4.2 编写 SKILL.md

---
name: database-admin
description: MySQL/PostgreSQL 数据库管理和维护
author: 沉鱼
version: 1.0.0
triggers:
- pattern: "备份数据库"
action: run_backup
- pattern: "查看表结构"
action: describe_table
---

## 使用说明

### 查询

```sql
-- 在对话中直接说"查一下用户表的数据"
SELECT * FROM users LIMIT 10;

数据库备份

# 说"备份生产数据库到 S3"
# 自动执行:
pg_dump -h $DB_HOST -U $DB_USER -d $DB_NAME | gzip | \
aws s3 cp - s3://my-backups/db-$(date +%Y%m%d).sql.gz

安全约束

  1. 永远不要在 production 环境执行 DROP TABLE
  2. 写操作前必须要求用户确认
  3. 连接字符串从 .env 读取,不硬编码

配置

需要以下环境变量:

DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=*** # 存放在 .env

### 4.3 技能注册

技能写好之后,重新加载即可自动注册为斜杠命令:

```bash
hermes skills reload # 重载所有本地技能
hermes skills list # 确认已注册

输出:

📦 已安装技能 (8):
/database-admin 数据库管理 v1.0 沉鱼
/gif-search GIF 搜索 v2.1 openai
/github-pr PR 工作流 v1.3 community
/weather 天气预报 v0.9 official
...

4.4 技能版本控制

建议将技能目录纳入 Git 管理:

cd ~/.hermes/skills
git init
git add my-custom-deploy/
git commit -m "feat: 添加自动部署技能 v1.0"
git tag v1.0.0

Hermes 会自动检测技能版本并将其记录在 hermes skills list 中。

4.5 从代理学习创建技能

你也可以让 Hermes 自主创建技能——完成一次复杂任务后,它可能会问:

“我刚才完成了一个复杂的数据库迁移任务。是否要将其保存为可复用的技能?”

回答”是”后,Hermes 会自动生成 SKILL.md,未来的类似任务可以直接调用。

sequenceDiagram
participant 用户
participant Hermes
participant 技能系统

用户->>Hermes: "把生产数据库迁移到新服务器"
Hermes->>Hermes: 执行迁移步骤
Hermes->>Hermes: 分析复杂度和可复用性

Hermes->>用户: "此操作共执行了 12 个步骤。是否保存为技能?"
用户->>Hermes: "保存"

Hermes->>技能系统: 生成 migration-db SKILL.md
技能系统-->>Hermes: 注册 /migration-db

Note over Hermes,技能系统: 下次只需说"做数据库迁移"
Hermes->>用户: "好的,立即执行 /migration-db"

5. 多代理协作

5.1 子代理(Sub-Agents)

Hermes 可以派生多个孤立子代理并行处理任务:

你: "帮我做三件事:
1. 分析这个 API 的性能瓶颈
2. 写一份新功能的原型代码
3. 起草一封给客户的邮件"

Hermes: "好的,我并行处理这三件事:"
flowchart TD
P[主代理:协调] --> A[子代理 1:性能分析]
P --> B[子代理 2:原型开发]
P --> C[子代理 3:邮件起草]

A --> R1[分析报告]
B --> R2[原型代码]
C --> R3[邮件草稿]

R1 & R2 & R3 --> M[主代理合并结果]
M --> U[呈现给用户]

style P fill:#7C3AED,color:#fff
style A fill:#F59E0B,color:#000
style B fill:#F59E0B,color:#000
style C fill:#F59E0B,color:#000
style M fill:#10B981,color:#fff

每个子代理是完全隔离的:

  • 拥有独立的上下文窗口
  • 无法访问其他子代理的工作目录
  • 互不干扰,各自失败不会影响其他任务
  • 主代理负责合并结果和解决冲突

5.2 代理管线(Pipelines)

通过技能组合,你可以构建多步骤自动化管线:

# pipeline: code-review.yml
name: 代码审查管线
steps:
- agent: main
task: "运行 lint 检查代码风格"
- agent: sub
skill: security-audit
task: "检查代码中的安全漏洞"
- agent: sub
skill: performance-review
task: "分析性能瓶颈"
- agent: main
task: "综合以上结果,输出审查报告"

执行管线:

hermes pipeline run code-review.yml

5.3 后台任务

长时间运行的任务可以放入后台:

hermes chat
> /background "遍历项目目录,统计各模块代码行数并生成报表"

任务在后台执行,你可以继续聊天。完成后 Hermes 会通知你。


6. 自定义终端后端

6.1 Docker 后端

最适合安全沙箱:

hermes config set terminal.backend docker

默认镜像 hermes-agent/terminal:latest 包含:

  • Python 3.12
  • Node.js 22
  • Git / Curl / Wget
  • 常见开发工具

自定义镜像:

# config.yaml
terminal:
backend: docker
docker:
image: my-custom-image:latest
volumes:
- /data:/data:ro # 只读挂载
- ~/.ssh:/home/hermes/.ssh:ro # SSH 密钥
network: bridge # bridge | none | host
memory_limit: 4g # 内存限制
cpu_limit: 2 # CPU 核心数

6.2 SSH 后端

远程服务器执行:

terminal:
backend: ssh
ssh:
host: 192.168.1.100
port: 22
user: hermes
key: ~/.ssh/hermes_ed25519
work_dir: /home/hermes/workspace

建议为 Hermes 创建一个专用 Linux 用户,限制其权限。

6.3 Daytona 云后端

按需启动、闲置休眠,近乎零成本:

hermes config set terminal.backend daytona
hermes config set DAYTONA_API_KEY dtn_xxxxx

Daytona 会自动:

  • 首次执行时创建工作空间
  • 执行完成后保留状态
  • 闲置 15 分钟后休眠
  • 下次命令时秒级唤醒

6.4 后端切换策略

flowchart LR
subgraph "本地"
A[local 本地终端]
end
subgraph "安全隔离"
B[Docker 沙箱]
C[SSH 远程]
end
subgraph "云上"
D[Daytona 弹窗]
E[Modal Serverless]
end

F{任务类型?}
F -->|"日常查询/文件操作"| A
F -->|"危险命令/第三方代码"| B
F -->|"访问内网服务器"| C
F -->|"重型编译/渲染"| D
F -->|"短时批量任务"| E

style F fill:#7C3AED,color:#fff

7. 安全强化

7.1 命令审批

对于 productionDELETEDROP 等高危操作,Hermes 会自动暂停并请求确认:

Hermes: 
即将执行命令: DELETE FROM users WHERE id = 1
影响范围: production 数据库
请确认: [/approve] 继续 | [/reject] 取消

7.2 沙箱强制执行

强制所有命令在沙箱中执行:

security:
sandbox: true # 全局强制沙箱
sandbox_backend: docker # 使用 Docker 作沙箱
sandbox_image: hermes-sandbox:latest # 最小化镜像(无网络工具)

7.3 精细权限控制

security:
# 按路径限制
allowed_paths:
- /home/user/projects
- /tmp/hermes
blocked_paths:
- /etc
- /var/log

# 按命令限制
command_rules:
- pattern: "rm"
require_approval: always # 所有 rm 命令都要审批
- pattern: "git push"
require_approval: on-diff # git push 在非 master 分支时自动审批
- pattern: "curl"
blocked: true # 禁止 curl

# 用户白名单
whitelist:
- telegram:123456789 # 只允许此用户

7.4 审计日志

所有命令执行记录在日志中:

hermes logs --filter command --level info --last 50

输出示例:

2026-05-07 10:15:23 [COMMAND] user=telegram:123456789 cmd="git status" status=ok cwd=/projects/blog
2026-05-07 10:15:30 [COMMAND] user=telegram:123456789 cmd="rm -rf node_modules" status=approved cwd=/projects/blog
2026-05-07 10:16:01 [SECURITY] user=discord:98765 blocked: cmd="curl http://malicious.site" reason=blocked_command

8. 网关与多平台高级配置

8.1 网关高可用

gateway:
host: 0.0.0.0
port: 6742
# TLS 加密
tls:
enable: true
cert: /etc/hermes/cert.pem
key: /etc/hermes/key.pem
# 反向代理友好
trust_proxy: true
proxy_headers:
- X-Forwarded-For
- X-Real-IP

8.2 平台路由

不同平台 -> 不同行为:

gateway:
platforms:
telegram:
allow_commands: true # Telegram 允许执行命令
max_context: 100000 # 减少 token 消耗
greeting: "你好!我是你的 AI 助手"
discord:
allow_commands: false # Discord 只允许对话
thread_only: true # 仅在线程中回复
email:
max_reply_length: 500 # 邮件回复不超过 500 字
signature: "\n--\n沉鱼的 AI 助手"

8.3 系统服务管理

# 安装为系统服务
hermes gateway install # systemd / launchd / NSSM(Windows)

# 日常管理
hermes gateway start
hermes gateway stop
hermes gateway restart
hermes gateway status # 查看运行状态和平台连接数

9. 定时任务编排

9.1 高级 Cron 配置

scheduler:
jobs:
- name: "每日博客备份"
schedule: "0 3 * * *" # 每天凌晨 3 点
task: "备份 /data/blog 到 S3"
platform: telegram # 完成后通过 Telegram 通知
timeout: 600 # 超时 10 分钟
retry: 3 # 失败重试 3 次

- name: "每周性能报告"
schedule: "0 9 * * 1" # 每周一上午 9 点
task: "检查服务器磁盘、CPU、内存使用率并生成报告"
platform: email
to: admin@example.com

- name: "GitHub 每日动态"
schedule: "0 8 * * *" # 每天早上 8 点
task: "查看我仓库的 Issues / PR 状态,汇总给我"
platform: discord

9.2 自然语言设定

直接在对话中说:

Hermes:
用户: "帮我设个定时任务,每天晚上 10 点检查服务器磁盘使用率,超过 80% 就通知我"
Hermes: "已创建定时任务。每天 22:00 检查磁盘使用率,>80% 时通过当前平台通知你。"

9.3 任务管理命令

hermes cron list              # 查看所有定时任务
hermes cron pause backup # 暂停 backup 任务
hermes cron resume backup # 恢复
hermes cron delete backup # 删除
hermes cron run backup --now # 立即执行(不等待调度)

10. 性能调优

10.1 上下文压缩策略

策略 行为 适用场景
auto 达到阈值自动压缩 日常使用
manual 手动 /compress 需要精确控制
off 从不压缩 超长上下文模型

10.2 响应速度优化

# 流式输出
streaming: true # 逐字输出,减少等待感

# 并行工具调用
parallel_tool_calls: true # 同时调用多个工具

# 缓存
cache:
model_responses: true # 缓存相同输入的回复
ttl: 300 # 缓存 5 分钟
max_size: 100MB # 缓存最大 100MB

10.3 资源配置建议

使用场景 推荐模型 上下文 终端后端 记忆引擎
日常聊天/问答 GPT-4o-mini 128K local builtin
编码开发 Claude Sonnet 4 200K local builtin
重型代码项目 DeepSeek Coder 128K docker qdrant
服务器运维 Claude Haiku 3 200K ssh builtin
多平台服务 Claude Sonnet 4 200K daytona honcho
研究分析 Gemini 2.5 Pro 1M daytona qdrant

11. 常见问题与排查

网关连接失败

hermes doctor                    # 全面诊断
hermes gateway status # 查看网关状态
telnet localhost 6742 # 测试端口连通性

模型限流

# 检查限流状态
hermes model status

# 临时切换模型
/model gpt-4o-mini

# 永久切换默认模型
hermes config set model openrouter/meta-llama/llama-4-scout

记忆膨胀

hermes memory stats              # 查看记忆大小
hermes memory vacuum # 清理过期记忆
hermes memory rebuild # 重建索引

日志分析

hermes logs --level warn --since "2h ago"   # 最近 2 小时的警告
hermes logs --filter error --tail 20 # 最近 20 条错误

12. 总结

Hermes Agent 的配置体系非常灵活,进阶使用可以从以下几个方向深入:

方向 难度 价值
📝 自定义技能开发 ⭐⭐⭐ 最高——将重复工作自动化
🔄 多代理管线 ⭐⭐⭐⭐ 处理复杂多步骤任务
🔧 自定义后端 ⭐⭐ 安全与性能平衡
🔐 安全强化 ⭐⭐ 生产环境必备
⏰ 任务编排 日常效率倍增器
🧠 记忆策略 ⭐⭐⭐ 长期使用体验质变

推荐学习路径:

  1. ✅ 先配置好 config.yaml 基础项(模型、后端)
  2. ✅ 尝试编写 1-2 个简单技能
  3. ✅ 配置定时任务优化日常流程
  4. ✅ 探索子代理并行任务
  5. 🔜 深入学习记忆策略调优

延伸阅读