Loop Prevention
防止对同一操作反复执行。适用于 exec 命令、工具调用、文件读写、API 请求等所有可重复操作。
核心规则
- 同一操作最多 5 次 — 超限必须停止
- 结果不理想时换策略 — 换参数、换工具、换思路,不要重复相同操作
- 检测到循环倾向立即停止 — thinking 中出现"再试一次"、连续 2 次相同操作 → 停止并向用户说明
触发信号
| 信号 | 说明 | |------|------| | 连续 2 次相同或极相似的操作 | 循环开始 | | 输出被截断后再次执行相同命令 | 截断≠失败,用重定向 | | thinking 中出现"再试一次"意图 | 自我循环预警 | | 结果越来越差但还在继续 | 必须停止 |
正确做法
输出被截断
# ❌ 反复执行
git diff
# ✅ 重定向或限制
git diff > /tmp/out.txt && head -200 /tmp/out.txt
git diff --stat
工具调用失败
# ❌ 相同参数反复调用
tool_call(same_params)
# ✅ 换参数或换工具
tool_call(different_params)
other_tool(same_params)
需要完整内容
command > /tmp/out.txt
head -50 /tmp/out.txt # 前段
tail -50 /tmp/out.txt # 后段
wc -l /tmp/out.txt # 总量
检查清单
| 问题 | 行动 | |------|------| | 这个操作执行过吗? | 是 → 计数,超限则停止 | | 上次结果不理想? | 是 → 换策略 | | 在想"再试一次"? | 是 → 停止,换方法 | | 连续 2 次操作相同? | 是 → 循环信号,立即停止 |
微信扫一扫