无网环境docker部署Hermes Agent笔记——上篇 筹划和准备
一、总体考虑
1.单位办公网络无互联网,但是有内网大模型,为了提高办公效率,只能部署Hermes Agent,为了部署方便,采用docker方式
2.办公电脑是win10,因此采用docker desktop
3.为了确保电脑数据的安全,需要让hermes生成的代码和命令在沙箱里运行
4.hermes agent要帮助我制作word、ppt、excel文档,我的word模板比较复杂,需要用python + docxtpl来按照模板生成word;我还从事数据分析工作,需要pandas、numpy、matplotlib等数据处理,sqlite、达梦数据库等数据库等python包,因此沙箱里需要有这些工具
二、前提条件
1. 硬件
- 必须支持CPU虚拟化
- 内存推荐8G以上:
- 实测hermes agent占用500M左右
- 沙箱占用不一定,根据你需要跑的代码确定,我这边主要测试了word文档生成,内存占用200M左右
2.Windows环境
因为我是docker desktop部署,对内网电脑有一定的版本要求:
- Windows 10版本需要22H2,build号19045及以上(下图为网上找的示意图)
- 或Windows 11
3. Linux环境
安装docker运行环境即可,别太老。
4.外网电脑
安装了docker环境。
三、所有资源准备
1.docker镜像
(1)hermes agent镜像
在外网电脑拉取hermes agent镜像,命令如下:
docker pull nousresearch/hermes-agent:latest如果网速慢,可以试试夜里拉取,我这边试过可以使用的国内源如下
"registry-mirrors": [ "https://docker.1ms.run", "https://hub.rat.dev", "https://docker.xuanyuan.run", "https://hub-mirror.c.163.com", "https://docker.xuanyuan.me", "https://docker.m.daocloud.io" ](2)沙箱镜像
前面说了,为了数据安全,要让所有hermes产生的程序代码在沙箱里运行,我选择自制沙箱镜像。借助AI分析了我的需求后,让AI给我生成了dockerfile和配套资源文件,已全部上传github,见
hermes-sandbox-offline
关于沙箱,我打算后面将再出一篇番外篇,这里面的坑很多,比如:
- 使用libreoffice在无图形环境的情况下处理wps文档报错
- pandoc版本太低缺少关键功能
- matplotlib设置中文字体后报错
沙箱主要工具
| 能力 | 工具/包 |
|---|---|
| PPT 文本提取 | markitdown[pptx] |
| PPT 生成(Python) | python-pptx |
| PPT 生成(JS) | pptxgenjs |
| Word 读写 | python-docx |
| Word 模板渲染(邮件合并/合同) | docxtpl |
| Excel 读写 | openpyxl,xlsxwriter,python-calamine |
| PDF 转换 | soffice,pdftoppm |
| PDF 文本/表格提取 | PyMuPDF,pdfplumber |
| OCR | tesseract-ocr,pytesseract |
| 数据处理 | pandas,numpy,scipy |
| 可视化 | matplotlib,seaborn,plotly,kaleido |
| 流程图/架构图 | graphviz,diagrams,networkx |
| 思维导图 | xmind,xmindparser |
| 数据库(通用) | psycopg2,pymongo,redis,sqlalchemy,pymysql |
| 数据库(国产) | sqlcipher3(微信/钉钉),oracledb,dmPython |
| 文档转换 | pandoc,pypandoc |
| 游戏/多媒体引擎 | pygame |
沙箱构建
在外网电脑上下载我的github项目文件后,在项目目录中运行命令,沙箱名称为hermes-sandbox-python312:20260812v2
docker build -t hermes-sandbox-python312:20260812v2 -f dockerfile .(3)镜像导出为文件
将上述两个docker镜像保存到文件,命令如下
docker save -o hermes-agent.tar.gz nousresearch/hermes-agent:latest docker save -o hermes-sandbox-offline.tar.gz hermes-sandbox-python312:20260812v2得到的hermes-agent.tar.gz、hermes-sandbox-offline.tar.gz这2个文件就是hermes-agent和沙箱的镜像文件,保存好,后面要拷贝到内网电脑。
2.Windows环境
Windows环境需要配置docker desktop,同时win10自带powershell版本太低,很多新语法不支持,需要升级;另外win10自带终端很难看,很多hermes的动态交互无法显示,需要安装Windows Terminal,因此所有需要的依赖如下:
- Docker Desktop Installer.exe : docker desktop软件,下载地址:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-win-amd64&_gl=1*1hljygt*_gcl_au*ODUxMjYzMzM1LjE3ODUyMTk3MjM.*_ga*MTM4MjgxOTgwMS4xNzg1MjE5NzIz*_ga_XJWPQMJYHQ*czE3ODY3NzMwMDYkbzIkZzEkdDE3ODY3NzMwNTMkajEzJGwwJGgw
- PowerShell-7.6.4-win-x64.msi :PowerShell 7,github下载 https://github.com/PowerShell/PowerShell/releases/download/v7.6.4/PowerShell-7.6.4-win-x64.msi
- Microsoft.WindowsTerminal_1.24.11911.0_8wekyb3d8bbwe.msixbundle_Windows10_PreinstallKit.zip :Windows Terminal,github下载https://github.com/microsoft/terminal/releases/download/v1.24.11911.0/Microsoft.WindowsTerminal_1.24.11911.0_8wekyb3d8bbwe.msixbundle_Windows10_PreinstallKit.zip
- wsl.2.7.11.0.x64.msi :WSL(Windows子系统Linux,支撑docker desktop运行的),github下载https://github.com/microsoft/WSL/releases/download/2.7.11/wsl.2.7.11.0.x64.msi
- wsl_update_x64.msi :WSL内核更新,下载地址官方链接:https://aka.ms/wsl2kernel
- docker镜像:前面打包好的hermes-agent.tar.gz、hermes-sandbox-offline.tar.gz
docker运行的hermes agent默认是在终端里的命令行界面,如果需要桌面端,还需要如下资源:
- Hermes.Agent.CN.Desktop_0.7.0_x64-windows-portable.zip : 中文社区版hermes agent桌面APP,下载地址Hermes Agent 桌面版下载|中文社区
- MicrosoftEdgeWebView2RuntimeInstallerX64.exe : 桌面版APP需要的WebView组件,下载地址Microsoft Edge WebView2 | Microsoft Edge Developer,注意下载“常青独立安装程序”
Windows10环境总资源约3.28GB(含桌面端APP)
3. Linux环境
- docker所需相关软件包,都使用linux了,自行准备离线apt/yum包吧
- 前面打包的hermes-agent.tar.gz、hermes-sandbox-offline.tar.gz
4. 其他
如果你使用我的沙箱,需要同时下载我提供的wps-office-formats SKILL,否则沙箱可能无法读写WPS文档。SKILL文件在我沙箱github的同名文件夹里:
四、资源导入内网电脑
通过光盘、U盘等方式把上述资源导入到内网电脑。
下篇我将介绍如何在内网电脑上离线部署Hermes Agent并配置沙箱。
另外昨天(2026年8月14日)我已经实现了使用docxtpl按照复杂文档模板生成制式word文档,并制作成了SKILL,后面也打算写一篇笔记详细说说里面的坑。
