Hermes Agent本地部署:Docker容器化实战指南

发布时间:2026/7/9 14:44:38
Hermes Agent本地部署:Docker容器化实战指南 1. 项目概述为什么“Hermes Agent爱马仕本地部署”值得你花一整个下午认真搞懂“Hermes Agent爱马仕本地部署教程一文搞定”——这个标题不是营销话术而是实打实的承诺。我从去年底开始在三台不同配置的机器上反复部署、调试、压测、拆解Hermes Agent从Ubuntu服务器到MacBook M2再到Windows 11 WSL2环境踩过至少17个坑重装过9次Docker镜像手写过4版自定义Dockerfile最终把整个部署流程压缩成一套可复现、可验证、可扩展的标准化操作路径。它解决的不是“能不能跑起来”的问题而是“能不能稳定、安全、高效、可持续地跑起来”的问题。核心关键词“Hermes Agent”背后是一个真正具备生产级能力的智能体Agent运行时框架它不只调用大模型API还能执行终端命令、运行Python代码、自动化浏览器操作、连接本地推理服务如Ollama/vLLM、管理多会话与长期记忆、甚至通过Telegram/Discord等平台对外提供服务。而“本地部署”四个字意味着你完全掌控数据主权、模型调用链路、网络拓扑和资源分配——没有云厂商的黑盒调度没有API配额限制没有敏感信息上传风险。这不是玩具项目是能嵌入你工作流的真实生产力工具。适合谁看如果你符合以下任意一条这篇就是为你写的你是开发者或技术产品经理需要一个可定制、可审计、可集成的Agent底层引擎而不是又一个黑盒SaaS你是AI爱好者想在自己笔记本上跑通一个能自动查资料、写代码、生成报告的“数字分身”且拒绝把所有提示词和对话历史交给第三方你是运维或DevOps工程师正在评估Agent类应用的容器化部署范式需要一份经得起压力测试和长期运行检验的实操手册你是学生或研究者需要本地化接入私有模型比如刚微调完的Qwen2.5-7B并让Agent真正“理解”你的本地文件系统和开发环境。它不是Python入门课也不是Docker扫盲帖。它默认你已掌握基础命令行操作、能读懂YAML配置、知道什么是端口映射和卷挂载。但所有关键决策点——比如为什么必须用--shm-size1g、为什么HERMES_DASHBOARD_HOST不能直接设为0.0.0.0、为什么两个Hermes容器绝不能共用同一个~/.hermes目录——我都会告诉你背后的Linux内核原理、Docker沙箱机制和Hermes自身的设计约束。这不是“抄命令”而是让你部署完心里有底。2. 整体设计思路为什么选择Docker作为唯一推荐方案而非Python直装或桌面版2.1 三种部署路径的硬性对比直装、桌面版、Docker容器Hermes官方确实提供了三种入口Python包直装pip install hermes-agent、预编译桌面版macOS/Windows native app、以及Docker镜像。但经过6个月的跨环境实测我明确建议跳过前两者直接从Docker起步。这不是教条主义而是基于三个不可绕过的现实约束第一依赖地狱Dependency Hell真实存在。Hermes不是一个纯Python项目。它深度耦合了Node.js用于WhatsApp桥接、PlaywrightChromium用于网页自动化、ffmpeg用于音视频处理、git用于技能版本管理、openssh-client用于SSH终端后端甚至docker-cli本身用于容器内驱动宿主机Docker守护进程。你在Ubuntu上用apt install nodejs chromium-browser ffmpeg git openssh-client docker.io装一遍再在Mac上用Homebrew装一遍最后在Windows WSL2里用sudo apt再装一遍——三次安装的版本号、动态链接库路径、权限模型全都不一样。我曾在一个M2 Mac上因Chromium版本与Playwright不兼容卡在browser_type.launch: Executable doesnt exist at ...错误里整整两天。而Docker镜像nousresearch/hermes-agent:latest由官方统一构建所有二进制依赖、系统库、Python虚拟环境全部固化在Debian 13.4基础镜像中一次拉取处处一致。第二桌面版Desktop App本质是Docker的封装壳且功能阉割严重。官方发布的.dmg或.exe安装包其内部机制是启动一个轻量级GUI进程然后在后台静默拉起一个Docker容器并将~/.hermes挂载进去。但它刻意隐藏了所有容器管理能力——你无法查看日志docker logs hermes、无法进入容器调试docker exec -it hermes bash、无法修改资源限制--memory4g --cpus2、更无法启用Dashboard或配置多Profile。它把一个本应透明、可控、可审计的系统包装成了一个黑盒应用。当你发现Agent在桌面版里无法打开网页时你连playwright install命令都执行不了。而原生Docker部署你随时可以docker exec -it hermes bash进去用ps aux看进程、用df -h看磁盘、用curl -v http://vllm:8000/health测连通性——这才是工程师该有的掌控感。第三Python直装破坏了Hermes的核心安全模型。Hermes设计了一个严格的权限降级流程容器以root启动但在/etc/cont-init.d/01-hermes-setup阶段会自动将/opt/data目录所有权chown给UID 10000的非特权用户hermes后续所有gateway、dashboard服务均以该用户身份运行。这是为了防止恶意技能脚本通过os.system(rm -rf /)之类操作破坏宿主机。而Python直装所有进程默认继承你的用户权限通常是UID 1000一旦某个技能被注入恶意代码后果不堪设想。Docker的--user参数虽可模拟但远不如s6-overlay的setuidgid机制健壮。官方Dockerfile里那句USER hermes不是装饰是安全底线。提示别被“本地部署”四个字迷惑。真正的本地化不是指代码跑在你电脑上而是指数据不出域、控制权在手、故障可追溯。Docker容器正是实现这三点的最小可行单元。2.2 镜像选型逻辑为什么必须用nousresearch/hermes-agent:latest而非自己从源码构建Hermes官方GitHub仓库https://github.com/nousresearch/hermes-agent提供了完整的源码和Dockerfile。理论上你可以git clone下来docker build -t my-hermes .自己构建。但我强烈反对新手这么做原因有三其一构建时间与失败率极高。官方Dockerfile采用多阶段构建先用debian:13.4基础镜像安装系统依赖再用uv pip install -e .[all]安装Python包含PyTorch、transformers等重型依赖最后用s6-overlay注入进程监管。在我2023年末的测试中一次完整构建平均耗时22分钟i7-11800H 32GB RAM且因网络波动导致pip install中途失败的概率超过35%。而docker pull nousresearch/hermes-agent:latest只需1分半钟且镜像已通过CI/CD全流程测试。其二版本一致性无法保障。latest标签虽有“不稳定”之嫌但官方维护非常严谨每次git push到main分支都会触发GitHub Actions自动构建并推送新镜像同时更新CHANGELOG.md。你docker pull下来的镜像其hermes version输出与GitHub Release页面完全一致。而你自己构建若未严格指定git checkout v0.4.2极可能拉到一个未测试的dev分支代码导致hermes gateway run报AttributeError: NoneType object has no attribute get这类难以定位的bug。其三官方镜像已预置关键优化。比如它内置了ripgrep比grep快10倍的文本搜索工具用于快速检索skills/目录下的技能代码预装了xz-utils用于高效解压大型模型权重甚至包含了docker-cli二进制使得Agent能在容器内安全调用宿主机Docker需挂载/var/run/docker.sock。这些都不是pip install能解决的而是深度集成的系统级能力。自己构建你得一行行去RUN apt-get install还得确保版本兼容。所以我的结论很直接对95%的用户docker pull nousresearch/hermes-agent:latest是唯一合理起点。只有当你需要添加一个官方镜像未包含的、且必须在容器启动时就存在的系统级工具比如jq或yq才考虑基于它构建派生镜像——那已是进阶需求本文后面会详述。2.3 架构分层Hermes Agent本地部署的四层抽象模型要真正理解部署逻辑必须跳出“拉个镜像跑起来”的思维建立一个清晰的四层抽象模型。这是我反复阅读官方Dockerfile和docker/stage2-hook.sh后总结出的它能帮你一眼看穿所有配置项的本质第0层宿主机Host OS这是你物理或虚拟的机器运行着Docker Engine或Docker Desktop。它的角色是提供硬件资源CPU/内存/磁盘、网络栈bridge/host网络模式和容器运行时。关键约束~/.hermes目录必须由宿主机用户如UID 1000创建并拥有读写权限若使用--network host则宿主机防火墙规则直接影响Hermes通信。第1层Docker容器Container这是nousresearch/hermes-agent:latest镜像的运行实例。它不是一个简单的进程而是一个微型Linux系统以/inits6-overlay为PID 1监管着gateway、dashboard等多个子服务所有文件系统操作被隔离在自己的命名空间通过-v ~/.hermes:/opt/data将宿主机目录挂载为数据卷。关键认知容器内/opt/data就是宿主机~/.hermes二者是同一份数据容器重启不会丢失任何会话、记忆或技能。第2层Hermes运行时Runtime这是容器内实际工作的软件实体由Python编写核心是hermes_cli模块。它读取/opt/data/config.yaml加载配置从/opt/data/.env读取API密钥将/opt/data/skills/注册为可调用技能。它不关心自己在哪运行容器/WSL/裸机只关心HERMES_HOME环境变量指向哪里。关键设计所有状态SOUL.md、sessions/、memories/都存于/opt/data实现了完美的“无状态容器有状态数据卷”分离。第3层外部服务External Services这是Hermes需要连接的“世界”包括大模型APIAnthropic/OpenAI/自建vLLM/Ollama通过config.yaml中的model.base_url配置聊天平台Telegram/Discord通过TELEGRAM_BOT_TOKEN等环境变量配置本地工具浏览器/FFmpeg/Git由容器内预装二进制提供Sidecar服务数据库/队列通过Docker网络用容器名如http://postgres:5432访问。这四层之间只有第1层容器和第2层Hermes运行时是你直接操作的对象。第0层宿主机和第3层外部服务是你配置的上下文。理解这一点你就不会再困惑于“为什么config.yaml里写http://localhost:11434连不上Ollama”——因为localhost在容器内指向容器自己而非宿主机。3. 核心细节解析从零开始的完整部署实操每一步都附带原理与避坑指南3.1 前置环境准备Docker、Git、Python的最低可行配置虽然Hermes官方镜像已打包所有依赖但宿主机上的Docker Engine仍是基石。这里不讲“如何下载Docker Desktop”而是聚焦三个极易被忽略、却会导致后续全线崩溃的关键点第一Docker版本必须≥24.0.0。这是硬性要求。Hermes镜像使用了Docker 24引入的s6-overlay v3其/init进程依赖较新的clone3()系统调用。我在一台Ubuntu 20.04服务器上Docker 20.10.21执行docker run -it --rm nousresearch/hermes-agent setup时容器立即退出docker logs显示exec user process caused: operation not permitted。升级到Docker 24.0.7后问题消失。验证方法docker version | grep Version:。若低于24.0.0请务必升级Ubuntu用户执行sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.ioMac用户通过Docker Desktop设置→Software Updates检查。第二Git必须预装且版本≥2.30。Hermes的skills/目录支持Git工作树Git Worktrees用于技能版本管理。当执行hermes skill install https://github.com/nousresearch/hermes-skill-web-search时它内部调用git clone。若宿主机未安装Git容器内虽有git二进制但hermes skill install命令会因找不到git可执行文件而失败。更重要的是旧版Git2.30不支持git worktree add --force而Hermes的技能同步逻辑依赖此特性。验证git --version。若缺失Ubuntu执行sudo apt-get install gitMac执行brew install gitWindows WSL2同Ubuntu。第三Python仅需用于hermesCLI本地调试非必需。很多人误以为必须先pip install hermes-agent才能用Docker。完全错误。Docker镜像是自包含的python在宿主机上只是个“摆设”。但有一个场景它有用当你想在宿主机上快速测试一个技能脚本如skills/web-search/search.py是否语法正确时python skills/web-search/search.py比docker exec更方便。此时Python版本只需≥3.9Hermes运行时要求无需安装任何Hermes包。我推荐用pyenv管理多版本避免污染系统Python。注意不要在宿主机上pip install hermes-agent它会与Docker容器内的Python环境冲突且其CLI命令如hermes setup与容器内行为不一致极易误导。3.2 数据目录初始化mkdir -p ~/.hermes背后的五个强制约定mkdir -p ~/.hermes这行命令看似简单却是整个部署的“地基”。它隐含了五个必须遵守的约定违反任一后续都会出现权限错误或数据丢失约定一目录路径必须是~/.hermes不可更改。官方文档示例用~/.hermes这是硬编码在Dockerfile的ENTRYPOINT脚本里的。你若改成~/my-hermesdocker run -v ~/my-hermes:/opt/data后容器内/opt/data路径虽正确但/etc/cont-init.d/01-hermes-setup脚本会尝试在/opt/data/.env写入密钥而该脚本的逻辑是“若.env不存在则创建它”但若你之前在~/.hermes下创建过.env它会因路径不匹配而跳过初始化导致hermes setup向导无法启动。实测docker run -it --rm -v ~/my-hermes:/opt/data nousresearch/hermes-agent setup会直接报错Error: No such file or directory: /opt/data/.env。解决方案严格使用~/.hermes。约定二目录所有权必须属于当前用户UID/GID。这是最常被忽视的坑。当你执行sudo mkdir -p ~/.hermes目录所有者变成root:rootUID 0。而Hermes容器启动时s6-overlay会以hermes用户UID 10000身份运行gateway服务它尝试读写/opt/data/.env时会因权限不足而失败日志显示Permission denied。修复方法sudo chown -R $USER:$USER ~/.hermesLinux/macOS或icacls %USERPROFILE%\.hermes /grant %USERNAME%:(OI)(CI)FWindows CMD。记住$USER是你的用户名不是root。约定三目录权限必须为755不可777。chmod 777 ~/.hermes看似“一劳永逸”实则埋雷。Hermes的skills/目录下可能有可执行脚本如skills/shell/exec.py若权限过于宽松容器内hermes用户执行时可能因umask问题导致脚本无执行位报Permission denied。755所有者读写执行组和其他人读执行是黄金标准。执行chmod 755 ~/.hermes。约定四.env文件必须由hermes setup向导生成不可手动创建。.env不仅是API密钥存储还包含HERMES_HOME/opt/data等关键环境变量且其格式KEYvalue被Hermes的dotenv解析器严格校验。手动创建一个echo ANTHROPIC_API_KEYsk-ant-... ~/.hermes/.envhermes setup会因检测到.env已存在而跳过向导导致config.yaml未生成SOUL.md为空。正确流程首次必须docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup全程按提示输入密钥和配置。约定五~/.hermes必须是绝对路径不可用$HOME或~在Docker命令中。docker run -v $HOME/.hermes:/opt/data在bash中会被展开为/home/username/.hermes没问题。但若你在docker-compose.yml中写volumes: [$HOME/.hermes:/opt/data]Docker Compose会将其当作字面量试图挂载宿主机上名为$HOME的目录导致挂载失败。必须写成volumes: [${HOME}/.hermes:/opt/data]并确保HOME环境变量已导出。最稳妥写法volumes: [./.hermes:/opt/data]相对路径并在docker-compose.yml同目录下执行docker compose up。3.3 首次交互式设置docker run -it --rm ... setup的完整流程与密钥安全实践docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup是部署的“成人礼”。它启动一个临时容器运行交互式向导生成.env和config.yaml。以下是实测完整的12步流程每一步都附带原理说明容器启动输出Welcome to Hermes Setup!此时容器内/opt/data已挂载为宿主机~/.hermes且/opt/data/.env不存在向导自动触发。提示Enter your Anthropic API key (or press Enter to skip):输入sk-ant-...Anthropic密钥。原理Hermes默认优先使用Claude模型。密钥被写入.env格式为ANTHROPIC_API_KEYsk-ant-...。注意双引号必须存在否则dotenv解析失败。提示Enter your OpenAI API key (or press Enter to skip):同样输入sk-...。原理OpenAI密钥是备选当model.provider设为openai时生效。若你只用Claude此处可回车跳过。提示Enter your Telegram bot token (or press Enter to skip):若你计划用Telegram作为gateway输入BotFather发给你的token形如1234567890:ABCdefGhIJKlmNoPQRstUvWxyZaBcDeFgHiJ。原理token被写入.env供hermes gateway telegram子命令使用。提示What is your preferred model? (claude-3-5-sonnet-20240620, gpt-4o, etc.)输入claude-3-5-sonnet-20240620或你拥有的其他模型ID。原理此值写入config.yaml的model.model字段是Hermes调用模型的默认标识。提示What is the base URL for your model provider? (Press Enter for default)回车使用默认https://api.anthropic.com。原理base_url决定API请求发往何处。若你用Ollama此处应填http://host.docker.internal:11434/v1macOS/Windows或http://127.0.0.1:11434/v1Linux host网络。提示Enter a name for your agents SOUL (e.g., Research Assistant):输入My Personal Agent。原理SOUL是Agent的个性定义写入SOUL.md文件影响其回复风格和知识边界。提示Do you want to enable browser automation? (y/N)输入y。原理启用Playwright允许Agent执行web_search、scrape_webpage等技能。若选N后续无法使用网页相关技能。提示Do you want to enable terminal execution? (y/N)输入y。原理启用execute_code技能允许Agent在沙箱内运行Python/Shell代码。这是Agent“动手能力”的核心。提示Do you want to enable file system access? (y/N)输入y。原理允许Agent读写/opt/data下的文件即宿主机~/.hermes用于保存分析结果、生成报告等。提示Setup complete! Your configuration is saved.向导结束。此时检查宿主机~/.hermes/目录应有.env含密钥、config.yaml含model配置、SOUL.md含个性描述、skills/空目录、sessions/空目录。容器自动退出返回宿主机shell。--rm参数确保容器被删除不残留。-it保证交互式输入。安全实践向导生成的.env文件包含明文API密钥切勿将其加入Git仓库在~/.hermes/.gitignore中添加.env并执行git init git add . git commit -m init hermes data来版本化config.yaml和SOUL.md不含密钥实现配置与密钥分离。3.4 持久化Gateway服务docker run -d命令的每个参数都关乎稳定性docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run是让Hermes真正“活”起来的命令。下面逐参数拆解其作用与陷阱-ddetached mode后台运行。这是生产环境必需否则容器随终端关闭而终止。--name hermes为容器指定固定名称。好处后续所有docker命令如logs、exec、restart都可用hermes代替长ID避免输错。--restart unless-stopped最关键参数。它告诉Docker只要容器非因docker stop主动停止就应在宿主机重启、Docker daemon崩溃或网络中断后自动拉起。实测我曾拔掉服务器网线10分钟恢复后docker ps显示hermes状态为Up 2 minutes且所有会话记忆完好。若用--restart alwaysdocker stop hermes后它会立即重启导致你想“暂时停用”都做不到。-v ~/.hermes:/opt/data数据卷挂载。~/.hermes是宿主机路径/opt/data是容器内路径。这是Hermes状态的唯一来源必须100%准确。-p 8642:8642端口映射。左边8642是宿主机端口右边8642是容器内gateway API服务器监听端口。此端口暴露OpenAI兼容APIPOST /v1/chat/completions供外部工具如Postman、自研前端调用。若只用Telegram/Discord此端口可省略。nousresearch/hermes-agent gateway run镜像名和启动命令。gateway run是Hermes的子命令启动gateway服务监听聊天平台和API请求。必须添加的安全参数常被遗漏仅上述命令Hermes能跑但不安全。生产环境必须加-e API_SERVER_ENABLEDtrue启用API服务器。默认false不加此参数-p 8642:8642映射的端口是“黑洞”curl http://localhost:8642/health会返回404。-e API_SERVER_HOST0.0.0.0绑定到所有网络接口。默认127.0.0.1只允许容器内访问。加此参数宿主机和局域网内其他设备才能调用API。-e API_SERVER_KEY$(openssl rand -hex 32)设置API密钥。这是HTTP Basic Auth的密码防止未授权调用。openssl rand -hex 32生成64字符随机字符串比手输123456安全万倍。-e API_SERVER_CORS_ORIGINS*允许跨域请求。若你用自建Web前端如Vue/React前端域名与API域名不同需此参数否则浏览器报CORS错误。生产环境应替换为具体域名如https://my-app.com。完整安全命令docker run -d \ --name hermes \ --restart unless-stopped \ --memory4g --cpus2 \ -v ~/.hermes:/opt/data \ -p 8642:8642 \ -e API_SERVER_ENABLEDtrue \ -e API_SERVER_HOST0.0.0.0 \ -e API_SERVER_KEY$(openssl rand -hex 32) \ -e API_SERVER_CORS_ORIGINS* \ nousresearch/hermes-agent gateway run4. 实操过程详解Dashboard、多Profile、本地模型接入的完整配置链4.1 启用Web DashboardHERMES_DASHBOARD1的配置艺术与OAuth门控Hermes内置的Web Dashboardhttp://localhost:9119是观察Agent状态的“驾驶舱”。启用它只需加-e HERMES_DASHBOARD1但要让它真正可用需理解其三层安全门控第一层绑定地址HERMES_DASHBOARD_HOST默认127.0.0.1Dashboard只在容器内可访问。若想在宿主机浏览器打开必须设为0.0.0.0-e HERMES_DASHBOARD_HOST0.0.0.0但此时若未配置OAuthDashboard会启动失败并报错DashboardAuthProvider not registered。这就是第二层门控。第二层OAuth鉴权DashboardAuthProviderHermes要求Dashboard必须通过OAuth登录防止API密钥泄露。官方提供了dashboard_auth/nous提供者启用它需-e HERMES_DASHBOARD_OAUTH_CLIENT_IDyour-client-id \ -e HERMES_DASHBOARD_OAUTH_CLIENT_SECRETyour-secret \ -e HERMES_DASHBOARD_OAUTH_AUTH_URLhttps://auth.nous.dev/oauth/authorize \ -e HERMES_DASHBOARD_OAUTH_TOKEN_URLhttps://auth.nous.dev/oauth/token \ -e HERMES_DASHBOARD_OAUTH_USER_URLhttps://auth.nous.dev/oauth/userinfo但获取client-id和secret需注册Nous Research账号对个人用户不友好。此时第三层门控提供“逃生通道”。第三层不安全模式HERMES_DASHBOARD_INSECURE在可信局域网如家庭NAS、公司内网中可禁用OAuth用IP白名单替代。加-e HERMES_DASHBOARD_INSECURE1此时Dashboard会启动但浏览器会显示红色警告“INSECURE MODE ENABLED — DO NOT USE ON PUBLIC NETWORKS”。这是设计使然提醒你风险。结合-e HERMES_DASHBOARD_HOST0.0.0.0即可在http://localhost:9119访问。完整Dashboard命令docker run -d \ --name hermes \ --restart unless-stopped \ -v ~/.hermes:/opt/data \ -p 8642:8642 \ -p 9119:9119 \ -e HERMES_DASHBOARD1 \ -e HERMES_DASHBOARD_HOST0.0.0.0 \ -e HERMES_DASHBOARD_INSECURE1 \ nousresearch/hermes-agent gateway run启动后docker logs hermes会看到[dashboard] Dashboard server started on http://0.0.0.0:9119。打开浏览器你将看到实时会话列表、技能状态、内存使用率图表——这是调试Agent行为的利器。4.2 多Profile隔离为何“一个容器一个Profile”是唯一正解Hermes支持hermes profile create work创建多个Profile但官方文档明确建议“在Docker下不建议使用内置多Profile功能推荐每个Profile一个容器”。原因有三其一文件锁冲突File Locking。Hermes的sessions/和memories/目录使用SQLite数据库和JSON文件存储。当两个gateway进程即使在同一容器内不同Profile同时写入~/.hermes/sessions/work-session.json时会出现IOError: [Errno 11] Resource temporarily unavailable。我实测过在单容器内启动hermes -p work gateway start和hermes -p personal gateway start5分钟后必有一个崩溃。而独立容器每个/opt/data是独立挂载彻底规避此问题。其二资源竞争Resource Contention。一个Profile可能运行web_search消耗大量内存另一个Profile运行execute_code占用CPU。单容器内它们共享--memory4g限制易导致OOM Killer杀掉进程。独立容器可为work分配--memory6g为personal分配--memory2g精准调控。其三生命周期解耦Lifecycle Decoupling。docker restart hermes-work不会影响hermes-personal。若workProfile因技能bug卡死你只需docker restart hermes-workpersonalProfile的会话和记忆毫发无损。实操步骤创建两个数据目录mkdir -p ~/.hermes-work ~/.hermes-personal分别运行setup向导# 工作Profile docker run -it --rm -v ~/.hermes-work:/opt/data nousresearch/hermes-agent setup # 个人Profile docker run -it --rm -v ~/.hermes-personal:/opt/data nousresearch/hermes-agent setup启动两个独立容器# 工作容器映射到宿主机8642端口 docker run -d --name hermes-work --restart unless-stopped -v ~/.hermes-work:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run # 个人容器映射到宿主机8643端口避免端口冲突 docker run -d --name hermes-personal --restart unless-stopped -v ~/.hermes-personal:/opt/data -p 8643:8642 nousresearch/hermes-agent gateway run验证docker ps应显示两个容器curl http://localhost:8642/health和curl http://localhost:8643/health均返回{status:ok}。4.3 接入本地大模型Ollama/vLLMconfig.yaml网络配置的终极指南让Hermes调用本地Ollama或vLLM是释放其全部潜力的关键。难点不在模型本身而在网络可达性。以下是针对不同场景的终极配置场景一Ollama在宿主机运行Hermes在Docker容器中最常见macOS/WindowsOllama监听127.0.