理解 LeanSpec
"最好的规范是被阅读、理解和执行的规范——无论是人类还是 AI。"
LeanSpec 是一种思维方式和方法论,用于编写在 AI 驱动的开发中实际使用的规范。它建立在不可变的约束(物理、生物、经济)之上,旨在弥合人类意图与机器执行之间的差距。
什么是 LeanSpec?
LeanSpec 是:
- 基于约束的方法论,用于编写适合工作记忆的规范
- 桥梁,连接人类意图和 AI 代理执行
- 上下文工程实践,用于管理 AI 工作记忆
- 持久记忆层,为 AI 代理跨会话提供持久化
- 敏捷方法:从小处开始,迭代,专注于结果
LeanSpec 提供:
- 用于创建和管理规范的 CLI 工具
- 用于项目管理的结构化前置元数据(状态、标签、依赖关系)
- MCP 服务器集成,供 AI 代理访问
- 用于管理复杂性的子规范文件
- 验证和项目健康跟踪
LeanSpec 解决的问题
传统规范失败
传统规范由于可预测的原因而失败:
- 太长 → 没人读(违反工作记忆限制)
- 太详细 → 很快就过时(维护负担)
- 太僵化 → 无法随着理解的增长而适应(过早的结构)
- 太正式 → 阻碍协作(摩擦超过价值)
这些不是流程失败——它们是约束违规。
AI 驱动开发的差距
在 AI 辅助开发中,出现了一个新挑战:
- 人类以目标和上下文思考("使仪表板变快")
- AI 需要清晰、明确的指令("使用 Redis 缓存,p95 <100ms")
- 必须弥合差距,否则 AI 会产生幻觉、误解或反复询问
传统文档无法弥合这一差距,因为它要么:
- 对 AI 执行来说太模糊(高层战略文档)
- 对人类阅读来说太详细(全面的 API 参考)
- 没有为 AI 检索结构化(没有示例/标准的散文)
为什么现有解决方案不足
为什么不只使用任务单/问题?
- 对复杂功能来说太简短(没有理由、约束或权衡)
- 对 AI 代理没有持久记忆(每个会话都重新开始)
- 难以在多个问题之间维护上下文
为什么不使用全面的文档?
- 太长而无法适应 AI 上下文窗口(常见 >10k 行)
- 太正式和详尽(违反信噪比)
- 维护负担随规模扩展(变得过时)
为什么不只与 AI 聊天?
- 上下文是短暂的(会话之间丢失)
- 没有决策的持久记录
- 无法扩展到团队协作
- 需要反复重新解释上下文
LeanSpec 解决方案
LeanSpec 有效是因为它与人类和 AI 的实际工作方式一致:
1. 尊重基本约束
基于三个不可变的约束:
- 物理:上下文窗口是有限的(即使有 1M+ 令牌)
- 生物:工作记忆很小(~7 项,5-10 分钟注意力)
- 经济:时间和令牌成本金钱
→ 上下文经济:规范必须适合工作记忆(<400 行)
2. 弥合人类和 AI 的理解
为两个受众编写规范:
- 对人类:清晰的问题、理由、权衡(为什么重要)
- 对 AI:结构化需求、示例、成功标准(要构建什么)
- 两者都获得:他们可以解析的自然语言 + 结构化数据
→ 弥合差距:使人类意图与机器执行对齐
3. 作为持久记忆
规范作为 AI 代理的语义记忆:
- 决策和理由跨会话持久化
- MCP 服务器实现可靠检索
- 交叉引用创建知识图谱
- 更新保持记忆最新
→ AI 代理记忆:超越聊天会话的上下文
4. 应用上下文工程
主动管理 AI 工作记忆:
- 分区(当 >400 行时拆分为子规范)
- 压缩(删除冗余)
- 压缩(总结已完成的阶段)
- 隔离(分离不相关的关注点)
→ 上下文工程:在上下文失败发生之前预防它们
5. 拥抱渐进式披露
从简单开始,仅在感到痛苦时添加结构:
- 独立开发:仅状态 + 创建日期
- 小团队:添加标签、优先级
- 企业:添加受让人、史诗、冲刺
→ 渐进式披露:没有过早的抽象
何时使用 LeanSpec
LeanSpec 是为 AI 驱动的 SDD(规范驱动开发) 设计的。当它有助于弥合人类意图到机器执行时编写规范。当差距已经清楚时跳过它。
编写规范时...
🎯 意图需要澄清:
- 存在多个有效的解释
- 权衡或约束不明显
- "为什么"与"是什么"一样重要
- 需要记录决策
🤖 AI 将实现:
- AI 代理需要可执行的上下文
- 成功标准必须明确
- 约束无法从代码推断
- 实现路径需要缩小
🏗️ 工作很重要:
- 触及系统的多个部分
- 架构或结构性变化
- 破坏性变化或重大重构
- 跨系统依赖
📚 需要捕获知识:
- 研究发现和权衡
- 技术探索或实验
- 回顾(什么有效,什么无效)
- 未来参考的决策
示例:
- 使用 AI 实现的新功能
- 影响多个使用者的 API 设计
- 架构决策(微服务 vs 单体)
- 重大重构(不是简单的重命名)
- 记录发现的研究尖峰
跳过规范时...
✂️ 意图不言自明:
- 明显的错误修复(明确的原因,明确的修复)
- 琐碎的重构(重命名、提取函数、格式化)
- 已在代码/注释中有良好记录
- 变化纯粹是机械的
🔬 工作是探索性的:
- 快速原型以发现需求
- 尝试多种方法
- 高度不确定性,可能会丢弃
- 通过实践学习更快
注意:在原型设计后编写规范以捕获学习
📄 不适合的工具:
- API 参考文档(使用自动生成的文档)
- 用户手册(使用专用工具)
- 具有特定格式的合规文档(使用所需格式)
- 依赖更新(标准版本升级)
示例:
- 单行错误修复
- 简单的重命名或代码格式化
- 标准依赖版本升级
- 实验性原型(如果有效则在之后记录)
核心问题
"规范会帮助弥合人类意图到机器执行,还是差距已经清楚?"
如果是 → 编写它(保持 <300 行)
如果否 → 跳过它或使用代码/注释
应用第一原则来指导判断。
LeanSpec 在实践中的工作方式
SDD 工作流
- 发现 - 使用
lean-spec list检查现有规范 - 计划 - 在需要时使用
lean-spec create <name>创建规范 - 实现 - 编写代码,随着学习保持规范同步
- 更新 - 使用
lean-spec update <spec> --status <status>标记进度 - 完成 - 完成时标记完成,如果完成则归档
对于独立开发
- 从最小开始(仅状态 + 创建日期)
- 随着需求的出现添加结构
- 对您会忘记的复杂功能使用规范
- 让 AI 代理从规范实现
对于团队开发
- 规范提供共同理解
- 依赖跟踪协调需求
- 看板视图显示项目健康状况
- MCP 实现跨团队的 AI 协作
对于 AI 驱动的开发
规范具有双重目的:
- 人类-AI 桥梁:将意图转化为可执行的上下文
- AI 记忆:跨会话持久化决策和理由
AI 可以帮助编写规范:
- 人类提供意图、约束、成功标准
- AI 起草结构、示例、格式
- 人类改进以提高清晰度和精简原则
三种规范创建模式:
- 人类编写,AI 实现 - 您编写规范,AI 从中构建
- AI 起草,人类改进 - AI 从您的意图起草规范,您审查/改进
- 共同迭代创建 - 通过对话一起构建规范
所有三种模式都是有效的。根据上下文选择。
AI 辅助的规范编写决策:
当 AI 帮助规范编写时,决策从 "AI 是否需要这个来执行?" 转变为:
"将意图形式化为规范是否比继续对话增加价值?"
编写规范(在 AI 协助下)时:
- ✅ 意图需要持久化(决策、参考、入职)
- ✅ 对话已经澄清了要构建什么(~5+ 轮)
- ✅ 多个利益相关者需要对齐
- ✅ 复杂性需要结构(在聊天中会漂移)
- ✅ 需要合规或审计跟踪
跳过规范,继续对话时:
- ❌ 仍在发现要构建什么(继续探索)
- ❌ 没有歧义的快速功能(直接实现)
- ❌ 一次性原型或实验
- ❌ 代码库中已经清楚的上下文
检查点模型: 大多数规范从对话开始 → 准备好时结晶为规范 → 从规范实现。规范成为您工作中的形式化检查点。
了解更多: 使用 AI 编写规范涵盖工作流、模式和最佳实践。
AI 从规范实现:
- 清晰的需求减少幻觉
- 示例显示预期模式
- 成功标准定义"完成"
- 约束防止错误路径
底线
LeanSpec 是一种思维方式,而不是格式。
它有效是因为它与现实对齐:
- 上下文窗口是有限的(物理)
- 工作记忆很小(生物)
- 时间成本金钱(经济)
专注于:
- 为什么而不是什么
- 清晰度而不是完整性
- 行动而不是文档
- 演变而不是完美
成功指标:如果您的规范帮助人们(和 AI 代理)更快地构建更好的软件,您就做对了 LeanSpec。
了解更多
核心概念(为什么):
入门(如何):
- 快速开始 - 安装并创建您的第一个规范
- 创建和管理规范 - 基本操作
- 编写 AI 可执行的规范 - 12 个实用模式
参考: