易君召
发布于 2026-04-29 / 1 阅读
0
0

Hermes WebUI页面setup设置模型后无效的原因分析

#AI

基于Docker Compose为Hermes Agent配置hermes-dashboard、hermes-webui,前后折腾了好几天时间,经历各种问题。整理出来方便大家对照查看。

在setup页面设置模型后,并没有生效, sudo docker exec hermes-agent cat /home/hermes/.hermes/config.yaml 仍然是原来默认配置。Docker 部署的 Hermes WebUI 修改模型后,配置未持久化 / 未生效,始终读取容器内默认的 config.yaml

一、核心原因

  1. Docker 容器隔离性

    容器内的 /home/hermes/.hermes/config.yaml独立文件,WebUI 的设置默认无法写入容器内部,修改完全不生效。

  2. 配置优先级规则

    Hermes 官方明确:环境变量(.env) > config.yaml 配置文件,如果你的 .env 里有模型相关变量,会强制覆盖页面设置。

  3. 无持久化挂载

    没有将宿主机的配置文件挂载到容器,容器重建 / 重启后,所有修改都会丢失,恢复默认配置。

  4. WebUI 与 hermes-agent 分离

    WebUI 是前端界面,hermes-agent 是后端执行器,页面设置未同步到 agent 的配置。

二、分步解决方案(从临时到永久生效)

方案 1:临时修改容器内配置(快速测试,重启失效)

直接编辑容器内的配置文件,立即生效:

  1. 进入容器编辑配置

sudo docker exec -it hermes-agent vi /home/hermes/.hermes/config.yaml
  1. 修改模型配置:

model:
  default: "模型名称"  # 例如 openrouter/qwen/qwen3.5-72b
  provider: "openrouter"     # 对应你的服务商
  base_url: "https://openrouter.ai/api/v1"
  1. 保存退出(vi 编辑器:Esc:wq),重启容器:

sudo docker restart hermes-agent

方案 2:永久生效(推荐)→ 挂载宿主机配置到容器

这是根本解决方法,让宿主机的配置文件接管容器,WebUI 修改也能持久化:

步骤 1:宿主机创建配置目录

mkdir -p ~/.hermes

步骤 2:复制容器默认配置到宿主机

sudo docker cp hermes-agent:/home/hermes/.hermes/config.yaml ~/.hermes/

步骤 3:修改 Docker 启动命令(添加挂载)

关键:在你的 docker run 命令中添加配置文件挂载参数,把宿主机的 ~/.hermes 映射到容器内:

# 示例完整启动命令(替换你原本的镜像/参数)
sudo docker run -d \
  --name hermes-agent \
  -v ~/.hermes:/home/hermes/.hermes \  # 核心挂载:宿主机 → 容器
  -v /var/run/docker.sock:/var/run/docker.sock \
  --env-file .env \
  hermes-agent:latest

步骤 4:修改宿主机配置(永久生效)

直接编辑宿主机的配置文件,无需进入容器:

vi ~/.hermes/config.yaml

修改完成后重启容器即可:

sudo docker restart hermes-agent

方案 3:让 WebUI 设置真正生效

完成挂载后,再做这两步,页面设置就会同步生效:

  1. 关闭环境变量覆盖

    打开宿主机的 .env 文件,删除所有模型相关环境变量(这些会强制覆盖配置):

    env

    # 删除/注释掉以下变量
    # HERMES_MODEL=xxx
    # HERMES_INFERENCE_PROVIDER=xxx
    # HERMES_BASE_URL=xxx
    
  2. 重启所有服务

sudo docker restart hermes-webui hermes-agent

三、验证配置是否生效

  1. 查看容器内配置是否更新:

sudo docker exec hermes-agent cat /home/hermes/.hermes/config.yaml
  1. 查看 Hermes 当前使用的模型:

sudo docker exec -it hermes-agent hermes model --get

四、额外排查(如果仍不生效)

文件权限问题

容器内无权限写入配置,修复宿主机文件权限:

chmod 644 ~/.hermes/config.yaml
chown -R $USER:$USER ~/.hermes
  1. 模型名称格式错误

    必须使用 Hermes 支持的格式:

    • OpenRouter: openrouter/模型名

    • 本地 Ollama: ollama/模型名

    • Anthropic: anthropic/模型名

  2. WebUI 缓存

    清空浏览器缓存,刷新 Setup 页面重新设置。

总结

  1. 核心问题:Docker 容器未挂载配置文件 + 环境变量覆盖

  2. 永久方案:挂载宿主机 ~/.hermes 到容器

  3. 生效前提:删除 .env 中的模型环境变量,重启容器

    按照这个流程操作,WebUI 的模型设置会完全生效且持久化。


评论