Hermes Agent的安装、Profile与日常运维

Hermes Agent既可以在终端里交互,也可以通过Dashboard和消息网关长期运行。早期配置曾把安装、WebUI、机器人接入和多Agent配置混在一起,真正维护起来以后,最值得固定的是官方CLI和Profile:前者负责安装与诊断,后者把模型、密钥、记忆和会话分开。

这套配置基于Linux主机。第三方WebUI和直接修改Python依赖包的临时补丁没有纳入日常方案,官方Dashboard已经能够管理多个Profile,升级时也更容易保持一致。

安装与首次配置

官方提供了一键安装脚本:

1
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

安装完成后运行设置向导,再分别确认模型和工具:

1
2
3
4
hermes setup
hermes model
hermes tools
hermes doctor

hermes setup负责完整初始化,hermes model适合后来单独切换提供商或模型,hermes doctor用于检查配置和运行环境。APIKey、机器人Token和自定义服务地址都属于凭据,不应直接写进Shell历史、博客或Profile说明文件。

日常使用主要是这些命令:

1
2
3
4
5
hermes                  # 进入交互界面
hermes --tui # 使用TUI
hermes chat -q "Hello" # 单次提问
hermes update # 更新Hermes
hermes doctor # 更新后重新诊断

交互会话里常用/model切换模型、/tools查看工具、/status查看当前Profile和上下文、/sessions恢复历史会话。配置变更后最好开启新会话,避免旧会话继续带着修改前的状态。

用Profile隔离不同用途

Profile不是一个提示词别名,而是一套独立的Hermes主目录。每个Profile都有自己的config.yaml.envSOUL.md、技能、记忆、会话和网关状态。

创建一个研究Profile:

1
2
3
hermes profile create research
research setup
research doctor

创建时会同时生成research命令别名,它等价于显式指定Profile:

1
2
research chat
hermes -p research chat

需要临时把它设为默认入口时使用:

1
2
hermes profile use research
hermes profile use default

知识库整理、技术简报、代码辅助和深度研究应拆成不同Profile。拆分的理由不是角色名称听起来更专业,而是避免记忆、技能和密钥互相污染。两个Agent进程也不要同时使用同一个Profile目录,它们会共同写入状态和记忆。

Profile同样不等于文件系统沙箱。SOUL.md里写“只访问某个目录”只是行为说明,不能限制进程权限。需要固定命令起始位置时,应明确设置terminal.cwd

1
research config set terminal.cwd /srv/hermes/workspace

真正需要隔离时,还要使用独立系统用户、容器或受限执行环境,不能把Profile当作权限边界。

克隆Profile时小心凭据

--clone可以复制现有Profile的配置、.envSOUL.md和技能:

1
hermes profile create writer --clone-from default

这很方便,也意味着原Profile里的APIKey和机器人Token会一起复制。克隆后应立即检查新Profile的环境文件,删除不需要的凭据;如果两个Profile分别运行消息网关,还要给它们配置不同的机器人Token。

当前Hermes会对多个Profile复用同一消息平台Token进行锁定,避免两个Long Polling进程争抢消息。即便如此,也不能把Token共享当成正常配置。每个对外身份对应一个Profile,问题会少很多。

Profile可以导出为本地归档:

1
hermes profile export research -o research-backup.tar.gz

归档里可能包含.env、会话和记忆,应按密钥备份对待,不要发送到公共网盘或提交到代码仓库。

Dashboard保持本机监听

启动官方Dashboard:

1
hermes dashboard

默认地址是http://127.0.0.1:9119,可以在侧边栏切换并管理不同Profile,不需要为每个Profile再启动一套第三方WebUI。远程使用时,继续保留回环监听并通过SSH转发更稳妥:

1
ssh -L 9119:127.0.0.1:9119 user@192.0.2.10

然后在本机浏览器打开http://127.0.0.1:9119

旧配置中常见的--host 0.0.0.0 --insecure已经不适合作为无认证远程入口。Hermes在2026年6月强化了Dashboard认证:非回环地址会强制启用认证门,--insecure只为兼容旧命令而保留,不再关闭认证。即便配置了用户名和密码,也应优先放在HTTPS、VPN或SSH隧道之后。

消息网关按Profile管理

每个Profile的网关是独立进程,可以单独安装、启动和排查:

1
2
3
4
5
6
research gateway install
research gateway start
research gateway status
research gateway restart

hermes gateway list

消息平台的允许名单、群组策略和Token保存在Profile自己的配置和.env中。接入完成后至少检查两件事:未授权的私聊或群组不能触发Agent;日志和诊断输出不能回显完整Token。

停用某个平台时,不仅要停止网关,还要撤销配对并删除对应凭据:

1
2
3
hermes pairing list
hermes pairing revoke <platform> <pairing-id>
research gateway restart

平台侧仍然有效的Token也应在平台控制台撤销或轮换,只删除本机文件并不能让泄露的Token失效。

更新、诊断与临时补丁

更新顺序保持简单:

1
2
3
4
hermes update
hermes doctor
hermes profile list
hermes gateway list

然后分别打开常用Profile的新会话,确认模型、工具和工作目录。网关正在运行时,还要检查它是否仍由对应Profile启动。

早期记录中曾有直接修改Hermes虚拟环境中OpenAI SDK解析代码的办法,用来绕过流式响应末尾output: null的问题。这种补丁会在升级后丢失,也可能掩盖上游已经修复或改变的数据结构,因此不再作为常规操作。遇到类似问题,优先更新Hermes和依赖、保留错误日志并核对官方Issue;确实必须临时修改时,也应保存补丁文件和版本信息,而不是只改site-packages

参考资料