第五册:安装部署全攻略 —— 保姆级部署指南,让 Hermes 在你的机器上跑起来
本章你将学到:
- 部署 Hermes 之前需要做的全部准备工作,像买电器前检查插座一样简单明了
- 四种部署方式(本地常规部署、Docker 容器化部署、VPS 云服务器部署、无服务器部署)的完整步骤
~/.hermes/目录结构的详细解读,搞清楚每个文件是干什么的- 安装后的自检、排障和基础配置方法
- 如何安全地卸载、重装和升级 Hermes
注意
这一册是全书最「动手」的章节。建议你在阅读时打开电脑,跟着步骤一步步操作。遇到任何问题,都可以直接跳到第 7 章「运行状态自检与排障」查找解决方案。
1. 安装前的准备工作
1.1 系统要求总览
在把 Hermes 请进你的电脑之前,我们先来确认一下你的「房子」够不够大、够不够好。这就好比你要养一匹马,总得先有个马厩吧?
Hermes 对硬件的要求其实非常友好。它不像那些动辄需要 64GB 显存的本地大模型那样「挑食」,也不像某些企业级软件一样需要专用服务器。只要你有一台近五年内购买的电脑,基本上都能跑得起来。
最低配置要求
以下是运行 Hermes 的最低配置要求。达到这个配置,你就能顺畅地使用所有基础功能:
| 操作系统 | 最低内存 | 最低磁盘空间 | 网络要求 |
|---|---|---|---|
| macOS 12+ (Intel / Apple Silicon) | 4 GB RAM | 2 GB 可用空间 | 稳定互联网连接 |
| Linux (Ubuntu 20.04+ / Debian 11+ / Fedora 35+) | 4 GB RAM | 2 GB 可用空间 | 稳定互联网连接 |
| Windows 10/11 (通过 WSL2) | 8 GB RAM | 5 GB 可用空间 | 稳定互联网连接 |
Tips
为什么 Windows 要求的内存和磁盘空间更高?因为 WSL2 本身需要额外运行一个轻量级的 Linux 虚拟机,所以会比原生 Linux 多占用一些资源。如果你的 Windows 电脑内存只有 8GB,建议关闭其他占用内存的大型软件后再运行 Hermes。
推荐配置
如果你想要更流畅的体验,尤其是在同时运行多个技能或处理大量文件时,建议达到以下配置:
| 操作系统 | 推荐内存 | 推荐磁盘空间 | 备注 |
|---|---|---|---|
| macOS 14+ | 8 GB RAM | 5 GB 可用空间 | Apple Silicon (M1/M2/M3/M4) 体验最佳 |
| Linux | 8 GB RAM | 5 GB 可用空间 | 原生运行,性能最佳 |
| Windows 11 + WSL2 | 16 GB RAM | 10 GB 可用空间 | 确保 WSL2 分配至少 8GB 内存 |
注意
Hermes 本身并不在本地运行大语言模型(除非你接入 Ollama 等本地模型服务)。它主要是作为 Agent 的「大脑指挥官」,实际的推理计算是在你配置的远程 LLM 提供商(如 OpenAI、DeepSeek 等)的服务器上完成的。所以你的电脑主要负责运行 Hermes 的核心逻辑和工具调用,不需要特别强大的 GPU。
类比理解
你可以把 Hermes 想象成一个「智能电话总机」:
- 你的电脑 = 总机设备本身(不需要特别高端,稳定运行就行)
- 远程 LLM = 电话线另一端的客服专家(计算在对方那边完成)
- 网络连接 = 电话线路质量(决定了你和专家沟通是否顺畅)
所以,只要你有一台能流畅上网的电脑,就能运行 Hermes。
1.2 网络环境检查与代理配置
网络环境是安装和使用 Hermes 的关键因素。因为 Hermes 需要连接到多个外部服务(LLM API、GitHub、Docker Hub 等),所以一个稳定的网络环境至关重要。
网络连通性自检
在安装之前,请先确认你的网络环境是否满足以下基本要求:
- 能够正常访问互联网(访问百度、谷歌等网站无障碍)
- 能够访问 GitHub(
github.com) - 能够访问 Python 包管理仓库(
pypi.org) - 能够访问 Node.js 包管理仓库(
registry.npmjs.org)
你可以通过以下命令快速检查网络连通性:
# 测试 GitHub 访问
ping -c 3 github.com
# 测试 PyPI 访问
ping -c 3 pypi.org
# 测试 npm 仓库访问
ping -c 3 registry.npmjs.org常见问题
Q:ping 不通 GitHub,怎么办?
A:如果你在国内,GitHub 访问不稳定是常见问题。有以下三种解决方案:
- 使用代理工具(VPN/Clash/Shadowsocks 等)并配置终端代理
- 修改 hosts 文件,使用 GitHub 的镜像 IP
- 使用国内的 Git 镜像源(如 Gitee)克隆仓库
国内用户的代理配置指南
对于国内用户,配置代理是确保安装顺利的重要步骤。以下是几种常见的代理配置方式:
方式一:终端临时代理(推荐安装时使用)
如果你使用的是 Clash 等代理工具,通常在本地会开启一个 HTTP/SOCKS5 代理端口(默认可能是 7890)。你可以在终端中临时设置代理:
# macOS / Linux - 临时设置 HTTP 代理(仅当前终端窗口有效)
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
# 如果你使用的是 SOCKS5 代理
export ALL_PROXY=socks5://127.0.0.1:7890
# Windows PowerShell - 临时设置代理
$env:http_proxy="http://127.0.0.1:7890"
$env:https_proxy="http://127.0.0.1:7890"Tips
设置代理后,你可以用
curl -I https://github.com测试代理是否生效。如果返回 HTTP 200 状态码,说明代理配置成功。
方式二:Git 配置代理
# 配置 Git 使用代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 验证 Git 代理配置
git config --global --get http.proxy
git config --global --get https.proxy
# 取消 Git 代理(安装完成后建议取消)
git config --global --unset http.proxy
git config --global --unset https.proxy方式三:pip 配置代理
# 临时使用代理安装 Python 包
pip install --proxy http://127.0.0.1:7890 <package_name>
# 或者配置 pip 全局代理
pip config set global.proxy http://127.0.0.1:7890
# 使用国内镜像源(更推荐长期方案)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple注意
安装完成后,建议取消全局代理配置,只在需要时使用临时代理。长期开启全局代理可能会影响某些国内服务的访问速度。
npm/yarn 镜像源配置
对于 Node.js 相关的依赖安装,国内用户强烈建议切换到淘宝镜像源:
# 查看当前 npm 源
npm config get registry
# 切换到淘宝镜像源
npm config set registry https://registry.npmmirror.com
# 验证切换成功
npm config get registry
# 应输出: https://registry.npmmirror.com
# 恢复官方源(如需)
npm config set registry https://registry.npmjs.org
# 如果你使用 yarn
yarn config set registry https://registry.npmmirror.com
# 如果你使用 pnpm
pnpm config set registry https://registry.npmmirror.comTips
淘宝镜像源(
registry.npmmirror.com)是国内最稳定的 npm 镜像之一,与官方源同步频率很高。在 2022 年之后,原registry.npm.taobao.org已重定向到registry.npmmirror.com,请使用新域名。
1.3 必备前置软件清单
Hermes 的安装依赖于几个核心软件。在开始安装之前,请确保你的系统上已经安装或准备安装以下软件。
前置软件总览
| 软件 | 最低版本 | 作用 | 检查命令 |
|---|---|---|---|
| Python | 3.11+ | Hermes 的核心运行环境 | python3 --version |
| Node.js | v22+ | 前端界面和部分工具依赖 | node --version |
| Git | 2.30+ | 克隆仓库和管理版本 | git --version |
| pip | 23.0+ | Python 包管理器 | pip3 --version |
Python 3.11+ 的安装与验证
Python 是 Hermes 的运行基础。Hermes 的代码大量使用了 Python 3.11 引入的新特性(如 typing.Self、ExceptionGroup 等),因此 Python 3.11 是硬性要求,3.10 及更低版本无法运行。
检查现有 Python 版本:
# macOS / Linux
python3 --version
# 某些系统可能需要使用 python 而不是 python3
python --version
# Windows (PowerShell)
python --version如果你看到的版本号低于 3.11(如 Python 3.10.12),你需要升级 Python。
常见问题
Q:我的系统自带 Python 3.10,可以直接升级吗?
A:强烈建议不要直接覆盖系统自带的 Python!macOS 和 Linux 的系统工具依赖特定版本的 Python,直接覆盖可能导致系统不稳定。推荐使用 pyenv 或官方安装包来安装新版本的 Python,这样多个版本可以共存。
安装 Python 3.11+ 的推荐方式:
我们将在下一节的 macOS 和 Linux 安装流程中详细介绍 Python 的安装。这里先给出快速参考:
# macOS (使用 Homebrew)
brew install [email protected]
# Ubuntu/Debian
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-dev python3-pip
# Fedora
sudo dnf install python3.11 python3.11-develNode.js v22+ 的安装与验证
Node.js 主要用于 Hermes 的部分前端界面和工具链。虽然不像 Python 那样是核心依赖,但某些功能(如 Web 网关界面)需要 Node.js 支持。
检查现有 Node.js 版本:
node --version如果版本低于 v22,建议升级。我们将在各平台的安装流程中介绍具体方法。
Git 的安装与验证
Git 用于克隆 Hermes 的代码仓库以及后续的更新操作。
git --version如果系统提示找不到 git 命令,请按以下方式安装:
# macOS
xcode-select --install
# Ubuntu/Debian
sudo apt update
sudo apt install git
# Fedora
sudo dnf install git
# Windows
# 下载安装程序:https://git-scm.com/download/win1.4 安装前自检清单(Checklist)
在正式开始安装之前,请逐项确认以下清单。这就像飞行员起飞前的检查单,每一项都关系到后续安装的顺利与否。
硬件与环境检查
- 电脑剩余磁盘空间大于 5GB
- 电脑内存大于 4GB(Windows 用户大于 8GB)
- 操作系统版本符合要求(macOS 12+ / Ubuntu 20.04+ / Windows 10+)
- 网络连接稳定,可以访问 GitHub
软件检查
- Python 版本为 3.11 或更高(运行
python3 --version确认) - Node.js 版本为 v22 或更高(运行
node --version确认) - Git 已安装并可正常使用(运行
git --version确认) - pip 可用(运行
pip3 --version确认)
权限检查
- 对主目录(
~或C:\Users\你的用户名)有写入权限 - 可以运行 sudo/admin 命令(安装系统级依赖时可能需要)
国内用户额外检查
- 已配置好代理工具(如 Clash/V2Ray/Shadowsocks)
- 已配置 npm 国内镜像源(如淘宝镜像)
- 已配置 pip 国内镜像源(如清华源)
- 已测试代理可以正常访问 GitHub
信息准备
- 已决定使用哪种部署方式(本地 / Docker / VPS / 无服务器)
- 已准备好至少一个 LLM 提供商的 API Key(可以先准备 OpenRouter 的免费 Key)
- 已注册好 GitHub 账号(用于后续的技能同步)
Tips
强烈建议在安装前把上述清单打印出来或抄在便签纸上,每完成一项就打一个勾。这样做看似多余,但能帮你避免 80% 的安装失败问题。我见过太多人因为「Python 版本不对」或「网络连不上 GitHub」而在安装第一步就卡住半天。
安装前环境检查脚本:
为了方便你快速完成自检,可以使用以下脚本:
#!/bin/bash
# save as: check-env.sh
echo "🔍 Hermes 安装前环境检查"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# 检查 Python 版本
PYTHON_VERSION=$(python3 --version 2>/dev/null || python --version 2>/dev/null)
if [ -n "$PYTHON_VERSION" ]; then
echo "✓ Python: $PYTHON_VERSION"
else
echo "✗ Python: 未安装"
fi
# 检查 Node.js
NODE_VERSION=$(node --version 2>/dev/null)
if [ -n "$NODE_VERSION" ]; then
echo "✓ Node.js: $NODE_VERSION"
else
echo "✗ Node.js: 未安装"
fi
# 检查 Git
GIT_VERSION=$(git --version 2>/dev/null)
if [ -n "$GIT_VERSION" ]; then
echo "✓ Git: $GIT_VERSION"
else
echo "✗ Git: 未安装"
fi
# 检查磁盘空间
DISK_AVAILABLE=$(df -h ~ | awk 'NR==2 {print $4}')
echo "✓ 磁盘可用空间: $DISK_AVAILABLE"
# 检查内存
if command -v free &> /dev/null; then
MEM_AVAILABLE=$(free -h | awk '/^Mem:/ {print $7}')
echo "✓ 内存可用: $MEM_AVAILABLE"
fi
# 检查网络
echo ""
echo "🌐 网络检查:"
ping -c 1 github.com > /dev/null 2>&1 && echo "✓ GitHub 可访问" || echo "✗ GitHub 无法访问"
ping -c 1 pypi.org > /dev/null 2>&1 && echo "✓ PyPI 可访问" || echo "✗ PyPI 无法访问"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "检查完成!如果有 ✗ 项,请先解决后再安装 Hermes。"保存为 check-env.sh,然后运行:
chmod +x check-env.sh
./check-env.sh2. 方式一:本地常规部署(推荐小白起步)
本地常规部署是最直接、最符合直觉的安装方式。它就是把 Hermes 直接安装在你的电脑上,就像安装微信或浏览器一样。对于刚接触 Hermes 的新手,我强烈推荐从这个方式开始。
注意
本地部署需要你的电脑在安装过程中保持联网状态,因为安装脚本会自动下载所需的 Python 包和依赖。
2.1 macOS 安装全流程
macOS 是 Hermes 开发团队主要使用的操作系统,因此 macOS 上的安装体验通常是最顺畅的。下面我会像手把手教你做一道菜一样,一步一步带你完成安装。
第一步:安装或更新 Homebrew
Homebrew 是 macOS 上最流行的包管理器,相当于 macOS 的「应用商店」。它让你可以用简单的命令安装各种软件,而不需要去官网下载安装包。
检查是否已安装 Homebrew:
brew --version如果返回类似 Homebrew 4.x.x 的版本号,说明已经安装。如果提示命令不存在,则需要安装。
安装 Homebrew:
打开终端(Terminal),复制粘贴以下命令,按回车执行:
# 官方安装脚本
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"注意
安装 Homebrew 需要输入你的 macOS 用户密码(输入时不会显示字符,这是正常的)。安装过程可能需要 5-15 分钟,取决于你的网络速度。如果下载速度很慢,可能是网络问题,建议先配置好代理再执行。
安装完成后,根据终端提示,你可能需要运行以下命令来将 Homebrew 添加到你的 PATH:
# Apple Silicon Mac (M1/M2/M3/M4)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
# Intel Mac
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/usr/local/bin/brew shellenv)"更新 Homebrew(如已安装):
# 更新 Homebrew 本身和软件包列表
brew update
# 升级已安装的软件包(可选,建议执行)
brew upgradeTips
Homebrew 就像是 macOS 的软件管家。以后你想安装任何开发工具(如 Python、Node.js、Git 等),都可以用
brew install 软件名一键安装,再也不用去官网找下载链接了。
第二步:安装 Python 3.11
如前所述,Hermes 需要 Python 3.11 或更高版本。在 macOS 上,我们用 Homebrew 来安装。
# 安装 Python 3.11
brew install [email protected]
# 将 Python 3.11 链接到 PATH
brew link [email protected] --force
# 验证安装
python3 --version
# 应输出: Python 3.11.x注意
如果你的系统上已经通过其他方式安装了 Python(如 Anaconda、pyenv 等),可能会出现版本冲突。建议使用 pyenv 来管理多个 Python 版本(见下文「进阶:使用 pyenv 管理 Python 版本」)。
进阶:使用 pyenv 管理 Python 版本(强烈推荐)
pyenv 是一个 Python 版本管理工具,让你可以在同一台电脑上安装和切换多个 Python 版本。这就像你手机里的「双卡双待」,不同的应用可以用不同的 Python 版本。
安装 pyenv:
# 通过 Homebrew 安装 pyenv
brew install pyenv
# 将 pyenv 初始化代码添加到 shell 配置文件
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 重新加载 shell 配置
source ~/.zshrc使用 pyenv 安装 Python 3.11:
# 查看可安装的 Python 版本
pyenv install --list | grep "3.11"
# 安装 Python 3.11.9(选择最新的 3.11.x 版本)
pyenv install 3.11.9
# 设置全局默认 Python 版本
pyenv global 3.11.9
# 验证
python --version
# 应输出: Python 3.11.9pyenv 常用命令速查:
# 查看已安装的 Python 版本
pyenv versions
# 在当前目录使用特定 Python 版本(仅当前文件夹有效)
pyenv local 3.11.9
# 在当前终端会话使用特定 Python 版本
pyenv shell 3.11.9
# 卸载某个 Python 版本
pyenv uninstall 3.10.12Tips
强烈建议所有开发者都使用 pyenv 管理 Python 版本。它不仅能避免系统 Python 被污染,还能让你在不同项目中使用不同的 Python 版本。比如你的老项目需要 Python 3.10,而 Hermes 需要 3.11,用 pyenv 可以轻松切换。
第三步:安装 Node.js v22
# 通过 Homebrew 安装 Node.js
brew install node
# 验证安装
node --version
# 应输出: v22.x.x 或更高
# 同时验证 npm(Node.js 的包管理器)
npm --version第四步:安装 Git
macOS 通常已经预装了 Git,但版本可能较老。建议通过 Homebrew 安装最新版:
# 安装/更新 Git
brew install git
# 验证
git --version第五步:运行 Hermes 一键安装脚本
好了,前置软件都准备就绪,现在到了最激动人心的时刻——安装 Hermes 本身!
# 方式一:使用官方推荐的一键安装脚本(推荐)
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh
# 方式二:如果方式一网络不通,可以先克隆仓库再手动安装
git clone https://github.com/NousResearch/hermes.git ~/hermes
cd ~/hermes
pip install -e .安装脚本执行过程详解:
当你运行安装脚本时,屏幕上会滚动显示大量信息。不要被这些密密麻麻的文字吓到,它们其实只是在告诉你「我正在做什么」。下面是每个阶段的含义:
阶段 1:环境检查(约 5 秒)
[INFO] 正在检查系统环境...
[INFO] Python 版本: 3.11.9 ✓
[INFO] Node.js 版本: v22.3.0 ✓
[INFO] Git 版本: 2.43.0 ✓
如果这一阶段报错,说明你的前置软件有问题。请根据错误信息回到前面的步骤检查。
阶段 2:创建目录结构(约 2 秒)
[INFO] 正在创建 ~/.hermes 目录...
[INFO] 创建子目录: database, skills, cron, logs, cache
阶段 3:安装依赖(约 2-5 分钟,取决于网络)
[INFO] 正在安装 Python 依赖...
下载 package-a-1.0.0...
下载 package-b-2.1.3...
安装 package-a-1.0.0...
这一阶段最耗时,因为需要下载几十个 Python 包。如果网络不稳定,可能会出现超时或下载失败。遇到问题时,先检查网络连接,然后重新运行安装脚本(脚本支持断点续传)。
阶段 4:安装 CLI(约 10 秒)
[INFO] 正在安装 Hermes CLI...
[INFO] 安装路径: ~/.hermes/bin/hermes
[INFO] 已添加到 PATH: ~/.bashrc
阶段 5:生成配置(约 5 秒)
[INFO] 正在生成默认配置...
[INFO] 配置文件: ~/.hermes/config.yaml
[INFO] 人设文件: ~/.hermes/SOUL.md
安装完成后,建议新开一个终端窗口(或运行 source ~/.bashrc),然后验证 hermes 命令是否可用。
注意
一键安装脚本会自动完成以下操作:
- 检查系统环境(Python 版本、Node.js 版本等)
- 创建
~/.hermes/目录结构- 安装所需的 Python 依赖包
- 将 Hermes 二进制文件安装到
~/.hermes/bin/,并自动加入系统 PATH- 生成默认配置文件
安装完成后,Hermes 的可执行文件位于
~/.hermes/bin/hermes。安装脚本会自动修改你的 shell 配置文件(~/.bashrc或~/.zshrc)将~/.hermes/bin加入 PATH。如果新开终端后仍提示找不到命令,请手动执行source ~/.bashrc(bash 用户)或source ~/.zshrc(zsh 用户)使配置生效。整个过程通常需要 3-10 分钟,取决于你的网络速度。安装过程中请保持终端窗口打开,不要中断。
安装过程中的典型输出:
[INFO] 正在检查系统环境...
[INFO] Python 版本: 3.11.9 ✓
[INFO] Node.js 版本: v22.3.0 ✓
[INFO] 正在创建 ~/.hermes 目录...
[INFO] 正在安装 Python 依赖...
正在下载 package-name-1.2.3...
正在安装 package-name-1.2.3...
...
[INFO] 正在安装 Hermes CLI...
[INFO] 正在生成默认配置...
[SUCCESS] Hermes 安装完成!
[SUCCESS] 运行 `hermes setup` 开始初始配置。
看到 SUCCESS 字样,恭喜你,Hermes 已经成功安装到你的 Mac 上了!
第六步:验证安装
# 检查 Hermes 版本
hermes --version
# 或者
hermes -v
# 运行系统诊断
hermes doctor如果 hermes doctor 显示所有检查项都是绿色通过,说明安装完全成功。如果有黄色警告或红色错误,请参考第 7 章进行排查。
2.2 Linux 安装全流程(Ubuntu 22.04 为例)
Linux 是服务器部署的首选操作系统,也是很多开发者日常使用的系统。以下以 Ubuntu 22.04 LTS 为例,其他 Debian 系发行版步骤类似。如果你使用的是 Fedora/CentOS/RHEL,部分命令会有所不同(如 apt 换成 dnf 或 yum)。
第一步:系统更新与依赖安装
# 更新软件包列表
sudo apt update
# 升级已安装的软件包
sudo apt upgrade -y
# 安装必要的构建工具和依赖
sudo apt install -y \
curl \
wget \
git \
build-essential \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
llvm \
libncursesw5-dev \
xz-utils \
tk-dev \
libxml2-dev \
libxmlsec1-dev \
libffi-dev \
liblzma-devTips
上面安装的一堆
lib*-dev包是编译 Python 时需要的依赖。如果你使用 pyenv 从源码编译安装 Python,这些依赖必须提前装好,否则编译会失败。这就好比你要盖房子,得先把砖头和水泥准备好。不同 Linux 发行版的依赖包名可能略有不同。如果你使用的是 Fedora/RHEL,对应的包名通常是
openssl-devel、zlib-devel、libffi-devel等。
第二步:安装 Python 3.11
Ubuntu 22.04 默认自带 Python 3.10,我们需要额外安装 Python 3.11。
# 添加 deadsnakes PPA(提供最新 Python 版本的第三方仓库)
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
# 安装 Python 3.11 及配套工具
sudo apt install -y python3.11 python3.11-venv python3.11-dev python3.11-distutils
# 验证安装
python3.11 --version
# 应输出: Python 3.11.x
# 安装 pip for Python 3.11
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
# 验证 pip
python3.11 -m pip --version注意
在 Ubuntu 上,同时存在
python3(系统默认版本)和python3.11(我们新安装的版本)。建议明确使用python3.11和pip(对应 Python 3.11 的 pip)来避免混淆。你也可以通过创建符号链接或别名来简化命令。# 创建别名(添加到 ~/.bashrc) alias python311='python3.11' alias pip311='python3.11 -m pip'
第三步:安装 pyenv(推荐)
# 安装 pyenv
curl https://pyenv.run | bash
# 将 pyenv 添加到 ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
# 使用 pyenv 安装 Python 3.11.9
pyenv install 3.11.9
pyenv global 3.11.9
# 验证
python --version第四步:安装 Node.js v22
# 使用 NodeSource 安装脚本安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# 验证
node --version
npm --version第五步:运行 Hermes 安装脚本
# 一键安装
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh
# 或者手动安装
git clone https://github.com/NousResearch/hermes.git ~/hermes
cd ~/hermes
python3.11 -m pip install -e .第六步:验证安装
hermes --version
hermes doctorFedora/RHEL 用户的差异说明:
如果你使用的是 Fedora、CentOS Stream 或 RHEL,以下命令需要调整:
| Ubuntu/Debian | Fedora/RHEL |
|---|---|
sudo apt update | sudo dnf update |
sudo apt install | sudo dnf install |
libssl-dev | openssl-devel |
libffi-dev | libffi-devel |
build-essential | @development-tools |
ppa:deadsnakes/ppa | 使用 dnf module install python311 |
其余步骤(安装 Node.js、运行 Hermes 安装脚本)基本一致。
2.3 Windows WSL2 安装全流程
Windows 用户不能直接安装 Hermes(Hermes 不支持原生 Windows 环境),但可以通过 WSL2(Windows Subsystem for Linux)在 Windows 上运行一个完整的 Linux 环境,然后在其中安装 Hermes。
第一步:安装 WSL2
WSL2 是 Windows 10/11 内置的 Linux 子系统,让你可以在 Windows 上原生运行 Linux 程序,性能几乎和原生 Linux 一样。
自动安装(推荐 Windows 10 2004+ / Windows 11):
以管理员身份打开 PowerShell,运行:
# 自动安装 WSL2 和默认的 Ubuntu 发行版
wsl --install运行后,系统会自动下载并安装 WSL2 和 Ubuntu。安装完成后,需要重启电脑。
注意
如果命令提示 "WSL 需要更新其内核组件",请访问微软官方文档下载 WSL2 Linux 内核更新包: https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
手动安装(旧版 Windows):
# 启用 WSL
wsl --set-default-version 2
# 查看可用的 Linux 发行版
wsl --list --online
# 安装 Ubuntu 22.04
wsl --install -d Ubuntu-22.04第二步:配置 Ubuntu 22.04
重启后,从开始菜单打开 "Ubuntu 22.04"。首次启动会要求你设置用户名和密码:
Enter new UNIX username: yourname
New password: [输入密码,不会显示]
Retype new password: [再次输入]
Tips
这个用户名和密码是你 Ubuntu 子系统的凭证,和 Windows 登录密码无关。请牢记这个密码,因为后续执行
sudo命令时需要输入它。
更新 Ubuntu 系统:
sudo apt update && sudo apt upgrade -y第三步:在 WSL 中安装 Hermes
WSL 中的 Ubuntu 就是一个完整的 Linux 系统,接下来的步骤和 2.2 节「Linux 安装全流程」完全一样:
# 安装依赖
sudo apt install -y curl wget git build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev llvm libncursesw5-dev \
xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
# 安装 Python 3.11
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.11 python3.11-venv python3.11-dev python3.11-distutils
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# 安装 Hermes
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh
# 验证
hermes --version第四步:Windows 文件系统访问与权限处理
WSL2 的一个强大之处在于,你可以无缝访问 Windows 的文件系统。Windows 的各个盘符在 WSL 中挂载在 /mnt/ 目录下:
# 访问 C 盘
cd /mnt/c
ls
# 访问 D 盘
cd /mnt/d
ls
# 访问你的 Windows 用户目录
cd /mnt/c/Users/你的Windows用户名/Desktop注意
虽然 WSL 可以访问 Windows 文件,但 不建议在
/mnt/c等 Windows 挂载目录下直接运行 Hermes。因为 Windows 和 Linux 的文件权限系统不同,可能会导致一些奇怪的问题。推荐的做法是:
- 在 WSL 的 Linux 主目录(
~,即/home/你的用户名)下运行 Hermes- 如果需要处理 Windows 上的文件,可以把文件复制到 WSL 中,或者在 Hermes 中指定 Windows 路径
从 Windows 访问 WSL 文件:
在 Windows 文件资源管理器的地址栏输入 \\wsl$\Ubuntu-22.04\home\你的用户名,就可以直接浏览 WSL 中的文件。
最佳实践:创建共享工作目录
# 在 WSL 中创建一个工作目录
mkdir -p ~/workspace
# 同时在 Windows 的文档目录也创建一个快捷方式
# 在 Windows PowerShell 中执行:
# New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\workspace" -Target "\\wsl$\Ubuntu-22.04\home\你的用户名\workspace"常见问题
Q:WSL2 占用内存太多,怎么限制?
A:WSL2 默认可以使用你电脑的大部分内存。如果你的电脑内存有限,可以在 Windows 用户目录下创建
.wslconfig文件来限制内存使用:# 文件路径: C:\Users\你的用户名\.wslconfig [wsl2] memory=8GB processors=4 swap=2GB保存后运行
wsl --shutdown重启 WSL2 生效。
3. 方式二:Docker 容器化部署
Docker 是一种「集装箱化」技术,它把应用程序和它所有的依赖打包成一个标准化的「集装箱」(容器),无论你把这个集装箱运到哪台机器上,它都能以完全相同的方式运行。
这就好比搬家:传统方式是把你家里的每件家具分别搬过去,到了新家还要重新组装;Docker 方式则是把整个房子连地基一起打包运过去,到了目的地直接放下就能住。
3.1 Docker Desktop 安装
要使用 Docker 部署 Hermes,首先需要在你的电脑上安装 Docker Desktop。
macOS 安装 Docker Desktop
# 方式一:通过 Homebrew 安装(推荐)
brew install --cask docker
# 方式二:手动下载安装
# 访问 https://www.docker.com/products/docker-desktop/
# 下载 macOS 版本并安装安装完成后,从「应用程序」中启动 Docker Desktop。首次启动可能需要你输入系统密码来授权。当 Docker 状态栏图标显示鲸鱼图标且没有警告标记时,说明 Docker 已经就绪。
Tips
Docker Desktop for Mac 在 Apple Silicon (M1/M2/M3/M4) 上运行时需要 Rosetta 2 支持。如果你的 Mac 是 Apple Silicon 且没有安装 Rosetta 2,系统会在第一次运行时自动提示安装。请点击「安装」并输入密码。
Windows 安装 Docker Desktop
- 访问 https://www.docker.com/products/docker-desktop/
- 下载 Windows 版本安装包
- 运行安装程序,按向导完成安装
- 安装过程中可能会要求启用 WSL2 集成,请勾选该选项
- 安装完成后重启电脑
- 启动 Docker Desktop,等待 Docker 引擎启动完成
注意
Windows 上的 Docker Desktop 依赖 WSL2 后端。如果你还没有安装 WSL2,请参考 2.3 节先安装 WSL2,或者在 Docker Desktop 安装过程中选择自动安装。
Linux 安装 Docker Desktop
# 以 Ubuntu 为例
# 1. 卸载旧版本(如有)
sudo apt remove docker docker-engine docker.io containerd runc
# 2. 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# 3. 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 4. 添加 Docker 软件源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5. 安装 Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 6. 将当前用户加入 docker 组(免 sudo 使用 docker)
sudo usermod -aG docker $USER
# 7. 验证安装
docker --version
docker compose version注意
将用户加入 docker 组后,需要 退出并重新登录(或重启电脑)才能免 sudo 使用 docker 命令。
3.2 拉取 Hermes 官方镜像
Docker 安装完成后,拉取 Hermes 的官方镜像:
# 拉取最新版本的 Hermes 镜像
docker pull nousresearch/hermes:latest
# 或者拉取特定版本
docker pull nousresearch/hermes:v1.2.0
# 查看已拉取的镜像
docker images | grep hermes常见问题
Q:拉取镜像时速度很慢或超时,怎么办?
A:国内用户访问 Docker Hub 速度可能较慢。解决方案:
- 配置 Docker 使用国内镜像加速站。编辑
~/.docker/daemon.json:{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }保存后重启 Docker Desktop。2. 使用代理拉取:
docker pull nousresearch/hermes:latest --proxy http://127.0.0.1:7890
镜像版本选择指南:
| 标签 | 说明 | 适用场景 |
|---|---|---|
latest | 最新稳定版 | 大多数用户 |
v1.2.3 | 特定版本 | 需要版本锁定 |
nightly | 每日构建版 | 想体验最新功能 |
slim | 精简版(无额外工具) | 资源受限环境 |
注意
latest标签会随着新版本发布而更新。如果你需要稳定的生产环境,建议锁定到具体版本号(如v1.2.3),避免自动更新带来的不兼容性。
3.3 容器运行与数据持久化
基础运行命令
# 运行 Hermes 容器
docker run -it --rm \
--name hermes \
-v ~/.hermes:/opt/data \
-e OPENAI_API_KEY="your-api-key-here" \
nousresearch/hermes:latest让我们逐行解析这个命令:
docker run: 启动一个新容器-it: 以交互式终端模式运行(i = interactive, t = tty)--rm: 容器停止后自动删除(适合临时运行)--name hermes: 给容器起个名字叫 hermes-v ~/.hermes:/opt/data: 这是最关键的部分,将主机的~/.hermes目录挂载到容器的/opt/data目录。这样容器里的数据会保存到你的主机上,即使删除容器也不会丢失。-e OPENAI_API_KEY=...: 设置环境变量,传入 API Keynousresearch/hermes:latest: 使用的镜像名称
数据持久化详解
-v ~/.hermes:/opt/data 这个参数是 Docker 部署中最需要理解的概念。让我用一个类比来解释:
想象容器是一个「临时办公室」,容器里的文件就像办公室里的便利贴。如果你不贴到墙上(挂载卷),容器一关,便利贴就全没了。-v 参数就是一面「魔法墙」,你把便利贴贴到这面墙上,即使办公室拆了重建,墙上的便利贴还在。
所以,一定要加 -v 参数,否则你的所有配置、对话记录、记忆数据都会在容器删除后消失。
# 先创建主机上的数据目录
mkdir -p ~/.hermes
# 运行容器并挂载数据卷
docker run -it --rm \
--name hermes \
-v ~/.hermes:/opt/data \
nousresearch/hermes:latest3.4 Docker Compose 方式(适合多服务编排)
如果你打算同时运行 Hermes 和其他服务(比如本地数据库、Web 界面等),使用 Docker Compose 会更方便。Docker Compose 让你可以用一个 YAML 文件定义和管理多个容器。
创建 docker-compose.yml 文件:
# docker-compose.yml
version: "3.8"
services:
hermes:
image: nousresearch/hermes:latest
container_name: hermes
restart: unless-stopped
volumes:
- ~/.hermes:/opt/data
- ~/workspace:/workspace
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
stdin_open: true
tty: true
networks:
- hermes-network
networks:
hermes-network:
driver: bridge使用 Docker Compose 启动:
# 在 docker-compose.yml 所在目录执行
# 启动服务(后台运行)
docker compose up -d
# 查看运行状态
docker compose ps
# 查看日志
docker compose logs -f hermes
# 进入容器内部
docker compose exec hermes bash
# 停止服务
docker compose down
# 停止服务并删除数据卷(慎用!)
docker compose down -vTips
Docker Compose 是管理多容器应用的利器。上面的配置中:
restart: unless-stopped表示容器会在 Docker 启动时自动运行(除非手动停止)${OPENAI_API_KEY}会从环境变量或同目录的.env文件中读取stdin_open: true和tty: true保证交互式终端正常工作
创建 .env 文件存储敏感信息:
# .env 文件(放在 docker-compose.yml 同目录,不要提交到 Git!)
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-your-anthropic-key
DEEPSEEK_API_KEY=sk-your-deepseek-key注意
务必在
.gitignore中添加.env,防止 API Key 泄露!
3.5 容器管理常用命令
# 查看正在运行的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 停止容器
docker stop hermes
# 启动已停止的容器
docker start hermes
# 重启容器
docker restart hermes
# 删除容器
docker rm hermes
# 强制删除运行中的容器
docker rm -f hermes
# 查看容器日志
docker logs hermes
# 实时查看日志
docker logs -f hermes
# 进入运行中的容器
docker exec -it hermes bash
# 从容器内复制文件到主机
docker cp hermes:/opt/data/config.yaml ~/.hermes/config.yaml
# 从主机复制文件到容器
docker cp ~/.hermes/config.yaml hermes:/opt/data/config.yaml
# 查看容器资源使用情况
docker stats hermes3.6 容器化的优缺点分析
优点
| 优点 | 说明 |
|---|---|
| 环境隔离 | Hermes 的依赖不会和你的系统环境冲突 |
| 一键部署 | 一条命令就能启动完整环境 |
| 便于迁移 | 在任何支持 Docker 的机器上都能以相同方式运行 |
| 易于清理 | 不想用了直接删除容器,不留痕迹 |
| 版本管理 | 可以轻松切换 Hermes 的不同版本 |
| 多实例运行 | 可以同时运行多个 Hermes 实例 |
缺点
| 缺点 | 说明 |
|---|---|
| 学习成本 | 需要了解 Docker 的基本概念和命令 |
| 资源开销 | Docker 本身会占用一些额外的系统资源 |
| 文件访问 | 容器内外文件共享需要额外配置 |
| GUI 限制 | 某些图形界面功能在容器中可能受限 |
| 调试复杂 | 出问题时的调试比本地部署复杂一些 |
Tips
对于新手,我建议先从「本地常规部署」开始,等熟悉 Hermes 的基本操作后再尝试 Docker 部署。但如果你已经有 Docker 使用经验,或者需要在一台机器上管理多个项目的环境,Docker 部署会是更好的选择。
4. 方式三:VPS 云服务器部署
VPS(Virtual Private Server,虚拟专用服务器)部署适合以下场景:
- 你需要 Hermes 24/7 不间断运行
- 你想从任何地方(手机、公司电脑等)访问你的 Agent
- 你的本地电脑性能有限或网络不稳定
- 你想搭建一个团队共享的 Hermes 实例
4.1 推荐 VPS 提供商
海外 VPS 推荐
| 提供商 | 入门价格 | 特点 | 适合人群 |
|---|---|---|---|
| Hetzner | €4.51/月 | 性价比极高、性能稳定、德国/芬兰机房 | 预算有限但追求性能的用户 |
| DigitalOcean | $4/月 | 界面友好、文档完善、全球多机房 | 新手入门 |
| Linode (Akamai) | $5/月 | 老牌厂商、网络稳定 | 追求稳定性的用户 |
| Vultr | $2.50/月 | 按小时计费、可一键部署多种应用 | 短期使用或测试 |
| AWS Lightsail | $5/月 | AWS 生态、与其他 AWS 服务集成方便 | 已有 AWS 经验的用户 |
国内云服务器推荐
| 提供商 | 入门价格 | 特点 | 适合人群 |
|---|---|---|---|
| 阿里云 ECS | ¥99/年(学生/新用户) | 生态完善、文档丰富 | 国内用户、需要备案 |
| 腾讯云 CVM | ¥99/年(新用户) | 性价比高、活动多 | 国内用户 |
| 华为云 ECS | ¥99/年(新用户) | 企业级稳定性 | 企业用户 |
Tips
如果你主要使用 Hermes 来处理中文内容和对接国内 API(如 DeepSeek、Kimi),强烈建议选择国内云服务器。网络延迟会显著影响对话体验。如果你主要对接 OpenAI、Anthropic 等海外 API,海外 VPS 的延迟反而更低。
对于个人学习和轻度使用,Hetzner 的 CPX11(1 vCPU / 2GB RAM / 40GB SSD)或 DigitalOcean 的 Basic Droplet(1 vCPU / 1GB RAM / 25GB SSD)完全够用,月费不到一杯奶茶钱。
4.2 服务器选型指南
Hermes 对服务器配置的要求很低:
最低配置(个人使用):
- 1 vCPU
- 1 GB RAM
- 20 GB SSD 磁盘
- 1 TB 月流量
推荐配置(多人使用或重度使用):
- 2 vCPU
- 4 GB RAM
- 40 GB SSD 磁盘
- 2 TB 月流量
注意
Hermes 本身的资源占用很低(空闲时内存占用通常小于 100MB)。服务器的配置主要取决于:
- 你同时运行多少个 Agent 实例
- 你是否在服务器上同时运行本地大模型(如 Ollama)
- 你的日志和数据存储量
如果不在服务器上跑本地模型,1GB 内存绰绰有余。
4.3 SSH 连接与安全配置
购买 VPS 后,你会收到一封包含服务器 IP 地址、用户名(通常是 root)和初始密码的邮件。这就像是收到了新房的钥匙——兴奋之余,别忘了先换锁、装监控。
首次连接服务器
# macOS / Linux 终端直接连接
ssh root@你的服务器IP
# 示例
ssh [email protected]
# 如果指定了非标准端口(如 2222)
ssh -p 2222 root@你的服务器IPWindows 用户可以使用 PowerShell(Windows 10/11 自带 OpenSSH 客户端)或下载 PuTTY。
首次连接时会提示是否确认主机的指纹,输入 yes 即可:
The authenticity of host '123.456.789.0' can't be established.
Are you sure you want to continue connecting (yes/no)? yes
Tips
SSH 密钥指纹是服务器的「身份证」。第一次连接时,你的电脑会把服务器的指纹记录下来。如果将来连接时指纹变了,SSH 会警告你,这可能意味着服务器被中间人攻击了。所以第一次记录指纹时,请确保你连接的是正确的服务器。
基础安全配置
连接到服务器后,强烈建议立即进行以下安全加固:
1. 修改 root 密码(如果使用的是密码登录):
passwd2. 创建普通用户(避免日常使用 root):
# 创建新用户
useradd -m -s /bin/bash hermes
# 设置密码
passwd hermes
# 将用户加入 sudo 组
usermod -aG sudo hermes
# 切换到新用户
su - hermes注意
root 用户就像房子的万能钥匙,权力太大,一旦被盗用,攻击者可以为所欲为。日常使用普通用户 + sudo,就像平时用普通钥匙开门,只有需要的时候才用万能钥匙——这样即使普通钥匙丢了,损失也有限。
3. 配置 SSH 密钥登录(更安全):
在你的本地电脑生成 SSH 密钥对(如果还没有):
# 本地电脑执行
ssh-keygen -t ed25519 -C "[email protected]"
# 将公钥复制到服务器
ssh-copy-id hermes@你的服务器IP然后在服务器上禁用密码登录:
# 编辑 SSH 配置文件
sudo nano /etc/ssh/sshd_config
# 修改以下配置
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# 重启 SSH 服务
sudo systemctl restart sshd注意
在禁用密码登录之前,务必确认密钥登录已经正常工作!否则你可能会把自己锁在服务器外面。建议新开一个终端窗口测试密钥登录,确认无误后再禁用密码登录。
4. 配置防火墙:
# Ubuntu/Debian
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# 查看防火墙状态
sudo ufw status5. 安装 fail2ban 防止暴力破解:
# 安装 fail2ban
sudo apt install fail2ban
# 启动服务
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 查看封禁状态
sudo fail2ban-client status sshdfail2ban 会自动监控 SSH 登录尝试,如果某个 IP 在短时间内多次登录失败,就会自动将其封禁一段时间。这就像是给大门装了一个智能保安,看到可疑人员反复尝试开锁就会自动报警。
4.4 在 VPS 上安装 Hermes
VPS 上的安装步骤和 2.2 节「Linux 安装全流程」基本一致:
# 1. 系统更新
sudo apt update && sudo apt upgrade -y
# 2. 安装依赖
sudo apt install -y curl wget git build-essential libssl-dev \
zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
llvm libncursesw5-dev xz-utils tk-dev libxml2-dev \
libxmlsec1-dev libffi-dev liblzma-dev software-properties-common
# 3. 安装 Python 3.11
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.11 python3.11-venv python3.11-dev python3.11-distutils
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
# 4. 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# 5. 安装 Hermes
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh
# 6. 验证
hermes --version
hermes doctor4.5 后台运行配置
在 VPS 上,你需要让 Hermes 在 SSH 断开后继续运行。以下是几种方式:
方式一:screen(最简单)
screen 是一个终端复用工具,可以让你在断开 SSH 后保持程序运行。
# 安装 screen
sudo apt install -y screen
# 创建一个新的 screen 会话
screen -S hermes
# 在 screen 中启动 Hermes
hermes
# 按 Ctrl+A,然后按 D, detach 会话(程序继续在后台运行)
# 注意:是先按 Ctrl+A,松开后再按 D
# 重新连接会话
screen -r hermes
# 查看所有 screen 会话
screen -ls
# 终止会话
screen -X -S hermes quitTips
screen 非常适合新手。它的学习成本几乎为零,几个命令就能满足基本的后台运行需求。唯一的缺点是如果服务器重启,screen 会话不会自动恢复。
方式二:tmux(功能更强大)
tmux 是 screen 的现代化替代品,功能更强大,界面更美观。
# 安装 tmux
sudo apt install -y tmux
# 创建新会话
tmux new -s hermes
# 在 tmux 中启动 Hermes
hermes
# 分离会话:按 Ctrl+B,然后按 D
# 重新连接会话
tmux attach -t hermes
# 查看所有会话
tmux ls
# 终止会话
tmux kill-session -t hermestmux 常用快捷键:
| 快捷键 | 功能 |
|---|---|
| Ctrl+B, D | 分离当前会话 |
| Ctrl+B, C | 创建新窗口 |
| Ctrl+B, N | 切换到下一个窗口 |
| Ctrl+B, P | 切换到上一个窗口 |
| Ctrl+B, 数字 | 切换到指定窗口 |
| Ctrl+B, % | 垂直分屏 |
| Ctrl+B, " | 水平分屏 |
Tips
tmux 的分屏功能特别实用。你可以左边窗口运行 Hermes,右边窗口查看系统日志或编辑配置文件,一个终端窗口搞定所有操作。
4.6 域名绑定与反向代理(可选)
如果你想通过域名访问 Hermes 的 Web 界面,可以配置 Nginx 反向代理。这就好比你在一个大型写字楼里租了一间办公室(服务器),Nginx 就是前台——访客只需要知道公司名字(域名),前台会帮他们找到正确的办公室。
前提条件
- 你已经购买了一个域名(如
yourdomain.com) - 已经将域名解析到服务器的 IP 地址(在域名服务商的 DNS 管理中添加 A 记录)
安装和配置 Nginx
# 安装 Nginx
sudo apt install -y nginx
# 创建 Nginx 配置文件
sudo nano /etc/nginx/sites-available/hermes在文件中写入:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}注意
上面的配置假设 Hermes 的 Web 界面运行在本地的 8080 端口。请根据你的实际配置调整
proxy_pass的端口号。如果你不确定端口,可以查看~/.hermes/config.yaml中的gateway.web_port配置项。
# 启用配置
sudo ln -s /etc/nginx/sites-available/hermes /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
# 安装 Certbot 获取免费 SSL 证书
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
# 按照提示完成证书申请配置完成后,你就可以通过 https://yourdomain.com 访问 Hermes 的 Web 界面了。
Tips
Certbot 的 SSL 证书有效期为 90 天,但会自动续期。你可以用以下命令测试续期是否正常:
sudo certbot renew --dry-run如果你使用的是 Cloudflare 等 CDN 服务,需要在 Cloudflare 控制台中将 SSL/TLS 加密模式设为「完全(严格)」,并在源服务器上正确配置证书。
4.7 自动启动配置(systemd)
如果你希望 Hermes 在服务器重启后自动启动,可以使用 systemd 来管理。
创建 systemd 服务文件:
sudo nano /etc/systemd/system/hermes.service写入以下内容:
[Unit]
Description=Hermes Agent
After=network.target
[Service]
Type=simple
User=hermes
WorkingDirectory=/home/hermes
Environment="HOME=/home/hermes"
Environment="PATH=/home/hermes/.local/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/hermes/.local/bin/hermes chat
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target注意
请根据你的实际安装路径调整
ExecStart和Environment中的路径。你可以用which hermes查看 hermes 命令的实际路径。
启用和启动服务:
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable hermes
# 启动服务
sudo systemctl start hermes
# 查看服务状态
sudo systemctl status hermes
# 查看日志
sudo journalctl -u hermes -f
# 停止服务
sudo systemctl stop hermes
# 重启服务
sudo systemctl restart hermes日志轮转配置(防止日志占满磁盘)
Hermes 运行时间长了会产生大量日志。如果不加管理,日志文件可能占满整个磁盘。使用 Linux 自带的 logrotate 工具可以轻松解决这个问题。
# 创建 logrotate 配置
sudo nano /etc/logrotate.d/hermes写入:
/var/log/hermes/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0644 hermes hermes
sharedscripts
postrotate
systemctl reload hermes > /dev/null 2>&1 || true
endscript
}
参数说明:
| 参数 | 含义 |
|---|---|
daily | 每天轮转一次 |
rotate 14 | 保留最近 14 天的日志 |
compress | 轮转后压缩旧日志 |
delaycompress | 延迟一天压缩,方便查看昨天日志 |
missingok | 日志不存在时不报错 |
notifempty | 空日志不轮转 |
# 测试配置是否正确
sudo logrotate -d /etc/logrotate.d/hermes
# 手动执行一次轮转
sudo logrotate -f /etc/logrotate.d/hermesTips
日志轮转就像定期清理房间——每天把旧报纸(日志)打包归档,只保留最近两周的。这样既不会丢失重要信息,又不会因为报纸堆满房间而无处下脚。对于长期运行的 VPS,这一步绝对不能省略。
5. 方式四:无服务器部署(进阶)
无服务器(Serverless)部署是近年来兴起的一种部署模式。它的核心理念是:你不需要管理服务器,只需上传代码,平台会自动为你分配计算资源并按实际使用量计费。
这就好比传统部署是你买一辆车(服务器),无论开不开都要付油费和停车费;无服务器部署则是打车,需要时叫车,用完即走,按里程付费。
5.1 Modal 部署方式
Modal 是一个专为 AI/ML 工作负载设计的无服务器平台。它特别适合部署像 Hermes 这样的 Agent 应用,因为它支持:
- 快速启动的容器环境
- 按需计费(按秒计费,不用时不花钱)
- 内置的 GPU 支持(如果你需要运行本地模型)
- 简单的 Python SDK
准备工作
- 注册 Modal 账号:https://modal.com/
- 安装 Modal CLI:
pip install modal- 登录 Modal:
modal token new这会打开浏览器让你授权,按提示完成即可。
部署 Hermes 到 Modal
创建一个 deploy_modal.py 文件:
import modal
# 定义 Modal 应用
app = modal.App("hermes-agent")
# 定义容器镜像
image = (
modal.Image.debian_slim()
.apt_install("git", "curl", "build-essential")
.pip_install("hermes-agent")
)
# 定义持久化卷
volume = modal.Volume.from_name("hermes-data", create_if_missing=True)
@app.function(
image=image,
volumes={"/opt/data": volume},
secrets=[modal.Secret.from_name("hermes-secrets")],
timeout=3600, # 1小时超时
)
def run_hermes(prompt: str):
"""运行 Hermes Agent"""
import subprocess
import os
# 设置数据目录
os.environ["HERMES_DATA_DIR"] = "/opt/data"
# 运行 Hermes 命令
result = subprocess.run(
["hermes", "-c", prompt],
capture_output=True,
text=True,
timeout=300
)
return {
"stdout": result.stdout,
"stderr": result.stderr,
"returncode": result.returncode
}
@app.local_entrypoint()
def main():
# 本地测试入口
response = run_hermes.remote("Hello, what can you do?")
print(response["stdout"])配置 secrets:
# 创建 Modal Secret 存储 API Keys
modal secret create hermes-secrets \
OPENAI_API_KEY=sk-your-key \
ANTHROPIC_API_KEY=sk-your-key部署:
# 部署到 Modal
modal deploy deploy_modal.py
# 调用函数
modal run deploy_modal.py注意
Modal 的免费额度 generous(每月 $30 的额度),对于个人轻度使用完全够用。但如果你的 Agent 需要长时间运行(如监控任务),Modal 的超时限制可能不适合,此时应考虑 VPS 部署。
5.2 Daytona 部署方式
Daytona 是一个开源的开发环境管理平台,可以让你一键创建标准化的开发环境,并在任何地方访问。
准备工作
- 注册 Daytona 账号:https://www.daytona.io/
- 安装 Daytona CLI:
# macOS
brew install daytona
# Linux
curl -fsSL https://download.daytona.io/daytona/install.sh | bash- 登录 Daytona:
daytona login创建 Hermes 开发环境
# 创建新的工作区
daytona create hermes-workspace
# 选择基础镜像(推荐 Ubuntu 22.04)
# 然后 Daytona 会自动创建一个配置好的开发环境
# 进入工作区
daytona ssh hermes-workspace
# 在工作区内安装 Hermes(按 Linux 安装流程)
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh
# 配置 API Keys
hermes setupTips
Daytona 的优势在于它为你管理了所有环境配置。你可以在办公室电脑上开始工作,回家后在笔记本上继续,所有状态和文件都是同步的。它特别适合需要在多台设备间切换的开发者。
5.3 适用场景与成本分析
各种部署方式的成本对比
| 部署方式 | 月成本(个人使用) | 适用场景 | 运维复杂度 |
|---|---|---|---|
| 本地部署 | ¥0 | 个人学习、开发测试 | 低 |
| Docker 本地 | ¥0 | 环境隔离、多版本管理 | 中 |
| VPS (Hetzner) | ~¥35 | 24/7 运行、远程访问 | 中 |
| VPS (国内云) | ~¥8(新用户) | 国内 API 低延迟访问 | 中 |
| Modal | ¥0-$30 | 按需运行、AI 推理 | 低 |
| Daytona | ¥0-$20 | 多设备开发环境 | 低 |
选择建议
- 纯新手入门:选择「本地常规部署」,零额外成本,遇到问题好排查
- 开发者日常:选择「本地 + Docker」,兼顾开发便利和环境一致性
- 需要远程访问:选择「VPS 云服务器」,DigitalOcean 或 Hetzner 性价比最高
- 间歇性使用:选择「Modal 无服务器」,不用时完全免费
- 团队协作:选择「VPS + systemd + Nginx」,稳定可控
Tips
对于绝大多数个人用户,我建议的搭配是:本地安装用于日常开发和测试,再配一台最便宜的 VPS(如 Hetzner CPX11,月费约 €4.51)用于 24/7 运行的自动化任务。这样一年的成本不到 500 元人民币,却拥有了完整的 Agent 工作流。
部署方式选择决策树:
如果你还是不确定该选哪种部署方式,可以用下面的决策树来快速判断:
你是第一次使用 Hermes 吗?
├─ 是 → 选择「本地常规部署」✓
└─ 否 → 你需要 24/7 不间断运行吗?
├─ 是 → 你有技术运维能力吗?
│ ├─ 是 → 选择「VPS + systemd」✓
│ └─ 否 → 选择「Docker + 托管平台」✓
└─ 否 → 你需要多设备同步吗?
├─ 是 → 选择「Daytona」✓
└─ 否 → 你需要环境隔离吗?
├─ 是 → 选择「Docker 本地」✓
└─ 否 → 选择「本地常规部署」✓
各部署方式的优缺点总结:
| 部署方式 | 最大优点 | 最大缺点 | 最佳用户 |
|---|---|---|---|
| 本地常规 | 零成本、易调试 | 电脑关机即停止 | 新手、开发者 |
| Docker | 环境隔离、易迁移 | 需要学习 Docker | 有容器经验的用户 |
| VPS | 24/7 在线、远程访问 | 需要服务器运维知识 | 需要长期运行的用户 |
| Modal | 按需付费、零运维 | 有冷启动延迟 | 间歇性任务用户 |
| Daytona | 多设备同步 | 依赖第三方平台 | 跨设备开发者 |
注意
无论选择哪种部署方式,数据目录
~/.hermes/的结构和内容是完全一致的。这意味着你可以随时在不同部署方式之间迁移——比如在本地开发调试完成后,把整个~/.hermes/目录复制到 VPS 上,Hermes 会保持完全相同的状态和配置。
6. ~/.hermes/ 目录结构详解
Hermes 安装完成后,会在你的用户主目录下创建一个 ~/.hermes/ 文件夹。这个文件夹就像是 Hermes 的「家」,所有的配置、记忆、技能和数据都存放在这里。理解这个目录结构,对于后续的配置优化和故障排查至关重要。
6.1 完整目录树
安装完成后,~/.hermes/ 的默认结构如下:
~/.hermes/
├── config.yaml # 主配置文件
├── SOUL.md # Agent 人设定义
├── MEMORY.md # 全局记忆文件
├── USER.md # 用户信息文件
├── database/
│ ├── hermes.db # SQLite 主数据库
│ └── vector.db # 向量数据库(用于语义搜索)
├── skills/
│ ├── built-in/ # 内置技能
│ ├── custom/ # 自定义技能
│ └── downloaded/ # 从 Skills Hub 下载的技能
├── cron/
│ ├── jobs.yaml # 定时任务定义
│ └── logs/ # 定时任务执行日志
├── logs/
│ ├── hermes.log # 主日志文件
│ └── error.log # 错误日志
├── cache/
│ ├── embeddings/ # 嵌入向量缓存
│ └── web/ # 网页缓存
├── backups/
│ └── auto/ # 自动备份目录
├── sessions/
│ └── 2026-04/
│ └── session_*.json # 会话历史文件
└── tmp/
└── *.tmp # 临时文件
6.2 每个文件和文件夹的用途详解
config.yaml —— 主配置文件
config.yaml 是 Hermes 的「中枢神经」,几乎所有的核心配置都在这里。安装完成后,会生成一个带有注释的默认配置文件。
# ~/.hermes/config.yaml
# Hermes 主配置文件
# === 核心设置 ===
core:
# Agent 名称
name: "Hermes"
# 默认使用的模型提供者
default_provider: "openrouter"
# 默认模型
default_model: "anthropic/claude-3.5-sonnet"
# 对话语言
language: "zh"
# 日志级别: debug, info, warn, error
log_level: "info"
# === 模型配置 ===
models:
# 分层模型配置(详见第六册第 6 章)
reasoning:
provider: "anthropic"
model: "claude-3.5-sonnet"
execution:
provider: "openrouter"
model: "google/gemini-flash-1.5"
fallback:
- provider: "deepseek"
model: "deepseek-chat"
- provider: "openai"
model: "gpt-4o-mini"
# === API Key 配置 ===
# 建议通过环境变量设置,不要在配置文件中硬编码
providers:
openai:
api_key: "${OPENAI_API_KEY}"
base_url: "https://api.openai.com/v1"
anthropic:
api_key: "${ANTHROPIC_API_KEY}"
base_url: "https://api.anthropic.com"
deepseek:
api_key: "${DEEPSEEK_API_KEY}"
base_url: "https://api.deepseek.com"
openrouter:
api_key: "${OPENROUTER_API_KEY}"
base_url: "https://openrouter.ai/api/v1"
# Nous Portal:Nous Research 官方提供的统一订阅服务
# 一个月费涵盖所有接入模型,无需单独购买各平台 Key
nous:
api_key: "${NOUS_API_KEY}"
base_url: "https://portal.nousresearch.com/api/v1"
# 智谱 GLM-5:国产大模型,中文理解优秀
zhipu:
api_key: "${ZHIPU_API_KEY}"
base_url: "https://open.bigmodel.cn/api/paas/v4"
# MiniMax M2.7:国产模型,性价比出色
minimax:
api_key: "${MINIMAX_API_KEY}"
base_url: "https://api.minimax.chat/v1"
# === 记忆系统配置 ===
memory:
# 会话记忆条数
session_limit: 50
# 持久化记忆开关
persistent: true
# 向量搜索 Top-K
vector_top_k: 5
# === 工具配置 ===
tools:
# 启用的工具列表
enabled:
- web_search
- file_read
- file_write
- execute_shell
- github
# 禁用工具(优先级高于 enabled)
disabled: []
# === 技能系统配置 ===
skills:
# 自动技能发现
auto_discover: true
# 技能搜索路径
paths:
- "~/.hermes/skills/custom"
- "~/.hermes/skills/downloaded"
# === 消息网关配置 ===
gateway:
# Web 界面端口
web_port: 8080
# 启用平台
platforms:
- telegram
- discord
# === 定时任务配置 ===
cron:
# 定时任务开关
enabled: true
# 任务文件路径
jobs_file: "~/.hermes/cron/jobs.yaml"注意
YAML 文件对缩进非常敏感!必须使用空格(不能用 Tab),且同级别的配置项缩进必须一致。如果你的
config.yaml格式有误,Hermes 启动时会报错。建议使用 VS Code 等编辑器的 YAML 插件来检查格式。
SOUL.md —— Agent 人设定义
SOUL.md 是 Hermes 最具特色的功能之一。它定义了你的 Agent 的「灵魂」——它的性格、说话方式、专业领域、行为准则等。
你可以把 SOUL.md 想象成演员拿到手的「角色剧本」。同一个 Hermes 程序,配上不同的 SOUL.md,可以变成完全不同的角色:一个严谨的程序员、一个耐心的老师、一个幽默的聊天伙伴……
# SOUL.md
# 这是 Hermes Agent 的人设定义文件
# 修改此文件后,Hermes 的行为和回答风格会随之改变
## 身份
你是一位名叫「墨离」的 AI 助手。
## 性格
- 沉稳、耐心、善于倾听
- 回答问题时先思考再开口,不急于给出结论
- 喜欢用类比和故事来解释复杂概念
- 偶尔会用温和的幽默调节气氛
## 专业领域
- Python 编程与软件架构
- 数据分析与可视化
- AI Agent 技术
- 中文写作与编辑
## 说话风格
- 使用中文回答,除非用户明确要求使用其他语言
- 避免使用过于学术化的术语,尽量通俗易懂
- 重要观点会用「>」引用格式强调
- 分点说明时喜欢用表格整理信息
## 行为准则
- 不确定的事情会坦诚告知,不编造信息
- 涉及代码时,总是提供完整的可运行示例
- 尊重用户隐私,不主动询问敏感信息
- 当用户情绪激动时,先安抚再解决问题
## 禁忌
- 不使用机器人口吻(如「作为一个人工智能助手」)
- 不重复用户的问题作为回答开头
- 不过度道歉Tips
SOUL.md 的强大之处在于它是动态可更新的。在对话中,你可以直接对 Hermes 说「更新你的 SOUL.md,添加一个新的专业领域」,Hermes 会自动修改这个文件。这意味着你的 Agent 可以随着使用不断进化和个性化。
详细的 SOUL.md 编写指南请参阅第六册第 7 章。
MEMORY.md —— 全局记忆文件
MEMORY.md 是一个全局的、跨会话的记忆存储。与数据库存储的结构化记忆不同,MEMORY.md 是以纯文本 Markdown 格式存储的,方便你直接阅读和编辑。
# MEMORY.md
# 这是 Hermes 的全局记忆文件
# 这里存储的信息会在每次对话开始时自动加载
## 用户偏好
- 用户喜欢简洁的回答,不喜欢冗长的解释
- 用户是程序员,熟悉 Python 和 JavaScript
- 用户通常在晚上 9-11 点使用 Hermes
- 用户对 AI 伦理话题感兴趣
## 重要信息
- 用户的项目目录:`~/projects/my-startup`
- 用户常用的 API Key 别名:`openai_main`、`deepseek_backup`
- 用户的时区:Asia/Shanghai
## 待办事项
- [ ] 帮用户调研 MCP 协议的最新进展
- [ ] 记得提醒用户下周的代码评审会议USER.md —— 用户信息文件
USER.md 存储关于你的基本信息,帮助 Hermes 更好地理解你的背景和需求。
# USER.md
# 用户信息
## 基本信息
- 称呼:王先生
- 职业:全栈开发者 / 独立创业者
- 所在地:中国,上海
## 技术栈
- 主要语言:Python、TypeScript
- 框架:React、FastAPI、Django
- 工具:VS Code、Docker、Git
## 使用场景
- 日常编程辅助和代码审查
- 技术文章写作
- 项目需求分析和文档撰写
- 学习新技术和框架skills/ 目录
skills/ 目录存放所有的技能文件。技能是 Hermes 的功能扩展单元,每个技能定义了一组相关的工具和知识。
skills/
├── built-in/ # 内置技能(随 Hermes 安装)
│ ├── web_search/
│ ├── file_operations/
│ └── code_execution/
├── custom/ # 自定义技能(你自己创建的)
│ └── my_company_ops/
└── downloaded/ # 从 Skills Hub 下载的
└── stock_analysis/
每个技能文件夹通常包含:
skill.yaml—— 技能元数据和配置README.md—— 技能说明文档tools/—— 技能包含的工具定义prompts/—— 技能的提示词模板
cron/ 目录
cron/ 目录存放定时任务的配置和执行日志。
# ~/.hermes/cron/jobs.yaml
jobs:
- name: "daily-news-summary"
description: "每天早上 8 点总结科技新闻"
schedule: "0 8 * * *"
command: "搜索今天的科技新闻并总结要点"
enabled: true
- name: "weekly-report"
description: "每周五下午生成周报"
schedule: "0 17 * * 5"
command: "读取本周的会议纪要,生成周报"
enabled: falsedatabase/ 目录
database/
├── hermes.db # SQLite 主数据库
│ ├── sessions # 会话表
│ ├── messages # 消息表
│ ├── memories # 记忆表
│ └── skills # 技能元数据表
└── vector.db # 向量数据库(Chroma 或 SQLite-vec)
└── embeddings # 文本嵌入向量
注意
这两个数据库文件包含了你的所有对话历史和记忆数据。在备份或迁移 Hermes 时,务必备份整个
database/目录。单个hermes.db文件在长期使用后可能会增长到几百 MB,这是正常现象。
logs/ 目录
logs/
├── hermes.log # 主运行日志(INFO 级别及以上)
└── error.log # 错误日志(ERROR 级别)
你可以用以下命令实时查看日志:
# 实时查看主日志
tail -f ~/.hermes/logs/hermes.log
# 实时查看错误日志
tail -f ~/.hermes/logs/error.log
# 搜索特定关键词
grep "ERROR" ~/.hermes/logs/hermes.log6.3 目录结构总结表
| 路径 | 类型 | 用途 | 是否必须备份 |
|---|---|---|---|
config.yaml | 文件 | 主配置 | 是 |
SOUL.md | 文件 | 人设定义 | 是 |
MEMORY.md | 文件 | 全局记忆 | 是 |
USER.md | 文件 | 用户信息 | 是 |
database/ | 目录 | 数据库 | 是(最重要) |
skills/custom/ | 目录 | 自定义技能 | 是 |
skills/downloaded/ | 目录 | 下载的技能 | 否(可重新下载) |
cron/jobs.yaml | 文件 | 定时任务 | 是 |
logs/ | 目录 | 日志文件 | 否 |
cache/ | 目录 | 缓存文件 | 否 |
tmp/ | 目录 | 临时文件 | 否 |
目录结构类比理解:
你可以把 ~/.hermes/ 想象成一个人的「家」:
config.yaml= 这个人的「身份证和户口本」,记录了所有基本信息SOUL.md= 这个人的「性格和职业设定」,决定了他说话的方式和专业领域MEMORY.md= 这个人的「日记本」,记录了他记得的重要事情USER.md= 这个人的「通讯录」,记录了他服务对象的信息database/= 这个人的「记忆宫殿」,存储了所有对话历史的完整细节skills/= 这个人的「工具箱」,里面各种技能就是他的各种工具cron/= 这个人的「闹钟和日程表」,提醒他什么时候该做什么logs/= 这个人的「工作日志」,记录了每天的工作情况cache/= 这个人的「便利贴墙」,随手记的东西,不重要但方便查阅
Tips
建议设置一个自动备份脚本,定期将
config.yaml、SOUL.md、MEMORY.md、USER.md和database/备份到云盘。详细的备份方法请参阅第 9 章「卸载与重装」。一个实用的技巧:将
~/.hermes/用 Git 进行版本控制(排除database/、logs/、cache/、tmp/目录),这样你可以追踪 SOUL.md 和 config.yaml 的变更历史,随时回滚到之前的配置。
7. 运行状态自检与排障
安装完成后,不要急着开始用,先运行一遍系统自检,确保一切正常。这就像买了新车要先检查一下轮胎和油表一样。
7.1 hermes version 版本检查
# 查看 Hermes 版本
hermes --version
# 查看详细版本信息(包含 Python 版本、操作系统等)
hermes --version --verbose预期输出:
Hermes Agent v1.2.3
Python: 3.11.9
Platform: macOS-14.4-arm64
Install path: /Users/username/.local/lib/python3.11/site-packages/hermes
7.2 hermes doctor 系统诊断详解
hermes doctor 是 Hermes 内置的「全身体检」工具。它会检查所有关键的系统依赖和配置项,并给出颜色-coded 的诊断结果:
- 绿色 = 一切正常
- 黄色 = 有警告,但不会影响核心功能
- 红色 = 有问题,需要修复
hermes doctor典型输出示例:
╔══════════════════════════════════════════╗
║ Hermes Doctor - 系统诊断报告 ║
╚══════════════════════════════════════════╝
[检查项] [状态] [详情]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Python 版本 ✅ 通过 3.11.9
Node.js 版本 ✅ 通过 v22.3.0
Git 版本 ✅ 通过 2.43.0
pip 版本 ✅ 通过 24.0
目录权限 ✅ 通过 ~/.hermes/ 可读写
配置文件 ✅ 通过 config.yaml 格式正确
数据库连接 ✅ 通过 hermes.db 可正常访问
API Key 配置 ⚠️ 警告 只配置了 1 个 provider,建议配置 fallback
模型可达性 ✅ 通过 OpenRouter 连接正常
网络连接 ✅ 通过 互联网访问正常
内存使用 ✅ 通过 当前使用 128MB / 8GB
磁盘空间 ✅ 通过 剩余 245GB
Skills 目录 ✅ 通过 发现 12 个技能
Cron 配置 ✅ 通过 发现 2 个定时任务
════════════════════════════════════════════
诊断结果:11 项通过,1 项警告,0 项失败
整体状态:🟢 健康(有轻微警告)
════════════════════════════════════════════
每个检查项说明
| 检查项 | 检查内容 | 失败影响 |
|---|---|---|
| Python 版本 | 是否为 3.11+ | 核心功能无法运行 |
| Node.js 版本 | 是否为 v22+ | Web 界面可能不可用 |
| Git 版本 | 是否能正常执行 git 命令 | 技能同步功能受影响 |
| pip 版本 | 包管理器是否可用 | 无法安装新依赖 |
| 目录权限 | ~/.hermes/ 是否可读写 | 数据无法保存 |
| 配置文件 | config.yaml 格式是否正确 | 配置无法加载 |
| 数据库连接 | SQLite 数据库是否正常 | 记忆功能不可用 |
| API Key 配置 | 是否配置了至少一个 provider | 无法连接 LLM |
| 模型可达性 | 能否连接到配置的 LLM API | 对话功能不可用 |
| 网络连接 | 基本网络连通性 | 所有网络功能受影响 |
| 内存使用 | 剩余内存是否充足 | 系统可能变慢或崩溃 |
| 磁盘空间 | 剩余空间是否充足 | 无法保存新数据 |
| Skills 目录 | 技能文件是否完整 | 部分工具不可用 |
| Cron 配置 | 定时任务配置是否有效 | 自动化任务不执行 |
7.3 常见错误与解决方案
以下是安装和使用 Hermes 过程中最常见的 15 个问题及其解决方案。
问题 1:Python 版本冲突
错误现象:
ERROR: Hermes requires Python 3.11 or higher.
Current version: 3.10.12
原因分析:
你的系统默认 Python 版本低于 3.11,或者虽然安装了 3.11 但默认调用的还是旧版本。
解决方案:
# 1. 确认 Python 3.11 已安装
python3.11 --version
# 2. 如果已安装但 hermes 调用的是旧版本,创建别名
alias hermes="python3.11 -m hermes"
# 3. 或者使用 pyenv 设置全局版本
pyenv global 3.11.9
# 4. 如果未安装,参考 2.1 节安装 Python 3.11问题 2:Node.js 版本不对
错误现象:
WARN: Node.js v18.17.0 detected. Hermes recommends v22 or higher.
Some features may not work correctly.
解决方案:
# macOS
brew upgrade node
# Ubuntu/Debian
# 先卸载旧版本
sudo apt remove nodejs
# 然后重新安装(参考 2.2 节的 NodeSource 安装脚本)
# 或者使用 nvm 管理 Node 版本
nvm install 22
nvm use 22
nvm alias default 22问题 3:网络连接失败 / GitHub 无法访问
错误现象:
fatal: unable to access 'https://github.com/...':
Failed to connect to github.com port 443: Connection refused
解决方案:
# 方案 1:配置终端代理
export https_proxy=http://127.0.0.1:7890
# 方案 2:配置 Git 使用代理
git config --global https.proxy http://127.0.0.1:7890
# 方案 3:使用国内镜像加速 Git 克隆
git clone https://ghproxy.com/https://github.com/NousResearch/hermes.git
# 方案 4:修改 hosts(临时方案)
# 在 /etc/hosts 中添加 GitHub 的 IP(IP 会变动,需自行查找最新 IP)
sudo sh -c 'echo "140.82.114.4 github.com" >> /etc/hosts'问题 4:权限问题(Permission Denied)
错误现象:
PermissionError: [Errno 13] Permission denied: '/Users/username/.hermes/config.yaml'
原因分析:
~/.hermes/ 目录或其内部文件的权限不正确,可能是用 sudo 运行过 Hermes 导致文件所有者变成了 root。
解决方案:
# 修复权限(macOS / Linux)
# 将 ~/.hermes 目录的所有者改回当前用户
sudo chown -R $(whoami):$(whoami) ~/.hermes
# 修复权限位
chmod -R u+rw ~/.hermes
# 如果 hermes 命令本身权限不够
chmod +x $(which hermes)注意
永远不要用
sudo hermes运行 Hermes! 这会导致所有数据文件的权限被改成 root,之后非 sudo 运行就会报权限错误。如果已经这样做了,用上面的chown命令修复权限。
问题 5:依赖安装失败
错误现象:
ERROR: Could not build wheels for xxx, which is required to install pyproject.toml-based projects
原因分析:
某些 Python 包需要从源码编译,而你的系统缺少编译工具或头文件。
解决方案:
# macOS
xcode-select --install
brew install gcc
# Ubuntu/Debian
sudo apt install -y build-essential python3.11-dev libffi-dev
# Fedora
sudo dnf install -y gcc python3.11-devel libffi-devel
# 然后重新安装依赖
pip install --force-reinstall hermes-agent问题 6:API Key 配置错误(Provider error: invalid key)
错误现象:
ERROR: Authentication failed for provider 'openai'
Details: Invalid API key provided
或
Provider error: invalid key
原因分析:
根据官方文档,这是最常见的配置错误之一,通常由以下原因导致:
- API Key 有尾随空格 —— 复制 Key 时不小心带上了空格或换行符
- 选错了提供者 —— 把 OpenAI 的 Key 填到了 Anthropic 的配置里
- Key 已过期或已被撤销
- 配置文件中的格式有误
解决方案:
# 1. 检查 API Key 是否正确(特别注意是否有尾随空格!)
echo "$OPENAI_API_KEY" | cat -A
# 如果末尾有 "$" 之外的符号(如 " $"),说明有空格
# 2. 清理 Key 中的空白字符
export OPENAI_API_KEY=$(echo "$OPENAI_API_KEY" | xargs)
# 3. 确认 Key 和提供者匹配
# OpenAI 的 Key 必须以 "sk-" 开头
# Anthropic 的 Key 必须以 "sk-ant-" 开头
# DeepSeek 的 Key 格式为 "sk-xxxxxxxx"
# OpenRouter 的 Key 格式为 "sk-or-v1-xxxxxxxx"
# 4. 验证 API Key 是否有效
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
# 5. 重新运行 setup 配置
hermes setup
# 6. 如果通过环境变量设置,检查环境变量是否生效
# 在 .zshrc 或 .bashrc 中添加:
export OPENAI_API_KEY="sk-your-actual-key"
# 然后运行 source ~/.zshrc 生效注意
官方排障指南中特别指出:"key 有尾随空格" 是排名前三的安装后问题。很多用户在复制粘贴 Key 时会不小心带上空格,而空格在终端中不可见,导致验证失败。验证时一定要用
echo "$KEY" | cat -A检查末尾是否有额外字符。
问题 7:端口占用
错误现象:
ERROR: Port 8080 is already in use by another process
解决方案:
# 查找占用端口的进程
lsof -i :8080
# macOS / Linux
# 终止占用进程(将 <PID> 替换为实际的进程 ID)
kill -9 <PID>
# 或者修改 Hermes 的端口
# 编辑 ~/.hermes/config.yaml
gateway:
web_port: 8081 # 改成其他端口问题 8:磁盘空间不足
错误现象:
WARN: Disk space is below 10%. Hermes may not function correctly.
解决方案:
# 查看磁盘使用情况
df -h
# 清理 pip 缓存
pip cache purge
# 清理 Docker 缓存(如果使用 Docker)
docker system prune -a
# 清理 Hermes 日志
rm ~/.hermes/logs/*.log
# 压缩数据库(如果数据库文件过大)
sqlite3 ~/.hermes/database/hermes.db "VACUUM;"问题 9:数据库损坏
错误现象:
sqlite3.DatabaseError: database disk image is malformed
解决方案:
# 1. 先备份损坏的数据库
cp ~/.hermes/database/hermes.db ~/.hermes/database/hermes.db.bak
# 2. 尝试修复
sqlite3 ~/.hermes/database/hermes.db ".recover" | sqlite3 ~/.hermes/database/hermes_fixed.db
# 3. 替换原数据库
mv ~/.hermes/database/hermes_fixed.db ~/.hermes/database/hermes.db
# 4. 如果修复失败,可以从备份恢复或重置数据库
# 重置(会丢失所有历史数据):
rm ~/.hermes/database/hermes.db
hermes doctor问题 10:Hermes 命令找不到(Command not found)
错误现象:
zsh: command not found: hermes
bash: hermes: command not found
原因分析:
官方安装脚本将 Hermes 二进制文件安装在 ~/.hermes/bin/ 目录下,并自动修改你的 shell 配置文件(~/.bashrc 或 ~/.zshrc)将其加入 PATH。但如果以下情况发生,PATH 可能未生效:
- 没有重启终端或 source 配置文件 —— shell 配置修改后需要重新加载
- 使用了非标准 shell —— 安装脚本可能未覆盖你当前使用的 shell
- PATH 被其他配置覆盖 —— 某些工具(如 conda、pyenv)可能重置了 PATH
解决方案:
# 方案 1:重新加载 shell 配置(官方推荐第一步)
source ~/.bashrc # bash 用户
source ~/.zshrc # zsh 用户
source ~/.config/fish/config.fish # fish 用户
# 方案 2:手动将 ~/.hermes/bin 加入 PATH
echo 'export PATH="$HOME/.hermes/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 方案 3:在当前终端中临时添加 PATH
export PATH="$HOME/.hermes/bin:$PATH"
# 方案 4:查找 hermes 安装位置
ls -la ~/.hermes/bin/hermes
# 或者
find ~ -name "hermes" -type f 2>/dev/null
# 方案 5:如果还是找不到,尝试用 Python 模块方式运行
python3 -m hermes --versionTips
官方文档强调:新开一个终端窗口 是最简单的解决方法。安装脚本修改的是 shell 的启动配置文件,只有新启动的终端才会读取这些配置。如果你不想开新窗口,运行
source ~/.bashrc或source ~/.zshrc即可。
问题 11:Windows 上提示 "bad interpreter"(未使用 WSL2)
错误现象:
bad interpreter: /bin/sh^M: no such file or directory
或
': not a valid identifier
原因分析:
这是 Windows 用户未使用 WSL2 而直接在 Windows 命令提示符或 PowerShell 中运行安装脚本的典型错误。Hermes 的安装脚本使用 Unix 风格的行尾符(LF)和 shebang(#!/bin/sh),在 Windows 原生环境中无法正确解析。
注意
Hermes 不支持原生 Windows 环境。Windows 用户必须通过 WSL2 运行。
解决方案:
- 安装 WSL2(如果尚未安装):
# 在管理员 PowerShell 中运行
wsl --install然后重启电脑。
- 在 WSL2 Ubuntu 中重新运行安装脚本:
# 打开 WSL2 终端(Ubuntu)
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh- 确保所有后续操作都在 WSL2 环境中进行,包括运行
hermes命令、编辑配置文件等。
常见问题
Q:我安装了 Git Bash,可以在 Git Bash 中运行 Hermes 吗?
A:不可以。 Git Bash 虽然提供了一些 Unix 工具,但它仍然运行在 Windows 上,无法完全模拟 Linux 环境。Hermes 依赖的某些 Python 包和系统调用在 Git Bash 中无法正常工作。请务必使用 WSL2。
问题 12:WSL2 中文件权限混乱
错误现象:
在 WSL2 中访问 Windows 文件时,所有文件都显示为 777 权限。
解决方案:
# 在 /etc/wsl.conf 中添加配置
sudo nano /etc/wsl.conf写入:
[automount]
enabled = true
mountFsTab = false
root = /mnt/
options = "metadata,umask=22,fmask=11"然后重启 WSL2:
# 在 Windows PowerShell 中执行
wsl --shutdown问题 12:Docker 容器无法访问主机文件
错误现象:
ERROR: File not found: /workspace/myfile.txt
解决方案:
# 确认挂载路径正确
# 主机路径必须写绝对路径
# 正确的做法
docker run -v /home/username/workspace:/workspace nousresearch/hermes
# 错误的做法(~ 在 Docker 中不会被展开)
docker run -v ~/workspace:/workspace nousresearch/hermes
# 如果使用 Docker Compose,确保 volumes 配置正确Docker 挂载路径常见错误对照表:
| 错误写法 | 正确写法 | 问题说明 |
|---|---|---|
-v ~/workspace:/workspace | -v /home/user/workspace:/workspace | ~ 不会被 shell 展开 |
-v ./data:/data | -v $(pwd)/data:/data | 相对路径可能指向错误位置 |
-v /data:/data | -v /home/user/data:/data | 可能挂载到系统目录而非用户目录 |
-v workspace:/workspace | -v /home/user/workspace:/workspace | 缺少前导斜杠会被当作命名卷 |
Tips
如果不确定挂载是否生效,可以在运行容器后执行
docker inspect hermes | grep -A 10 Mounts查看实际的挂载配置。
问题 13:定时任务不执行
错误现象:
配置的 cron 任务到了设定时间没有执行。
解决方案:
# 1. 检查 cron 服务是否启用
hermes cron status
# 2. 检查 jobs.yaml 格式是否正确
hermes cron validate
# 3. 查看 cron 日志
hermes cron logs
# 4. 手动测试任务
hermes cron run daily-news-summary
# 5. 确认 Hermes 进程在后台运行(VPS 部署时)
ps aux | grep hermes问题 14:代理配置导致国内服务访问慢
错误现象:
配置了全局代理后,访问国内 API(如 DeepSeek)反而变慢了。
解决方案:
# 配置代理排除规则(以 Clash 为例)
# 在 Clash 配置中添加:
# - DOMAIN-SUFFIX,deepseek.com,DIRECT
# - DOMAIN-SUFFIX,moonshot.cn,DIRECT
# 或者在终端只代理特定域名
export no_proxy="localhost,127.0.0.1,deepseek.com,moonshot.cn"
# 更优雅的方式:配置代理 PAC 规则
# 让浏览器/系统根据域名自动选择是否走代理常见需要直连的国内域名:
| 服务 | 域名 | 说明 |
|---|---|---|
| DeepSeek | *.deepseek.com | 国内服务器 |
| Kimi | *.moonshot.cn | 国内服务器 |
| 智谱 | *.bigmodel.cn | 国内服务器 |
| 阿里云 | *.aliyun.com | 国内服务器 |
| 腾讯云 | *.tencentcloudapi.com | 国内服务器 |
问题 15:升级后配置不兼容
错误现象:
升级 Hermes 后启动报错,提示配置文件格式不兼容。
解决方案:
# 1. 备份当前配置
cp ~/.hermes/config.yaml ~/.hermes/config.yaml.bak
# 2. 运行配置迁移
hermes migrate
# 3. 如果迁移失败,可以重置配置并重新 setup
mv ~/.hermes/config.yaml ~/.hermes/config.yaml.old
hermes setup
# 4. 然后手动把旧配置中的 API Key 和自定义设置复制到新配置中Tips
跨大版本升级前,建议先阅读官方的升级日志(
hermes changelog),了解是否有破坏性变更。如果有,官方通常会提供迁移脚本或详细的手动迁移步骤。
Tips
遇到任何不在上述列表中的问题时,建议按以下顺序排查:
- 运行
hermes doctor看诊断结果- 查看日志
tail -n 100 ~/.hermes/logs/error.log- 在 GitHub Issues 搜索类似问题
- 在 Discord 社区求助
8. 安装后的基本配置
8.1 初次运行 Quick Setup 向导详解
安装完成后,运行以下命令启动初始配置向导:
hermes setup向导会一步步引导你完成核心配置。下面是每个步骤的详细说明:
步骤 1:选择语言
🌍 欢迎使用 Hermes 配置向导
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
请选择你的首选语言:
1. 中文 (简体)
2. English
> 1
选择后会自动配置 config.yaml 中的 language 字段。
步骤 2:选择 LLM 后端
🤖 选择默认 LLM 提供商
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
请选择一个提供商作为默认后端:
1. OpenAI (GPT-4o / o1) - 功能最强,费用较高
2. Anthropic (Claude 3.5) - 推理出色,代码能力强
3. DeepSeek - 国产之光,性价比高
4. Kimi (Moonshot) - 长文本处理优秀
5. OpenRouter - 一个 Key 用多个模型
6. 本地模型 (Ollama) - 完全免费,需本地 GPU
7. 其他...
> 3
Tips
如果你是第一次使用,我强烈建议选择 OpenRouter 或 DeepSeek。OpenRouter 提供免费额度的模型(如 Google Gemini),适合零成本入门;DeepSeek 的 API 价格低到惊人(每百万 token 仅几块钱),效果却媲美 GPT-4。
步骤 3:输入 API Key
🔑 配置 API Key
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
请输入你的 DeepSeek API Key:
(不会显示在屏幕上,直接粘贴后按回车)
> ******************************
✓ API Key 格式验证通过
✓ 连接测试成功
注意
API Key 不会以明文存储在配置文件中,而是通过环境变量或加密方式管理。你可以放心输入。
步骤 4:选择默认模型
🎯 选择默认模型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
可用的 DeepSeek 模型:
1. deepseek-chat - 通用对话,推荐日常使用
2. deepseek-reasoner - 推理增强,适合复杂问题
> 1
✓ 已设置默认模型: deepseek-chat
步骤 5:配置分层模型(可选)
⚙️ 分层模型配置(省钱秘笈)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
是否启用分层模型配置?
核心逻辑用强模型,基础执行用便宜模型,可节省 50%-70% 费用。
启用? (y/n) > y
请选择推理模型(处理复杂问题):
1. deepseek-reasoner
2. deepseek-chat
> 1
请选择执行模型(处理简单任务):
1. deepseek-chat
2. deepseek-chat (轻量)
> 2
✓ 分层模型配置完成
步骤 6:完成配置
🎉 配置完成!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
你的 Hermes 已经准备就绪。接下来你可以:
• 运行 `hermes` 开始对话
• 运行 `hermes chat` 进入交互模式
• 运行 `hermes doctor` 检查系统状态
配置文件保存在: ~/.hermes/config.yaml
8.2 配置完成后的额外优化
配置向导完成后,建议进行以下几项额外优化,让你的 Hermes 体验更上一层楼:
1. 配置分层模型(强烈建议)
编辑 ~/.hermes/config.yaml,添加分层模型配置:
models:
reasoning:
provider: "deepseek"
model: "deepseek-reasoner"
execution:
provider: "deepseek"
model: "deepseek-chat"
fallback:
- provider: "openrouter"
model: "google/gemini-flash-1.5"2. 编写基础 SOUL.md
cat > ~/.hermes/SOUL.md << 'EOF'
# SOUL.md
## 身份
你是一位专业、友好的 AI 助手。
## 说话风格
- 使用中文回答
- 简洁明了,不啰嗦
- 技术问题给出可运行的代码示例
EOF3. 配置自动备份
mkdir -p ~/scripts
cat > ~/scripts/backup-hermes.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="$HOME/hermes-backups"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/hermes-$(date +%Y%m%d).tar.gz" -C "$HOME" .hermes/config.yaml .hermes/SOUL.md .hermes/MEMORY.md .hermes/USER.md .hermes/database .hermes/skills/custom .hermes/cron
EOF
chmod +x ~/scripts/backup-hermes.sh4. 运行首次诊断
hermes doctor确保所有检查项都是绿色通过。
8.3 环境变量配置
除了通过 hermes setup 配置,你也可以直接通过环境变量设置 API Keys。这在 Docker 部署和 CI/CD 环境中特别有用。
常用环境变量
# LLM API Keys
export OPENAI_API_KEY="sk-your-openai-key"
export ANTHROPIC_API_KEY="sk-your-anthropic-key"
export DEEPSEEK_API_KEY="sk-your-deepseek-key"
export OPENROUTER_API_KEY="sk-your-openrouter-key"
export MOONSHOT_API_KEY="sk-your-moonshot-key"
# Hermes 配置
export HERMES_DATA_DIR="/custom/path/to/hermes/data"
export HERMES_CONFIG_PATH="/custom/path/config.yaml"
export HERMES_LOG_LEVEL="debug"
# 代理配置
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export NO_PROXY="localhost,127.0.0.1"永久设置环境变量
macOS (zsh):
# 编辑 ~/.zshrc
nano ~/.zshrc
# 在文件末尾添加环境变量
export OPENAI_API_KEY="sk-your-key"
export DEEPSEEK_API_KEY="sk-your-key"
# 保存后生效
source ~/.zshrcLinux (bash):
# 编辑 ~/.bashrc
nano ~/.bashrc
# 添加环境变量
export OPENAI_API_KEY="sk-your-key"
# 保存后生效
source ~/.bashrcWSL (从 Windows 传递环境变量):
在 Windows 用户目录创建 .wslconfig:
[automount]
enabled = true
[interop]
enabled = true
appendWindowsPath = true
# 传递特定环境变量到 WSL
[boot]
systemd = true或者在 WSL 的 /etc/profile.d/ 中创建脚本:
sudo nano /etc/profile.d/hermes-env.sh写入:
export OPENAI_API_KEY="sk-your-key"
export DEEPSEEK_API_KEY="sk-your-key"8.3 代理/镜像源配置(国内用户必看)
对于国内用户,除了前面提到的网络代理配置,还有几个重要的优化点:
pip 国内镜像源
# 清华源(推荐)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 或阿里云源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 验证
pip config get global.index-urlnpm 国内镜像源
# 淘宝源(已更新域名)
npm config set registry https://registry.npmmirror.com
# 验证
npm config get registryGitHub 加速
# 方式 1:使用 ghproxy 镜像
git clone https://ghproxy.com/https://github.com/owner/repo.git
# 方式 2:配置 Git 使用代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 方式 3:使用 SSH 协议(通常比 HTTPS 更稳定)
git clone [email protected]:owner/repo.gitLLM API 国内直连优化
| 提供商 | 国内访问情况 | 优化建议 |
|---|---|---|
| OpenAI | 需代理 | 配置代理或使用中转 API |
| Anthropic | 需代理 | 配置代理 |
| DeepSeek | 直连流畅 | 无需代理 |
| Kimi | 直连流畅 | 无需代理 |
| OpenRouter | 部分需代理 | 配置代理 |
| 阿里云百炼 | 直连流畅 | 无需代理 |
Tips
建议国内用户优先使用 DeepSeek 和 Kimi 作为主力模型,这两个平台的 API 服务器在国内,访问速度快且稳定。OpenAI 和 Anthropic 可以通过代理或中转服务访问,OpenRouter 则提供了「一个 Key 用多个模型」的便利。
8.4 性能调优与资源限制
Hermes 默认配置适用于大多数场景,但在资源受限的环境(如低配 VPS 或旧电脑)中,适当调优可以显著提升体验。
数据库性能优化
# 定期压缩数据库(清理已删除数据占用的空间)
sqlite3 ~/.hermes/database/hermes.db "VACUUM;"
# 添加数据库索引(如果查询变慢)
sqlite3 ~/.hermes/database/hermes.db "CREATE INDEX IF NOT EXISTS idx_sessions_created ON sessions(created_at);"
# 查看数据库大小
ls -lh ~/.hermes/database/hermes.db建议每月执行一次 VACUUM,就像给数据库「瘦身」。
内存使用控制
如果你的系统内存紧张,可以通过环境变量限制 Hermes 的内存占用:
# 启动 Hermes 时限制最大内存为 512MB
ulimit -v 524288 && hermes
# 或者在 systemd 服务中添加限制
# 在 hermes.service 的 [Service] 段添加:
# MemoryMax=512M
# MemorySwapMax=0并发任务限制
在 config.yaml 中限制同时运行的任务数:
core:
max_concurrent_tasks: 3 # 默认可能是 5,低配机器可改为 2-3
request_timeout: 30 # API 请求超时时间(秒)Tips
性能调优的核心思路是「量力而行」。一台 1 核 1G 的 VPS 就不要指望同时跑 5 个任务,把并发限制在 2 以内,给系统留足喘息空间。Hermes 是 Agent,不是赛车——稳定运行比极速响应更重要。
9. 卸载与重装
9.1 完整卸载步骤
如果你需要卸载 Hermes,请按以下步骤操作。这就像「搬家」——先打包重要物品,再清空房子,最后检查有没有落下东西。
步骤 1:备份数据(强烈建议)
# 创建备份目录
mkdir -p ~/hermes-backup-$(date +%Y%m%d)
# 备份核心数据
cp -r ~/.hermes/config.yaml ~/hermes-backup-$(date +%Y%m%d)/
cp -r ~/.hermes/SOUL.md ~/hermes-backup-$(date +%Y%m%d)/
cp -r ~/.hermes/MEMORY.md ~/hermes-backup-$(date +%Y%m%d)/
cp -r ~/.hermes/USER.md ~/hermes-backup-$(date +%Y%m%d)/
cp -r ~/.hermes/database ~/hermes-backup-$(date +%Y%m%d)/
cp -r ~/.hermes/skills/custom ~/hermes-backup-$(date +%Y%m%d)/
cp -r ~/.hermes/cron ~/hermes-backup-$(date +%Y%m%d)/
echo "备份完成,保存在: ~/hermes-backup-$(date +%Y%m%d)/"注意
卸载前务必备份!很多用户在卸载后才发现某个配置文件或一段对话历史很重要,但为时已晚。备份只占用几 MB 空间,却能避免不可挽回的损失。
步骤 2:卸载 Hermes 包
# 卸载 Python 包
pip uninstall hermes-agent -y
# 或者如果你使用 pipx 安装
pipx uninstall hermes-agent
# 或者如果你从源码安装
cd ~/hermes
pip uninstall -e .步骤 3:删除数据目录
# 删除 Hermes 数据目录
rm -rf ~/.hermes
# 从 PATH 中移除 ~/.hermes/bin
# 编辑 ~/.zshrc 或 ~/.bashrc,删除以下行:
# export PATH="$HOME/.hermes/bin:$PATH"
nano ~/.zshrc
# 删除环境变量(从 ~/.zshrc 或 ~/.bashrc 中删除相关行)
# 手动删除 export HERMES_... 和 export OPENAI_API_KEY 等行步骤 4:清理残留
# 查找并删除残留的 hermes 相关文件
find ~ -name "*hermes*" -type f 2>/dev/null
find ~ -name "*hermes*" -type d 2>/dev/null
# 清理 pip 缓存
pip cache purge
# 如果使用了 systemd 服务,删除服务文件
sudo rm -f /etc/systemd/system/hermes.service
sudo systemctl daemon-reload
# 如果使用了 Docker,删除镜像和容器
docker stop hermes 2>/dev/null
docker rm hermes 2>/dev/null
docker rmi nousresearch/hermes:latest 2>/dev/null9.2 数据备份与恢复
自动备份脚本
创建一个每天自动备份的脚本:
# 创建备份脚本
mkdir -p ~/scripts
cat > ~/scripts/backup-hermes.sh << 'EOF'
#!/bin/bash
# Hermes 自动备份脚本
BACKUP_DIR="$HOME/hermes-backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="hermes-backup-$DATE"
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 执行备份
tar -czf "$BACKUP_DIR/$BACKUP_NAME.tar.gz" \
-C "$HOME" \
.hermes/config.yaml \
.hermes/SOUL.md \
.hermes/MEMORY.md \
.hermes/USER.md \
.hermes/database \
.hermes/skills/custom \
.hermes/cron
# 保留最近 30 天的备份,删除旧备份
find "$BACKUP_DIR" -name "hermes-backup-*.tar.gz" -mtime +30 -delete
echo "备份完成: $BACKUP_DIR/$BACKUP_NAME.tar.gz"
EOF
chmod +x ~/scripts/backup-hermes.sh
# 添加到 crontab(每天凌晨 3 点自动备份)
(crontab -l 2>/dev/null; echo "0 3 * * * $HOME/scripts/backup-hermes.sh") | crontab -恢复备份
# 解压备份文件
tar -xzf ~/hermes-backups/hermes-backup-20260415_030000.tar.gz -C ~/
# 确保权限正确
chmod -R u+rw ~/.hermes
# 运行诊断
hermes doctor9.3 版本升级方法
通过 pip 升级
# 升级到最新版本
pip install --upgrade hermes-agent
# 升级到特定版本
pip install hermes-agent==1.3.0通过 Git 升级(如果从源码安装)
cd ~/hermes
git pull origin main
pip install -e . --upgrade通过 Docker 升级
# 拉取最新镜像
docker pull nousresearch/hermes:latest
# 停止并删除旧容器
docker stop hermes
docker rm hermes
# 用新镜像启动容器
docker run -d \
--name hermes \
-v ~/.hermes:/opt/data \
-e OPENAI_API_KEY="$OPENAI_API_KEY" \
nousresearch/hermes:latest升级前检查
# 1. 备份当前配置和数据
~/scripts/backup-hermes.sh
# 2. 查看当前版本
hermes --version
# 3. 查看新版本更新日志
pip index versions hermes-agent
# 4. 升级后运行诊断
hermes doctor
# 5. 如有配置迁移提示,执行迁移
hermes migrate版本升级的最佳实践:
1. 先读更新日志
每次升级前,先查看更新日志了解新版本的变更:
hermes changelog重点关注:
- 是否有破坏性变更(Breaking Changes)
- 是否有配置格式变化
- 是否有新的依赖要求
2. 在测试环境先升级
如果你在生产环境使用 Hermes,建议先在本地或测试 VPS 上升级,确认没有问题后再升级生产环境。
# 本地测试升级
pip install --upgrade hermes-agent --user
hermes doctor3. 保留回滚方案
升级前备份整个 ~/.hermes/ 目录,如果升级后出现问题,可以快速回滚:
# 回滚到上一版本
pip install hermes-agent==$(cat ~/.hermes/version.bak)
# 恢复配置
cp ~/.hermes/config.yaml.bak ~/.hermes/config.yaml注意
跨大版本升级时(如从 v1.x 到 v2.x),请务必先阅读官方的升级指南。大版本升级可能会引入不兼容的配置变更,需要手动调整。
本章小结
恭喜!你已经完成了 Hermes Agent 安装部署的完整学习。让我们回顾一下本章的核心要点:
-
安装前准备 至关重要。检查清单上的每一项,确保 Python 3.11+、Node.js v22+、Git 等前置软件已就绪,网络环境畅通。
-
四种部署方式 各有适用场景:
- 本地常规部署:新手入门首选,零额外成本
- Docker 部署:环境隔离,便于迁移和多版本管理
- VPS 部署:24/7 运行,支持远程访问和团队协作
- 无服务器部署:按需计费,适合间歇性任务
-
~/.hermes/目录 是 Hermes 的「家」。config.yaml是中枢神经,SOUL.md定义 Agent 的灵魂,MEMORY.md存储全局记忆,database/保存所有历史数据。 -
hermes doctor是最好的排障工具。遇到问题时先运行它,80% 的问题都能直接定位。 -
数据备份 不可忽视。设置自动备份脚本,定期将核心数据备份到安全位置。
Tips
如果你在安装过程中遇到了本章未覆盖的问题,建议:
- 先运行
hermes doctor查看诊断- 检查
~/.hermes/logs/error.log获取详细错误信息- 在 GitHub Issues 中搜索类似问题
- 加入 Hermes Discord 社区寻求帮助
现在,你的 Hermes 应该已经顺利运行起来了。下一章,我们将进入「基础使用入门」,学习如何与你的 Agent 进行第一次对话、掌握常用命令、接入各种大模型,以及配置分层模型来节省费用。让我们继续「养马之旅」!