AI 时代开发范式演化:从 Waterfall 到 Memory-Driven 的终局
一、元认知:无状态的天才 #
2026 年,AI 编程能力已经到了一个奇怪的拐点:模型足够聪明,但每次对话都像失忆。
你花两小时给 Claude 讲清了项目的架构约定、命名规范、部署流程。它完美理解,交付了代码。然后你关掉终端,下次再打开——一切归零。它不记得你的项目,不记得你的偏好,不记得上次踩过的坑。你重新讲一遍。
这不是工具不好用的问题。这是所有当前开发范式的共同天花板:AI 的能力边界不在模型,在上下文连续性。
所有范式都在回答同一个问题 #
把从 Waterfall 到 Autonomous SE 的十种开发范式摆在一起,表面上是输入、驱动、自主性、适用场景的差异。但如果退后一步看本质,它们全在回答同一个问题:
如何向 AI 提供正确的上下文?
差异只在于”用什么提供”和”提供多少”。但更深一层,真正的演化轴不是”AI 自主性越来越高”——那是表象。真正的轴是:
什么被视为可持久化、可积累的资产?
- Waterfall 把需求文档当资产
- DevOps 把流水线配置当资产
- Prompt-Driven 把 prompt 当资产
- Spec-Driven 把规范当资产
- Autonomous SE 把治理策略当资产
这些资产有一个共同特征:它们是静态的。需求文档写完不变,流水线配好不变,规范定义后不变。每次 AI 介入开发,都从这些静态文件重新开始——没有经验积累,没有学习曲线,没有”上次这么做成功了,这次照着来”。
这就像一个每天失忆的外科医生:医术精湛,但每天早上要重新认识手术室的布局。
人脑的启示:两种记忆 #
人脑有两种记忆,开源 Agent 架构拆解一文的认知二讲得很清楚:
- 陈述性记忆——“知道什么”(巴黎是法国首都)
- 程序性记忆——“知道怎么做”(骑自行车)
陈述性记忆让 Agent”想起”你上次说了什么。程序性记忆让 Agent”会做”它上次不会的事。前者是检索增强,后者是能力增长。
当前所有开发范式提供的”上下文”,本质上都是陈述性记忆——一份文档、一份规范、一份 prompt。没有哪种范式把”开发过程中积累的经验”当作一等公民。
这就是 Memory-Driven Development(MDD,记忆驱动开发)要解决的问题。但在讲它之前,需要先看清整条演化链——每一步解决了什么,又留下了什么。
二、搭积木:范式演化矩阵 #
七个阶段 #
用”核心资产”这一维度重新审视十种范式,演化不是线性的”一个替代一个”,而是资产类型的跃迁。每次跃迁解决上一阶段的矛盾,又引入新的矛盾。
阶段一:过程为王(Process-Driven) #
范式:Waterfall、Agile/Scrum
核心资产:流程文档、需求规格、User Story
解决的矛盾:无序开发 → 结构化、可追踪
未解问题:过程文档是”死”的。它们是写给人读的——AI 时代到来后,这些文档既不能被 AI 直接消费,也不随项目演化自动更新。一份 200 页的需求文档,在 AI 看来是噪声而非资产。
阶段二:流水线为王(Pipeline-Driven) #
范式:DevOps
核心资产:自动化流水线、基础设施即代码(IaC)
解决的矛盾:手动部署不可靠 → 持续交付、可重复
未解问题:流水线是无状态的。每次构建独立运行,不积累经验。第 1000 次构建和第 1 次一样——它不会记住”上次这个测试在凌晨 3 点挂过”或”这个依赖版本组合曾导致内存泄漏”。流水线是肌肉,但肌肉没有记忆。
阶段三:指令为王(Instruction-Driven) #
范式:Prompt-Driven、Context-Driven、Spec-Driven
核心资产:Prompt / 项目上下文文件 / 规范文档
解决的矛盾:AI 能做事了,但需要精确指令
这个阶段内部有三个子层次,本身也是一条微演化线:
| 子范式 | 核心资产 | 持久化程度 |
|---|---|---|
| Prompt-Driven | 单次 prompt | 一次性,用完即弃 |
| Context-Driven | CLAUDE.md、AGENTS.md 等上下文文件 | 持久文件,但仍静态 |
| Spec-Driven | 可版本化、可审核的规范文档 | 持久 + 可审计,但仍非”记忆” |
从”写一个 prompt”到”维护一个上下文文件”,已经是范式转移——你开始意识到有些东西值得持久化。但 CLAUDE.md 是静态文件,不是演化的记忆。它记录的是规则,不是经验。Spec 文档更进一步,可版本化、可审核,但它的本质仍然是约束——告诉 AI 该做什么、不该做什么——而不是积累——让 AI 从做过的事中变聪明。
关键区分:约束告诉 AI 边界在哪,记忆让 AI 知道路径在哪。两者都重要,但不是一回事。
未解问题:每次会话从零开始。上下文文件被重新加载,但开发过程中产生的决策、尝试、失败、成功——全部丢弃。你花了三小时调试一个棘手的 bug,解决方案不会自动沉淀。下次遇到类似问题,从零开始。
阶段四:目标为王(Goal-Driven) #
范式:Intent-Driven、Goal-Driven
核心资产:业务意图、KPI
解决的矛盾:指令太细,人不想管每个细节 → 给目标,让 AI 自己规划路径
未解问题:目标达成后,经验不沉淀。AI 规划了一条成功路径,完成了任务——但这条路径没有被记忆。下次同样的目标,它可能走一条完全不同的路,重复踩同样的坑。
类比:你让一个失忆的员工”把这个项目上线”。他做到了。但你问他”上次怎么做的”,他不记得。你只能希望他下次碰巧走同样的路。
阶段五:编排为王(Orchestration-Driven) #
范式:Workflow-Driven、Multi-Agent
核心资产:工作流定义、Agent 协作拓扑
解决的矛盾:单 Agent 能力有限 → 多 Agent 协作,专业分工
未解问题:工作流是静态定义的。你设计了一条 Agent Pipeline:需求分析 → 代码生成 → 测试 → 部署。这条 Pipeline 不会因为”上次测试 Agent 发现了 80% 的 bug 集中在数据层”而自动调整优先级。编排是骨架,但骨架不学习。
阶段六:治理为王(Governance-Driven) #
范式:Autonomous Software Engineering
核心资产:治理策略、审计日志、授权边界
解决的矛盾:AI 全自主后的安全、合规、问责
未解问题:治理是规则,不是经验。规则约束行为(”不许删生产数据库”),但不让系统变聪明。一个自治系统可能运行了半年,处理了上千个任务——但它的治理策略和第一天一模一样,没有从运行中学到任何东西。
阶段七:记忆为王(Memory-Driven) #
范式:Memory-Driven Development(MDD)
核心资产:可积累、可检索、可验证的数字记忆
解决的矛盾:以上所有范式的共同缺陷——无状态
这不是又一个并列的范式。MDD 解决的是所有范式的共同地基问题:每次开发从零开始,经验不积累。它是其他范式的基底,而非替代品。
演化矩阵 #
把十种范式按”核心资产”维度重新组织:
| 阶段 | 范式 | 核心资产 | 解决的矛盾 | 留下的未解问题 | 记忆角色 | 成熟度 |
|---|---|---|---|---|---|---|
| 过程为王 | Waterfall / Agile | 流程文档 | 无序 → 结构化 | 文档是死的,AI 不可消费 | 无 | ⭐⭐⭐⭐⭐ |
| 流水线为王 | DevOps | 自动化流水线 | 手动 → 自动 | 无状态,不积累经验 | 无 | ⭐⭐⭐⭐⭐ |
| 指令为王 | Prompt / Context / Spec | Prompt / 上下文文件 / 规范 | AI 需精确指令 | 每次从零开始,经验不沉淀 | 静态约束 | ⭐⭐⭐⭐ |
| 目标为王 | Intent / Goal | 业务目标 / KPI | 指令太细 → 给目标 | 目标达成后路径不沉淀 | 无 | ⭐⭐⭐ |
| 编排为王 | Workflow / Multi-Agent | 工作流 / Agent 拓扑 | 单 Agent → 多 Agent | 工作流静态,不随使用演化 | 静态骨架 | ⭐⭐⭐⭐ |
| 治理为王 | Autonomous SE | 治理 / 审计 / 授权 | AI 全自主的安全合规 | 治理是规则不是经验 | 静态规则 | ⭐⭐ |
| 记忆为王 | MDD | 可积累可检索可验证的记忆 | 所有范式的无状态问题 | 冷启动、污染、验证 | 动态积累 | ⭐⭐⭐ |
最后一列的成熟度是本文的判断,不是行业共识。MDD 给三星,是因为它的各个组成部分(Agent 记忆、RAG、MCP)已经成熟,但作为完整范式尚未被命名和系统化。
三、案例即原理:MDD 最优开发流程 #
从”知道为什么”到”知道怎么做” #
上一节的演化链讲清了”为什么 MDD 是终局”。但知道为什么,不等于知道明天拿到需求该先做什么。
把 Agent 记忆、RAG、MCP、上下文文件这些已存在的技术线索落到一个具体问题上:一个开发者接手项目,从需求到维护,记忆如何贯穿全程? 答案是一个六阶段闭环——不是理论模型,而是从公开实践中提炼的可执行流程。
全流程闭环 #
flowchart TD
S0[阶段0 冷启动
播种记忆种子] --> S1[阶段1 需求 intake
记忆参与决策]
S1 --> S2[阶段2 设计
决策写 ADR]
S2 --> S3[阶段3 开发
会话级闭环]
S3 --> S4[阶段4 维护
检索 + 沉淀]
S4 --> S5[阶段5 优化
模式识别 + 遗忘]
S5 -.->|经验反哺| S0
S5 -.->|skill 沉淀| S1闭环的关键不是六个阶段本身,而是两条回边:阶段 5 提取的 skill 成为下一个项目的种子(反哺冷启动),阶段 4-5 积累的踩坑经验在阶段 1 需求 intake 时被检索(skill 沉淀到需求)。记忆不是线性流水线的副产品,而是驱动下一轮循环的输入。
记忆资产分层 #
闭环运转前,先看清”记忆”不是单一概念。四种记忆各司其职:
| 记忆类型 | 内容 | 载体 | 检索方式 | 公开实践 |
|---|---|---|---|---|
| 陈述性·约束 | 项目规则、技术栈、命名约定 | AGENTS.md / CLAUDE.md / .cursor/rules/*.mdc | 每次会话自动注入 | Claude Code、Cursor、Aider CONVENTIONS.md |
| 陈述性·决策 | 架构选型、技术权衡、为什么选 A 不选 B | ADR(docs/decisions/NN-标题.md) | 按主题检索 | ADR 模板(Michael Nygard 2011,16.3k stars) |
| 陈述性·经验 | 踩坑日志、bug 解法、失败尝试 | lessons/ 或 issue tracker | 关键词检索 | GitHub SpecKit constitution(117k stars) |
| 程序性 | 重复操作的可复用流程 | skills/<name>/SKILL.md | Agent 按需自动发现 | opencode skills、Claude Code skills |
前三种是陈述性记忆——“知道什么”。第四种是程序性记忆——“知道怎么做”。两者的区别在开源 Agent 架构拆解中讲过:前者是检索增强,后者是能力增长。MDD 闭环的每个阶段都在读写这四类记忆,但侧重不同。
六阶段详解 #
阶段 0:冷启动——播种,不追求完美 #
开发者做什么:接手项目第一件事不是写代码,而是建 AGENTS.md(项目规则、技术栈、构建命令)和 docs/decisions/(ADR 目录)。从历史项目迁移可复用的 skill 作为种子。
记忆如何参与:空记忆的 MDD 等于无 MDD。冷启动期从已有上下文文件作为种子,逐步积累。
公开案例:Claude Code 的记忆是双系统——用户写的 CLAUDE.md(持久指令,每次会话自动加载)+ Claude 自己写的 auto memory(学习笔记,存于 ~/.claude/projects/<project>/memory/)。前者是种子,后者是生长。Aider 的 CONVENTIONS.md 通过 --read 只读加载,可缓存,是更轻量的种子形态。Cursor 的 rules 从单文件 .cursorrules 进化到 .cursor/rules/*.mdc 目录(带 description/globs/alwaysApply frontmatter),本身就是记忆组织方式的成熟。
冷启动最常犯的错:追求一次性写完美的
AGENTS.md。正确做法是写最小可用版本,让后续阶段的使用自然补充。
阶段 1:需求 intake——先检索,再动手 #
开发者做什么:拿到需求不直接开干,先写一句需求简报(一句话目标 + 验收标准),然后让 AI 检索记忆库中相似需求的历史决策和踩坑记录。
记忆如何参与:AI 读取 AGENTS.md(约束)+ 检索 ADR(相关决策)+ 检索 lessons/(同类需求踩过什么坑)。如果历史上有类似需求,AI 能给出”上次这么做成功了/失败了”的参考。
公开案例:GitHub SpecKit(github/spec-kit,117k stars)的工作流是这条阶段的工程化:/speckit.constitution(写项目原则)→ /speckit.specify(写 spec)→ /speckit.plan(技术计划)→ /speckit.tasks(任务拆解)→ /speckit.implement(执行)。每一步的输出都是下一步的输入,且 constitution(原则)会被后续步骤反复引用——这就是陈述性记忆在需求阶段的作用。
阶段 2:设计——决策必须留痕 #
开发者做什么:技术方案不只是写文档,关键决策写 ADR(Architecture Decision Record)。ADR 的核心不是”决定做什么”,而是”为什么选 A 不选 B”——记录权衡。
记忆如何参与:AI 基于 AGENTS.md + 历史记忆生成方案草案,人工审核定稿。ADR 写入 docs/decisions/NN-标题.md,成为可检索的陈述性记忆。
公开案例:ADR 格式由 Michael Nygard 在 2011 年提出(原始博文),公开模板仓库 architecture-decision-record/architecture-decision-record(16.3k stars)。ADR 之所以是记忆而非文档,因为它记录的是决策的推理过程——下次遇到类似权衡时,AI 能检索到”上次为什么这么选”。
ADR 长什么样:四要素 + 真实示例 #
一个标准 ADR 只写四个 section(Nygard 原始格式,极简):
| Section | 该写什么 |
|---|---|
| Status | 当前状态:Proposed(提议)/ Accepted(采纳)/ Rejected(否决)/ Deprecated(弃用)/ Superseded(被替代) |
| Context | 背景与动机:为什么需要做这个决策?面临什么问题? |
| Decision | 决定做什么 |
| Consequences | 做了之后什么变容易、什么变难 |
下面是一个真实示例(精简自 ADR 仓库的数据库选型案例):
1 | |
注意 Decision 段只写”选了什么”——推理过程在 Context 和 Consequences 里。Context 解释约束,Consequences 预判代价。一个写好的 ADR,别人读完能复现你的决策逻辑,而不只是知道结论。
命名约定与 Status 生命周期 #
- 文件名:
NN-kebab-case-title.md,NN 为零填充序号(如007-choose-document-database.md) - 存放:
docs/decisions/目录 - 不可删除原则:ADR 一旦 Accepted,只能被标记为 Superseded(并注明被哪个新 ADR 替代),不可删除。这是记忆的不可变性——过时的决策本身也是历史,能解释”为什么曾经这么选,后来为什么改了”。
Status 的流转:
1 | |
ADR 在 MDD 中的角色 #
ADR 是陈述性·决策记忆。它与 lessons/(陈述性·经验记忆)配合形成决策-验证闭环:
| 记忆 | 视角 | 回答的问题 |
|---|---|---|
| ADR | 向前看(决策时) | 为什么选 A 不选 B? |
| lessons/ | 向后看(验证后) | 这个选择后来怎样了?踩了什么坑? |
阶段 2 写 ADR(向前预判),阶段 4 维护时在 lessons/ 记录结果(向后验证)。下次类似决策时,两者都被检索——既看上次为什么这么选,又看选了之后怎样。
阶段 3:开发——会话级闭环 #
开发者做什么:任务分解 → 增量实现 → 验证循环。每个任务的开发都是一次”加载记忆 → 执行 → 沉淀新记忆”的闭环。
记忆如何参与:每次会话自动加载 AGENTS.md;开发中踩的坑实时记录到 lessons/;代码和记忆同步提交到版本控制。
公开案例:Aider 每次修改后自动 git commit,让代码变更自带”记忆锚点”。Claude Code 的 /memory 命令同时管理用户写的 CLAUDE.md 和 Claude 自己写的 auto memory——前者是约束(人教 AI),后者是经验(AI 自己学)。这个双系统在开发阶段最活跃:AI 一边执行任务,一边把学到的经验写进 auto memory。
开发阶段最常见的记忆缺失:只提交代码,不提交踩坑记录。结果是 bug 修了但”怎么修的”丢了,下次同类问题从零开始。
阶段 4:维护——先检索,再修复 #
开发者做什么:遇到 bug,先检索记忆(”上次这个坑怎么解的”),再动手修。修复后把解法沉淀回记忆。
记忆如何参与:检索 lessons/ 和 ADR;高频 bug 的解法提取为 skill(程序性记忆),让 Agent 下次自动处理。
公开案例:Mem0 v3(2026 年 4 月新算法)采用 ADD-only 写入策略——一次 LLM 调用提取即存储,不做 UPDATE/DELETE。这和数据库的 WAL(Write-Ahead Log)+ checkpoint 是同一思路:写入追求简单(先记下来),检索追求精准(后续整理)。ADD-only 的代价是长期积累垃圾,但换来的是写入零摩擦——维护阶段最怕的不是记忆污染,是记不住。
阶段 5:优化——模式识别与遗忘 #
开发者做什么:定期回顾记忆数据,识别高频模式——反复出现的坑应固化为 skill,过时的决策应标记为 Deprecated。
记忆如何参与:从陈述性记忆(lessons/ADR)中提取模式,固化为程序性记忆(skill);遗忘机制清理污染记忆和过时决策。
公开案例:opencode 的 skills 系统(.opencode/skills/<name>/SKILL.md,frontmatter 仅 name + description)让 Agent 按需自动发现并加载——从踩坑中提取的程序性记忆,成为可复用的能力。Cursor 的 rules 从 .cursorrules 单文件进化到 .cursor/rules/*.mdc 目录,本身就是”模式识别后结构化”的过程:当规则多到单文件装不下,就按主题拆分,每条 rule 带描述和适用范围。
闭环的自我强化 #
两条回边让闭环不是线性消耗,而是复利积累:
- 经验反哺冷启动:阶段 5 提取的 skill 成为下一个项目的种子。第一次接手项目要手写
AGENTS.md,第三次接手同类项目可以直接迁移已有的 skills 目录。冷启动成本随项目数递减。 - skill 沉淀到需求:阶段 3-4 积累的踩坑经验,在阶段 1 需求 intake 时被检索。新需求不必从零评估——“上次做类似功能时这个方案失败了”是现成的决策依据。
这就是 MDD 和所有静态范式的根本区别:Spec-Driven 的规范是写完不变的,MDD 的记忆是越用越厚的。同一个项目,第十次开发的决策质量高于第一次——因为前九次的记忆在参与决策。
四、缺陷与批判:MDD 的边界 #
每个范式的边界 #
诚实地说,没有哪种范式是”终局”。每个范式都有它的边界:
| 范式 | 边界 |
|---|---|
| 过程为王 | AI 时代仍有价值——大型项目需要结构化思维,但不再是核心 |
| 流水线为王 | 基础设施不可少,但它不积累”知识” |
| 指令为王 | Prompt 仍是日常工具,但它是”一次性”的——写完即弃 |
| 目标为王 | 理想很美,但当前模型能力还撑不住完全自主的目标分解 |
| 编排为王 | 复杂度高,调试难,适合大型场景而非个人开发 |
| 治理为王 | 未来方向,但成熟度最低,工具链尚未形成 |
MDD 不替代任何范式 #
这是最容易被误解的一点。MDD 不是”取代 Spec”或”取代 Workflow”——它是它们的基底。
1 | |
记忆是土壤,其他范式是长在上面的植物。没有土壤,植物也能活——但长不大。
MDD 自身的四个硬伤 #
一、冷启动问题 #
空记忆的 MDD 等于无 MDD。记忆系统需要种子——初始的项目知识、决策记录、设计经验。冷启动期的 Agent 经验不足,可能”学会错误”(Hermes skill 漂移问题的类比)。
解法不是技术上的,是实践上的:第三节阶段 0 的流程就是解法——从已有的上下文文件(AGENTS.md、CLAUDE.md)作为种子,逐步积累。不要追求一开始就完美——先跑起来。
二、记忆污染 #
ADD-only 策略(写入快、不管冗余)的代价是长期使用后积累垃圾。过时的决策、错误的尝试、已被推翻的结论——这些”记忆污染”会降低检索质量,甚至误导 Agent。
人脑有遗忘机制,当前的记忆系统大部分没有。Mem0 的 ADD-only 不做 UPDATE/DELETE,GBrain 靠 dream cycle 夜间整理——但什么该忘、什么时候忘、忘了之后如何恢复,这些问题远未解决。
三、验证成本 #
记忆可能是幻觉的传播介质。如果 Agent 从错误记忆中”学到”了一个错误的解决方案,这个错误会通过记忆系统传播到后续所有相关任务——而且比单次幻觉更危险,因为它有了”历史依据”的背书。
验证记忆的正确性需要额外的机制——人工审核、自动化测试、交叉验证。这些机制的搭建成本不低。
四、工具碎片化 #
Mem0 做陈述性记忆,Hermes 做程序性记忆(skill),GBrain 做知识图谱,MCP 做访问协议——各个层面都有人在做,但没有统一的记忆架构标准。今天的记忆系统像 MCP 出现之前的工具生态:M×N 的适配噩梦。
MCP 正在解决”访问层”的标准化,但记忆的”写入策略””遗忘机制””验证流程”仍各自为政。这个问题可能需要一个类似 MCP 的”记忆协议”来解决——但那是后话。
五、总结:开发者的角色迁移 #
回到最根本的问题:AI 时代的开发,到底在开发什么?
开发的本质变了 #
前 AI 时代,开发是写代码。代码是资产,版本控制管代码,CI/CD 跑代码,code review 审代码。
AI 时代,代码越来越多由 AI 生成。开发的重心从”写代码”转移到策展和维护一个让 AI 执行有效的知识体——这个知识体包括项目上下文、决策记录、设计经验、用户反馈、运行数据。
这不是抽象的比喻。AGENTS.md 就是这个知识体的雏形——它不是代码,但 AI 没有它就写不出符合项目约定的代码。PDC 生成的 /api/posts/*.md 也是这个知识体——它不是给人看的 HTML,但 AI 没有它就无法零噪声读取博客内容。
开发者角色的迁移 #
1 | |
核心能力从”写好代码”变成”维护好让 AI 写好代码的记忆”。这不是降级——维护一个高质量、可检索、可验证的记忆系统,比写代码更难,因为它需要的不只是技术能力,还有判断什么值得记住、什么应该遗忘的元认知。
终极资产 #
开源 Agent 架构拆解认知六的判断,在这里得到了终极验证:
框架是 runtime 可以换,记忆和 skill 是资产不应该换。
37 个 Agent 框架会消亡,你的代码库会被重构,你用的编程语言会更替。但你积累的——关于这个项目为什么这么设计、这个 bug 上次怎么解的、这个架构决策的权衡是什么——这些验证过的、可检索的记忆,是跨框架、跨语言、跨工具的真正资产。
MDD 不是未来时——它的每个组成部分都已经存在。缺的只是把它们组装起来的意识。
参考资料 #
- 本站 开源 Agent 架构深度拆解 — Agent 记忆架构(陈述性 vs 程序性、WAL+checkpoint、框架可换记忆不可换)
- 本站 深入浅出 RAG — 非参数化记忆,RAG 的本质是”可更新的外部记忆”
- 本站 MCP 协议详解 — 记忆的标准化访问接口,M+N 线性解法
- 本站 什么是好的提示词 — 指令驱动范式的底层原理,outcome-first 转向
- 本站 用 Hexo 搭建认知管理系统 — 记忆的积累-索引-检索-复用闭环实践
- 本站 AI 浪潮的第一性原理 — AI 浪潮的泡沫诊断与结构性判断