ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

无网环境docker部署Hermes Agent笔记——下篇 内网部署和中文社区桌面端配置

无网环境docker部署Hermes Agent笔记——下篇 内网部署和中文社区桌面端配置 书接上篇咱们已经准备好了内网部署所需要的全部依赖和docker镜像接下来我们开始完全离网部署部署要求必须Windows 10 22H2版本及以上或windows11 23H2系统不满足要求无法安装下图是我在另一台win10 21h1的电脑上截图的或使用版本较新的Linux安装好docker和docker compose为什么使用沙箱为了数据的绝对安全使用沙箱docker后有如下好处hermes只能读取你挂载在沙箱的目录而且你可以设置只读权限可以控制hermes执行代码时的CPU、内存占用等可以控制是否让沙箱访问网络1 Windows 10系统安装docker destop1.1 安装 WSL2离线启用 WSL离线使用 dism无需联网注意必须使用系统自带PowerShell否则无法成功运行如下命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart或在控制面板win10下开始-运行-输入control回车进入控制面板找到程序-启用或关闭windows功能勾选适用于Linux的Windows子系统)安装WSL完整应用wsl.2.7.11.0.x64.msi安装WSL内核更新wsl_update_x64.msi完成后重启电脑1.2 安装docker destop运行【Docker Desktop Installer.exe】并安装注意有一个WSL的选项一定要选这个另外如果有下图2个选项的选All-users installation (Requires password)只有这个能用WSL2安装完成后关闭自动更新避免弹窗报错docker destop上方齿轮按钮Settings→ Software updates → 取消勾选所有选项1.3 WSL2 离线环境进阶配置可选配置 WSL2 使用固定内存避免 Windows 内存暴涨在 Windows 用户目录创建 C:\Users用户名.wslconfig[wsl2] memory8GB # 根据你的机器调整 processors4 swap2GB localhostForwardingtrue1.4 安装Windows Terminal可选解决界面不好看的问题解决win10自带powershell界面难看 无法正常显示hermes界面和交互的问题解压缩Microsoft.WindowsTerminal_1.24.11911.0_8wekyb3d8bbwe.msixbundle_Windows10_PreinstallKit.zip运行系统自带的PowershellAdd-AppPackage ./Microsoft.UI.Xaml.2.8_8.2501.31001.0_x64__8wekyb3d8bbwe.appx #根据硬件选择x86 x64 arm arm64 Add-AppPackage ./311980e3610042a2bcbd9da24ad6680a.msixbundle2 导入docker镜像资源管理器进入部署包的docker-images目录空白处右键-【在终端打开】#导入新版镜像 docker load -i hermes-agent-v0.20-20260810.tar #删除旧版镜像(如果有) docker rmi -f nousresearch/hermes-agent:latest #将0.20版的镜像标记为最新 docker tag nousresearch/hermes-agent:v0.20 nousresearch/hermes-agent:latest #导入沙箱镜像 docker load -i hermes-sandbox-python312-20260810v2.tar3首次配置向导准备数据文件夹创建hermes数据目录比如D:\AI_Agent\hermes\hermes-data进入首次配置返回上级目录【D:\AI_Agent\hermes】空白处右键-【在终端打开】运行如下命令hermes并进行初次配置Windows Powershell命令如下docker run -it --rm -v ./hermes-data:/opt/data -v /var/run/docker.sock:/var/run/docker.sock nousresearch/hermes-agent:latest setupLinux命令如下docker run -it --rm \ -v ./hermes-data:/opt/data \ -v /var/run/docker.sock:/var/run/docker.sock\ nousresearch/hermes-agent:latest setup模型配置启动后hermes询问如何进行配置使用上下方向键选择第2项(○) Full setup — configure every provider, tool option yourself (bring your own keys)回车hermes询问模型提供商选择自定义(○) custom (direct API)位置比较靠下多按↓选中后回车输入你模型的API URL回车注意要有最后的v1比如我的是http://172.16.6.224:8001/v1输入你的API KEY如果启动模型的时候配置有或者模型平台给出了APIKEY没有则保持为空选择模型兼容模式我们选第一个自动输入1并回车模型多的话hermes会列出模型清单输入你要使用的模型序号并回车hermes询问是否确认配置输入y回车API mode: auto-detect Detected model: Qwen3.6-27B-TS Use this model? [Y/n]: yhermes询问你的模型token长度直接回车自动检测输入一个模型名称hermes将在前端显示这个模型名称我这里是Qwen3.6-27B-TS沙箱配置上一步完成后进入沙箱配置环节为了确保hermes运行命令和代码时不会损坏系统和我们自己的文件需要给hermes配置一个沙箱1. hermes询问终端后端采用哪种模式我们选择第2个DockerSelect terminal backend: ↑↓ navigate ENTER/SPACE select ESC cancel (○) Local - run directly on this machine (default) → (○) Docker - isolated container with configurable resources (○) Modal - serverless cloud sandbox (○) SSH - run on a remote machine (○) Daytona - persistent cloud development environment (○) Singularity/Apptainer - HPC-friendly container (●) Keep current (local)2. 是否允许沙箱访问外网我这里选择是输入y回车配置消息推送内网环境不需要我们按esc退出Select platforms to configure: ↑↓ navigate SPACE toggle ENTER confirm ESC cancel → [ ] Mattermost (not configured) [ ] Signal (not configured) [ ] Weixin / WeChat (not configured) [ ] BlueBubbles (iMessage) (not configured) [ ] QQ Bot (not configured) [ ] Yuanbao (not configured) [ ] Buzz (not configured) [ ] DingTalk (not configured) [ ] Discord (not configured) [ ] Email (not configured) [ ] Feishu / Lark (not configured)配置Tools保持默认后面有需要了再来改直接escTools for ️ CLI ↑↓ navigate SPACE toggle ENTER confirm ESC cancel → [✓] Web Search Scraping (web_search, web_extract) [✓] Browser Automation (navigate, click, type, scroll) [✓] Terminal Processes (terminal, process) [✓] File Operations (read, write, patch, search) [✓] ⚡ Code Execution (execute_code) [✓] ️ Vision / Image Analysis (vision_analyze) [ ] Video Analysis (video_analyze (requires video-capable model)) [✓] Image Generation (image_generate) [ ] Video Generation (video_generate (text/image/reference)) [ ] X (Twitter) Search (x_search (requires xAI OAuth or XAI_API_KEY)) [✓] Text-to-Speech (text_to_speech) [✓] Skills (list, view, manage) [✓] Task Planning (todo) [✓] Memory (persistent memory across sessions) [ ] Context Engine (runtime tools from the active context engine) [✓] Session Search (search past conversations) [✓] ❓ Clarifying Questions (clarify) [✓] Task Delegation (delegate_task) [✓] ⏰ Cron Jobs (create/list/update/pause/resume/run, with optional attached skills) [ ] Home Assistant (smart home device control) [no API key] [ ] Spotify (playback, search, playlists, library) [ ] Yuanbao (group info, member queries, DM) [✓] ️ Computer Use (macOS/Windows/Linux) (background desktop control via cua-driver)配置浏览器让hermes能够访问网页默认第一个直接回车Choose a provider: ↑↓ navigate ENTER/SPACE select ESC cancel → (●) Local Browser [★ recommended · free] — Headless Chromium, no API key needed (○) Nous Subscription (Browser Use cloud) [subscription] — Managed Browser Use billed to your subscription ★ via No (○) Camofox [free · local] — Anti-detection browser (Firefox/Camoufox) (○) Browser Use [paid] — Cloud browser with remote execution (○) Browserbase [paid] — Cloud browser with stealth and proxies (○) Firecrawl [paid] — Cloud browser with remote execution (○) Skip — keep defaults / configure later配置图像生成服务提供商Choose a provider: ↑↓ navigate ENTER/SPACE select ESC cancel (●) Nous Subscription [subscription] — Managed FAL image generation billed to your subscription ★ via Nous Portal ( (○) DeepInfra [paid] — FLUX, Qwen-Image, … — live catalog from api.deepinfra.com (○) FAL.ai [paid] — Pick from flux-2-klein, flux-2-pro, gpt-image, nano-banana, etc. — text-to-image image editing (○) Krea [paid] — Krea 2 foundation model — Medium ($0.03), Large ($0.06), Medium Turbo ($0.015). Style transfer, mo (○) Nous Portal (image) [subscription] — Reference-grounded image generation via Nous Portal (OpenRouter-backed) (○) OpenAI [paid] — gpt-image-2 at low/medium/high quality tiers — text-to-image image editing (○) OpenAI (Codex auth) [free] — gpt-image-2 via ChatGPT/Codex OAuth — no API key required; supports text and image (○) OpenRouter (image) [paid] — Gemini Flash Image more via OpenRouter; uses OPENROUTER_API_KEY (○) xAI Grok Imagine (image) [paid] — grok-imagine-image - text-to-image image editing; uses xAI Grok OAuth or XA → (○) Skip — keep defaults / configure later配置tts提供商文字转语音跳过同上Choose a provider: ↑↓ navigate ENTER/SPACE select ESC cancel (●) Microsoft Edge TTS [★ recommended · free] — Good quality, no API key needed [active] (○) Nous Subscription [subscription] — Managed OpenAI TTS billed to your subscription ★ via Nous Portal (login on s (○) OpenAI TTS [paid] — High quality voices (○) xAI TTS — Grok voices — uses xAI Grok OAuth or XAI_API_KEY (○) ElevenLabs [paid] — Most natural voices (○) Mistral (Voxtral TTS) [paid] — Multilingual, native Opus (○) Google Gemini TTS [preview] — 30 prebuilt voices, controllable via prompts (○) KittenTTS [local · free] — Lightweight local ONNX TTS (~25MB), no API key (○) Piper [local · free] — Local neural TTS, 44 languages (voices ~20-90MB) (○) DeepInfra TTS [paid] — Chatterbox, Qwen3-TTS, … — live catalog from api.deepinfra.com → (○) Skip — keep defaults / configure later配置搜索提供商跳过同上Select Search Provider: ↑↓ navigate ENTER/SPACE select ESC cancel (●) Nous Subscription [subscription] — Managed Firecrawl billed to your subscription ★ via Nous Portal (login on se (○) Firecrawl Self-Hosted [free · self-hosted] — Run your own Firecrawl instance (Docker) (○) Brave Search (Free) [free] — Free-tier API key — 2k queries/mo, search only. (○) DuckDuckGo (ddgs) [free · no key · search only] — Search via the ddgs Python package — no API key (pair with an(○) Exa [paid] — Semantic neural web search with content extraction. (○) Firecrawl [paid · optional gateway] — Full search extract; supports direct API and Nous tool-gateway routing. (○) Parallel [paid] — Objective-tuned search parallel page extraction. (○) SearXNG [free · self-hosted] — Free, privacy-respecting metasearch. Point SEARXNG_URL at your instance. (○) Tavily [paid] — Search extract in one provider. (○) xAI Web Search (Grok) [paid] — Agentic web search via Groks web_search tool — uses xAI Grok OAuth or XAI_API_ → (○) Skip — keep defaults / configure later配置向导结束完成上述配置后配置向导结束docker自动关闭命令行返回工作目录配置hemers使用沙箱重点敲黑板1. 修改hemers-data\config.yaml找到terminal部分增加如下内容terminal: backend: docker modal_mode: auto cwd: . timeout: 180 docker_image: hermes-sandbox-python312:20260731v1 #关键1指定沙箱镜像 network: none # 禁止网络访问 docker_mount_cwd_to_workspace: false # 将启动目录挂载到 /workspace docker_forward_env: # 透传进容器的环境变量 - GITHUB_TOKEN docker_volumes: # 关键2挂载主机目录 - D:\AI_Agent\hermes\hermes-data\home:/opt/data/home #允许hermes往这个目录写入生成的word、PPT等都保存到这里 - D:\AI_Agent\hermes\hermes-data:/opt/data:ro # :ro 表示只读 # 资源限制 container_cpu: 0 # CPU 核数0 不限 container_memory: 5120 # 内存 / 磁盘大小单位 MB0 不限 container_disk: 51200 # 磁盘大小单位 MB需要 overlay2 XFSpquota container_persistent: false # 关键3禁用在会话间持久化 /workspace 和 /rootwindows下存在问题注意敲黑板如果container_persistent设置为trueHermes agent会自动把一个可写入的目录挂载到/workspace但是用的是Linux路径Windows 下使用Docker desktop会导致这个目录挂载有问题你永远无法找到hermes创建的文件因此需要按上述方法进行挂载后面你可以告诉hermes——“请你记住你创建的文件都保存到/opt/data/home只有这个目录是可写入的”。这样hermes产生的文件就会都保存在D:\AI_Agent\hermes\hermes-data\home参考配置 | Hermes Agent 中文社区2. 禁用代理否则hermes尝试联网运行沙箱修改上述hemers-data\config.yaml找到proxy部分修改如下proxy: enabled: false修复【Auxiliary title generation failed: Request timed out.】报错这个报错不影响使用是hermes默认配置下使用外网模型生成对话标题然而我们无法访问外网导致的解决办法修改上述hemers-data\config.yaml找到auxiliary部分并按照如下进行修改如果没有直接增加如下内容auxiliary: title_generation: provider: custom #对应我们使用自定义模型 model: custom/Qwen3.6-27B-TS #【/】后面是模型名称对应前面配置的模型名称4运行使用命令行模式运行hermesLinux命令如下docker run -it --rm \ -v ./hermes-data:/opt/data \ -v /var/run/docker.sock:/var/run/docker.sock \ nousresearch/hermes-agent:latest --tui # 【--tui】可加可不加不加是CLI界面加上是TUI界面更好看有菜单功能交互性更好Windows Powershell 7命令如下docker run -it --rm -v ${PWD}/hermes-data:/opt/data -v /var/run/docker.sock:/var/run/docker.sock nousresearch/hermes-agent:latest --tui # 【--tui】可加可不加不加是CLI界面加上是TUI界面更好看有菜单功能交互性更好测试先在docker destop中删除已经运行的沙箱docker注意不是删除镜像等hermes启动完成后输入【请检查沙箱中安装了哪些python包】hermes将开始启动沙箱并运行命令可以观察到docker desktop中启动了hermes-sandbox容器命令执行完后hermes会回复沙箱中的python包清单检查是否有pandas python-docx python-pptx等有的话说明正确让hermes记住文件存放在哪里输入【请你记住所有使用沙箱生成的文件要保存到沙箱的/workspace目录下这个目录对应你的/opt/data/home】并回车hermes自动记住这个要求进化可以开始愉快的与hermes对话了可以让他生成word、docx运行python进行数据处理生成数据图表等~退出在hermes界面按下ctrlc即可5桌面端使用启动Hermes gateway和dashboard服务先ctrlc退出前面打开的hermes终端然后如下操作1. 创建docker-compose.yaml到hermes目录【我的是D:\AI_Agent\hermes\docker-compose.yaml】内容如下version: 3.8 services: hermes-agent: image: nousresearch/hermes-agent:latest container_name: hermes # 服务端常驻运行除非手动停止否则自动重启 restart: unless-stopped # 启动命令运行 gateway 服务 command: [gateway, run] # 端口映射 ports: - 8642:8642 # Gateway API 端口 - 9119:9119 # Dashboard 面板端口仅在 HERMES_DASHBOARD1 时生效 # 数据卷挂载 volumes: # Hermes 数据持久化目录相对路径会映射到 compose 文件所在目录 - ./hermes-data:/opt/data # Docker Socket 挂载允许容器内调用宿主机的 Docker 服务 # 这是 Hermes Agent 管理其他容器所必需的 - /var/run/docker.sock:/var/run/docker.sock # 环境变量配置 environment: # 仪表板配置 # 启用 Web 仪表板 - HERMES_DASHBOARD1 # 仪表板基础认证用户名 - HERMES_DASHBOARD_BASIC_AUTH_USERNAME你的用户名 # 仪表板基础认证密码生产环境建议改用 secrets 或外部配置 - HERMES_DASHBOARD_BASIC_AUTH_PASSWORD你的密码 # 仪表板基础认证密钥用于加密会话等 - HERMES_DASHBOARD_BASIC_AUTH_SECRET32位随机字符串 # 语音配置 # 禁用语音功能 - HERMES_VOICE_ENABLEDfalse # 本地语音转文字命令留空表示不使用 - HERMES_LOCAL_STT_COMMAND # 可选API 密钥取消注释以直接注入或改用 .env 文件 # - ANTHROPIC_API_KEY${ANTHROPIC_API_KEY} # - OPENAI_API_KEY${OPENAI_API_KEY} # - TELEGRAM_BOT_TOKEN${TELEGRAM_BOT_TOKEN} # 时区设置可选保持与宿主机一致 - TZAsia/Shanghai # 资源限制 deploy: resources: limits: memory: 4G cpus: 8.0 # 保留资源可选确保容器有足够资源运行 reservations: memory: 1G cpus: 1.0 # 日志配置防止日志文件无限增长 logging: driver: json-file options: max-size: 100m max-file: 5 # 网络配置可选使用独立网络隔离 # networks: # - hermes-network # 如需自定义网络取消下方注释 # networks: # hermes-network: # driver: bridge注意修改用户名、密码、密钥的配置 密钥可以使用docker run --rm --entrypointopenssl nousresearch/hermes-agent:latest rand -hex 32命令生成2. 如果你的数据目录不是hermes-data还要修改volumes部分与实际目录名称对应比如我的数据目录是【D:\AI_Agent\hermes\hermes-data】这部分的配置就是volumes: # Hermes 数据持久化目录相对路径会映射到 compose 文件所在目录 - ./hermes-data:/opt/data # Docker Socket 挂载允许容器内调用宿主机的 Docker 服务 # 这是 Hermes Agent 管理其他容器所必需的 - /var/run/docker.sock:/var/run/docker.sock3. 资源管理器进入hermes目录【D:\AI_Agent\hermes】空白处右键-【在终端打开】运行如下命令运行后hermes将在后台以服务的方式运行注意如果弹出防火墙提示需要允许后续服务端将常驻运行开机随docker desktop的启动自动运行除非手动停止docker compose up -dhermes服务手动停止部署无问题的话不需要资源管理器进入hermes目录【D:\AI_Agent\hermes】空白处右键-【在终端打开】运行如下命令docker compose down启动并配置中文社区版桌面端解压缩Hermes.Agent.CN.Desktop_0.7.0_x64-windows-portable.zip我是解压缩到了D:\AI_Agent\hermes运行里面的Hermes Agent CN Desktop.exe稍等片刻进入首次使用页面选择【已经有自己的Hermes内核】右侧的【连接自己的内核】进入下一个界面选择外部Hermes-远端服务器Hermes输入服务器地址http://localhost:9119下方出现登陆用户密码输入框输入前面配置的用户名和密码点击登录下方出现登录成功提示点击保存并连接远程即可点击左上方工作台出现外部Hermes Agent连接正常字样说明配置成功可以开始使用了补充为了让hermes更好地使用离线沙箱需要新建一个对话告诉她请你记住沙箱无外网所有可用软件工具在/opt/hermes/dependencies.md中列出。这个文件我预置到了我的沙箱中和她说一次即可她会记住这个要求。
返回列表