LeanSpec:一个轻量级的 SDD 框架

19 天前
 tikazyq

今年年初,我被 Claude Sonnet 3.7 的 AI 编程能力深深震撼。那时 "Vibe Coding" 这个词还没流行起来,但我做的正是这件事——让 AI 生成代码,我只负责引导对话。感觉像魔法一样神奇。直到问题开始浮现。

几周后,我注意到一些规律:代码冗余越来越多,实现方向偏离了最初的设想,AI 在不同会话之间丢失上下文导致返工不断增加。蜜月期结束了。我需要一套结构化的方法,但又不想引入那些拖慢开发速度的重型流程。

这段探索之旅让我先后尝试了 Kiro 、Spec Kit 、OpenSpec 等工具,最终促使我开发了 LeanSpec——一个轻量级的规格驱动开发( Spec-Driven Development ,SDD )框架。今天发布的 v0.2.7 版本,是三周内的第十个版本。这篇文章分享我为什么要做 LeanSpec 、它有什么不同,以及如何快速上手。

Vibe Coding 的隐性成本

📝 Vibe Coding 的陷阱

AI 编程助手的生产力惊人——直到它们开始出问题。缺乏结构化的上下文,AI 会生成看似合理但前后矛盾的代码,导致技术债务在每个会话中不断累积。

如果你深度使用过 AI 编程工具,大概率遇到过这些问题:

症状 根本原因 影响
代码冗余 AI 不记得之前的实现 重复逻辑散落在各处
意图偏移 上下文在会话间丢失 功能与你的设想渐行渐远
返工增多 缺少持久的单一信息源 反复解释相同的背景
架构不一致 缺乏结构化指导 组件之间无法顺畅协作

业界的解决方案是 规格驱动开发( Spec-Driven Development ,SDD )——先写规格文档,再写代码,为 AI (和人类)提供持久的上下文。但当我考察现有工具时,发现了一个空白地带。

ℹ️ 延伸阅读

刚接触 SDD ?可以先阅读我的基础文章 规格驱动开发:复杂功能的系统化方法 了解方法论基础,或者看 2025 年 SDD 工具全景 了解业界工具的全面对比。想不安装任何工具就体验方法论?试试 不用工具实践 SDD 教程。

为什么要做 LeanSpec

我在 SDD 领域的探索揭示了三类工具,每类都有不适合我的地方:

厂商锁定:Kiro (亚马逊的 SDD IDE )集成度很高,但要求放弃现有工作流。我喜欢自己的工具组合,换 IDE 不在考虑范围内。

认知负担过重:Spec Kit 提供了完整的结构,但其繁复的格式带来了很大的认知负担。即使有 AI 辅助撰写,理解和维护这些规格文档仍然耗费大量心智资源,对于独立开发者和小团队来说过于沉重。

缺少项目管理:OpenSpec 最接近我理想中的样子——轻量且灵活——但缺乏跨项目管理几十个规格的能力。

我想要的是:一套方法论,而不只是一个工具。就像敏捷开发一样——一组人人可以采纳的原则,配合不碍事的轻量工具。

于是我做了 LeanSpec 。然后用 LeanSpec 来开发 LeanSpec 。

第一性原理:设计基石

LeanSpec 不只是工具链,它建立在五条第一性原理( First Principles )之上,指导每一个设计决策:

上下文经济( Context Economy ):规格必须装进工作记忆——无论人还是 AI 。目标 300 行以内。如果 10 分钟读不完,就太长了。

信噪比最大化( Signal-to-Noise ):每一行都要服务于决策。没有样板文件,没有填充内容,没有为了形式的形式。

意图优先于实现( Intent Over Implementation ):记录 为什么,而不只是 怎么做。实现细节会变,意图不会。

弥合鸿沟( Bridge the Gap ):规格同时服务于人和 AI 。任何一方看不懂,这份规格就是失败的。

渐进披露( Progressive Disclosure ):从简单开始,只在感到痛点时才增加结构。不做预设的复杂。

这些原则不只是文档——LeanSpec 的 validate 命令会自动检查规格是否符合它们。

核心功能

Web UI 可视化管理

我最兴奋的功能:lean-spec ui 启动完整的 Web 界面,让你可视化地管理规格。

# 启动 Web UI
npx lean-spec ui

UI 提供看板视图、规格详情页(支持 Mermaid 图表渲染)和依赖关系可视化——全在浏览器里完成。适合规划会议或审查项目状态。

第一性原理校验

LeanSpec 不只存储规格,还会对照第一性原理进行校验:

# 校验规格是否符合第一性原理
lean-spec validate

