什么是agent死循环

Agent 死循环,是指智能体在推理 - 执行 - 观察过程中,因决策固定、历史无效或无法判断终止,陷入无限重复同一动作的闭环,无法推进任务也无法自动结束。

导致Agent死循环的原因:

  • 看不见历史(注意力 / 记忆问题)
  • 不知道停(Prompt / 终止条件)
  • 环境不变(工具返回固定)

如何解决Agent死循环问题:

1.加 max_iterations 强制终止

agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    max_iterations=5,  # 👈 这里!框架参数,不是 Prompt
    verbose=True
)

2.Prompt 强化终止规则

  • Prompt 里的停止规则:软限制,靠 LLM 自觉遵守(可能不听)
  • max_iterations:硬限制,框架强制生效,绝对有效

3.加 重复步骤检测(连续相同 Action 直接停)

由代码层实时记录每一步的工具调用名称和参数。
每生成新动作时,与上一步动作进行比对:
如果工具名和参数连续 2~3 次完全相同,就判定为死循环,
代码会直接强制终止执行,不再继续调用工具。
这是一种硬保障机制,不依赖 LLM 自身判断,非常可靠
# 记录历史动作(工具名 + 参数)
action_history = []

# 假设这是 Agent 每一步生成的 Action
def check_and_run_action(tool_name, tool_param):
    global action_history

    # 1. 检测是否和上一步重复
    if len(action_history) > 0:
        last_tool, last_param = action_history[-1]
        if tool_name == last_tool and tool_param == last_param:
            # 连续重复 → 直接终止!
            print("检测到连续重复Action,判定死循环,强制停止!")
            return False

    # 2. 不重复 → 记录历史 & 执行
    action_history.append((tool_name, tool_param))
    print(f"执行工具:{tool_name},参数:{tool_param}")
    return True

# ======================
# 示例演示
# ======================

# 第1步:正常
check_and_run_action("search", "CPU 告警")

# 第2步:重复!触发死循环检测
check_and_run_action("search", "CPU 告警")

4. 历史压缩 / 摘要,减少长上下文注意力压力

5.使用 LangGraph 状态管理,不依赖全量历史

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