Hermes Agent 本地部署指南

从零开始在你的开发环境中部署 Hermes AI Agent,涵盖环境搭建、LLM 接入、工具配置与生产部署的完整流程

01

环境准备

Hermes Agent 需要 Python 3.10+Git。推荐使用 Linux 或 macOS,Windows 用户建议使用 WSL2 以获得最佳体验。

最低要求: Python ≥ 3.10,pip ≥ 23.0,8 GB+ 内存(本地运行 LLM 则需要 16 GB+),20 GB+ 可用磁盘空间。

检查现有环境:

python3 --version
# 输出应为 Python 3.10.x 或更高

pip --version
# 建议 23.0+

git --version
# 用于克隆项目

推荐使用 pyenv 管理 Python 版本:

# 安装 pyenv(如果尚未安装)
# macOS
brew install pyenv

# Linux
curl https://pyenv.run | bash

# 安装并使用 Python 3.11(推荐版本)
pyenv install 3.11.9
pyenv local 3.11.9
python --version

创建项目专用虚拟环境:

# 创建虚拟环境
python3 -m venv .venv

# 激活虚拟环境
source .venv/bin/activate    # macOS / Linux
# .venv\Scripts\activate     # Windows

# 确认虚拟环境已激活
which python
# 应显示 .venv 下的路径
02

获取项目

从 GitHub 克隆 Hermes Agent 项目,建议使用稳定版本而非最新开发分支。

# 克隆主仓库
git clone https://github.com/your-org/hermes-agent.git
cd hermes-agent

# 查看可用版本标签
git tag -l

# 切换到最新稳定版
git checkout v1.2.0   # 替换为最新稳定版本号

# 确认版本
git describe --tags

项目目录结构概览:

hermes-agent/
├── hermes/
│   ├── core/           # 核心引擎
│   ├── agents/         # Agent 实现
│   ├── tools/          # 内置工具集
│   ├── memory/         # 记忆管理
│   └── llm/            # LLM 后端适配器
├── config/
│   └── config.yaml     # 主配置文件
├── skills/             # 自定义技能目录
├── docker-compose.yml  # Docker 部署文件
├── requirements.txt
├── setup.py
└── README.md
建议: 生产环境请始终使用带版本标签的稳定版本。开发测试可使用 main 分支体验最新功能,但不保证完全稳定。
03

安装依赖

安装 Python 依赖,包括核心库和可选的 LLM 后端支持包。

# 确保虚拟环境已激活
source .venv/bin/activate

# 安装核心依赖
pip install -r requirements.txt

# 以开发模式安装项目(推荐,方便调试)
pip install -e .

# 安装可选依赖(根据需要选择)
pip install -e ".[openai]"      # OpenAI / Claude API 支持
pip install -e ".[local]"       # 本地模型支持(ollama / llama.cpp)
pip install -e ".[dev]"         # 开发工具(linter / pytest)
pip install -e ".[all]"         # 安装所有可选依赖
网络问题: 如果 pip 安装缓慢,使用国内镜像源: pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
04

配置 LLM 后端

Hermes Agent 支持多种 LLM 后端。根据你的需要选择一种方式,并配置对应的 API 密钥。

方式一:使用 Anthropic Claude API(推荐)

# 在 .env 文件中设置 API Key
echo 'ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxx' >> .env

# config/config.yaml 中设置:
# llm:
#   provider: anthropic
#   model: claude-sonnet-4-6
#   max_tokens: 4096

方式二:使用 OpenAI API

# 在 .env 文件中设置 API Key
echo 'OPENAI_API_KEY=sk-xxxxxxxxxxxxx' >> .env

# config/config.yaml 中设置:
# llm:
#   provider: openai
#   model: gpt-4o
#   max_tokens: 4096

方式三:使用本地模型(通过 Ollama)

# 安装 Ollama
# macOS: brew install ollama
# Linux: curl -fsSL https://ollama.com/install.sh | sh

# 拉取模型
ollama pull llama3.1:8b
ollama pull qwen2.5:14b    # 中文场景推荐

# config/config.yaml 中设置:
# llm:
#   provider: ollama
#   model: qwen2.5:14b
#   base_url: http://localhost:11434

LLM 配置参数对照表:

