本文是 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 fallback_models: - anthropic/claude-haiku-3-20250313 - openai/gpt-4o-mini - openrouter/meta-llama/llama-4-scout max_tokens: 200000 max_output_tokens: 8192 context_compression: auto compress_at_pct: 80 temperature: 0.3 top_p: 0.95 top_k: 40 terminal: backend: local work_dir: /home/user/hermes-workspace isolated: true network: false timeout: 120 gateway: host: 0.0 .0 .0 port: 6742 auto_start: true whitelist: - telegram:123456789 - discord:user@example.com memory: engine: builtin auto_summarize: true retention_days: 90 user_profile: true profile_depth: 2 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 timezone: Asia/Shanghai max_concurrent: 3 logging: level: info 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 的提示词注入 能力,你可以让不同模型处理不同类型的任务:
hermes -m deepseek/deepseek-coder "用 Python 写一个快速排序" hermes -m anthropic/claude-sonnet-4 "写一首关于代码的诗" 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 中添加:
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 archive_after: 30 user_profile: true profile_depth: 3 profile_interval: 7 recall_max_results: 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;
数据库备份 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
安全约束
永远不要在 production 环境执行 DROP TABLE
写操作前必须要求用户确认
连接字符串从 .env 读取,不硬编码
配置 需要以下环境变量:
DB_HOST=localhost DB_PORT=5432 DB_USER=admin DB_PASSWORD=***
### 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/skillsgit 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) 通过技能组合,你可以构建多步骤自动化管线:
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
常见开发工具
自定义镜像:
terminal: backend: docker docker: image: my-custom-image:latest volumes: - /data:/data:ro - ~/.ssh:/home/hermes/.ssh:ro network: bridge memory_limit: 4g cpu_limit: 2
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 命令审批 对于 production、DELETE、DROP 等高危操作,Hermes 会自动暂停并请求确认:
Hermes: 即将执行命令: DELETE FROM users WHERE id = 1 影响范围: production 数据库 请确认: [/approve] 继续 | [/reject] 取消
7.2 沙箱强制执行 强制所有命令在沙箱中执行:
security: sandbox: true sandbox_backend: 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 - pattern: "git push" require_approval: on-diff - pattern: "curl" blocked: true 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: 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 max_context: 100000 greeting: "你好!我是你的 AI 助手" discord: allow_commands: false thread_only: true email: max_reply_length: 500 signature: "\n--\n沉鱼的 AI 助手"
8.3 系统服务管理 hermes gateway install hermes gateway start hermes gateway stop hermes gateway restart hermes gateway status
9. 定时任务编排 9.1 高级 Cron 配置 scheduler: jobs: - name: "每日博客备份" schedule: "0 3 * * *" task: "备份 /data/blog 到 S3" platform: telegram timeout: 600 retry: 3 - name: "每周性能报告" schedule: "0 9 * * 1" task: "检查服务器磁盘、CPU、内存使用率并生成报告" platform: email to: admin@example.com - name: "GitHub 每日动态" schedule: "0 8 * * *" task: "查看我仓库的 Issues / PR 状态,汇总给我" platform: discord
9.2 自然语言设定 直接在对话中说:
Hermes: 用户: "帮我设个定时任务,每天晚上 10 点检查服务器磁盘使用率,超过 80% 就通知我" Hermes: "已创建定时任务。每天 22:00 检查磁盘使用率,>80% 时通过当前平台通知你。"
9.3 任务管理命令 hermes cron list hermes cron pause 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 max_size: 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" hermes logs --filter error --tail 20
12. 总结 Hermes Agent 的配置体系非常灵活,进阶使用可以从以下几个方向深入:
方向
难度
价值
📝 自定义技能开发
⭐⭐⭐
最高——将重复工作自动化
🔄 多代理管线
⭐⭐⭐⭐
处理复杂多步骤任务
🔧 自定义后端
⭐⭐
安全与性能平衡
🔐 安全强化
⭐⭐
生产环境必备
⏰ 任务编排
⭐
日常效率倍增器
🧠 记忆策略
⭐⭐⭐
长期使用体验质变
推荐学习路径:
✅ 先配置好 config.yaml 基础项(模型、后端)
✅ 尝试编写 1-2 个简单技能
✅ 配置定时任务优化日常流程
✅ 探索子代理并行任务
🔜 深入学习记忆策略调优
延伸阅读