真机安装实录 · 每一步都有证据 · 可复现
Hermes Agent
从 0 到 1
这不是一份“把官方文档翻译一遍”的教程。它是一次真机安装的完整记录: 我在这台 Windows 电脑上从零装到能用,中间撞了 8 个坑, 每一条成功的命令、每一段报错、每一次绕路都原样保留下来。 你可以照着做,也可以照着验收。
Hermes Agent 的安装 → 配置 → 对话 → 工具调用全流程, 按官方学习路径 Step 1–6 组织,每步一个明确验收标准。
先讲为什么再给命令,命令都能一键复制; 每个概念配图、对比表和真实输出,不要求你背命令。
6 步全部真机跑通并有证据(版本号、配置回读、 工具调用日志、自动生成的报告文件)。 见 验收看板。
环境、版本、Provider 全部写死在页面上;
README.md 里有完整命令序列,
换台机器按顺序执行即可得到同样结果。
✔学习路径验收看板
按官方 Step 1–6 学习路径逐项核验。点开任意一行看这一步的 验收标准、我实际执行的命令、以及真实输出的证据。
$ hermes --version Hermes Agent v0.19.0 (2026.7.20) Install directory: P:\student_task\24llm\test1\hermes-agent\venv\Lib\site-packages Install method: pip Python: 3.13.7 OpenAI SDK: 2.24.0
验收标准:hermes 能正常启动并输出版本信息。✅
说明:官方一键脚本在本机因 TLS 被拦截而失败, 因此改为手动复刻安装器(准备 Python 3.13 → 建 venv → pip 安装 → 写启动器)。 详见 Step 1 与 踩坑 #1 / #2。
$ hermes -z "Reply with exactly: HERMES_OK and then state which model you are." HERMES_OK I am DeepSeek-V4-Pro, running on the Hermes Agent framework by Nous Research.
验收标准:能正常与 Hermes 对话。✅
同时验证:交互式 hermes 横幅正常显示
(模型、工作目录、会话 ID、17 tools),
并且 hermes -c 会话续接可用。详见 Step 2。
$ hermes config get model provider: deepseek default: deepseek-v4-pro $ hermes doctor ✓ .env file exists ✓ API key or custom endpoint configured ✓ config.yaml exists ✓ Config version up to date (v33)
验收标准:能成功配置教师提供的模型 API。✅
要点:机密(API Key)自动落到 .env,
普通配置(provider / model)落到 config.yaml;
模型的 Base URL 由 Provider deepseek 自动推导为
https://api.deepseek.com/v1。详见 Step 3。
$ hermes tools list Built-in toolsets (cli): ✓ enabled web 🔍 Web Search & Scraping ✓ enabled terminal 💻 Terminal & Processes ✓ enabled file 📁 File Operations ✓ enabled code_execution ⚡ Code Execution ... (共 23 个工具集,其中 17 个启用) 交互式 CLI 横幅: deepseek-v4-pro · Nous Research P:\student_task\24llm\test1\demo Session: 20260922_163415_647dda 17 tools · 0 skills · /help for commands
验收标准:能说出当前模型、可用工具和 Context 情况。✅
对应关系:/model → 当前模型
deepseek-v4-pro;/tools → 17 个工具;
/status / /context → 会话状态与上下文占用明细。
页面上有命令浏览器可逐个点开看真实输出。
$ hermes doctor ✓ P:\student_task\24llm\test1\.hermes/.env file exists ✓ P:\student_task\24llm\test1\.hermes/config.yaml exists ✓ P:\student_task\24llm\test1\.hermes/SOUL.md exists (persona configured) ✓ P:\student_task\24llm\test1\.hermes/state.db exists (1 sessions)
验收标准:能解释普通配置和 Secret 配置的区别。✅
一句话区别:config.yaml 放不怕被看到的设置
(可以分享/提交 Git);.env 放泄露就出事的凭据
(只留在本机)。Hermes 用命名规则自动分流:全大写下划线 → .env,
小写点号路径 → config.yaml。详见 Step 5。
$ hermes chat -q "读取 data/scores.csv,统计每科平均分与总分, 找出总分最高的学生和需要重点关注(总分低于210)的学生, 并把结果写成 result/report.md,同时在终端打印这个文件的完整内容。" (详细日志) 🛠️ Loaded 17 tools: … read_file, search_files, terminal, write_file … tools.terminal_tool - local environment ready for task default agent.tool_executor - tool terminal completed (1.63s, 193 chars) agent.tool_executor - tool terminal completed (0.31s, 58 chars) Turn ended: reason=text_response model=deepseek-v4-pro api_calls=2/90 tool_turns=1 → 产出文件 demo/result/report.md
验收标准:完成一次读取文件、处理数据并生成结果文件的 Tool Calling。✅
结果复核:语文平均 78.0、数学 76.6、英语 78.5; 总分最高王五 287 分;总分低于 210 的 3 人(周九 166、赵六 189、王二 196) —— 人工重算完全一致。 页面上有工具调用回放可逐步观看。详见 Step 6。
选读项,未作为验收标准。本教程的六步结构即按该学习路径的顺序组织; 官方针对不同经验水平给出的分支建议(新手走 Quickstart、进阶直接看 Tools / Skills) 已吸收进本页导航与 FAQ。
产出物在哪
下面这些文件是这份作业的可检查实体,不是页面上的文字:
HERMES_HOME、UTF-8 控制台、Git Bash 路径后调用 Hermes,等价于官方安装器写入的 hermes.cmd。
_config_version: 33。
DEEPSEEK_API_KEY。由 hermes config set 自动分流写入。
write_file 工具真实落盘的成绩统计报告。
§先搞懂 4 个词
后面所有步骤都建立在这 4 个概念上,30 秒看完。
Provider
“模型服务商”。谁给你提供大模型算力。例如 deepseek、openrouter、anthropic。
Model
“具体哪个模型”。同一个 Provider 下可以有多个模型,例如 deepseek-v4-pro。
API Key
“通行证”。证明请求是你发的。属于机密,只能放进 .env。
Base URL
“服务器地址”。请求发到哪个域名,例如 https://api.deepseek.com/v1。
API Key,向 Base URL 这个地址,指定要用的
Model,请求由 Provider 提供服务。
六步路线图
这就是接下来的主线。每一步都有明确的验收标准, 做完一步再走下一步 —— 不要跳步,这是新手最容易翻车的地方。
hermes 能启动
Step 2
跑通第一次对话
初始化 + 说上话
Step 3
配一个模型
Provider / Key / Base URL
Step 4
学会看状态
/model /tools /status /context
Step 5
看懂配置文件
config.yaml vs .env
Step 6
让它干一件真事
读文件 → 处理 → 写结果
💡 侧边栏底部的「资料与自测」里还有: 终端沙盒(亲手敲命令看输出)、 踩坑与排错、 FAQ、 自测题 和 学习心得与边界。
安装 Hermes Agent
目标:让 hermes 这条命令能正常启动。
1.1 官方给的安装方式
官方文档提供了两种方式,优先用第一种:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
不需要管理员权限。安装器会把东西放进 %LOCALAPPDATA%\hermes\,并把
hermes 加进用户 PATH —— 装完必须新开一个终端窗口才生效。
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
装完执行 source ~/.bashrc 或 source ~/.zshrc 重新加载环境。
适合不想碰命令行的同学:从官网下载 Hermes Desktop 安装包,双击安装。
它内部同样会调用 install.ps1 去准备 Python、Node、Git 等依赖。
1.2 安装器到底做了什么
理解这 5 件事,后面出问题你才知道去哪儿找:
- 装
uv一个很快的 Python 包管理器,装在%USERPROFILE%\.local\bin - 装 Python 3.11用 uv 装,不需要你本机预先有 Python
- 装 Node.js 26给浏览器工具和 WhatsApp 桥接用
- 准备 Git / PortableGit给终端工具用的
bash.exe(Hermes 跑命令靠它) - 克隆仓库 + 建虚拟环境代码放在
%LOCALAPPDATA%\hermes\hermes-agent
这是我在真机上撞的第一个墙。Hermes 的包元数据里写着
Requires-Python: >=3.11,<3.14。
如果你本机是 Python 3.14,直接装会失败 —— 但安装器会自动帮你装 3.11,所以官方脚本是安全的。
只有手动安装(像本文档下面这种)才需要注意。
1.3 我这台机器上的实际安装过程
因为这台电脑的沙箱禁止写入 %LOCALAPPDATA%,官方的一键脚本没法用。
于是我在 test1 文件夹里做了一次 “手动复刻官方安装器” 的操作。
这个过程反而更适合教学,因为它把黑盒拆开了。
① 准备一个合规的 Python 3.13(工作区内,免管理员)
直接从 npmmirror 拉官方 Python 3.13 的 zip 包并解压,这样不需要管理员权限、也不污染系统。
# 下载并解压出完整版 Python 3.13.7
Expand-Archive -Path "_tools\python-3.13.7-amd64.zip" `
-DestinationPath "_tools\python313full" -Force
# 验证
& "_tools\python313full\python.exe" -c "import sys,venv;print(sys.version)"
② 建虚拟环境(venv)
虚拟环境 = 给 Hermes 一个**独立的 Python 世界**,它装的包不会和系统 Python 打架。
& "_tools\python313full\python.exe" -m venv "hermes-agent\venv"
③ 安装 Hermes Agent 本体
& "hermes-agent\venv\Scripts\python.exe" -m pip install "hermes-agent[messaging,dashboard]"
④ 把它变成一条能直接敲的 hermes 命令
官方安装器会写一个 hermes.cmd 到 %LOCALAPPDATA%\hermes\bin。
我们自己写一个等价物,放在项目根目录:
@echo off
set "HERMES_ROOT=%~dp0"
REM 数据目录:配置、密钥、会话、技能都存在这里
if "%HERMES_HOME%"=="" set "HERMES_HOME=%HERMES_ROOT%.hermes"
REM UTF-8,避免中文/emoji 让 Python 崩掉
set "PYTHONUTF8=1"
set "PYTHONIOENCODING=utf-8"
REM Hermes 的终端工具靠 Git Bash 执行命令
set "HERMES_GIT_BASH_PATH=P:\Tool\Git\Git\bin\bash.exe"
"%HERMES_ROOT%hermes-agent\venv\Scripts\hermes.exe" %*
1.4 验收:确认装好了
hermes --version
你应该看到类似输出(这是本机的真实输出):
初始化与第一次对话
目标:完成初始化、配置模型,然后真的和 Hermes 聊上话。
2.1 两种初始化方式
🪄 hermes setup
完整向导,一次性配好模型、工具、平台。新装推荐。
hermes setup
还会问你三种模式:Quick Setup(Nous Portal,免密钥)、 Full Setup(自己填密钥)、Blank Slate(最小化,只开文件+终端)。
🎯 hermes model
只配模型和 Provider,最快。已经知道用哪家模型就选这个。
hermes model
交互式选择 Provider → Model,选完自动写进配置文件。
2.2 非交互式配置(脚本 / 自动化场景)
本文这套环境用的就是这种:不进交互界面,直接写配置。
# 1) 存 API Key —— 注意:它会自动写进 .env,不会写进 config.yaml
hermes config set DEEPSEEK_API_KEY sk-xxxxxxxxxxxxxxxx
# 2) 指定 Provider 和默认模型 —— 这两个是普通配置,写进 config.yaml
hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-pro
# 3) 回读确认
hermes config get model
hermes config set,全大写下划线的名字(DEEPSEEK_API_KEY)
自动进 .env;带点的小写路径(model.provider)自动进 config.yaml。
你不用自己判断,Hermes 帮你分流。
2.3 跑通第一次对话
先试单次问答模式,最容易验证:
hermes -z "你好,请用一句话介绍你自己"
本机真实返回:
然后是交互式对话(这才是日常用法):
hermes # 经典 CLI
hermes --tui # 新版 TUI(鼠标友好,推荐)
启动后你会看到什么
下面是本机 hermes 启动时的真实横幅(节选):
2.4 验证会话可以续接
会话(session)是 Hermes 的记忆载体。一定要确认它能恢复:
hermes --continue # 恢复最近一次会话
hermes -c # 简写
我尝试过 "/help`n/exit`n" | hermes --cli 想自动化截取输出,
结果 prompt_toolkit 直接抛异常崩溃:
结论:交互式 CLI 需要真正的终端(TTY)。要自动化测试,请用
hermes -z "…" 或 hermes chat -q "…" 这种单次问答模式。
Provider / 模型配置
目标:理解 Provider、Model、Base URL、API Key 的关系,并成功配上老师给的模型。
3.1 数据是怎么流动的
把下面这张图记住,配置模型永远不会迷路:
在你自己的配置文件里,它们长这样
config.yaml 普通配置
model:
provider: deepseek # Provider
default: deepseek-v4-pro # Model
.env 机密
DEEPSEEK_API_KEY=sk-… # API Key
Base URL 通常不用手写 —— Hermes 认得 deepseek 这个 Provider,
会自己用官方地址 https://api.deepseek.com/v1。只有用自建/代理端点时才需要显式设置
model.base_url。
3.2 主流 Provider 速查
Hermes 支持非常多 Provider。点开看每个需要哪个环境变量:
| Provider | 是什么 | 需要设置的环境变量 |
|---|---|---|
| Nous Portal | 官方订阅制,免密钥管理 | hermes setup --portal(OAuth 登录) |
| DeepSeek | DeepSeek 官方直连 本文使用 | DEEPSEEK_API_KEY |
| OpenRouter | 聚合路由,一个 Key 用几百个模型 | OPENROUTER_API_KEY |
| Anthropic | Claude 系列 | ANTHROPIC_API_KEY |
| OpenAI | GPT 系列 | OPENAI_API_KEY |
| Google AI Studio | Gemini 系列 | GOOGLE_API_KEY / GEMINI_API_KEY |
| Kimi / Moonshot | 月之暗面 | KIMI_API_KEY |
| Z.AI / GLM | 智谱 GLM | GLM_API_KEY / ZAI_API_KEY |
| Alibaba Cloud | 通义千问 | DASHSCOPE_API_KEY |
| Hugging Face | 开源模型路由器 | HF_TOKEN |
| xAI | Grok | XAI_API_KEY |
| LM Studio / Ollama | 本地跑模型 | LM_API_KEY + LM_BASE_URL |
| Custom Endpoint | 任何 OpenAI 兼容接口 | base_url + api_key |
3.3 手动配置自定义端点(学校/公司常见)
如果老师给的是私有地址,比如 https://ai.school.edu/v1,就这样写:
model:
provider: custom
default: 老师的模型名
base_url: https://ai.school.edu/v1
# 自定义端点的密钥变量名要和 Provider 定义对应
CUSTOM_API_KEY=老师给的密钥
Hermes 启动时会检查。上下文窗口太小的模型撑不住多步工具调用,会被直接拒绝。
大多数云端模型(Claude / GPT / Gemini / DeepSeek / Qwen)都轻松满足;
本地模型记得把上下文设到 64K 以上,例如 llama.cpp --ctx-size 65536。
3.4 验证配置是否真的生效
hermes status # 看 Provider / Model / API Key 状态
hermes doctor # 完整体检,包括连通性测试
本机 hermes doctor 的真实体检结果(节选):
一开始我用 hermes config set model deepseek-v4-pro,
结果 config.yaml 里变成了一行 model: deepseek-v4-pro,
doctor 报 Could not validate model/provider config ('str' object has no attribute 'get')。
原因:新版配置里 model 是一个映射(mapping),不是一个字符串。
修法:先 hermes config unset model,再分别设置
model.provider 和 model.default。
CLI 常用指令
目标:熟练使用 /help、/model、/tools、/status、/context。
4.1 两种“命令”,别搞混
🖥️ 终端命令 在 shell 里敲
启动前 / 启动外使用,不进入对话。
hermes status
hermes doctor
hermes config get model
💬 斜杠命令 在对话里敲
已经进入 hermes 对话界面后使用,输入 / 会弹出自动补全。
/help
/status
/context
4.2 五个必会斜杠命令
点击卡片展开详细说明 👇
4.3 hermes tools:查看工具清单
想在不进入对话的情况下看工具,用这个(本机真实输出):
hermes tools list
! 前缀直接执行 shell。
在对话里输入 !git status,Hermes 会直接执行这条命令:
不消耗 token、不进对话历史、不产生费用。
它是“查看信息”的最快方式。
4.4 两个省时间的命令
| 命令 | 作用 | 什么时候用 |
|---|---|---|
| /title 我的实验 | 给当前会话起名 | 以后 /resume 我的实验 就能找回 |
| /compress | 手动压缩上下文 | 对话太长、快撞上下文上限时 |
| /btw 问题 | 问一个旁支问题 | 不想打断当前任务,又想知道点别的 |
| /undo | 撤销上一轮问答 | 说错话、想重来 |
| /exit | 退出 | 收工 |
4.5 上下文是什么,为什么重要
Context(上下文)= 模型这一次能“看到”的全部内容,包括: 系统提示词、工具定义、技能索引、记忆、以及你们的对话历史。
它是有上限的(由模型决定)。占满了,Hermes 就得压缩历史 —— 会有信息损失。
所以 /context 是你经常要看的仪表盘。
配置文件与密钥
目标:找到并看懂 config.yaml 和 .env,说清普通配置与 Secret 配置的区别。
5.1 Hermes 的数据目录长什么样
所有属于“你”的东西都在这一个目录里(Linux/macOS 是 ~/.hermes/,
Windows 原生是 %LOCALAPPDATA%\hermes\):
config.yaml
普通配置:模型、终端后端、压缩策略…
.env
机密:API Key、Bot Token、密码
auth.json
OAuth 凭证(Nous Portal 等登录态)
SOUL.md
Agent 的人格设定(系统提示词第一段)
memories/
长期记忆:MEMORY.md、USER.md
skills/
技能库:每个技能一个 SKILL.md
sessions/
会话记录
logs/
日志(会自动打码密钥)
state.db
SQLite 状态库
👆 点击任意一项,看它的作用与示例内容。
5.2 核心区别:普通配置 vs Secret 配置
这是 Step 5 最重要的知识点。一句话记住:
- 放 不怕被人看到的设置
- 模型、Provider、Base URL
- 工具开关、终端后端
- 上下文压缩阈值、超时
- 可以提交到 Git、可以分享
- 用小写点号路径设置:
model.provider
model:
provider: deepseek
default: deepseek-v4-pro
terminal:
backend: local
- 放 泄露就会出事的东西
- API Key、访问令牌
- Bot Token、数据库密码
- 绝对不能提交到 Git
- 不能随便截图、不能贴群里
- 用全大写下划线设置:
DEEPSEEK_API_KEY
DEEPSEEK_API_KEY=sk-…
TELEGRAM_BOT_TOKEN=…
因为两者的生命周期完全不同:config.yaml 你想备份、想分享、
想同步到另一台电脑;.env 你希望它永远只留在本机。
混在一起,你备份配置的时候就顺手把密钥泄露出去了。
5.3 配置优先级(谁说了算)
同一个设置被写在多个地方时,Hermes 按这个顺序取(从高到低):
注意:对于非机密设置,如果两处都写了,config.yaml 赢。
但机密的值只能从 .env(或系统环境变量)来。
5.4 管理命令速查
hermes config # 查看当前完整配置
hermes config get KEY # 读取某个值
hermes config set KEY VAL # 设置某个值(自动分流到正确文件)
hermes config unset KEY # 删除用户设置的值
hermes config check # 检查是否有缺失项(升级后常做)
hermes config migrate # 交互式补齐新增配置项
hermes config edit # 用编辑器直接打开 config.yaml
config migrate。
刚装好时 doctor 报 Config version outdated (v0 → v33)。
执行 hermes config migrate 后变成 ✓ Config version up to date (v33)。
不迁移也能跑,但会缺少新版本才有的一些默认设置。
5.5 安全加分项:密钥自动打码
Hermes 默认开启 secret redaction: 看起来像 API Key / Token / 密码的字符串,会在工具输出、日志、聊天回复里被自动打码, 模型和你自己都看不到原文。这是默认行为,不用配置。
Tool Calling 实战
目标:让 Hermes 真的读文件、处理数据、生成结果文件 —— 而不是“嘴上说说”。
6.1 什么是 Tool Calling
普通聊天机器人只能输出文字。Hermes 能做的是:
read_file("scores.csv")
6.2 Hermes 有哪些工具
按 Toolset(工具集)分组,常用的这几组:
read_file— 读文件内容write_file— 创建 / 覆盖文件patch— 精准修改文件片段search_files— 按内容搜索文件
terminal— 执行 shell 命令process— 管理后台进程read_terminal— 读终端输出- Windows 上通过 Git Bash 执行
execute_code— 直接跑 Python 片段- 适合数据处理、计算、格式转换
- 网页搜索
- 抓取网页内容
- 需要额外的搜索服务密钥
- 跨会话记住你的偏好
- 写进
memories/ - 下次会话自动注入
- 把复杂任务拆成清单
- 自己跟踪进度
- 长任务必备
6.3 实战:一次完整的工具调用
我在 demo/ 目录下准备了一个有 10 名学生的成绩 CSV,
然后让 Hermes 去处理它。这是真实执行过的过程。
📥 第一步:准备数据文件 demo/data/scores.csv
姓名,学号,语文,数学,英语,出勤率
张三,2024001,88,92,79,0.96
李四,2024002,72,65,81,0.88
王五,2024003,95,98,94,0.99
赵六,2024004,61,58,70,0.72
钱七,2024005,83,77,85,0.91
孙八,2024006,90,85,88,0.94
周九,2024007,55,49,62,0.65
吴十,2024008,78,82,76,0.89
郑一,2024009,92,89,91,0.97
王二,2024010,66,71,59,0.80
🗣️ 第二步:下达指令
cd demo
hermes chat -q "读取 data/scores.csv,统计每科平均分与总分,
找出总分最高的学生和需要重点关注(总分低于210)的学生,
并把结果写成 result/report.md,同时在终端打印这个文件的完整内容。"
这是一个好指令的范例:说清了 输入(哪个文件)、要算什么(平均分/总分/筛选条件)、 输出到哪(result/report.md)、怎么验证(打印出来)。
🔧 第三步:Hermes 真的调用了工具
开启 -v 详细日志后,能看到工具真实被调用了:
读法:加载了 17 个工具 → 创建本地执行环境 →
terminal 工具执行了两次(1.63s 和 0.31s)→ 模型拿到结果后给出最终答案。
整轮只用了 2 次 API 调用。
📤 第四步:产出结果文件 demo/result/report.md
这个文件不是模型凭空写的,是 Hermes 用 write_file 工具真实落盘的:
# 成绩统计报告
## 各科平均分
| 科目 | 平均分 |
|------|--------|
| 语文 | 78.0 |
| 数学 | 76.6 |
| 英语 | 78.5 |
| **总分** | **233.1** |
## 总分最高的学生
- 王五(学号 2024003):总分 287 分
## 需要重点关注的学生(总分低于 210)
| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 |
|------|------|------|------|------|------|
| 周九 | 2024007 | 55 | 49 | 62 | 166 |
| 赵六 | 2024004 | 61 | 58 | 70 | 189 |
| 王二 | 2024010 | 66 | 71 | 59 | 196 |
✅ 人工核对:语文 (88+72+95+61+83+90+55+78+92+66)/10 = 78.0 ✔️ 王五 95+98+94 = 287 ✔️ 低于 210 的 3 人正确 ✔️
6.4 工具调用回放(逐步播放)
把上面那次的真实执行过程拆成 7 步。点「开始回放」, 像看调试器一样看 Hermes 每一步在做什么 —— 这是理解 Agent 最快的方式。
6.5 自己也来试一次(可复制的练习)
# 1) 建一个测试目录
mkdir my-first-task && cd my-first-task
echo "hello hermes" > note.txt
# 2) 让 Hermes 干活
hermes -z "读一下 note.txt,然后用中文写一个 summary.md,
包含文件里的内容和它的字符数。"
跑完后 ls 一下,你会看到 summary.md ——
这就是 Agent 和聊天机器人的分界线。
6.6 写出好指令的 4 个要素
❌ 模糊:“帮我看看这个数据”
✅ 明确:“读取 data/scores.csv,算出每科平均分,
把结果写成 result/report.md(Markdown 表格),并在终端打印出来。”
terminal 能执行命令、write_file 能改文件。
所以 Hermes 对危险命令默认会弹审批确认
(rm -rf、改配置文件等)。
在陌生目录跑之前,先想清楚;想隔离,可以切到 Docker 后端:
hermes config set terminal.backend docker。
▶终端沙盒:亲手敲一遍
前面看了很多命令,但看懂 ≠ 会用。这里是一个安全的模拟终端 —— 输出全部来自我本机的真实记录。点下面的按钮,或者直接在输入框里敲。
⌨️ 也可以直接输入:help 看可用命令,
clear 清屏。支持 hermes、hermes doctor、
hermes status、hermes tools list、
hermes config get model、/context、/status 等。
网页不能真的执行你电脑上的命令 —— 那太危险也太慢。 所有输出都是我在这台机器上跑出来的真实结果, 这样你既能安全地反复练手,看到的又不是编造的内容。 想看真机输出,请按 Step 1 自己装一遍。
我踩过的坑 & 排错手册
这些不是网上抄的,是我在这台机器上真实撞到的。
7.1 坑 #1:TLS 握手失败,什么都下不下来
irm https://… / curl 全部失败
诊断:SEC_E_NO_CREDENTIALS 是 Windows 的 TLS 后端(schannel)
拿不到凭据。TCP 能连通(端口测试是通的),但加密握手建不起来。
绕过办法:换一个用自己的 TLS 实现的下载器。 Node.js 自带 OpenSSL,不依赖 schannel,所以能用:
// 用 Node 的 fetch 下载文件(绕过 schannel 问题)
const r = await fetch(url, { redirect: 'follow' });
const buf = Buffer.from(await r.arrayBuffer());
fs.writeFileSync(dest, buf);
结论:遇到 TLS/证书类报错,先试 Node / Python / 浏览器下载。 不同工具用的 TLS 栈不同,这是最实用的排查直觉。
7.2 坑 #2:Python 3.14 装不上 Hermes
根因:查 PyPI 元数据发现 ——
本机是 Python 3.14.6,超出了支持范围。
解决:另外准备一个 Python 3.13,用它建 venv。
# 检查你的 Python 版本
python --version # 必须是 3.11 / 3.12 / 3.13
# 如果是 3.14+,用官方安装器(它会自带一个 3.11)
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
7.3 坑 #3:没有 bash.exe,终端工具不能用
原因:Windows 上没有 bash。Hermes 的 terminal 工具是通过
Git Bash 执行命令的(和 Claude Code 一个策略)。
坑中坑:我下载了 MinGit,结果里面只有 sh.exe 和
dash.exe,没有 bash.exe。原因是 MinGit 有多个变体:
| 包名 | 里面有什么 | 能用吗 |
|---|---|---|
| MinGit-*-busybox-64-bit.zip | 只有 ash,缺 coreutils | ✗ 不行 |
| MinGit-*-64-bit.zip | 有 sh、dash… | △ 不稳 |
| PortableGit-*.7z.exe | 完整 MSYS2:bash+365 个 coreutils | ✓ 推荐 |
| 系统安装的 Git for Windows | 自带 bash | ✓ 最省事 |
解决:找到 bash 后,用环境变量明确告诉 Hermes:
# 方式一:系统已装 Git for Windows
$env:HERMES_GIT_BASH_PATH = "C:\Program Files\Git\bin\bash.exe"
# 方式二:便携版 Git
$env:HERMES_GIT_BASH_PATH = "P:\path\to\portablegit\bin\bash.exe"
# 验证
& $env:HERMES_GIT_BASH_PATH -c "echo BASH_OK"
Hermes 的查找顺序:
HERMES_GIT_BASH_PATH → %LOCALAPPDATA%\hermes\git\usr\bin\bash.exe
→ …\git\bin\bash.exe → 系统 Git → PATH 上任意 bash。
7.4 坑 #4:ripgrep 下载被墙 / 缺 DLL
winget install ripgrep 失败;解压出的 rg.exe 无法运行
两步解决:
① 从国内镜像(清华 MSYS2 源)拿包,而不是 GitHub Releases:
https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/mingw64/
mingw-w64-x86_64-ripgrep-15.1.0-1-any.pkg.tar.zst
② 解压后 rg.exe 还缺依赖 DLL。用 PE 头分析出它需要 libpcre2-8-0.dll,
一起装上就好了:
# 用 Windows 自带的 bsdtar 解 zst 包(支持 zstd)
tar.exe -xf ripgrep.tar.zst -C .\rg
# 再补上 PCRE2 运行库
tar.exe -xf pcre2.tar.zst -C .\pcre2
Copy-Item .\pcre2\mingw64\bin\libpcre2-8-0.dll .\bin\
# 验证
.\bin\rg.exe --version
💡 通用技巧:Windows 报 0xC0000135 / “无法启动此程序”,
99% 是缺 DLL。用 PE 头的导入表(imports)能精确找出缺哪个。
7.5 通用排错顺序
出问题时,按这个顺序走,不要乱试:
hermes doctor体检。它会直接告诉你哪一项不合格、怎么修。
hermes status看 Provider / Model / API Key 是否都被识别到。
hermes config check升级后配置项缺失?跑 hermes config migrate。
hermes model重新选一遍 Provider 和模型,排除配置写错。
hermes sessions list-c 找不到会话?确认在同一个 profile 下。
先让一次干净的对话跑起来,再去加 gateway、cron、skills、语音。 跳过这一步是绝大多数“装好了但什么都不会干”的根源。
自测与速查表
检验一下:这 6 步你真的学会了吗?
8.1 六道自测题
选完立刻出结果,没有提交按钮。
开始答题吧 👆
8.2 命令速查表
| 命令 | 作用 | 类型 |
|---|---|---|
| hermes | 启动交互式对话 | 启动 |
| hermes --tui | 启动新版 TUI 界面 | 启动 |
| hermes -z "问题" | 单次问答,不进入交互 | 启动 |
| hermes chat -q "问题" | 同上(chat 子命令形式) | 启动 |
| hermes -c | 恢复最近一次会话 | 启动 |
| hermes setup | 完整初始化向导 | 配置 |
| hermes model | 交互式选择 Provider / 模型 | 配置 |
| hermes tools | 配置启用哪些工具 | 配置 |
| hermes tools list | 列出所有工具及启用状态 | 配置 |
| hermes config get KEY | 读取配置值 | 配置 |
| hermes config set K V | 设置配置值(自动分流) | 配置 |
| hermes config migrate | 升级后补齐新增配置 | 配置 |
| hermes doctor | 完整体检 + 修复建议 | 诊断 |
| hermes status | 查看各组件状态 | 诊断 |
| hermes sessions list | 列出历史会话 | 诊断 |
| hermes logs | 查看日志 | 诊断 |
| hermes gateway setup | 配置消息平台(TG/Discord…) | 扩展 |
| hermes cron | 管理定时任务 | 扩展 |
| hermes skills browse | 浏览技能库 | 扩展 |
| hermes update | 升级到最新版本 | 维护 |
| hermes uninstall | 卸载 | 维护 |
没有匹配的命令 🙈
8.3 五个必会斜杠命令
/help列出所有命令/model看 / 换当前模型/tools列出可用工具/status会话状态 + 回顾/context上下文占用明细8.4 下一步可以学什么
Skills 技能系统
把重复的工作流固化成 SKILL.md,之后一句话就能复用。
hermes skills browse
Gateway 消息网关
把 Hermes 接到 Telegram / Discord / Slack,手机上也能用。
hermes gateway setup
Cron 定时任务
让它每天自动跑报表、自动巡检,不用你开口。
hermes cron
❓常见问题 FAQ
这些是我在装的过程中真的想问、以及同学最常问的问题。点问题展开答案。
能。有三条零成本路线:
- 本地模型:用 Ollama 或 LM Studio 在本机跑开源模型,完全免费、数据不出电脑。
hermes model→ 选本地/自定义端点。注意上下文必须设到 64K 以上。 - 免费额度:部分 Provider 新用户有赠额;OpenRouter 上也有
:free后缀的免费模型。 - 同学/老师提供的 Key:本教程用的就是这种 —— 老师给一个 DeepSeek Key,
写进
.env即可。
关键点:Hermes 本身不要钱,花钱的只是模型调用。前期学习阶段用量很小, 一天几毛钱量级。
99% 是 PATH 没刷新。官方安装器把 %LOCALAPPDATA%\hermes\bin
加进了用户 PATH,但已经打开的终端不会自动生效。
做法:完全关掉终端窗口,重新开一个(不是新标签页)。 临时救急可以直接用全路径:
& "$env:LOCALAPPDATA\hermes\bin\hermes.exe" --version
本教程因为装在工作区,用的是 test1\hermes.cmd,它在任意目录都能跑。
按这个顺序查,基本三步内定位:
hermes doctor—— 看有没有⚠。它会直接说哪一项不合格。hermes status—— 确认 Provider / Model / API Key 三个都被识别到。- 自定义端点「能通但输出垃圾」—— 十有八九是 base_url 或模型名写错, 或者那个端点其实不是 OpenAI 兼容的。先用 curl 单独验证一次端点。
最常见的两个错:模型名拼错;把 API Key 写进了
config.yaml 而不是 .env。
这个担心是对的 —— 工具确实有真实权限。但 Hermes 有几层保护:
- 危险命令审批:
rm -rf、改配置这类操作默认会弹确认, 必须你同意才执行。 - 检查点与回滚:支持文件系统快照,
/rollback可以回到之前的状态。 - 容器隔离:
hermes config set terminal.backend docker, 让它在容器里干活,碰不到你的真实系统。 - 密钥打码:形似密钥的字符串在输出和日志里自动被打码。
实用建议:先在一个专门的测试目录里玩(就像本教程的 demo/),
不要一上来就指向你的论文目录。
因为 prompt cache(提示词缓存)。系统提示词、工具定义、你的历史对话 在第二次请求时大部分没变,Provider 会把它们缓存起来,命中缓存的部分 计费大幅打折(常见是 1/10 左右)。
本机日志里就能看到:
实用推论:频繁中途换模型会清空缓存, 下一轮要按全价重读整个对话。所以「能一次选好模型就别换来换去」。
差在能不能动手。网页版只能给你文字,你自己去复制、去执行。 Hermes 是「有手有脚」的:
- 能读你指定的文件(
read_file) - 能执行终端命令(
terminal,通过 Git Bash) - 能写文件(
write_file)—— 本教程的demo/result/report.md就是它自己写出来的 - 能跨会话记住你的偏好(
memory→ MEMORY.md / USER.md) - 能把重复流程固化成技能(Skills),下次一句话复用
一句话:网页版是「顾问」,Hermes 是「实习生」—— 你要为它的操作负责, 所以审批和隔离机制才这么重要。
不必须。Hermes 原生支持 Windows 10/11,本教程整篇都是原生 Windows 跑出来的,没有用 WSL。
唯一的差距是:网页控制台(dashboard)里那个内嵌终端面板需要 POSIX PTY, 原生 Windows 上用不了,其余功能都正常。
如果想让终端工具的行为更像 Linux(比如脚本里用了 fork、
文件监听等 POSIX 语义),那就上 WSL2。两者数据目录是分开的:
原生在 %LOCALAPPDATA%\hermes,WSL 在 ~/.hermes,
可以共存。
✎学习心得与这份教程的边界
一份诚实的自我评估:我学会了什么、卡在哪、以及这份教程没有覆盖什么。
9.1 三个板块的自我评估
✓ 确实学会并验证了
- 安装与依赖管理 —— 不只是跑一键脚本,而是搞清了它背后装了什么 (uv / Python 3.11 / Node / PortableGit / venv),以及每一步为什么需要。
- 配置分层 —— 真正理解了
config.yaml与.env为什么要分开,以及hermes config set的自动分流规则。 - Tool Calling 机制 —— 能说清模型负责决策、Hermes 负责执行、 结果回传后再推理这个循环。
- 排错方法论 —— 从
hermes doctor开始、 先让基础聊天跑通再加功能。
◆ 过程中真正想明白的事
- 报错信息是第一手资料。
SEC_E_NO_CREDENTIALS让我意识到 「能 ping 通端口」和「能建 TLS 连接」是两件事,不同工具用的 TLS 栈不同。 - 版本约束要早查。
<3.14,>=3.11这个条件如果一开始就查, 能省掉一轮失败安装。 - 缺 DLL 是可以精确诊断的。读 PE 导入表比盲目试错快得多。
- 配置 schema 会演进。升级后跑
config migrate应该成为习惯。
⚠ 这份教程的边界(还没做的)
- 没有接消息平台(Telegram / Discord / Slack), 所以 gateway 的配置与安全策略没验证。
- 没有深入 Skills 自增长与 Curator,只到「知道它存在、知道怎么浏览」。
- 没有验证 MCP 服务器接入,属于下一阶段内容。
- 没用过 Docker / SSH 终端后端,隔离方案只停留在「知道命令」层面。
- 没有多 Profile 与团队协作场景(Kanban、profile 分发)。
- 模拟终端是回放,不是真实执行 —— 想看真机行为必须自己装。
9.2 给同样要入门的同学三条建议
hermes --version 输出;
说「工具调用成功」不如给出日志行和产出文件路径。这也是这份作业的验收方式。9.3 怎么复现这一切
本页所有内容都可在另一台机器上复现。最短路径:
# 1) 官方一键安装(Linux / macOS / WSL2 / Windows)
iex (irm https://hermes-agent.nousresearch.com/install.ps1) # Windows
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash # Linux/macOS
# 2) 配置模型(换成你自己的 Provider 与密钥)
hermes config set DEEPSEEK_API_KEY sk-your-key
hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-pro
hermes config migrate
# 3) 体检 + 第一次对话
hermes doctor
hermes -z "你好,介绍一下你自己"
# 4) 复现 Step 6 的工具调用
mkdir demo/data demo/result
# 把 scores.csv 放进去,然后:
hermes chat -q "读取 data/scores.csv,统计每科平均分与总分,写出 result/report.md"
完整命令序列、目录说明和 8 个踩坑的详细解法见项目根目录的
README.md。