欢迎光临
我们一直在努力

GitHub Spec-Kit:AI 时代的规范驱动开发工具

在 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/


    ✨ 核心特性

  • 供应商管理: – 查看所有配置的供应商 – 点击切换激活供应商 – 添加新供应商(预设或自定义) – 编辑现有供应商 – 删除供应商(带确认)
  • 安全性: – API 密钥 AES-GCM 加密 – PBKDF2 密钥派生 – 无敏感数据日志 – 外部链接安全属性
  • 响应式设计: – 移动、平板、桌面适配 – 触摸目标 ≥ 44x44px – WCAG 2.1 AA 无障碍合规
  • 全局设置: – 3 个持久化开关 – 跨会话状态保存

  • 📊 性能指标

    • 初始加载: < 2 秒
    • 供应商切换: < 500ms
    • 配置保存/加载: < 100ms
    • 生产构建大小: 99.52 KB (gzipped: 38.94 KB)

    🎯 成功标准达成

    ✅ 所有 90 个任务完成✅ 所有 4 个用户故事实现✅ 生产构建成功✅ TypeScript 严格模式通过✅ 响应式布局完成✅ 加密功能实现✅ WCAG 无障碍支持✅ 文档完整


    🎓 下一步建议

  • 测试: – 编写 Vitest 单元测试(加密、CRUD) – Playwright E2E 测试(用户流程)
  • 增强: – 后端 API(可选) – 多设备同步 – 导出/导入配置 – 深色主题
  • 部署: – Netlify/Vercel 部署 – 配置 CI/CD – 性能监控

  • 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 的转变。

    赞(0)
    未经允许不得转载:171主机测评 » GitHub Spec-Kit:AI 时代的规范驱动开发工具
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址