AI Agent 远程运维卡住怎么办?排查迭代预算耗尽问题

用 AI Agent 做远程服务器运维很方便,但有个头疼的问题:干到一半它卡住了,然后一直重复"我已经总结了前面的工作,请继续告诉我下一步",怎么推都没用。

查了一晚上日志,终于找到根因。记录一下排查过程和解决方案。

现象

Agent 在执行远程服务器操作时,日志反复出现:

⚠️ Reached maximum iterations (60). Requesting summary...
iteration budget exhausted (60/60)

然后 Agent 总结一下前面做了什么,停下来等你回复。你发"继续",它又执行几下,然后又卡住。一个简单的 SSH + sudo 操作能循环好几个小时。

根因分析

问题分三层。

第一层:迭代预算不够

Agent 每轮对话最多调用 60 次工具。听起来不少,但实际远程运维中消耗很快:

  • 每次 sshpass ssh 连接服务器 = 1 次工具调用
  • 执行 sudo 命令 = 如果 sudo 弹交互提示,再重试 = 2-3 次
  • execute_code 里套 terminal() 调用 = 嵌套引号容易写错,每次语法错误浪费 3-5 次
  • 修改 skill 和 memory 的错误重试 = 2-3 次

60 次看起来多,实际上一轮复杂操作几下就用完了。

第二层:sudo 交互提示阻塞

在 SSH 远程执行命令时,如果遇到 sudo 需要密码,在不带 PTY 的模式下会静默失败或返回空结果。Agent 不知道发生了什么,会尝试换种方式重新执行,又消耗几次调用——然后又失败,形成死循环。

sudo: a terminal is required to read the password

第三层:execute_code 嵌套引号问题

在一个 execute_code 调用内部再调用 terminal(),并用 f-string 拼接远程命令,引号嵌套非常容易出错:

r = terminal(f"sshpass -p 'pw' ssh host 'echo {some_var}'")

如果 some_var 包含特殊字符,整个命令就炸了。更隐蔽的是多层嵌套:

r1 = terminal(f"sshpass -p 'pw' ssh host 'bash -c \"echo {data}\"'")

每一层引号都要小心转义,写错一步就是 SyntaxError,白白浪费一次 API 调用。

解决方案

1. 提高迭代预算

hermes config set agent.max_turns 120
hermes config set agent.delegation.max_iterations 100

从 60 提高到 120(子代理从 50 提高到 100),给复杂任务留出足够的工具调用空间。

2. 配置 SUDO_PASSWORD

把 sudo 密码加入到环境配置中,避免交互式密码提示阻塞:

SUDO_PASSWORD=your_sudo_password

Agent 在需要 sudo 时会自动注入密码,不会中途卡住。

3. 合并 SSH 命令

把多次分开的 SSH 调用合并成一个脚本,上传到远程服务器的 /tmp/ 再执行:

# 错误做法:6 次 SSH 调用
ssh host 'cmd1'
ssh host 'cmd2'
ssh host 'cmd3'

# 正确做法:1 次调用
cat > /tmp/fix.sh << 'SCRIPT'
cmd1 && cmd2 && cmd3
SCRIPT
ssh host 'bash /tmp/fix.sh'

这样从 6 次工具调用减到 2 次(上传 + 执行)。

4. 用子代理处理复杂远程操作

对于复杂的远程服务器操作,使用 delegate_task 在子代理中执行。子代理有自己的迭代预算,不会消耗主会话的调用次数。

5. 避免 execute_code 嵌套 terminal()

复杂 shell 操作不要写在 execute_code 里面套 terminal()。改用两段式:先用 write_file 写好独立脚本,再用 terminal 执行。

优化效果

修复后,同一台服务器的完整优化流程(OPcache 配置、Nginx 安全头、MySQL 绑定、Cookie 安全等 8 项操作)一次性完成,没有中断,耗时约 5 分钟。

总结

用 AI Agent 做运维时,"卡住"不一定是 AI 能力问题,往往是配置层面的限制。合理的迭代预算、避免 sudo 交互、合并命令、减少嵌套——这些工程层面的优化比提升模型能力更有用。

Last modification:June 16th, 2026 at 07:41 am
如果觉得我的文章对你有用,请随意赞赏