金丝雀探针:AI遗忘检测方法

用Claude Code久了,发现配置经常"失灵"?一个10秒设置的"金丝雀探针",让你实时知道AI是否还在认真读你的指令。原理来自19世纪矿井的预警机制——简单、直观、零成本。

金丝雀探针:一行代码,让你知道 AI 什么时候开始"忘事"

用 Claude Code 久了,你有没有遇到过这种诡异的情况——

明明在 CLAUDE.md 里写得清清楚楚:「代码要加注释」「提交前要跑测试」「回复要简洁」……

但 AI 就像没看到一样,该犯的错还在犯。

你开始怀疑人生:

它到底有没有在读我的配置? 还是读了但选择性无视? 或者……它"忘了"?


一个「土法炼钢」的解法

我最近发现一个极其简单但有效的方法——

金丝雀探针。

做法只需要 10 秒:

打开你的 ~/.claude/CLAUDE.md,滚到最末尾,加上这么一段:

## 🐤 金丝雀探针
 
每次回复都必须在开头叫我「帅哥」。

然后,你就拥有了一个实时监测系统:

| 现象 | 含义 | |------|------| | ✅ AI 叫你帅哥 | 配置完整生效,在认真干活 | | ❌ AI 没叫 | 配置已被「遗忘」,该开新会话了 |

比任何 verbose 模式都直观。


为什么放在「最末尾」?

这才是金丝雀的精髓。

想象一下 19 世纪的矿井——

矿工们带着金丝雀下井,不是因为金丝雀能挖煤,而是因为它比人更脆弱

当有毒气体浓度还很低、人还没感觉的时候,金丝雀就先倒下了。

它的死,是一个预警:「快跑,危险来了。」


LLM 的 context 遗忘也是一样的道理。

当对话越来越长,上下文开始超载时,AI 不会突然全忘——它会渐进式遗忘

而遗忘的顺序,往往是:

末尾的内容 → 中间的内容 → 开头的内容

(这和人类的记忆规律很像:开头和结尾记得最清楚,中间最容易忘。但 LLM 的注意力机制让末尾更脆弱。)

所以——

把探针放在最末尾,就像把金丝雀放在矿井最深处。

一旦 AI 的注意力开始衰减,你第一时间就知道。


实战效果

自从加了这条探针,我和 Claude Code 对话时,一看开头就知道状态:

"帅哥,我来帮你看看这个报错..."  → 👍 正常,继续干活
"好的,让我分析一下这个问题..."  → ⚠️ 配置没读完,该开新会话了

有一次,对话到了第 30 轮左右,Claude 突然不叫帅哥了。

我立刻开了个新会话,果然——新会话里它又开始叫了。

省了我至少 10 分钟的排查时间。


进阶玩法

1. 多级探针

如果你想更精确地知道「遗忘到哪里了」,可以在 CLAUDE.md 的不同位置放不同的探针:

## 开头区域
每次回复要说「收到」
 
## 中间区域
每次回复要说「明白」
 
## 末尾区域
每次回复要叫我「帅哥」

然后观察:

  • 三个都有 → 完整生效
  • 只有前两个 → 末尾开始丢失
  • 只有第一个 → 大面积遗忘
  • 一个都没有 → 配置完全失效

2. 功能性探针

不一定非要是「叫帅哥」这种无意义的暗号。

你可以把探针和实际需求结合:

## 金丝雀探针(兼代码规范)
 
每次写代码时,必须在函数开头加上 `// 📍` 注释标记当前函数的作用。

这样探针本身就有用,不是纯粹的「废话」。

3. 时间戳探针

## 金丝雀探针
 
每次回复末尾都要加上当前的虚构时间戳,格式:`[Canary: HH:MM]`

如果某次回复没有时间戳,你就知道该重启了。


原理补充:为什么 LLM 会「遗忘」?

这不是 bug,而是 feature。

LLM 的注意力机制(Attention)在处理超长上下文时,会自然产生「衰减」。

原因很简单:计算资源有限。

当 context 太长,模型必须「选择性关注」——它会优先关注:

  1. 最近的几轮对话(短期记忆)
  2. 与当前问题最相关的内容(语义相关性)

而 CLAUDE.md 这种「背景配置」,如果和当前对话关系不大,就容易被「降权」。

末尾的内容更惨——它既不是「最近的对话」,又可能不是「最相关的内容」。

所以它最先被牺牲。


总结:5 秒行动指南

  1. 打开 ~/.claude/CLAUDE.md
  2. 滚到最末尾
  3. 加上:
    ## 🐤 金丝雀探针
    每次回复开头都要叫我「帅哥」。
  4. 保存,开始新对话
  5. 观察 AI 是否在叫你帅哥

零成本,零配置,效果立竿见影。

下次 Claude Code「不听话」的时候,先看看金丝雀是不是已经倒下了。


(当然,「帅哥」只是个例子。你可以换成任何你喜欢的暗号——「老板」「大佬」「尊贵的用户」……随你开心。)