075、记忆脏数据清理:过期、矛盾记忆的识别、更新与删除策略上周五凌晨三点,我被生产环境告警电话吵醒。Claude Code 在持续对话中突然开始胡言乱语——它坚持认为某个微服务的数据库连接池配置是“32线程+60秒超时”,但实际配置早已在两周前改成了“64线程+30秒超时”。更诡异的是,同一个 session 里,前五分钟它还在正确引用新配置,后五分钟就突然回滚到了旧记忆。这不是幻觉。这是记忆脏数据在作祟。脏记忆是怎么产生的Claude Code 的记忆机制本质上是一个向量数据库 + 键值缓存的混合体。每次对话,它会从历史中检索相关记忆片段,拼凑出上下文。问题在于:记忆的写入没有版本控制,更新没有原子性保证,删除没有级联策略。我见过最典型的场景是这样的:开发者在对话中修改了某个配置项,Claude Code 正确记住了新值。但同一 session 里,另一个分支的推理路径触发了旧记忆的检索,两条矛盾记录同时被加载到上下文窗口。模型在“置信度投票”中选择了错误的那条——因为旧记忆被重复引用了三次,新记忆只出现了一次。这就是脏数据的根源:记忆的时效性权重没有被显式编码。过期记忆的识别策略别指望模型自己判断记忆是否过期。我踩过的坑是:让 Claude Code 在对话中自行标注“这条记忆已更新”。结果它经常忘记标注,或者标注了但没触发级联删除。正确的做法是引入时间戳衰减机