参数说明推荐值
providerLLM 提供商anthropic / openai / ollama
model模型名称claude-sonnet-4-6 / gpt-4o
max_tokens最大输出 token 数4096
temperature生成温度(0-1)0.7(创意任务)/ 0.2(精确任务)
timeout请求超时秒数120
05

配置工具与技能

为 Agent 配置可调用的工具和自定义技能,赋予它读写文件、执行命令、搜索网页等能力。

工具目录配置:

# config/config.yaml 中启用工具
# tools:
#   enabled:
#     - file_read        # 读取文件
#     - file_write       # 写入文件
#     - bash_exec        # 执行 shell 命令
#     - web_search       # 网页搜索
#     - web_fetch        # 抓取网页内容
#     - python_repl      # Python 交互式解释器
#     - memory           # 记忆管理
#
#   disabled:
#     - file_delete      # 默认禁用危险操作
#     - system_config    # 默认禁用系统配置修改

编写自定义技能:

# skills/my_custom_skill.py
from hermes.core import Skill, register_skill

@register_skill(
    name="我的自定义技能",
    description="读取指定目录下的所有日志文件并汇总错误信息",
    triggers=["分析日志", "查看错误日志"]
)
class MyCustomSkill(Skill):
    def execute(self, log_dir: str = "/var/log"):
        import os
        errors = []
        for f in os.listdir(log_dir):
            if f.endswith(".log"):
                with open(os.path.join(log_dir, f)) as fp:
                    for line in fp:
                        if "ERROR" in line:
                            errors.append(line.strip())
        return {
            "total_errors": len(errors),
            "errors": errors[:50]  # 最多返回前 50 条
        }
安全原则: 危险操作(删除文件、修改系统配置、网络请求)建议默认禁用,仅在需要时通过白名单逐项启用。
06

启动与调试

完成配置后启动 Hermes Agent,验证 LLM 连接和工具调用是否正常。

启动交互式会话:

# 启动命令行交互式 Agent
hermes chat

# 指定配置文件
hermes chat --config config/my_config.yaml

# 启动时加载特定技能目录
hermes chat --skills-dir ./my-skills

一次性任务模式:

# 直接执行任务并返回结果
hermes run "分析当前目录的代码结构,列出所有 .py 文件"

# 指定 LLM 模型
hermes run --model claude-sonnet-4-6 "重构 src/utils.py 中的 helper 函数"

# JSON 格式输出
hermes run --output json "列出所有 TODO 注释"

调试模式:

# 启用详细日志
hermes chat --log-level DEBUG

# 查看工具调用详情
hermes chat --trace-tools

# 以 API 服务模式启动(便于调试)
hermes serve --host 127.0.0.1 --port 8000 --reload
验证清单: 启动后先让 Agent 执行一个简单任务(如 "列出当前目录文件"),确认 LLM 响应正常、工具调用成功,再处理复杂任务。
07

生产部署

将 Hermes Agent 部署为长期运行的服务,并提供 API 供其他应用调用。

方式一:使用 Docker 部署(推荐)

# 构建镜像
docker build -t hermes-agent:latest .

# 启动服务
docker run -d \
  --name hermes-agent \
  -p 8000:8000 \
  -v $(pwd)/config:/app/config \
  -v $(pwd)/skills:/app/skills \
  --env-file .env \
  --restart unless-stopped \
  hermes-agent:latest

方式二:使用 systemd 管理进程

# /etc/systemd/system/hermes-agent.service
[Unit]
Description=Hermes AI Agent Service
After=network.target

[Service]
Type=simple
User=hermes
WorkingDirectory=/opt/hermes-agent
EnvironmentFile=/opt/hermes-agent/.env
ExecStart=/opt/hermes-agent/.venv/bin/hermes serve --host 0.0.0.0 --port 8000
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

API 调用示例:

# 健康检查
curl http://localhost:8000/health
# → {"status":"ok","version":"1.2.0","llm":"anthropic:claude-sonnet-4-6"}

# 发送任务请求
curl -X POST http://localhost:8000/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "message": "帮我检查服务器磁盘使用情况",
    "tools": ["bash_exec"],
    "stream": false
  }'

# 获取会话历史
curl http://localhost:8000/api/sessions
生产建议: 配置 Nginx 反向代理 + HTTPS;设置日志轮转(logrotate);使用 Prometheus + Grafana 监控 API 延迟和 token 消耗;配置 API 认证(JWT / API Key);设置资源限制防止单次请求占用过多资源。