一个人+一个AI Agent = 运维团队?我的真实体验报告
我把一个AI智能体部署到服务器上,给了它自主权。然后,它开始自己监控自己、自己修复问题、甚至自己给自己写定时任务。本文记录了这期间的真实经历、踩过的坑,以及我对AI Agent自主能力的思考。
前言
2026年,AI Agent(智能体)已经不再是PPT里的概念。从Cursor的多智能体协同到Anthropic的Computer Use,各家都在朝着"让AI真正干活"的方向狂奔。
但大多数文章都在讲概念和趋势,很少有人分享真实部署一个AI Agent并让它自主运行的完整体验。
这篇文章就是来填这个坑的。
我会分享:如何基于开源项目 Hermes 搭建一个能自主运维的 AI Agent,以及在这个过程中遇到的真实问题和解决方案。
一、我的起点:为什么需要一个"自治"的AI Agent?
作为一个开发者,我的日常痛点很典型:
- 服务器运维:有一台云服务器跑着各种服务,需要定期检查健康状态、安全漏洞
- 信息获取:每天要追踪技术动态、行业新闻
- 内容创作:想写技术博客但总是没时间
我想要一个AI助手,不只是能聊天那种,而是能真正在服务器上执行任务的——自动巡检、发现问题主动告警、甚至自己修复简单故障。
于是我找到了 Hermes——一个开源的AI Agent框架,支持连接多种LLM(大语言模型),具备终端执行、文件操作、定时任务等能力,还能通过飞书、Telegram等平台交互。
二、搭建过程:从零到自治
2.1 环境准备
我的服务器配置:
- 系统:Ubuntu 24.04 LTS(新加坡机房)
- 配置:2核4G 轻量云服务器
- 框架:Hermes Agent(Node.js)
部署过程非常简单:
# 克隆项目
git clone https://github.com/nicepkg/hermes-agent.git ~/.hermes/hermes-agent
cd ~/.hermes/hermes-agent
# 安装依赖
npm install
# 配置 LLM 和平台连接
cp config.example.yaml config.yaml
# 编辑 config.yaml,填入 API Key 和平台 Token
2.2 核心配置
Hermes 的配置文件 config.yaml 是整个 Agent 的"大脑",主要配置项包括:
# 大模型配置(支持多provider切换)
llm:
provider: openai # 支持 openai, anthropic, openrouter 等
model: gpt-4o
apiKey: sk-xxx
# 平台接入(以飞书为例)
feishu:
appId: cli_xxxxx
appSecret: xxxxx
# 长连接模式,无需公网回调地址
# 工具权限
tools:
terminal: true # 允许执行Shell命令
file: true # 允许文件读写
web: true # 允许联网搜索
cronjob: true # 允许创建定时任务
💡 一个关键决策:飞书接入选择了长连接(WebSocket)模式而非传统的Webhook回调。这意味着不需要公网IP或域名,服务器只需要能出站访问即可,大大简化了部署。
2.3 赋予Agent"自主权"
这是最有趣的部分。传统AI助手是被动的——你问它才答。但我希望这个Agent能主动工作。
Hermes 提供了 Cron Job(定时任务) 能力,可以让Agent按计划自动执行任务。我给它设定了几个"岗位职责":
| 职责 | 频率 | 说明 |
|---|---|---|
| 系统健康巡检 | 每30分钟 | 检查CPU、内存、磁盘、网络 |
| 安全扫描 | 每10分钟 | 检查异常登录、可疑进程、端口变更 |
| 服务存活监控 | 每15分钟 | 检查关键服务是否正常运行 |
| 每日早报 | 每天早上8点 | 汇总系统状态、技术新闻 |
| 自动更新 | 每天凌晨3点 | 系统安全更新、Hermes自身更新 |
每个任务都是一个Shell脚本,Agent会自动执行并将结果推送到飞书。如果发现异常,会立即告警。
三、真实运行:它真的能自己管自己吗?
3.1 让人心安的"日常巡检"
这是系统健康巡检脚本的核心逻辑:
#!/bin/bash
# 系统健康检查脚本
# CPU使用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
# 内存使用率
MEM_USAGE=$(free -m | awk 'NR==2{printf "%.0f", $3*100/$2}')
# 磁盘使用率
DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | tr -d '%')
# 判断是否异常
if [ "$CPU_USAGE" -gt 80 ] || [ "$MEM_USAGE" -gt 85 ] || [ "$DISK_USAGE" -gt 90 ]; then
echo "⚠️ 系统资源异常!CPU: ${CPU_USAGE}%, MEM: ${MEM_USAGE}%, DISK: ${DISK_USAGE}%"
else
echo "[SILENT] 系统正常运行 CPU:${CPU_USAGE}% MEM:${MEM_USAGE}% DISK:${DISK_USAGE}%"
fi
🔑 设计细节:正常情况输出
[SILENT]前缀,Agent会静默处理不推送通知。只有异常时才会告警到飞书。这样避免了"告警疲劳"——你不会希望每30分钟收到一条"一切正常"的消息。
3.2 安全巡检:比我自己做的更仔细
安全巡检脚本会检查:
- 异常登录:分析
/var/log/auth.log,检测暴力破解尝试 - 可疑进程:检查是否有未知的高CPU/内存进程
- 端口变更:对比当前开放端口与基线是否一致
- 防火墙状态:确认UFW是否启用,规则是否完整
# 检查异常登录(最近10分钟超过5次失败)
FAIL_COUNT=$(journalctl -u sshd --since "10 min ago" 2>/dev/null | grep -c "Failed password")
if [ "$FAIL_COUNT" -gt 5 ]; then
echo "🚨 SSH暴力破解告警!最近10分钟失败 ${FAIL_COUNT} 次"
# 自动封禁IP
ATTACKER_IP=$(journalctl -u sshd --since "10 min ago" | grep "Failed password" | \
grep -oP 'from \K[0-9.]+' | sort | uniq -c | sort -rn | head -1 | awk '{print $2}')
echo " 攻击来源IP: ${ATTACKER_IP}"
fi
3.3 防火墙加固
在Agent的建议下,我配置了UFW防火墙:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP(Web Dashboard)
sudo ufw enable
只开放了必要的22和80端口,其余全部拒绝。这一步手动做很容易遗漏,但Agent会系统性地帮你梳理。
四、踩坑记录:理想与现实的差距
说实话,过程并不一帆风顺。以下是真实遇到的问题:
坑1:终端TTY问题
Web控制台(浏览器终端)不支持TTY,导致某些交互式命令无法运行:
Error: stdin.isTTY is false, TUI mode requires an interactive terminal
解决方案:Web Dashboard是更好的管理界面,终端操作尽量使用SSH客户端。
坑2:定时任务不执行
设置好Cron Job后发现没有按时运行。
原因排查:
- 检查Agent进程是否存活:
systemctl status hermes - 检查Cron日志:在Agent中使用
cronjob list查看 - 检查脚本权限:
chmod +x ~/.hermes/scripts/*.sh
根因:脚本缺少执行权限。chmod +x 之后恢复正常。
坑3:内存占用偏高
4G内存的服务器跑Hermes + 多个Cron任务,偶尔会出现内存压力。
优化方案:
- 减少并发Cron任务数量,错开执行时间
- 脚本中避免使用重量级命令(如
apt update改用更轻量的检查方式) - 设置swap分区作为缓冲
五、效果评估:值不值得?
部署运行一个月后的真实感受:
✅ 收获
- 运维效率提升巨大:以前手动检查的事,现在全自动。系统异常时飞书秒级告警。
- 安全感提升:安全巡检每10分钟跑一次,比我自己偶尔看一眼强太多。
- 每日早报:每天早上8点收到系统状态和技术新闻摘要,省去了30分钟的信息浏览时间。
- 学习能力:和Agent的对话过程中,经常学到新的Linux命令和运维技巧。
⚠️ 局限
- 成本:LLM API调用有费用,多频次Cron任务会产生持续开销。
- 可靠性:Agent偶尔会出现理解偏差,需要人工纠正。
- 安全性:给了Agent终端执行权限,必须严格控制敏感操作。
六、给想尝试的同学的建议
如果你也想搭建一个类似的自治AI Agent,我的建议是:
- 从小开始:先让它做最简单的事(比如每日系统报告),验证稳定后再加任务。
- 分权管理:不是所有操作都该给Agent权限。危险操作(如删除文件、重启服务)需要人工确认。
- 日志为王:详细记录Agent的每一次操作,出了问题才能追溯。
- 设置预算:LLM调用是按token计费的,一定要设置预算上限,防止Agent"失控消费"。
- 告警分级:正常静默、异常告警、严重直接通知——三级策略避免信息过载。
写在最后
回到标题的问题:一个人+一个AI Agent = 运维团队?
答案是:基本够用,但不能完全替代。
对于个人开发者的日常运维需求,AI Agent已经能承担80%以上的工作量。它能做监控、能告警、能自动修复简单问题、能定期巡检。剩下20%需要人类判断的复杂场景,它会主动求助。
这不是未来,这是现在。如果你有一台服务器,强烈建议试试。
作者:武雄 | 一个正在探索AI Agent实战应用的开发者
技术栈:Hermes Agent + 飞书 + Ubuntu 24.04
如果觉得有帮助,欢迎点赞收藏👍 你的支持是我持续分享的动力!