核心导读: 你一定遇到过这种令人崩溃的场景:你辛辛苦苦写了一份详尽的需求文档喂给 AI,但在多轮对话后,AI 突然“失忆”了,它不仅忘记了你在开头定下的架构规范,还自作主张地引入了你不想要的第三方库。 本文将带你深入 LLM(大语言模型)的底层机制,揭示为什么“提示词工程”已死,详解如何通过上下文工程(Context Engineering)、Markdown 语义表示层与分层记忆架构,像给 CPU 设计多级缓存一样,把人类的工程意图死死锁定在 AI 的执行轨迹中。
引言:玄学失效,当 AI 患上“阿尔茨海默症”
在 AI 辅助编程的早期,市面上充斥着各种“咒语”教程:“请扮演一个 20 年经验的资深架构师”、“深呼吸,一步步来”、“如果你做错了,我会扣除你的小费”…… 这种依赖情绪勒索和角色扮演的把戏,被称为提示词工程(Prompt Engineering)。
在应对写个脚本、跑个数据清洗的小任务时,这些咒语似乎有点用。但当你把一个包含了 50 个 API、3 种微服务交互逻辑的《交易系统重构方案》丢给 AI 时,所有的玄学咒语都失效了。
随着对话上下文的拉长,AI 会不可避免地患上“阿尔茨海默症”:
- 中段迷失(Lost in the middle): 论文证明,LLM 对超长上下文中段的信息提取能力极差。你写在文档第 5 页的“严禁使用 Redis 事务”的警告,AI 根本“看不见”。
- 幻觉漂移: 当 AI 遇到上下文中没有明确定义的边界时,它不会停下来问你,而是基于其预训练数据中的概率分布,强行“脑补”出一个错误的设计。
要解决这个问题,我们需要从根本上认识到:LLM 是一个无状态(Stateless)的函数。 它没有人类的“潜意识”和“常识”。你想要 AI 输出确定性的工业级代码,就必须在每一次推理时,精准地、结构化地为它装载**“信息载荷”**。
这就是 SDD 赖以生存的底层机理——上下文工程(Context Engineering)。
第一章:上下文工程——从“炼丹提示词”到“精准信息装配”
软件 3.0 时代,Prompt Engineering 已死,Context Engineering 崛起。
两者的核心区别在于:前者研究“怎么说话让模型更聪明”,后者研究“如何把错综复杂的项目状态压缩、剪枝、并以最高效的数据结构投喂给模型”。
在 SDD 工作流中,一次成功的代码生成,其上下文载荷(Payload)必须经过严格的组装。通常包含以下四个象限:
- System Rules(宪法层): 全局的技术栈约束(如:“本项目强制使用 TypeScript 严格模式,禁止使用
any”)。 - Current State(环境层): 当前项目的文件树结构、依赖版本、相关的现有接口(通常由 Cursor 等工具自动检索或 RAG 提供)。
- Target Spec(意图层): 也就是我们的规范文档,明确指出这次要“做什么”以及“验收标准”。
- User Query(触发层): 你在对话框里敲下的那句简短指令(如:“请按 Spec 开始实现相关文件”)。
如果说 LLM 是一台高性能的 V8 发动机,那么上下文工程就是燃油喷射系统。给的油少了(信息不足),AI 就开始幻觉;给的油太杂(未过滤的代码全量塞入),发动机就会因为“信息过载”而熄火。
第二章:语义表示层——为什么 Markdown 是 SDD 的天然媒介?
明确了要装配什么信息后,我们用什么格式把 Spec 传给 AI? Word 太臃肿,PDF 难以解析,JSON 适合机器但不适合人类阅读。Markdown 成了大模型时代人机对齐的唯一“通用语言”。
为什么大模型对 Markdown 的理解力如此之高?
因为现今所有顶级大模型(Claude 4.6 Sonnet)的预训练数据集中,包含了海量 GitHub 的开源仓库。而在 GitHub 中,最高质量的意图描述、架构设计、Issue 讨论和 PR 说明,全部是用 Markdown 编写的。在模型的权重里,Markdown 的各种符号(#, -, ```)天然绑定了极高的“逻辑结构注意力(Attention)”。
在 SDD 实操中,一份高浓度的、AI 友好的 Markdown Spec 必须具备以下特征:
🛠️ 【拿走即用】AI 友好的 Spec Markdown 模板实例
---
# YAML Frontmatter:提供高维元数据,让 AI 快速建立全局认知
module: e-commerce/checkout
author: Human Architect
status: Draft -> AI Implementation
dependencies:["Redis", "Postgres-OrderDB"]
---
# 🛒 购物车结算中心重构规范 (Spec)
## 1. 意图定义 (Intent)
将现有的单商品结算逻辑,重构为支持多店铺、多商品的聚合结算模型。
- **必要复杂性约束**:跨店铺的优惠券不能互相叠加。
- **核心数据结构变更**:引入 `StoreGroup` 实体。
## 2. 领域模型更新 (Domain Models)
> 使用 TypeScript 接口定义,AI 对这种类型签名的敏感度极高。
// [AI 注意]:严禁修改现有 Order 接口的 id 字段类型
interface CheckoutSession {
sessionId: string;
storeGroups: StoreGroup[];
globalDiscount: number; // 全局平台折扣
}
## 3. 验收标准 (Acceptance Criteria / EARS 格式)
- **If** 用户触发结算, **While** 购物车包含 2 个以上商铺的商品, **Then** 系统必须返回按商铺分组的计算结果。
- **If** Redis 锁获取失败, **Then** 抛出 `ConcurrentCheckoutException`,不可降级。
## 4. 任务拆解 (Implementation Tasks)
- [ ] Task 1: 新增 `CheckoutSession` 类型定义。
- [ ] Task 2: 在 `CheckoutService` 中实现分组逻辑。
当大模型读取这份 Markdown 时,它会:
- 从 YAML 头中得知这涉及 Redis 缓存。
- 从代码块中提取精确的 TypeScript AST(抽象语法树)节点。
- 把 Task 列表转化为它的内部状态机,一步步执行。 这就叫“意图的无损传递”。
第三章:分层记忆架构——打造不遗忘的 AI 脑
有了高质量的 Markdown Spec 依然不够。在一个拥有几十万行代码的真实项目中,如果我们每次对话都把所有架构规范和所有 Spec 塞进上下文,不仅成本高昂,而且会触发“中段迷失”问题。
为了让 AI 在漫长的开发周期中“记住”规范,我们需要在工程上实现一套**“分层记忆系统(Hierarchical Memory System)”**。这就如同计算机的存储架构(寄存器 -> L1/L2 缓存 -> 内存 -> 硬盘)。
下面是 SDD 范式下的标准系统级分层记忆流转架构图:
graph TD
subgraph 长期记忆层 Long-Term Memory
A1[企业架构级规范 Global_Rules]
A2[向量数据库 / 历史代码库 RAG]
A3[已归档的业务 Spec 集合]
end
subgraph 中期记忆层 Mid-Term Memory
B1[.cursorrules / .claudecode 环境配置]
B2[当前正在开发的 Feature_Spec.md]
end
subgraph 短期记忆层 Short-Term Memory
C1[当前人类用户的 Prompt 对话]
C2[IDE 当前打开文件的 AST 切片]
C3[上一次运行报错的 Error Log]
end
subgraph LLM 推理引擎
D((大语言模型<br>Claude/GPT))
end
%% 数据流向
A2 -.->|向量检索相关历史| B2
A3 -.->|提供业务领域知识| B2
A1 ==>|全局约束注入| B1
B1 ==>|高优前置 Context| D
B2 ==>|当前意图 Context| D
C1 -->|触发指令| D
C2 -->|工作区环境| D
C3 -->|反馈循环| D
%% 样式
style A1 fill:#e1bee7,stroke:#8e24aa,stroke-width:2px
style B2 fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style D fill:#bbdefb,stroke:#1976d2,stroke-width:3px,color:#000
style C1 fill:#fff9c4,stroke:#fbc02d,stroke-width:2px
图 1:SDD 分层记忆流转架构
3.1 长期记忆(硬盘/数据库):解决“项目背景”
- 载体: 向量检索(RAG)、代码图谱(Code Graph)。
- 作用: 储存公司历史的架构文档、老旧的归档 Spec。AI 不会主动去看它们,只有当你提到“复用上个月那个退款模块的设计”时,检索系统才提取对应的片段,作为补充背景喂给 AI。
3.2 中期记忆(内存):解决“当前上下文一致性”
- 载体: 根目录下的
.cursorrules文件,以及我们刚写的那个Feature_Spec.md。 - 作用: 这是最重要的一层。中期记忆是 AI 当前工作周期内的**“事实来源(Source of Truth)”**。在 SDD 实践中,我们会将
Spec.md固定在 IDE 的上下文中(如 Cursor 的 Pinned Context)。这保证了 AI 无论怎么重构,都不会偏离当前的业务意图和验收标准。
3.3 短期记忆(寄存器):解决“当前执行任务”
- 载体: 你的对话框记录(Chat History)、当前正在编辑的光标所在文件。
- 作用: 这是 AI 眼前的任务。你对 AI 说:“把这段逻辑重构成 switch-case”,这句话就是短期记忆。短期记忆极其容易被冲刷和遗忘,所以绝不能把复杂的业务规则通过对话框(短期记忆)发给 AI,而必须写进 Spec(中期记忆)里。
结语:控制了上下文,就控制了 AI 的灵魂
通过深入底层机制,我们得出了一个在 AI 编程时代价值连城的认知:AI 生成代码的质量,不取决于它有多“聪明”,而严格正比于你输入的结构化上下文的质量。
我们不再是“提示词工程师”,而是**“上下文系统架构师”**。利用 Markdown 搭建人类与机器的语义桥梁,利用分层记忆系统确保规范的强制执行,我们终于拥有了驯服 LLM 随机性、将 SDD 理念落地的底层武器。
但理论终究需要落地。在企业级研发中,我们该如何一步步执行这套方法论? 在下一篇文章 《【标准流程】SDD 的五阶段 SOP:打造工业级 AI 研发流水线》 中,我们将为你提供一套完全可复制的 标准作业程序(SOP)。从“确立宪法”到“原子化拆解”,教你如何将这些底层机理转化为团队每天都在使用的流水线工具。
敬请期待。