| name | anti-loop |
| description | 反循环感知技能。Use when 检测到重复工具调用、WM 出现循环信号、durable_failure 窗口内、或需要判断是否继续重试时,用于识别证据是否停滞、哪些选择可能打破循环。 |
| compatibility | Designed for Lingzhou execution loop management. |
| tags | anti-loop, execution, discipline, wm |
| triggers | 循环, 重复调用, 无进展, 重试, durable_failure |
| state_rules | failure_signal_ratio >= 0.05 => 0.5
wm_pressure_ratio >= 0.1 => 0.3
|
循环信号感知
| 信号 | 观察含义 | 裁决时要问 |
|---|
| 相同 (工具, 路径) 上一轮无新证据 | 证据增长可能停滞 | 继续同动作能产生什么新信息?是否有更好的证据源? |
| 连续 2 轮相同 (工具, 路径) 无新证据 | 循环风险已经很高 | 保留原策略的依据是什么?换工具/路径/总结/询问哪一个更合理? |
WM 中出现 [自我感知] 条目 | runtime 观察到同工具同路径重复或探索预算触顶 | 本轮是否真的新增证据?如果没有,哪些选项能改变信息状态? |
WM 中出现 [认知警告] 条目 | 推理结论多轮重复 | 缺少的是文件证据、运行证据、记忆证据,还是用户确认? |
WM 路径记录规则
WM 中已有以下条目时,它们是"已观察过"的证据锚点:
[file.list <path>] / [file.read <path>]:若文件未变更且区间相同,重复读取通常不会增加信息。
[ENOENT] / [NOT_DIR]:若没有新写入或路径线索,重试同路径通常只是重复失败。
[file.write <path>] / [file.edit <path>]:可考虑最小验证,之后应回到目标进展判断。
wait vs task.wait 区别
| 决策 | 含义 | 使用场景 |
|---|
wait | 本轮先不行动 | 当前信号正常且无紧急项;空闲整理时机 |
task.wait | 持久化移出 runnable 队列 | 需要外部事件才能继续;应明确 wait_kind(process/task/signal/time/external)和 wait_key |
证据不足或路径未确认时,先判断缺口类型:需要用户确认、需要取证、需要暂缓,还是任务目标本身要改。
durable_failure 窗口规则
- 静默窗口说明同一动作近期稳定失败;把它当作高置信风险信号。
- 若想重试同参数,需要指出新增的外部证据或状态变化。
- 可选方向包括换动作、换参数、等待外部状态变化、总结失败模式。
其他感知约束
memory.snapshot 会改变 WM 可见状态;除非目标就是整理注意力,否则它可能过早丢失未固化证据。
- 大文件读取应按当前问题选择区间;每段读完后在
reflection 记录新增发现。
reflection 是跨 tick 延续理解的压缩载体,适合记录"新增了什么证据"而不是复制原文。
误读风险
| 误读 | 更准确的理解 |
|---|
WM 有 [file.read <path>] 就绝对不能再读 | 可以重读,但需要文件变更、不同区间或新的问题角度 |
ENOENT 后一定要换任务 | 先判断是否路径错误、文件未生成、工作区错位或外部状态未满足 |
memory.snapshot 是普通整理动作 | 它会影响注意力状态,应确认是否符合当前目标 |
| 连续 2 轮无进展还继续一定错 | 极少数情况下可继续,但需提出清楚的新证据预期 |