ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Oracle Cloud免费ARM实例部署Hermes AI代理:打造7×24小时私人助手

2026/10/7 7:31:44 拓冰建站 浏览量
Oracle Cloud免费ARM实例部署Hermes AI代理:打造7×24小时私人助手 1. 为什么我盯上了这台闲置的 Oracle Cloud 免费机器手里有一台 Oracle Cloud 的免费 ARM 实例4 核 24G 内存跑了大半年除了偶尔当个测试跳板大部分时间 CPU 占用率都在 3% 以下。这种资源浪费对于一个折腾惯了的人来说心里总是不太舒服。直到我把 Hermes 部署上去这台机器才算真正活了过来——它变成了一个 7×24 小时在线的 AI 助手随时能接我的指令帮我处理各种零碎任务。Hermes 这个项目简单说就是一个开源的 AI 代理框架你可以把它理解成一个“能自己动手做事”的智能体。它不只是聊天还能调用工具、执行命令、读写文件、访问网络甚至能根据你的自然语言指令拆解出多步操作然后一步步完成。跟那些只能对话的模型不同Hermes 的核心价值在于“代理”两个字——它能真正帮你干活。适合谁来参考如果你手里有闲置的云服务器又对 AI 代理、自动化任务感兴趣想搞一个属于自己的私人助手那这套方案基本可以直接抄作业。我选择 Oracle Cloud 免费层的原因很直接ARM 架构的 Ampere A1 实例给到 4 核 24G这个配置在免费额度里算是相当慷慨了。跑一个 Hermes 加上本地的小模型或者对接远程 API资源绰绰有余。而且 Oracle 的免费实例只要你不主动删除理论上可以一直用下去这对需要长期在线的 AI 助手来说非常关键。当然前提是你得能注册成功并且开出机器这个后面我会细说。部署之前我也对比过几个方案。用本地电脑跑关机就没了做不到 7×24。用付费 VPS一个月几十块虽然不多但能白嫖为什么要花钱。用其他免费平台要么配置太低要么限制太多跑个代理框架动不动就超资源。综合下来Oracle Cloud 免费 ARM 实例在性能、稳定性、成本这三个维度上达到了一个很舒服的平衡点。2. 部署前的环境准备与关键决策2.1 实例规格选择与系统盘规划Oracle Cloud 免费层提供两种实例类型AMD 的 x86 实例和 ARM 的 Ampere A1 实例。AMD 免费额度是 1 核 1G 内存跑个轻量服务还行但 Hermes 加上依赖和可能的本地模型1G 内存基本不够看。ARM 实例则给到每月 3000 OCPU 小时和 18000 GB 小时的内存额度折算下来可以开一台 4 核 24G 的机器全天运行这才是正确的选择。系统盘方面免费额度包含 200GB 的块存储总量我分配了 100GB 给系统盘剩下 100GB 留着备用。操作系统我选了 Ubuntu 22.04 LTS原因有三一是 ARM 架构下 Ubuntu 的软件源支持最完善二是 Hermes 的很多依赖在 Ubuntu 上安装最省心三是社区文档丰富遇到问题容易搜到解决方案。如果你更熟悉 Debian 或者 Oracle Linux也可以但 Ubuntu 是我实测下来坑最少的。注意创建实例时一定要保存好 SSH 私钥Oracle Cloud 不会让你二次下载。另外ARM 实例在某些区域经常显示“容量不足”需要多试几次或者换个可用性域。2.2 网络与安全组配置要点Oracle Cloud 的网络配置有两层一层是 VCN 的安全列表一层是实例内部的防火墙。很多人部署完发现外部访问不了八成是这两层里有一层没放行。我的做法是先在 VCN 的安全列表里添加入站规则放行 Hermes 默认的监听端口比如 8080 或者你自定义的端口。协议选 TCP源 CIDR 填 0.0.0.0/0 表示允许所有来源如果你有固定 IP 可以收紧一些。实例内部的防火墙Ubuntu 默认用的是 iptables而且 Oracle 的镜像还额外加了一层 netfilter 规则。我踩过的坑是明明安全列表放行了系统里 ufw 也关了但外部就是连不上。后来发现是 Oracle 镜像自带的 iptables 规则在作怪。解决办法是直接编辑 /etc/iptables/rules.v4在 INPUT 链里加上放行规则然后重启 iptables 服务。或者更简单粗暴一点用 iptables -F 清空规则再重新配置但这样重启后会失效需要配合 netfilter-persistent save 来持久化。2.3 依赖环境安装清单Hermes 的运行依赖不算复杂但有几个关键组件必须提前装好。我整理了一份清单按安装顺序排列Python 3.10Hermes 的核心运行环境Ubuntu 22.04 自带的是 3.10刚好满足要求。如果你用的是更老的系统需要手动升级。pip 和 venv用来管理 Python 依赖和虚拟环境强烈建议用 venv 隔离不要直接装在系统 Python 里。Git拉取 Hermes 源码用这个基本都自带。Node.js 18部分前端界面或者工具链需要如果你只用命令行模式可以跳过。Docker 和 Docker Compose可选但推荐用容器跑一些辅助服务会方便很多比如数据库或者缓存。构建工具build-essential、python3-dev 这些编译某些 Python 包时会用到。安装命令我直接列出来你可以复制执行sudo apt update sudo apt upgrade -y sudo apt install -y python3 python3-pip python3-venv git curl build-essential python3-dev libffi-dev libssl-devNode.js 如果需要的話用 NodeSource 的源装比较省事curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejsDocker 的安装稍微多几步但官方文档很全照着做就行。我建议把当前用户加入 docker 组省得每次都要 sudosudo usermod -aG docker $USER执行完记得重新登录一下让组权限生效。3. Hermes 核心部署流程拆解3.1 源码获取与虚拟环境初始化Hermes 的源码托管在 GitHub 上直接 clone 下来就行。我习惯把项目放在 /opt 目录下方便管理sudo mkdir -p /opt/hermes sudo chown $USER:$USER /opt/hermes git clone https://github.com/your-hermes-repo/hermes.git /opt/hermes cd /opt/hermes接下来创建虚拟环境并激活python3 -m venv venv source venv/bin/activate虚拟环境的好处是依赖隔离不会污染系统 Python也不会因为不同项目的依赖冲突搞得一团糟。激活后你的命令行提示符前面会出现 (venv) 字样说明已经进入虚拟环境了。安装依赖之前先升级一下 pip然后根据 requirements.txt 安装pip install --upgrade pip pip install -r requirements.txt这里有个细节ARM 架构下某些 Python 包可能没有预编译的 wheel需要从源码编译。编译过程可能会报错通常是缺少某个系统库。我的经验是遇到编译错误先看报错信息里提到的头文件或者库名然后用 apt search 找到对应的 -dev 包装上。比如 cryptography 这个包经常需要 libssl-dev 和 libffi-dev前面已经装了一般不会出问题。3.2 配置文件详解与参数调优Hermes 的配置文件通常是 config.yaml 或者 .env 格式具体看版本。我以 config.yaml 为例把关键参数拆开讲。首先是模型接入部分。Hermes 支持多种后端你可以对接远程 API也可以在本地跑小模型。考虑到 Oracle ARM 实例没有 GPU本地跑大模型不现实我选择对接远程 API。配置大概长这样model: provider: openai_compatible base_url: https://api.your-provider.com/v1 api_key: your-api-key-here model_name: your-model-name max_tokens: 4096 temperature: 0.7这里有几个参数需要根据你的实际服务调整。max_tokens 控制单次回复的最大长度4096 对于大多数任务够用了。temperature 控制随机性0.7 是一个比较平衡的值做代码生成或者严谨任务时可以调到 0.2 以下。然后是代理行为配置agent: max_iterations: 20 timeout: 300 tools: - shell - file - web working_dir: /opt/hermes/workspacemax_iterations 限制代理最多执行多少步防止它陷入死循环。timeout 是单次任务的超时时间单位秒。tools 列表决定启用哪些工具shell 允许执行命令file 允许读写文件web 允许访问网络。working_dir 是代理的工作目录所有文件操作默认在这个目录下进行这样能避免它误操作系统文件。提示api_key 不要直接写在配置文件里提交到 Git用环境变量注入更安全。可以在 .env 文件里写然后 .gitignore 掉。3.3 服务化运行与开机自启直接前台运行 Hermes 只能临时用SSH 一断就没了。要让它 7×24 在线必须做成系统服务。Ubuntu 下用 systemd 是最标准的做法。创建一个服务文件sudo nano /etc/systemd/system/hermes.service内容如下[Unit] DescriptionHermes AI Agent Service Afternetwork.target [Service] Typesimple Userubuntu WorkingDirectory/opt/hermes EnvironmentPATH/opt/hermes/venv/bin:/usr/local/bin:/usr/bin:/bin ExecStart/opt/hermes/venv/bin/python /opt/hermes/main.py Restartalways RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target几个关键点解释一下。User 填你的实际用户名我这里是 ubuntu。Environment 里把虚拟环境的 bin 目录加到 PATH 最前面这样 ExecStart 里可以直接用 python 而不用写全路径。Restartalways 保证进程崩溃后自动拉起RestartSec10 表示崩溃后等 10 秒再重启避免频繁重启拖垮系统。保存后执行sudo systemctl daemon-reload sudo systemctl enable hermes sudo systemctl start hermes查看状态sudo systemctl status hermes如果显示 active (running) 就说明跑起来了。看日志用sudo journalctl -u hermes -f-f 参数是实时跟踪方便调试。4. 让 AI 助手真正好用的几个关键配置4.1 工具权限的精细控制Hermes 的代理能力来自它能调用工具但工具权限给太大有安全风险给太小又干不了活。我的做法是按需开放逐步放宽。shell 工具是最危险的因为它能执行任意命令。我建议初期先限制在一个白名单里只允许特定的命令。Hermes 的配置里通常支持 command_whitelist 或者类似的选项tools: shell: enabled: true command_whitelist: - ls - cat - grep - find - curl - python timeout: 60这样代理只能执行白名单里的命令即使被恶意提示词攻击破坏力也有限。等你摸清它的行为模式后再逐步放开。file 工具也要限制目录。working_dir 设成 /opt/hermes/workspace代理就只能在这个目录下读写。千万不要设成 / 或者 /home否则它可能误删你的重要文件。我实测下来给一个独立的工作目录是最稳妥的。web 工具一般问题不大但要注意如果代理能访问网络它可能会被诱导去访问一些不该访问的地址。可以在配置里加一个域名黑名单或者白名单不过大多数场景下保持默认即可。4.2 记忆与上下文管理一个 7×24 在线的助手如果没有记忆能力每次对话都是从头开始体验会很差。Hermes 通常支持会话记忆和长期记忆两种机制。会话记忆是当前对话的上下文这个由模型本身处理你只需要控制上下文窗口大小。长期记忆则需要额外的存储常见方案是用向量数据库或者简单的 JSON 文件。我选择了一个轻量方案用 SQLite 存对话历史然后用一个简单的检索逻辑把相关历史注入到当前上下文中。配置大概是这样memory: enabled: true backend: sqlite db_path: /opt/hermes/data/memory.db max_history: 100 retrieval_count: 5max_history 控制保留多少条历史记录retrieval_count 是每次注入多少条相关历史。这个方案的好处是不依赖外部服务SQLite 单文件存储备份和迁移都方便。注意记忆数据里可能包含敏感信息如果这台机器多人使用记得加密存储或者定期清理。4.3 定时任务与主动触发7×24 在线的价值不只是被动响应还能主动干活。Hermes 一般支持定时任务或者 webhook 触发。我用的是 cron 加一个简单的 HTTP 接口。cron 适合固定时间的任务比如每天早上 8 点汇总一下昨天的新闻或者每小时检查一次某个服务的状态。在 crontab 里加一行0 8 * * * curl -X POST http://localhost:8080/task -d {prompt: 汇总今天的科技新闻, type: scheduled}这样每天 8 点 Hermes 就会收到一个任务指令自动执行。webhook 适合事件驱动的场景比如你的代码仓库有新的 commit或者监控系统报警了都可以通过 HTTP 请求触发 Hermes 去处理。Hermes 的 API 接口通常支持 POST 请求带上 prompt 和参数就行。我实际用下来定时任务最实用的几个场景是早报汇总、服务健康检查、日志异常分析、定时备份提醒。这些任务不需要你主动问它自己就干了这才是“助手”的感觉。5. 常见问题与排查技巧实录5.1 部署阶段高频问题速查问题现象可能原因排查方法解决方案外部无法访问服务安全列表或系统防火墙未放行检查 VCN 入站规则和 iptables两层都要放行对应端口pip 安装报编译错误缺少系统开发库看报错信息里的头文件名安装对应的 -dev 包服务启动后立即退出配置文件格式错误或依赖缺失journalctl 看详细日志根据报错逐项修复ARM 实例创建失败区域容量不足换可用性域或换区域多试几次或升级为付费账户模型 API 调用超时网络不通或 base_url 错误curl 测试 API 连通性检查网络和配置这个表是我踩坑后整理的基本上覆盖了 80% 的部署问题。遇到新问题先对照排查能省不少时间。5.2 运行阶段的稳定性调优服务跑起来之后稳定性是下一个要关注的点。我遇到过几次 Hermes 进程内存泄漏跑几天后内存占用从几百兆涨到几个 G最后被 OOM Killer 干掉。解决办法有两个一是设置 systemd 的内存限制超过就自动重启二是定期重启服务比如每天凌晨低峰期重启一次。systemd 的内存限制这样加[Service] MemoryMax4G MemoryHigh3GMemoryHigh 是软限制超过会开始回收MemoryMax 是硬限制超过直接杀进程。配合 Restartalways杀了之后会自动拉起来服务不会中断太久。另外日志也要管理。journalctl 默认会一直存时间长了占满磁盘。可以限制日志大小sudo journalctl --vacuum-size500M或者在 /etc/systemd/journald.conf 里设置 SystemMaxUse500M永久生效。5.3 安全加固的几条底线一台公网可访问的 AI 助手安全不能马虎。我总结了三条底线第一SSH 不要用密码登录只用密钥。Oracle Cloud 默认就是密钥登录但有些人为了方便会改回密码这是大忌。密码被爆破只是时间问题。第二Hermes 的 API 接口要加认证。如果它监听在公网任何人都能调用你的助手轻则浪费你的 API 额度重则被用来干坏事。最简单的做法是加一个 Bearer Token每次请求都要带上正确的 Token 才处理。第三定期更新系统和依赖。Ubuntu 的安全更新要及时打Python 包的漏洞也要关注。我一般每周跑一次 apt update apt upgradePython 包用 pip list --outdated 看看有没有需要升级的。提示如果 Hermes 只是自己用可以把监听地址改成 127.0.0.1然后通过 SSH 隧道访问这样最安全。需要公网访问时再开端口并且一定要加认证。6. 这套方案还能怎么扩展跑通基础部署之后我陆续加了一些扩展让这个助手更实用。一个是接入了本地文件索引把常用的文档、笔记目录挂载到 workspace 下Hermes 可以直接搜索和读取相当于一个私人知识库。另一个是加了语音输入输出用开源的语音识别和合成工具这样在外面用手机也能方便地给助手下指令。资源监控也值得做。我在 Hermes 里加了一个工具可以查询当前服务器的 CPU、内存、磁盘、网络状态然后让助手定期汇报。这样我不登录服务器也能知道它运行得怎么样。配合告警规则比如磁盘超过 80% 就发通知基本不用操心。如果你有多个服务或者多台机器还可以把 Hermes 当成一个统一的调度入口。它可以根据你的指令去操作其他服务比如重启某个容器、拉取某个仓库的更新、查询某个数据库的状态。这种“一个助手管所有”的体验用过就回不去了。我个人在实际操作中的体会是部署本身不难难的是调教。刚开始 Hermes 可能会做一些出乎意料的操作比如把文件删了、把服务停了。这时候不要急着放弃把它的行为日志仔细看一遍找到是哪个提示词或者哪个工具调用导致的然后针对性地加限制或者改配置。调教一两周之后它就会变得很顺手真正成为一个可靠的 7×24 助手。