Skip to content

Drift 漂移机制

给无状态 AI 装一个"记忆衰减警报器"。

核心问题

你和 AI 结对编程了一下午。它帮你加了三个功能、重构了一次数据层、引入了一个新库。你关掉编辑器去吃饭。

第二天回来,开了一个新 session。AI 照常读了项目文件,一切看起来正常——直到你发现它在新代码里用了昨天重构前的旧模式,因为它根本不知道昨天发生了什么。

这不是 bug,这是 LLM 会话制的基本现实:每个 session 都是一张白纸。

聪明的做法是把项目状态写进文件(manifest、规范文档、规则文件)让 AI 每次启动时读取。但这引出了一个更隐蔽的问题:

谁来确保这些文件本身没有过期?

你连续交付了十次,每次都改了一些代码,但 manifest 只更新了六次。规则文件还在描述三天前的架构。AI 读到的"项目真相"和项目实况之间,出现了一条越来越宽的裂缝。

这条裂缝,就是 drift

Drift 不是"变更日志"

Drift 追踪的是:AI 的认知模型和项目实况之间的偏差积累速度。

想象你有一张地图。每次走过一条新路,地图没有同步更新。走一两条没关系,你记得。走了十条,你开始迷路。问题不是"有十条路没画上去"——问题是"你对这张地图的信任度应该降到多少"。

Drift 计数器就是这个信任度的反向指标。它不告诉你哪里错了,它告诉你:是时候停下来,重新看清全貌了。

量化方式

每次交付后,主 Agent 评估这次变更的认知影响:

复杂度含义分值
trivial单文件改动、配置调整+1
small2-5 文件、无新模式引入+2
medium新模块、新模式、5-10 文件+3
large架构变更、跨层改动+5

注意评估的是认知复杂度,不是 diff 行数。一次三行的 API 签名变更如果影响了十个调用方,认知冲击远超五十行的新组件。

阈值是 12,大约等于 4-5 次中等交付。这个数字来自实际使用中对多个审查周期的观察——太低会频繁中断,太高会让审查范围失焦。

审查不是"过一遍 checklist"

如果审查只是"打开每个文件看一遍、对着检查清单勾勾勾",那它确实是浪费时间。

Archon 的审查分两层:

第一层:自动化能做的,不要人做

验证门先跑一遍 lint + typecheck + test。能被机器捕获的问题不应该出现在审查报告里。

第二层:独立 Agent 做自动化做不了的

审查真正有价值的部分:

  • 架构腐化:模块依赖是不是在悄悄变成意大利面?
  • 抽象合理性:有没有只有一个实现的抽象层?
  • 规格漂移:代码实际做的事,和 manifest 声明的事,还对得上吗?
  • 停滞检测:最近五次交付是不是在反复修同一类问题?

最后一点尤其重要。看 drift 日志不是为了知道"发生了什么",而是为了发现模式。同类修复反复出现 = 有个系统性问题没人解决。

知识捕获

交付后的知识捕获由 capture-auditor sub-agent 判断这次交付是否产生了值得固化的经验。

关键词是"值得"。 如果每次都记点什么,你很快就会有一堆没人看的"经验笔记"。

触发信号:

信号典型沉淀
撞墙换路:方案 A 失败,切到 B推理胶囊:A 的失败症状 → 根因 → B 的推导路径
重复模式:第二次写相同结构抽象为组件/工具函数,或编辑器规则
约定成型:隐含约定反复出现变成机器可执行的 lint 规则
新技术引入:首次使用某库技能文档(推荐模式 + 禁止模式 + 陷阱)

每条沉淀推到约束力最强的层级——能推到类型系统的不写 lint 规则,能写 lint 规则的不靠文档。

诚实地说,它没解决什么

1. 它不能替代架构思考。 审查是诊断,不是规划。

2. 量化是粗糙的。 "medium = +3" 是粗暴近似。它的价值在于"到了该停一停"这个信号本身。

3. 审查质量取决于 reviewer 的能力。 Reviewer 是 LLM sub-agent,受限于上下文窗口和推理能力。

4. 知识捕获的"值不值得"判断本身就很难。 轻量 sub-agent 能检查有没有新测试、有没有重复模式,但"这个洞察有没有长期复用价值"需要深度理解。

所以,它到底解决了什么

剥掉所有机制细节,drift + 审查体系解决的核心问题只有一个:

在会话制的 AI 工程环境中,创造一个"强制停下来看清全貌"的节奏。

人类工程师有代码审查、站会、回顾会来做这件事。AI agent 没有同事、没有日程表。它需要一个外化的、量化的、不可跳过的触发器来打断"接需求→写代码→接需求→写代码"的无限循环。

Drift 就是这个触发器。不多不少。

Powered by AAEP (AI Architect Evolution Protocol)