<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>规格驱动开发 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E8%A7%84%E6%A0%BC%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/</link>
        <description>Recent content in 规格驱动开发 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Mon, 25 May 2026 00:19:14 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E8%A7%84%E6%A0%BC%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GitHub Spec Kit 是什么？用规格驱动开发约束 AI 编程</title>
        <link>https://knightli.com/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;GitHub 的 &lt;strong&gt;Spec Kit&lt;/strong&gt; 是一个面向 AI 编程的新工具包，目标是帮助开发者实践 &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;，也就是规格驱动开发。&lt;/p&gt;
&lt;p&gt;它解决的问题很直接：现在很多 AI 编程工作流太像“边聊边写”。人类给一个大概想法，Agent 立刻开始改代码，短期看很快，但需求边界、验收标准、技术取舍和任务拆分往往没有沉淀下来。项目稍微复杂一点，就容易变成一次性的 vibe coding。&lt;/p&gt;
&lt;p&gt;Spec Kit 的思路是反过来：先把规格写清楚，再进入计划、任务和实现。代码不再是第一步，规格才是第一步。&lt;/p&gt;
&lt;h2 id=&#34;spec-kit-是什么&#34;&gt;Spec Kit 是什么？
&lt;/h2&gt;&lt;p&gt;Spec Kit 是 GitHub 开源的规格驱动开发工具包。它提供 &lt;code&gt;specify&lt;/code&gt; CLI、模板、脚本和面向 AI coding agent 的命令，让团队可以围绕同一套结构化产物推进开发。&lt;/p&gt;
&lt;p&gt;它强调的不是“让 AI 少问问题”，而是让 AI 在写代码前先生成并完善这些内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目原则：团队对质量、测试、体验、性能等方面的约束；&lt;/li&gt;
&lt;li&gt;功能规格：要做什么、为什么做、用户故事和功能需求；&lt;/li&gt;
&lt;li&gt;技术计划：使用什么技术栈、如何落地、有哪些架构决策；&lt;/li&gt;
&lt;li&gt;任务清单：把计划拆成可执行步骤；&lt;/li&gt;
&lt;li&gt;实现过程：按任务逐步修改代码，而不是一次性乱改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套流程让 AI 编程更像工程协作，而不是一次提示词表演。&lt;/p&gt;
&lt;h2 id=&#34;基本使用流程&#34;&gt;基本使用流程
&lt;/h2&gt;&lt;p&gt;官方 README 给出的入门流程大致是这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初始化后，项目里会生成 &lt;code&gt;.specify&lt;/code&gt; 目录、模板、脚本和与 Agent 集成的命令。随后在支持的 AI coding agent 中使用 &lt;code&gt;/speckit.*&lt;/code&gt; 命令推进开发。&lt;/p&gt;
&lt;p&gt;典型顺序是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;/speckit.constitution&lt;/code&gt; 用来建立项目原则，&lt;code&gt;/speckit.specify&lt;/code&gt; 描述产品需求，&lt;code&gt;/speckit.clarify&lt;/code&gt; 补齐模糊点，&lt;code&gt;/speckit.plan&lt;/code&gt; 生成技术计划，&lt;code&gt;/speckit.tasks&lt;/code&gt; 拆任务，最后由 &lt;code&gt;/speckit.implement&lt;/code&gt; 执行实现。&lt;/p&gt;
&lt;p&gt;这和直接对 Agent 说“帮我做一个应用”差别很大。Spec Kit 要求你把“做什么”和“怎么验收”先说清楚，再让 Agent 动手。&lt;/p&gt;
&lt;h2 id=&#34;它改变了-ai-编程的入口&#34;&gt;它改变了 AI 编程的入口
&lt;/h2&gt;&lt;p&gt;传统 AI 编程经常从代码开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我想做一个任务管理应用，帮我写出来。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spec Kit 更像这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先定义这个任务管理应用的用户、场景、功能边界、验收标准和非目标；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;再根据这些规格选择技术方案；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;然后拆成任务；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最后逐步实现。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个变化很重要。因为 AI 最擅长根据上下文执行，但如果上下文本身是松散的，执行速度越快，偏离方向也可能越快。Spec Kit 把上下文变成文件和模板，让需求、计划和任务都能被 review、修改和版本管理。&lt;/p&gt;
&lt;p&gt;换句话说，它不是让 AI 更“自由”，而是让 AI 在更清晰的工程轨道上自由发挥。&lt;/p&gt;
&lt;h2 id=&#34;核心命令怎么理解&#34;&gt;核心命令怎么理解？
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是项目的“宪法”。它会生成或更新 &lt;code&gt;.specify/memory/constitution.md&lt;/code&gt;，用于记录项目长期遵守的原则，例如代码质量、测试标准、用户体验一致性、性能要求和技术决策规则。&lt;/p&gt;
&lt;p&gt;这一步适合写团队共识，而不是单个功能需求。&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是功能规格阶段。你需要描述要构建什么、用户是谁、解决什么问题、有哪些核心流程。&lt;/p&gt;
&lt;p&gt;官方特别强调：这一阶段不要过早关注技术栈。先把 what 和 why 写清楚，再讨论 how。&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是补问题的阶段。很多需求第一次写出来都会有空洞：权限怎么处理？异常状态是什么？数据是否持久化？边界条件如何验收？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt; 的价值，是让 Agent 主动发现规格中的不确定点，并把回答记录回规格文档，减少后面返工。&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是技术计划阶段。到了这里，才开始明确框架、数据库、架构、API、测试策略和约束。&lt;/p&gt;
&lt;p&gt;如果说 &lt;code&gt;/speckit.specify&lt;/code&gt; 是产品语言，&lt;code&gt;/speckit.plan&lt;/code&gt; 就是工程语言。&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这一步把计划拆成可执行任务。好的任务清单应该能让 Agent 逐步推进，也能让人类看懂每一步的目的。&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;最后才进入实现。Agent 根据前面沉淀的规格、计划和任务修改代码。这时它不再是凭一段大 prompt 猜需求，而是在一组结构化文档里执行。&lt;/p&gt;
&lt;h2 id=&#34;为什么它适合-ai-编程&#34;&gt;为什么它适合 AI 编程？
&lt;/h2&gt;&lt;p&gt;Spec Kit 的价值不在于某个神奇命令，而在于它把 AI 编程中最容易缺失的东西补了回来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求可审查；&lt;/li&gt;
&lt;li&gt;计划可讨论；&lt;/li&gt;
&lt;li&gt;任务可追踪；&lt;/li&gt;
&lt;li&gt;决策有上下文；&lt;/li&gt;
&lt;li&gt;产物可以进入 Git 历史；&lt;/li&gt;
&lt;li&gt;团队可以复用模板和原则；&lt;/li&gt;
&lt;li&gt;Agent 的实现不再只依赖一次性聊天记录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对复杂项目尤其有用。越是多人协作、长期维护、质量要求高的项目，越不能只靠临时 prompt 驱动开发。&lt;/p&gt;
&lt;h2 id=&#34;扩展和-preset&#34;&gt;扩展和 Preset
&lt;/h2&gt;&lt;p&gt;Spec Kit 还提供了两类自定义能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;：增加新命令、新模板或外部工具集成；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;：改变现有规格、计划、任务模板的格式和术语。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单理解：如果要新增能力，用 Extension；如果要改造工作流风格，用 Preset。&lt;/p&gt;
&lt;p&gt;例如，团队可以通过 Preset 强制加入安全审查、监管追踪、领域术语或测试优先规则；也可以通过 Extension 增加 Jira 集成、代码审查、项目健康检查等新阶段。&lt;/p&gt;
&lt;p&gt;这说明 Spec Kit 并不想把所有团队锁进同一种流程，而是提供一个可扩展的规格驱动骨架。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用？
&lt;/h2&gt;&lt;p&gt;Spec Kit 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 AI coding agent 做新项目原型；&lt;/li&gt;
&lt;li&gt;想把 vibe coding 变成可复盘流程；&lt;/li&gt;
&lt;li&gt;团队希望统一 AI 生成代码前的需求和计划格式；&lt;/li&gt;
&lt;li&gt;项目需要明确验收标准和测试要求；&lt;/li&gt;
&lt;li&gt;希望把需求、计划、任务和实现过程都纳入版本管理；&lt;/li&gt;
&lt;li&gt;正在探索 GitHub Copilot、Claude Code、Codex CLI 等工具的团队化用法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定适合非常小的一次性脚本。对于几行代码能解决的问题，完整规格流程可能显得重。但只要任务开始涉及多个页面、多个模块、状态管理、权限、数据模型或长期维护，Spec Kit 的结构化收益就会变明显。&lt;/p&gt;
&lt;h2 id=&#34;我的理解&#34;&gt;我的理解
&lt;/h2&gt;&lt;p&gt;Spec Kit 代表的是 AI 编程工具的一种重要转向：从“让 Agent 更快写代码”，转向“让 Agent 更可靠地参与软件工程”。&lt;/p&gt;
&lt;p&gt;过去的 AI 编程关注提示词和模型能力；Spec Kit 更关注流程、产物和约束。它提醒我们：AI 写代码越快，规格、计划和验收就越不能省。&lt;/p&gt;
&lt;p&gt;如果你已经习惯让 AI 直接实现功能，可以尝试用 Spec Kit 改变起手式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;先让 AI 帮你把需求写成规格，再让它写代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这一步看似变慢，实际是在减少后面“代码写完了，但不是我想要的”的返工。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
