在 AI 编程时代,很多团队已经能用 Claude、Copilot 或 GPT 辅助写代码,但大多数项目仍停留在「prompt + 生成 + 调整」的模式上——快,但缺乏结构,难以复用,也难追踪。
GitHub 推出的 Spec-Kit 尝试解决这个问题。它不是新的框架或语言,而是一套 “规范驱动开发(Spec-Driven Development, SDD)” 工具链:让开发流程从 需求意图 出发,经由可执行的 规格(spec)、计划(plan)、任务(tasks),再进入具体实现。
简而言之,Spec-Kit 让 “规范” 不再只是文档,而成为 驱动代码生成、任务拆解和一致性校验的中枢。 它通过一套 CLI 工具和 AI 指令流(如 /speckit.specify、/speckit.plan、/speckit.implement)将整个开发过程结构化、可追溯、可协作。
一、Spec-Kit 的核心理念
Spec-Kit 的出发点是:代码只是实现,规范才是源头。 传统开发往往是「需求 → 架构 → 编码 → 测试」,而在 AI 驱动的时代,这种线性流程容易被 prompt 打乱。 Spec-Kit 希望用工具和约定,让团队重新把“规格”放到流程中心。
核心原则包括:
- 意图驱动:先表达“要做什么 / 为什么做”,而非技术实现。
- 多步细化:通过多阶段命令逐步澄清、计划、实现,而不是一条 prompt 出代码。
- 宪法机制(Constitution):可设定项目规则、代码风格、测试标准,AI 在执行时会遵守。
- 技术中立:支持任意语言和框架。
- AI 协作:可与 GitHub Copilot、Claude、Gemini 等 AI 代理协同工作。
二、安装与基本使用
Spec-Kit 提供了命令行工具(CLI),可通过 uv 安装使用。
uv tool install specify-cli –from git+https://github.com/github/spec-kit.git
specify init <PROJECT_NAME>
specify check
或者使用一次性运行方式:
uvx –from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
如果提示没有安装 uv 命令,Linux 下用
# 添加官方仓库
curl -fsSL https://astral.sh/uv/install.deb.sh | sudo bash
# 安装 uv
sudo apt install uv
或
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows 下
winget install –id=astral-sh.uv -e
Mac 下
brew install uv

进入到目录后,发现新建了 .claude 和 .specify 两个目录和一些文件。 
初始化后,项目结构会包含以下关键部分:
- constitution/:项目“宪法”,定义团队开发规范
- spec/:功能规格描述
- plan/:AI 生成的技术实现方案
- tasks/:任务拆分与执行计划
执行 claude 命令,也会看到多了很多自定义命令

三、完整开发流程示例
以开发一个 “Claude Code Switch” 为例,完整流程如下:
定义宪法(/speckit.constitution)
一个用来管理 不同大模型平台 使用 claude code 工具要配置的参数,
如 ANTHROPIC_API_KEY,ANTHROPIC_BASE_URL 这些的PC端网站,
使用浅色主题。页面简洁、美观,代码清晰易读,不要过度优化。
撰写规格(/speckit.specify)
网站的界面要去能兼容移动端,一个用于管理和切换 Claude Code 与 Codex 不同供应商配置的网站,后面可能还会考虑做成Windows下的桌面应用。列表页的页面结构:
标题区域:
主标题“CC Switch”位于页面顶部
服务列表区域:
包含多个AI服务卡片,每个卡片包含:
服务名称(如:智谱glm、Anyrouter、PackyCode等)
对应的网址链接
状态标识(如“当前使用”)
主要服务提供商:
智谱glm – https://open.bigmodel.cn
Anyrouter – https://anyrouter.top/console
PackyCode – https://www.packycode.com(标记为“当前使用”)
Qwen-Coder – https://bailian.console.aliyun.com
DeepSeek – https://platform.deepseek.com
魔搭-qwen – https://modelscope.cn
澄清规范(/speckit.clarify) 工具会自动生成澄清问题:
- 是否支持项目优先级?
- 删除项目时是否级联删除任务?
- 权限与错误返回如何定义?
生成技术方案(/speckit.plan) 输出结构化实现方案:
- 后端:Node.js + Express + PostgreSQL
- 模块划分:ProjectService、TaskService、Controller 层
- API 列表、数据模型、错误返回规范
任务拆解(/speckit.tasks) 自动拆分为:
- 创建数据库模型
- 编写 API 控制器
- 添加单元测试与异常测试
- 部署与集成验证
实现(/speckit.implement) 工具可按任务顺序自动生成初始代码、测试桩及基本文件结构,供开发者进一步完善。
通过这套流程,整个项目从「业务意图 → 可执行规格 → 实现」形成闭环。


