AI 在同一步上反复打转怎么办?WES Code 循环检测怎么用

目录


让 AI 自己跑一个长任务,偶尔会看到它卡住:同一个文件读了十几遍,同一条命令一直重试,同一段代码改过来又改回去。

它不会自己意识到在打转,只会一轮一轮地跑下去,token 和时间都在空烧。

WES Code 的循环检测盯着这件事:先提醒它换个办法,再让它把已知的信息记下来、停止打转;还在转,就弹出来让你决定继续还是终止。这篇讲它看什么、默认阈值是多少、触发后发生什么,以及在设置里怎么调。


一、它盯三件事

维度 统计什么 默认阈值(警告 / 终止)
同类工具连续调用 连续调用同一类工具的次数,换一类就清零 探索类 50 / 100,操作类 25 / 50
完全相同的调用 工具、子动作和参数完全一样的调用,连续出现的次数 4 / 7
重复的输出 AI 回复的文字和之前一样,在最近 20 轮里出现的次数 3 / 5,只警告不终止

「探索类」是 read、grep、ls 这类只读工具,「操作类」是 edit、write、exec 这类会改东西的工具。有几个工具单独设了阈值:

工具 警告 / 终止
exec 30 / 60
只读的 exec(如查看类命令) 50 / 100
edit、write、apply_patch 30 / 60
plan 15 / 30

探索类阈值给得最宽,因为在一个大仓库里找东西,连续读几十个文件很正常。完全相同的调用阈值最紧:同样的参数调到第 7 次,基本可以确定是在原地转。

拿「完全相同的调用」举个例子(示意)。AI 一直用同样的参数读同一个文件:

text 复制代码
read  internal/order/cache.go     第 1 次
read  internal/order/cache.go     第 2 次
read  internal/order/cache.go     第 3 次
read  internal/order/cache.go     第 4 次  → 到警告阈值,提醒它换个办法
read  internal/order/cache.go     第 5 次
read  internal/order/cache.go     第 6 次
read  internal/order/cache.go     第 7 次  → 到终止阈值

如果每次读的是不同的文件,或者换了读取范围,就不算「完全相同」。


二、触发之后会发生什么

到警告阈值:提醒一句

AI 会收到一条观察提示,原文是:

observation ... repeat count: N. Consider a different approach or tool to make progress.

意思是「这件事已经重复 N 次了,换个方法或工具试试」。某些工具会换成更具体的建议。

第一次到终止阈值:让它自己收尾

不会直接停,而是给 AI 注入一条提示:

observation ... repeat limit reached: N. Wrap up current work --- record the key facts you have learned (paths, line numbers, decisions) so they survive context compression, then stop looping.

要它把已经弄清楚的东西(路径、行号、决定)记下来,然后停止打转。同时,这个维度的计数清零,给它一次自我纠正的机会。

第二次到终止阈值:交给你决定

⟦配图:本地上传 marketing/images/covers-juejin/cover-19-cycle-detect.png,图片说明「先自我纠正,再请你决定」⟧

自我纠正之后还在转,WES Code 会弹出一个选择:

AI 在操作 某个操作 上循环(已重复 N 次且自动纠正失败)。

两个选项:

选项 结果
继续尝试 计数清零,再给 AI 一轮机会
终止任务 停止这次运行

10 分钟内没有选,就按终止处理。


三、哪些情况不算循环

几种看起来像重复、其实是正常推进的情况,会被放宽:

  • 工具报错了:报错会清掉「完全相同调用」的计数,报错重试由另一套错误处理负责
  • 探索时换了参数:比如连续 grep 不同的关键词,连续计数按一半累加
  • 只读的命令:查看类的 exec 归到只读 exec,阈值和探索类一样宽

四、在设置里调阈值

打开设置,「AI 引擎」下面的「循环检测」。页面说明是「当 AI 重复调用同类工具超过阈值时,触发警告或终止运行」,分四块:

区块 页面上的说明
探索类工具 read、grep、ls 等只读工具的连续调用阈值
操作类工具 edit、write、exec 等写入工具的连续调用阈值
相同调用检测 完全相同参数的工具调用连续出现的阈值
工具级覆盖 为特定工具单独配置警告和终止阈值

每一块都能分别填「警告」和「终止」两个数。需要先打开一个项目文件夹,才能配置。

什么时候调

  • 仓库很大、AI 经常要连续读很多文件:调高探索类阈值
  • 你希望它更早停下来问你:调低操作类和相同调用的终止阈值
  • 某个工具经常被误判:在「工具级覆盖」里单独给它设阈值

五、它做不到的地方

  • 换了参数的重复,算不上「完全相同」:只能靠同类工具的连续计数慢慢累积到阈值
  • 不看工具返回了什么:只看调用本身,不判断结果是不是在进步
  • 有些阈值设置页里调不了:重复输出的阈值没有放到设置页
  • 没有总开关:循环检测一直开着,只能调阈值

小结

  1. 循环检测盯三件事:同类工具连续调用、完全相同的调用、重复的输出
  2. 默认阈值:探索类 50 / 100,操作类 25 / 50,完全相同的调用 4 / 7
  3. 到警告阈值先提醒;第一次到终止阈值,让 AI 记下已知信息、自己收尾;第二次弹窗问你,10 分钟不选就终止
  4. 阈值在「AI 引擎 → 循环检测」里调

文中的循环检测是 WES Code 里的功能,官网是 weisyn.com。你们遇到过 AI 最离谱的一次「原地打转」是什么,欢迎评论区聊聊。

觉得有用的朋友,欢迎点赞、收藏、关注,后面会继续分享 AI 编程的实战经验。

相关推荐
鱼宵1 小时前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai
蜗牛互联网1 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
架构师那点事儿1 小时前
大模型如何私有化部署到生产环境
人工智能·架构·llm
HeyAI人工智能2 小时前
官网内容优化 vs 企业级 RAG:AI 搜索时代,企业到底该先做什么?
人工智能·aigc
黑妹天下第一乖2 小时前
第09讲 · 多媒体与音频 SDK:硬件编解码与端侧语音
人工智能·嵌入式硬件·深度学习·机器人·音视频·iot
jeffsonfu2 小时前
扩散模型(Diffusion Models)崛起:GANs之后的下一个顶流?
人工智能
老李的安全笔记本2 小时前
Agent 工具调用为什么越改越差:两种方向的失败,Prompt 修不了
人工智能
土豆3592 小时前
那个叫 fix bug 的提交,改了 140 万行
人工智能
随风@飘扬2 小时前
CCS Theia中F28035 工程调试连接排障记录
人工智能