多账号管理教程:一台电脑高效运行多个AI实例的权威指南
需要在一台机器上部署多个独立的Hermes Agent实例,用于账号隔离、模型分流或任务并行处理?这是开发者和运维团队常见的生产需求。虽然Hermes Agent默认绑定单一配置目录,但通过几种成熟的隔离方案,你可以轻松实现多实例共存,确保配置、记忆和端口互不干扰。
一、使用独立用户目录隔离实例
每个Hermes Agent实例默认读写用户主目录下的 ~/.hermes 文件夹,其中包含配置、记忆文件和日志。最彻底的隔离方案是为每个实例创建独立的系统用户,实现运行环境的完全分离,从根本上杜绝配置冲突和记忆混杂。
以Linux系统为例,具体操作如下:
首先,创建两个专用的系统用户:
sudo adduser hermes-a
sudo adduser hermes-b
然后,切换到第一个用户并初始化其专属环境:
sudo su - hermes-a
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
接着,为第二个用户重复相同的安装流程。
最后,分别启动两个实例:
sudo su - hermes-a -c "hermes --name=agent-a"
sudo su - hermes-b -c "hermes --name=agent-b"
这样,每个用户目录下生成的 SOUL.md、MEMORY.md、USER.md 及SQLite数据库完全独立,实现了账号级别的数据隔离。
二、手动指定配置根路径运行
如果创建系统用户方案过于繁重,或者场景较为轻量,利用 HERMES_HOME 环境变量是更灵活的选择。它允许你在同一系统账户下,通过指定不同的配置根路径来启动多个逻辑隔离的实例。
操作步骤如下:
首先,为第一个实例创建独立的配置目录,并尝试复制默认配置(如果存在):
mkdir -p ~/hermes-instance-01
cp -r ~/.hermes/* ~/hermes-instance-01/ 2>/dev/null || true
接着,为第二个实例创建另一套配置目录:
mkdir -p ~/hermes-instance-02
cp -r ~/.hermes/* ~/hermes-instance-02/ 2>/dev/null || true
然后,在启动命令前设置 HERMES_HOME 环境变量,分别指向各自的目录:
HERMES_HOME="$HOME/hermes-instance-01" hermes --name=prod-account
HERMES_HOME="$HOME/hermes-instance-02" hermes --name=test-account
关键点:每个实例首次启动时,都需要单独完成API Key的配置和模型选择。切勿将同一套百炼或通义千问的密钥复用于多个生产环境实例,这会引入安全风险。
三、基于 Docker 容器化多实例部署
对于生产级的多账号管理需求,容器化部署是最健壮、最标准的方案。Docker容器为每个实例提供独立的文件系统、网络命名空间和进程空间,便于进行资源配额和网络策略控制。
部署流程如下:
首先,拉取官方的Hermes Agent镜像:
docker pull ghcr.io/nousresearch/hermes-agent:latest
接着,为实例A创建专属的Docker配置卷(Volume)并运行容器:
docker volume create hermes-a-config
docker run -d --name hermes-a --mount source=hermes-a-config,target=/root/.hermes -p 8081:8080 ghcr.io/nousresearch/hermes-agent
然后,为实例B创建另一个配置卷并运行,注意使用不同的容器名和映射端口:
docker volume create hermes-b-config
docker run -d --name hermes-b --mount source=hermes-b-config,target=/root/.hermes -p 8082:8080 ghcr.io/nousresearch/hermes-agent
最后,分别进入两个容器完成初始化配置:
docker exec -it hermes-a /bin/bash -c "hermes --init"
docker exec -it hermes-b /bin/bash -c "hermes --init"
必须遵守的规则:两个容器必须绑定到宿主机的不同端口(如8081和8082),否则其WebUI服务会因端口冲突而启动失败。
三种方案各有侧重:独立用户目录适用于需要强隔离的场景;HERMES_HOME变量适合轻量级快速隔离;而Docker容器化是面向生产环境、追求可维护性和扩展性的最佳实践。根据你的实际需求,选择最合适的部署路径。
