配置集(Profiles):运行多个 Agent

在同一台机器上运行多个独立的 Hermes agent——每个 agent 拥有自己的配置、API 密钥、记忆、会话、技能和网关状态。

什么是配置集

配置集(profile)是一个独立的 Hermes 主目录。每个配置集拥有自己的目录,包含自己的 config.yaml.envSOUL.md、记忆、会话、技能、定时任务和状态数据库。配置集让你可以为不同目的运行不同的 agent——编码助手、个人机器人、研究 agent——而不会混淆 Hermes 的状态。

当你创建一个配置集时,它会自动成为自己的命令。创建一个名为 coder 的配置集,你立即拥有 coder chatcoder setupcoder gateway start 等命令。

快速开始

hermes profile create coder       # 创建配置集 + "coder" 命令别名
coder setup                       # 配置 API 密钥和模型
coder chat                        # 开始聊天

就这样。coder 现在是一个独立的 Hermes 配置集,拥有自己的配置、记忆和状态。

创建配置集

空白配置集

hermes profile create mybot

创建一个包含初始内置技能的全新配置集。运行 mybot setup 来配置 API 密钥、模型和网关令牌。

如果你打算将此配置集用作看板(kanban)工作者(或希望看板编排器将工作路由给它),请在创建时传递 --description "<角色>",以便编排器了解它的擅长领域:

hermes profile create researcher --description "阅读源代码和外部文档,撰写研究结果。"

你也可以稍后使用 hermes profile describe 设置或自动生成描述——请参阅看板指南了解完整的路由模型。

仅克隆配置(--clone

hermes profile create work --clone

将当前配置集的 config.yaml.envSOUL.md 复制到新配置集。相同的 API 密钥和模型,但全新的会话和记忆。编辑 ~/.hermes/profiles/work/.env 以使用不同的 API 密钥,或编辑 ~/.hermes/profiles/work/SOUL.md 以使用不同的人格。

克隆所有内容(--clone-all

hermes profile create backup --clone-all

复制所有内容——配置、API 密钥、人格、所有记忆、完整会话历史、技能、定时任务、插件。一个完整的快照。适用于备份或 fork 已经具有上下文的 agent。

从特定配置集克隆

hermes profile create work --clone --clone-from coder

:::tip Honcho 记忆 + 配置集 当 Honcho 启用时,--clone 会自动为新配置集创建一个专用的 AI 对等方,同时共享同一个用户工作空间。每个配置集构建自己的观察和身份。详情请参阅 配置集。 :::

使用配置集

命令别名

每个配置集自动在 ~/.local/bin/<name> 获得一个命令别名:

coder chat                    # 与 coder agent 聊天
coder setup                   # 配置 coder 的设置
coder gateway start           # 启动 coder 的网关
coder doctor                  # 检查 coder 的健康状态
coder skills list             # 列出 coder 的技能
coder config set model.default anthropic/claude-sonnet-4

该别名适用于所有 hermes 子命令——底层只是 hermes -p <name>

-p 标志

你也可以在任何命令中显式指定目标配置集:

hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "hello"    # 可在任何位置使用

设置持久默认(hermes profile use

hermes profile use coder
hermes chat                   # 现在指向 coder
hermes tools                  # 配置 coder 的工具
hermes profile use default    # 切换回来

设置默认值后,普通的 hermes 命令将指向该配置集。类似 kubectl config use-context

了解你当前在哪

CLI 始终显示当前活动的配置集:

  • 提示符coder ❯ 而非
  • 启动横幅:启动时显示 Profile: coder
  • hermes profile:显示当前配置集名称、路径、模型、网关状态

配置集 vs 工作空间 vs 沙箱

配置集经常与工作空间或沙箱混淆,但它们是不同的概念:

  • 配置集(profile) 为 Hermes 提供自己的状态目录:config.yaml.envSOUL.md、会话、记忆、日志、定时任务和网关状态。
  • 工作空间(workspace)或工作目录(working directory) 是终端命令的启动位置。这是由 terminal.cwd 单独控制的。
  • 沙箱(sandbox) 限制文件系统访问。配置集不会对 agent 进行沙箱化。

在默认的 local 终端后端上,agent 仍然拥有与你的用户账户相同的文件系统访问权限。配置集不会阻止它访问配置集目录之外的文件夹。

如果你希望配置集在特定的项目文件夹中启动,请在该配置集的 config.yaml 中设置显式的绝对路径 terminal.cwd

terminal:
  backend: local
  cwd: /absolute/path/to/project

在本地后端上使用 cwd: "." 意味着”启动 Hermes 时的目录”,而非”配置集目录”。

另请注意:

  • SOUL.md 可以引导模型,但不会强制实施工作空间边界。
  • SOUL.md 的更改会在新会话中干净地生效。现有会话可能仍在使用旧的提示词状态。
  • 向模型询问”你在哪个目录?“不是一个可靠的隔离测试。如果你需要工具使用可预测的启动目录,请显式设置 terminal.cwd

运行网关

每个配置集以自己的进程运行自己的网关,拥有自己的机器人令牌:

coder gateway start           # 启动 coder 的网关
assistant gateway start       # 启动 assistant 的网关(独立进程)

不同的机器人令牌

每个配置集有自己的 .env 文件。在每个文件中配置不同的 Telegram/Discord/Slack 机器人令牌:

# 编辑 coder 的令牌
nano ~/.hermes/profiles/coder/.env
 
# 编辑 assistant 的令牌
nano ~/.hermes/profiles/assistant/.env

安全:令牌锁定

如果两个配置集意外使用了相同的机器人令牌,第二个网关将被阻止,并显示标明冲突配置集的清晰错误信息。支持 Telegram、Discord、Slack、WhatsApp 和 Signal。

持久化服务

coder gateway install         # 创建 hermes-gateway-coder 的 systemd/launchd 服务
assistant gateway install     # 创建 hermes-gateway-assistant 的服务

每个配置集获得自己的服务名称。它们独立运行。

配置配置集

每个配置集拥有自己的:

  • config.yaml——模型、提供商、工具集、所有设置
  • .env——API 密钥、机器人令牌
  • SOUL.md——人格和指令
coder config set model.default anthropic/claude-sonnet-4
echo "你是一个专注的编码助手。" > ~/.hermes/profiles/coder/SOUL.md

如果你希望此配置集默认在特定项目中工作,也可以设置自己的 terminal.cwd

coder config set terminal.cwd /absolute/path/to/project

更新

hermes update 一次性拉取代码(共享)并将新的内置技能自动同步到所有配置集:

hermes update
# → Code updated (12 commits)
# → Skills synced: default (up to date), coder (+2 new), assistant (+2 new)

用户修改过的技能不会被覆盖。

管理配置集

hermes profile list           # 显示所有配置集及其状态
hermes profile show coder     # 单个配置集的详细信息
hermes profile rename coder dev-bot   # 重命名(更新别名和服务)
hermes profile export coder   # 导出为 coder.tar.gz
hermes profile import coder.tar.gz   # 从归档导入

删除配置集

hermes profile delete coder

这将停止网关、移除 systemd/launchd 服务、删除命令别名并删除所有配置集数据。你需要输入配置集名称进行确认。

使用 --yes 跳过确认:hermes profile delete coder --yes

:::note 你不能删除默认配置集(~/.hermes)。要删除所有内容,请使用 hermes uninstall。 :::

Tab 补全

# Bash
eval "$(hermes completion bash)"
 
# Zsh
eval "$(hermes completion zsh)"

将该行添加到你的 ~/.bashrc~/.zshrc 以实现持久补全。会补全 -p 后的配置集名称、配置集子命令和顶层命令。

工作原理

配置集使用 HERMES_HOME 环境变量。当你运行 coder chat 时,包装脚本在启动 hermes 之前将 HERMES_HOME=~/.hermes/profiles/coder 设置好。由于代码库中 119+ 个文件通过 get_hermes_home() 解析路径,Hermes 状态自动限定在配置集的目录范围内——配置、会话、记忆、技能、状态数据库、网关 PID、日志和定时任务。

这与终端工作目录是分开的。工具执行从 terminal.cwd(或在本地后端上 cwd: "." 时为启动目录)开始,而非自动从 HERMES_HOME 开始。

默认配置集就是 ~/.hermes 本身。无需迁移——现有安装的工作方式完全相同。

将配置集作为分发分享

你在一个机器上构建的配置集可以打包为 git 仓库,并通过一条命令在另一台机器上安装——你自己的台式机、团队成员的笔记本或社区用户的环境。共享包包括 SOUL、配置、技能、定时任务和 MCP 连接。凭据、记忆和会话按机器保留。

# 从 git 仓库安装完整的 agent
hermes profile install github.com/you/research-bot --alias
 
# 当作者发布新版本时稍后更新(保留你的记忆 + .env)
hermes profile update research-bot

请参阅 配置集分发(Profile Distributions):分享完整 Agent 获取完整指南——包括创作、发布、更新语义、安全模型和使用场景。