# 输出示例:
# specs/045-user-auth/README.md
#   ⚠️  warning  Spec exceeds 300 lines (342)  context-economy
#   ⚠️  warning  Missing overview section      structure
# 
# ✖ 2 warnings in 1 spec

这能保持规格精简有意义,防止重型 SDD 工具常见的规格膨胀问题。

智能搜索与项目管理

查找相关规格不应该需要记住精确名称:

# 跨所有规格的语义搜索
lean-spec search "authentication flow"

# 高级查询
lean-spec search "status:in-progress tag:api"
lean-spec search "created:>2025-11-01"

看板视图让项目状态一目了然:

lean-spec board

# 📋 LeanSpec Board
# ─────────────────────────────────────
# 📅 Planned (12)     🚧 In Progress (3)     ✅ Complete (47)
# ─────────────────────────────────────

MCP Server:AI 集成

LeanSpec 内置 MCP ( Model Context Protocol )服务器,让 AI 助手可以直接与你的规格交互:

{
  "mcpServers": {
    "leanspec": {
      "command": "npx",
      "args": ["@leanspec/mcp"]
    }
  }
}

支持 Claude Code 、Cursor 、GitHub Copilot 等 MCP 兼容工具。AI 代理可以搜索规格、读取上下文、更新状态——全部通过编程接口完成。

示例项目快速上手

刚接触 SDD ?从一个完整的示例开始:

# 生成一个完整的教程项目
npx lean-spec init --example dark-theme

提供三个示例:dark-themedashboard-widgetsapi-refactor——分别演示不同的 SDD 模式。

开发历程:用 LeanSpec 开发 LeanSpec

这个项目最有意思的地方在于:初版发布后,LeanSpec 完全使用 LeanSpec 自身来开发

里程碑 日期 说明
第一行代码 2025 年 10 月 23 日 从基础的规格增删改查开始
v0.1.0 (首次发布) 2025 年 11 月 2 日 从零到发布仅用 10 天
v0.2.0 (生产就绪) 2025 年 11 月 10 日 第一性原理校验,完整 CLI
v0.2.7 (当前版本) 2025 年 11 月 26 日 24 天内发布 10 个版本

在 LeanSpec 项目内部,已经创建了超过 120 个规格——涵盖功能实现、架构决策、复盘反思,甚至营销策略。反馈循环非常紧凑:发现痛点 → 写规格 → 实现 → 用真实场景验证。

我还把 LeanSpec 应用到了其他项目:

在所有项目中,规律都是一致的:规格提供了跨会话存续的上下文,AI 能持续对齐我的意图,我花在反复解释上的时间大幅减少。

LeanSpec 的独特之处

如果你读过我的 SDD 工具分析,就知道我评估过这个领域的六个主要工具。LeanSpec 的定位是这样的:

维度 重型工具 LeanSpec
学习曲线 数天到数周 几分钟
规格开销 大量前期工作 边写边补
Token 成本 通常 >2,000 目标 <300 行
灵活性 结构刚性 适应你的工作流
厂商锁定 常见 不存在
理念 工具优先 方法论优先

LeanSpec 的 "Lean" 有多重含义:

快速上手

5 分钟内试用 LeanSpec:

# 全局安装
npm install -g lean-spec

# 在项目中初始化
lean-spec init

# 创建第一个规格
lean-spec create user-authentication

# 启动 Web UI
lean-spec ui

或者试试示例项目:

npx lean-spec init --example dark-theme

已经在用 Spec Kit 或 OpenSpec ? 参考 迁移指南——迁移过程很顺畅。

未来规划

LeanSpec 仍在活跃迭代中。当前开发重点包括:

我做 LeanSpec 是为了解决自己的问题——Vibe Coding 带来的代码质量下降、AI 会话间的上下文丢失、重型 SDD 工具的认知负担。如果你也面临类似的挑战,希望它对你同样有帮助。


链接:

有问题、反馈或功能建议?欢迎提 issue 或发起 讨论。每一条我都会看。


📝 本文同步发布于我的个人技术博客 marvinzhang.dev

🔗 完整文章链接: https://marvinzhang.dev/zh/blog/introducing-leanspec

💬 欢迎访问我的博客了解更多技术文章!

1609 次点击
所在节点    分享创造
4 条回复
tigerstudent
18 天前
牛逼
yibie
17 天前
为什么要如此复杂?
yihy8023
8 天前
感谢,今天开始尝试了,把大需求按规范拆分为若干 spec ,webui 的部分让我觉得很清晰。 我上周花了一天和 ai 对一个大需求的设计,产生一个 8000 的需求和研发设计,在后续拆分使用时,觉得有丢失信息和任务分解出来后缺少一条串好的管理流程。
showmethetalk
8 天前
学习了 👍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1175511

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX