第三章:安装、初始化与首次对话
本章把”从零安装 → 选模型 → 第一次成功对话 → 排错”完整跑一遍。覆盖 Linux、macOS、WSL2、Termux(Android)、Nix 五种典型环境,并解释 hermes setup、hermes model、hermes config、hermes doctor 等关键命令。
3.1 系统要求
Hermes Agent 官方支持以下操作系统:
| 系统 | 支持情况 | 备注 |
|---|---|---|
| Linux(Debian/Ubuntu/Arch/Fedora 等) | ✅ 一等公民 | x86_64 与 arm64 均可 |
| macOS(Intel & Apple Silicon) | ✅ 一等公民 | 推荐 macOS 13+ |
| WSL2(Ubuntu/Debian/Arch on Windows) | ✅ 一等公民 | 直接在 WSL 里跑安装脚本 |
| Android / Termux | ✅ 受支持 | 安装器自动识别,使用 .[termux] 子集 |
| Native Windows(无 WSL) | ❌ 不支持 | 必须装 WSL2 |
| NixOS / Nix(macOS、Linux) | ✅ 受支持 | 提供 flake、NixOS module、container |
唯一硬性前置依赖只有 git。其它依赖(uv、Python 3.11、Node.js v22、ripgrep、ffmpeg)安装器会自动装好;模型上下文窗口要求 ≥ 64K tokens——绝大多数主流模型自然达标,本地模型需要在 llama.cpp(--ctx-size 65536)或 Ollama(-c 65536)侧设置。
3.2 一行命令安装
3.2.1 Linux / macOS / WSL2
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
执行后安装器会:
- 检测 / 装好
uv; - 用
uv创建 Python 3.11 虚拟环境; - 装好
ripgrep、ffmpeg、Node.js v22; - 把仓库克隆到
~/.hermes/hermes-agent/; - 在
~/.hermes/hermes-agent/下执行uv pip install -e ".[all]"; - 把
hermes软链到~/.local/bin/hermes。
最后一步是让你 reload shell:
source ~/.bashrc # 或 source ~/.zshrc
hermes # 进入 TUI
安装目录布局
| 安装方式 | 代码位置 | hermes 命令 |
数据目录 |
|---|---|---|---|
| 普通用户(默认) | ~/.hermes/hermes-agent/ |
~/.local/bin/hermes(软链) |
~/.hermes/ |
Root 模式(sudo curl ... \| sudo bash) |
/usr/local/lib/hermes-agent/ |
/usr/local/bin/hermes |
/root/.hermes/(或 $HERMES_HOME) |
Root 模式适合多用户共享机器,每个用户依然在自己的 ~/.hermes/ 里维护身份与数据。
3.2.2 Android / Termux
Termux 上同一条命令即可,安装器自动识别:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
它会:用 Termux pkg 装系统依赖、用 python -m venv 建虚拟环境、自动 export ANDROID_API_LEVEL、用 pip 安装 .[termux] 子集(默认跳过尚未通过测试的浏览器和 WhatsApp 部分)。完整人工流程见官方 Termux Guide。
3.2.3 Native Windows
不支持。请装 WSL2,然后在 WSL 内执行 Linux 流程。
3.2.4 NixOS / Nix Flake
仓库根目录提供 flake.nix:
nix run github:NousResearch/hermes-agent
或在 NixOS configuration 中以 module 形式引入;详细见官方 getting-started/nix-setup.md。
3.2.5 开发者源码安装
为贡献者或希望从指定分支跑:
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
./setup-hermes.sh # 自动安装 uv、建 venv、装 .[all]、软链 ~/.local/bin/hermes
./hermes # 直接跑(无需手动 source venv)
或全手工:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv venv --python 3.11
source venv/bin/activate
uv pip install -e ".[all,dev]"
scripts/run_tests.sh
pyproject.toml 提供如下 extra:all、voice、messaging、tts-premium、mcp、termux、dev。按需组合。
3.3 首次启动与 setup 向导
hermes setup
setup 是个完整的交互式向导,按顺序引导你:
- 从 OpenClaw 迁移(若检测到
~/.openclaw),可跳过; - 选 Provider —— 即第五章会展开的那张表(Nous Portal、OpenRouter、Anthropic、OpenAI、Z.AI/GLM、Kimi、MiniMax、DeepSeek、HuggingFace、自定义端点等);
- 填 API Key(或走 OAuth,比如 Nous Portal、Anthropic Max、Codex、GitHub Copilot、MiniMax OAuth);
- 选默认 personality(可后续
/personality切换); - 配置 toolset(默认按平台预设启用一组合理工具);
- 可选:要不要现在就配 Gateway(Telegram/Discord 等)。
完成后,setup 会把:
- 机密(Key/Token)写入
~/.hermes/.env; - 非机密配置写入
~/.hermes/config.yaml。
如果你已经知道自己要什么、想跳过完整向导,可以单独跑:
hermes model # 选 Provider 和模型
hermes tools # 配每个平台启用哪些 toolset
hermes gateway setup # 配消息平台
hermes config set # 设置单个 key
3.4 第一条对话
hermes
进入 TUI 后随便说一句:
你好,给我列一下当前目录有哪些文件
正常情况下你会看到:
- 一个状态行显示在用模型 / 上下文余量 / personality;
- 一个”思考”动画(KawaiiSpinner);
- Agent 决定调用
terminal工具运行ls; - 工具结果以紧凑视图打出;
- Agent 用自然语言总结结果。
如果它没动作(什么也没说),90% 的概率是模型 Key 没生效——下一节就是排错。
3.5 数据目录布局:~/.hermes/
所有用户级数据都在 $HERMES_HOME(默认 ~/.hermes/)下:
~/.hermes/
├── config.yaml # 非机密配置
├── .env # 机密:API Key、Token、OAuth refresh token 等
├── SOUL.md # 人格/身份文件
├── memories/
│ ├── MEMORY.md # 环境/约定记忆,约 800 token
│ └── USER.md # 用户画像,约 500 token
├── skills/ # 技能根目录
│ ├── plan/ # 内置:规划技能
│ ├── github-pr-workflow/ # 内置:GH PR 流
│ └── openclaw-imports/ # 从 OpenClaw 迁移过来的
├── hooks/ # 网关 hooks(HOOK.yaml + handler.py)
├── plans/ # /plan 技能输出位置
├── hermes.db # SQLite:会话、任务、cron、轨迹
├── kanban.db # SQLite:Kanban 任务
├── checkpoints/ # 文件改动 checkpoint 快照
├── plugins/ # 用户安装的插件
├── profiles/ # Profile 隔离目录(多份身份/配置)
├── logs/ # 运行日志
└── hermes-agent/ # 源码(如果是用户级安装)
理解这套布局,后续做备份、迁移、Profile 切换都会非常顺手。
3.6 Profile:一台机器跑多个身份
许多用户希望在同一台机器上区分”工作 Hermes”和”个人 Hermes”,或区分”中国区 Kimi”和”国际 Anthropic”。Hermes 的解决方案是 Profile。
hermes profile list
hermes profile create work
hermes profile use work # 后续命令都在 work profile 下
hermes profile use default # 切回默认
Profile 会被 HERMES_HOME 与若干路径常量感知(hermes_constants.py),各 Profile 拥有独立的:config、记忆、技能、会话、cron、kanban、profile 进程锁。
也可以临时通过环境变量切:
HERMES_PROFILE=work hermes
更多见 user-guide/profiles.md。
3.7 几个关键 CLI 命令速查
| 命令 | 用途 |
|---|---|
hermes |
启动 TUI |
hermes setup |
完整初始化向导 |
hermes model |
切换 Provider / 模型 |
hermes tools |
配置工具集(按平台) |
hermes skills |
启用/禁用技能(按平台) |
hermes plugins |
插件管理 |
hermes config set <key> <value> |
设置配置 |
hermes config check |
校验配置 |
hermes config migrate |
迁移老版本配置 |
hermes gateway setup / hermes gateway start |
网关配置 / 启动 |
hermes api start |
OpenAI 兼容 API 服务 |
hermes acp serve |
启动 ACP IDE 后端 |
hermes cron list |
看定时任务 |
hermes kanban |
看任务板 |
hermes batch run |
批量轨迹生成 |
hermes claw migrate |
从 OpenClaw 迁移 |
hermes update |
升级 |
hermes doctor |
诊断一切 |
hermes <subcmd> --help 几乎都有详细帮助。
3.8 配置文件 config.yaml 与 .env
Hermes 把”机密”和”普通配置”分开管理:
~/.hermes/.env(机密):所有 API Key、OAuth Token、SSH key 路径;以KEY=VALUE格式存储,每行一条。~/.hermes/config.yaml(非机密):模型、toolset、UI 主题、cron、Gateway 等结构化配置。
最优雅的写入方式是用 hermes config set —— 它会自动判断该值是不是机密、写到正确文件:
hermes config set model anthropic/claude-opus-4.6 # → config.yaml
hermes config set terminal.backend docker # → config.yaml
hermes config set OPENROUTER_API_KEY sk-or-... # → .env
config.yaml 常见 key(节选,第五章详细展开):
model: anthropic/claude-opus-4.6
auxiliary_model: openrouter/openai/gpt-5-mini
fallback_models:
- openrouter/anthropic/claude-3.5-sonnet
- openrouter/openai/gpt-5
terminal:
backend: docker
docker:
image: ghcr.io/nousresearch/hermes-sandbox:latest
read_only: true
toolsets:
hermes-cli: [web, terminal, file, browser, vision, skills, memory, session_search, todo, clarify, code_execution, delegation, cronjob]
hermes-telegram: [web, search, terminal, file, vision, skills, memory, todo, send_message]
mcp_servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/me/projects"]
hooks:
pre_terminal: ~/.hermes/hooks/redact-secrets/handler.sh
3.9 升级:hermes update
hermes update # 拉 main 并 uv pip install -e .[all]
hermes update --check # 仅检查
hermes update --branch foo # 切换分支
升级后建议:
hermes config check
hermes config migrate
hermes doctor
迁移会把老 schema 的 config.yaml 升级到新版本(保留你的所有自定义)。
3.10 排错:hermes doctor
hermes doctor 会逐项检查:
- Python / Node 版本;
uv、ripgrep、ffmpeg是否在 PATH;~/.hermes/.env/config.yaml是否可读、字段是否合法;- 当前 Provider 的 Key 是否能成功 ping 接口;
- 模型上下文长度是否 ≥ 64K;
- 终端后端是否可用(docker daemon、ssh 通连、modal token 等);
- Gateway 平台依赖是否齐全(如
discord.py[voice]for Discord VC)。
输出会逐条标红/标黄,并给出修复建议。如果你在 issues 里求助,附上 hermes doctor 的输出会大幅提升被回答的速度。
3.10.1 常见报错速查
| 报错 | 原因 | 修复 |
|---|---|---|
hermes: command not found |
shell 没 reload 或 PATH 没含 ~/.local/bin |
source ~/.bashrc;echo $PATH \| tr : '\n' 检查 |
API key not set |
没设 Key | hermes model 或 hermes config set OPENROUTER_API_KEY ... |
Model context window too small (xx < 65536) |
选了上下文不足 64K 的模型 | 换大模型;本地模型加 --ctx-size 65536 |
Cannot connect to docker daemon |
terminal.backend 是 docker 但 docker 没起 | 装/启 Docker;或改回 local |
ssh: handshake timeout |
terminal.backend 是 ssh 但目标不通 | 用 ssh user@host 先验证 |
Tool 'web_search' requires API key |
没配某个工具的密钥 | hermes tools 选别的 web 后端,或配 Key |
Provider responded with 429 |
限流 | 加 credential pool、加 fallback、降并发 |
Missing config after update |
老 schema | hermes config check && hermes config migrate |
3.11 从 OpenClaw 迁移
如果你之前在用 OpenClaw(Hermes 的前身):
hermes claw migrate # 交互式迁移(full 预设)
hermes claw migrate --dry-run # 只预览要迁哪些
hermes claw migrate --preset user-data # 不带 secret
hermes claw migrate --overwrite # 覆盖已存在
会迁移:SOUL.md、MEMORY.md、USER.md、用户技能(→ ~/.hermes/skills/openclaw-imports/)、命令白名单、IM 平台配置、TTS 资产、AGENTS.md、白名单内的 API Key。
完整文档见 guides/migrate-from-openclaw.md。
3.12 卸载与重置
完全卸载:
rm -rf ~/.hermes
rm -f ~/.local/bin/hermes
# Root 安装:sudo rm -rf /usr/local/lib/hermes-agent /usr/local/bin/hermes
只重置配置而保留代码:
mv ~/.hermes/config.yaml ~/.hermes/config.yaml.bak
mv ~/.hermes/.env ~/.hermes/.env.bak
hermes setup
只想换 Profile:hermes profile create new && hermes profile use new。
3.13 一次完整的”新机器开局”演练
把上面的内容串起来,一次完整开局大约长这样:
# 1) 安装
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc
# 2) 初始化(选 OpenRouter,填 Key)
hermes setup
# 3) 先试一下能不能聊
hermes
> 你好,今天几号?
# 4) 试一下 Agent 调工具
> 把当前目录里所有 .md 文件统计出有多少行,最长的前 5 个
# 5) 让它学一点关于你的事
> 我在 Ubuntu 22.04 上工作,喜欢简洁回答,项目都放在 ~/code/
# 6) 让它给自己写第一条记忆
> 把上面这些信息记到记忆里
# 7) 看看它写了啥
cat ~/.hermes/memories/MEMORY.md
cat ~/.hermes/memories/USER.md
# 8) 升级、体检
hermes update
hermes doctor
到这里你已经完成了”零基础上手”。
3.14 本章小结
本章你应该已经掌握:
- Hermes 的 OS 支持矩阵与硬性要求;
- 一行命令安装 + Termux/Nix/源码三种替代路径;
hermes setup、hermes model、hermes config set、hermes doctor各自的角色;~/.hermes/目录结构与”机密 vs 配置”的分离;- Profile 概念,多身份共存;
- 升级、迁移 OpenClaw、排错的标准流程。
下一章我们正式钻进日常使用的大头:CLI/TUI 与会话管理。