资讯动态

Hermes Agent 容器镜像瘦身与启动加速指南:体积减半、冷启动提速

发布时间:2026/8/28 11:15:00 来源:尧图企业网站定制
Hermes Agent 容器镜像瘦身与启动加速指南体积减半、冷启动提速【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent生产 VPS 上跑 Hermes Agent 的同事上个月遇到了一个典型问题镜像从 2 GB 悄悄涨到 5 GB一次例行更新拉取从几分钟变成四十分钟冷启动更糟容器起来了第一次进聊天页还要现场跑npm installagent 干等着任务延迟全记在账单上。这类问题很少是某一个大文件造成的而是镜像里每层都在悄悄叠加开发期产物。本文的思路是四步先分层诊断再裁剪依赖然后调整层的顺序让缓存真正生效最后把启动路径预热掉。做完后镜像体积通常能压到原来的 1/3 ~ 1/2冷启动从分钟级回到十秒以内。Hermes Agent 是 Nous Research 开源的自学习智能体它会从任务中沉淀技能、跨会话检索自己的历史对话通过 Docker 部署到 VPS 或集群再从 Telegram、Discord 等消息平台接入。它的镜像同时装着 Python venv、Node 依赖、前端产物、Chromium这类多运行时栈的镜像最容易膨胀也最容易优化出成果。诊断镜像分层看清体积从哪来为什么先诊断因为镜像是逐层堆出来的直接删东西很容易误伤。Hermes 的镜像里甚至有一个专门为 SQLite 单独立的阶段Debian 13 自带的 SQLite 3.46.1 存在上游 WAL 重置 bug官方源没有回移补丁所以单独编译一个带 FTS5 的共享库拷进运行时构建用的工具链和源码全部留在上一个阶段。不先看清每层是什么你根本不知道哪些能砍、哪些砍了会坏。怎么做拉下镜像后按层列大小docker history --no-trunc --format table {{.Size}}\t{{.CreatedBy}} image | head -20能拿到什么最大的一两块通常是.venv和node_modules第三块是 Playwright 的 Chromium。有了这张清单减到多少算合理才有判断依据依赖装不进更小的是正常的但开发工具链、测试目录、文档站点出现在运行镜像里就是该砍的对象。上图是 Hermes Agent 桌面端的会话界面左侧按来源Telegram、Discord、WebUI分组的历史会话都跑在同一个 agent 后端上——这类多运行时栈的镜像正是分层诊断最有价值的对象。裁剪依赖集合把开发期产物排除在运行时之外为什么会有浪费多运行时项目的依赖树往往按场景分组全量安装会把训练、基准测试、开发调试的包一起拖进来。怎么做Hermes 把依赖按 extra 分组构建镜像时只取手工挑选的生产集合外加网关消息适配和几个 provider SDK刻意不用--all-extrasuv sync --frozen --no-install-project \ --extra all --extra messaging --extra otlp --extra matrix被排除的[rl]extra 里是 torch、wandb 这类从 git 拉的重型包单是它们就能占几百 MB 到 1 GB 量级。代码侧同理项目根的.dockerignore把tests/、docs/、文档站点、桌面端源码、打包元数据全部挡在构建上下文外镜像里只剩运行必需的东西。能拿到什么通常省 20% ~ 40% 的镜像体积且不影响任何生产路径——被排除的 extra 只有对应场景才需要届时在卷上懒装即可。重排构建层让依赖缓存真正命中为什么缓存经常失效常见写法是把源码整个COPY . .之后再装依赖这样改一行代码就使依赖层失效CI 每次冷构建都重新下载、重新编译。怎么做把清单和源码拆到不同层且清单先于源码COPY pyproject.toml uv.lock package.json package-lock.json ./ RUN uv sync --frozen --no-install-project ... COPY --link --chmodarX,go-w . .这样只有清单或 lockfile 变化才重跑依赖安装纯源码提交直接命中缓存。Hermes 的 Dockerfile 里 Python 部分就是这种拆法注释里记录了代价拆分前依赖层排在COPY . .之后每次纯源码提交的冷构建要多花 4~5 分钟重复装依赖npm 一侧也是先只拷 manifest 再npm install最后才编前端。能拿到什么重复构建通常快一半以上而且构建时间稳定可预期——这对 CI 排队和资源占用是实打实的收益。预热启动路径别让容器启动时干构建期的活为什么冷启动慢因为镜像构建期没做完的事会在容器启动后补做现场npm install、懒装 SDK、首次编译。这些步骤既慢又容易失败并发进来时还会互相竞争。怎么做两条原则。第一能构建期做完的就构建期做完Hermes 把前端 TUI 在构建期编好运行时环境变量指向预编译 bundle直接跳过启动时npm install分支。第二运行时必须可写的部分放进挂载卷别放镜像层镜像层是只读的容器一重建卷之外的懒装产物就丢。Hermes 把代码目录密封为只读、数据目录挂卷懒装目标指向卷上可写目录并追加在sys.path末尾——只增模块、不覆盖核心包HERMES_LAZY_INSTALL_TARGET/opt/data/lazy-packages能拿到什么冷启动路径上的重活基本清零首次进 TUI、聊天页、启用某个搜索后端通常都是秒级就绪容器重建、镜像升级后懒装组件也不会再丢。这张是项目里用于界面填充的蓝色插画和 agent陪你成长的定位呼应——部署层做的事也是同一件事让运行时只保留成长需要的部分。用一套自检清单验收优化效果改完别只看体积数字按下面几项过一遍docker history --no-trunc image最大三层应是 venv、Chromium、Node 依赖不应再出现开发工具链、测试与文档目录。总体积对比优化前期望在 1/3 ~ 1/2 区间约 1~3 GB含 Playwright 时偏上限接近原生python:3.x基础镜像体积说明裁剪没生效。启动计时容器创建到 TUI/dashboard 可用期望十秒级首次进聊天页若触发npm install说明前端产物没在构建期编好。权限与数据面/opt/hermes对普通用户只读、/opt/data可写容器重建后懒装组件仍在。构建期自检SQLite 版本与 FTS5 的自检应在构建期通过运行时不再触发任何编译。这几项全部过掉说明诊断 → 裁剪 → 调层序 → 预热启动的闭环是有效的。这套思路不依赖 Hermes 的具体配置任何多运行时栈的 agent 镜像都可以照着落地——项目根目录的 Dockerfile 和 .dockerignore 就是完整的参考实现可以直接对照检查自己镜像里的每一层。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价