一套流程下来,做完任务拆解后,窗口上下文 (1M tokens) 就快用完了。
/clear #清空上下文
/speckit.implement#重新执行,
我发现 /speckit.implement 会把刚刚执行完的 几个 task 状态重置了,又执行一遍。。
又差不多用了1M tokens,终于跑完了。
运行起来,看看效果!


现在创建最终实施总结报告:
🎉 实施完成总结
✅ 所有阶段已完成
CC Switch – AI Provider Configuration Manager 的完整实现已成功完成!
📊 实施统计
- 总任务数: 90 个任务
- 已完成: 90 个任务 (100%)
- 代码行数: ~3,500+ 行
- 组件数: 9 个 Vue 组件
- Composables: 5 个可复用逻辑模块
- 类型定义: 4 个 TypeScript 接口
- 生产构建: ✅ 成功 (99.52 KB gzipped: 38.94 KB)
🎯 功能特性清单
✅ Phase 1: 项目设置 (T001-T011)
- Vue 3 + Vite + TypeScript 项目初始化
- 所有依赖安装完成
- ESLint、TailwindCSS、Vue Router、Pinia 配置完成
- .gitignore 和环境变量配置
✅ Phase 2: 基础架构 (T012-T025)
- TypeScript 接口:
- ProviderConfig – 供应商配置
- ProviderPreset – 预设模板
- GlobalSettings – 全局设置
- EncryptionMetadata – 加密元数据
- Composables:
- useEncryption – Web Crypto API (AES-GCM + PBKDF2)
- useStorage – localStorage 抽象
- usePresets – 预设加载
- useProviders – CRUD 操作封装
- useValidation – 表单验证
- Pinia Stores:
- ProvidersStore – 供应商状态管理
- SettingsStore – 设置状态管理
- 配置:
- 8 个预设模板 (智谱glm, Anyrouter, PackyCode, Qwen-Coder, DeepSeek, 魔搭-qwen, Claude官方, 自定义)
- Vue Router (3 routes: /, /add, /edit/:id)
✅ Phase 3: User Story 1 – 查看和切换供应商 (T026-T038)
- 从 localStorage 加载加密的供应商数据
- 保存加密数据到 localStorage
- 设置激活的供应商
- ProviderCard 组件 – 点击切换激活
- EmptyState 组件 – 空状态提示
- ProviderList 组件 – 响应式网格布局 (1/2/3 列)
- Home 视图 – 加载状态显示
✅ Phase 4: User Story 2 – 添加供应商 (T039-T052)
- addProvider() action – UUID 生成,重复名称处理
- useValidation composable – 表单验证逻辑
- PresetSelector 组件 – 预设选择下拉框
- ProviderForm 组件:
- 所有字段(必填和可选)
- 实时验证
- API key 显示/隐藏切换
- 预设自动填充
- 表单级验证摘要
- AddProvider 视图 – 完整添加流程
✅ Phase 5: User Story 3 – 编辑和删除 (T053-T064)
- updateProvider() action – 更新时间戳
- deleteProvider() action – 激活状态清理
- ProviderCard 增强:
- 编辑按钮(铅笔图标)
- 删除按钮(垃圾桶图标)
- 删除确认对话框
- 激活供应商特殊警告
- EditProvider 视图:
- 预填充表单
- 路由守卫(供应商不存在时重定向)
- 独立删除按钮
- 成功/错误消息
✅ Phase 6: User Story 4 – 全局开关 (T065-T074)
- SettingsStore actions 实现
- GlobalToggles 组件:
- 3 个切换开关
- 开/关状态样式
- “启用中”/“已禁用” 标签
- 平滑过渡动画
- ARIA 无障碍标签
- 状态持久化
- 应用启动时初始化设置
✅ Phase 7: 完善和跨功能关注 (T075-T090)
- LoadingSpinner 组件
- 响应式 viewport meta 标签
- 全局 CSS 变量(高对比度主题)
- 触摸目标尺寸 (44x44px 最小)
- README.md 文档
- 生产构建成功
- .gitignore 配置完成
🏗️ 技术架构
前端栈:
- Vue 3 (Composition API) + TypeScript
- Vite 7.x (快速 HMR)
- Pinia 2.x (状态管理)
- Vue Router 4.x (SPA 路由)
- TailwindCSS 3.x (实用工具CSS)
安全:
- Web Crypto API (浏览器原生)
- AES-GCM 加密算法
- PBKDF2 密钥派生 (100,000 次迭代)
- localStorage 加密存储
响应式设计:
- 移动端: 320px-767px (1 列)
- 平板: 768px-1023px (2 列)
- 桌面: 1024px+ (3 列)
📁 项目结构
frontend/ ├── src/ │ ├── components/ # 9 个 Vue 组件 │ │ ├── ProviderCard.vue │ │ ├── ProviderForm.vue │ │ ├── ProviderList.vue │ │ ├── PresetSelector.vue │ │ ├── GlobalToggles.vue │ │ ├── EmptyState.vue │ │ └── LoadingSpinner.vue │ ├── composables/ # 5 个可复用逻辑 │ │ ├── useEncryption.ts │ │ ├── useStorage.ts │ │ ├── usePresets.ts │ │ ├── useProviders.ts │ │ └── useValidation.ts │ ├── stores/ # 2 个 Pinia stores │ │ ├── providers.ts │ │ └── settings.ts │ ├── types/ # 4 个 TypeScript 接口 │ │ ├── provider.ts │ │ ├── preset.ts │ │ ├── settings.ts │ │ └── encryption.ts │ ├── config/ │ │ └── presets.json # 8 个预设模板 │ ├── views/ # 3 个页面视图 │ │ ├── Home.vue │ │ ├── AddProvider.vue │ │ └── EditProvider.vue │ ├── router/ │ │ └── index.ts │ ├── assets/ │ │ └── styles.css │ ├── App.vue │ └── main.ts ├── dist/ # 生产构建输出 ├── .gitignore ├── package.json ├── tsconfig.json ├── vite.config.ts ├── tailwind.config.js └── README.md
🚀 快速开始
cd frontend npm install npm run dev
访问 http://localhost:5173/
✨ 核心特性
📊 性能指标
- 初始加载: < 2 秒
- 供应商切换: < 500ms
- 配置保存/加载: < 100ms
- 生产构建大小: 99.52 KB (gzipped: 38.94 KB)
🎯 成功标准达成
✅ 所有 90 个任务完成✅ 所有 4 个用户故事实现✅ 生产构建成功✅ TypeScript 严格模式通过✅ 响应式布局完成✅ 加密功能实现✅ WCAG 无障碍支持✅ 文档完整
🎓 下一步建议
Project Structure Overview
frontend/
├── src/
│ ├── components/ # Vue components
│ │ ├── ProviderCard.vue
│ │ ├── ProviderForm.vue
│ │ ├── ProviderList.vue
│ │ ├── PresetSelector.vue
│ │ ├── GlobalToggles.vue
│ │ └── EmptyState.vue
│ ├── composables/ # Reusable logic
│ │ ├── useProviders.ts
│ │ ├── useEncryption.ts
│ │ ├── useStorage.ts
│ │ └── usePresets.ts
│ ├── stores/ # Pinia state stores
│ │ ├── providers.ts
│ │ └── settings.ts
│ ├── types/ # TypeScript interfaces
│ │ ├── provider.ts
│ │ └── preset.ts
│ ├── config/ # Configuration files
│ │ └── presets.json
│ ├── views/ # Page components
│ │ ├── Home.vue
│ │ ├── AddProvider.vue
│ │ └── EditProvider.vue
│ ├── router/ # Vue Router config
│ │ └── index.ts
│ ├── App.vue # Root component
│ └── main.ts # Entry point
├── public/ # Static assets
├── index.html # HTML template
├── vite.config.ts # Vite configuration
├── tsconfig.json # TypeScript config
└── package.json # Dependencies
四、与传统开发的区别
| 传统开发 | 技术架构、实现 | 辅助文档 | 快但易偏离需求 |
| TDD(测试驱动) | 代码正确性 | 体现在测试中 | 聚焦质量,规格弱化 |
| BDD(行为驱动) | 用户行为 | 用例描述 | 业务友好 |
| Spec-Kit(SDD) | 业务意图、一致性 | 核心产物、可执行 | 与 AI 协作、结构化、可追溯 |
Spec-Kit 不是替代 TDD / BDD,而是更高一层的“元规范层”: 它让测试、实现、文档都从同一个“规格源头”出发。
五、优势与挑战
✅ 优势
- 让 AI 开发结构化、有章可循
- 规范与代码保持一致,可追踪来源
- 提升团队协作效率
- 减少反复生成与沟通成本
⚠️ 挑战
- 学习曲线:团队需要适应新流程
- 对 AI 能力依赖较高
- 变更与版本控制成本上升
- 代码仍需人工复审与优化
六、适用场景
推荐使用:
- 新项目或重构项目
- 多人协作、规格要求高的团队
- AI 驱动开发团队(使用 Copilot / Claude 等)
- 需要审计与一致性的企业级项目
不建议使用:
- 小型快速原型项目
- 团队对 AI 工具不熟悉
- 对性能和底层优化要求极高的系统
七、总结与展望
GitHub Spec-Kit 是一次结构化 AI 辅助开发的探索。 它让 “规格” 从被动文档变成了 可执行的开发中枢,让 AI 编程不再只是“生成代码”,而是能在规范、计划、任务到实现的全链路中发挥作用。
对于追求更系统化、可追踪、可复用开发流程的团队来说,Spec-Kit 值得试用。 这也许就是下一代软件工程的雏形——从 prompt 到 process 的转变。





