本文档记录 uv 安装过程及 Spec-Driven Development 的完整实践流程
本文首发地址 https://h89.cn/archives/515.html


一、uv 安装步骤

1.1 什么是 uv?

uv 是一个用 Rust 编写的极速 Python 包管理器和环境管理工具,由 Astral 开发。它是 pip 和 venv 的替代品,速度更快、功能更强大。

1.2 Windows 安装方法

方法一:使用 winget(推荐)

winget install --id=astral-sh.uv -e

安装完成后,需要重启终端或刷新环境变量:

$env:Path = [Environment]::GetEnvironmentVariable('Path', 'User')

方法二:使用 PowerShell 脚本

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

验证安装

uv --version
# 输出: uv 0.10.3 (c75a0c625 2026-02-16)

1.3 uv 常用命令

uv venv                    # 创建虚拟环境
uv pip install <package>   # 安装包
uv tool install <tool>     # 安装工具
uv run script.py           # 运行 Python 脚本
uvx <tool>                 # 一次性运行(无需安装)

二、Spec-Kit 简介

2.1 什么是 Spec-Driven Development?

Spec-Driven Development(规格驱动开发)是一种新型软件开发范式:

传统开发:写代码 → 写文档 → 维护两者同步
Spec-Driven:写规格 → 规格生成代码 → 规格即代码

规格(Spec)不再是开发完成后的文档,而是可执行的、直接生成工作实现的核心资产。

2.2 Spec-Kit 核心组件

组件 文件 说明
Constitution CONSTITUTION.md 项目宪法,定义开发原则和标准
Spec SPEC.md 功能规格,描述做什么和为什么
Plan PLAN.md 技术计划,描述如何实现
Tasks TASKS.md 任务列表,可执行的具体步骤

三、Spec-Kit 完整实践流程

步骤 1:安装 Specify CLI

# 持久化安装(推荐)
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

# 验证安装
specify check

specify check 会检查以下工具是否安装:

  • git
  • claude / gemini / copilot 等 AI 助手
  • code / cursor-agent / windsurf 等 IDE

步骤 2:初始化项目

# 创建新项目目录
specify init my-project

# 或在当前目录初始化
specify init . --ai claude

# 指定脚本类型(Windows 使用 PowerShell)
specify init . --ai claude --script ps

初始化后会生成:

  • AGENTS.md - AI 助手使用指南
  • CONSTITUTION.md - 项目宪法(如不存在)

步骤 3:创建项目宪法(Constitution)

自动化程度:⭐⭐⭐⭐ 半自动 - 你描述原则方向,AI 负责扩展和完善

使用 /speckit.constitution 命令创建项目原则:

/speckit.constitution 创建项目原则:

语言规范:
- 所有项目文档、注释、提交信息必须使用简体中文
- 代码变量名和函数名使用英文,但注释使用中文
- 用户界面文本使用简体中文
- 错误提示和日志信息使用中文

代码质量:
- 遵循 Clean Code 原则
- 单元测试覆盖率 > 80%
- 使用 SOLID 原则

性能要求:
- 页面加载时间 < 2秒
- 接口响应时间 < 500ms

安全规范:
- 遵循 OWASP Top 10 安全标准
- 禁止在代码中硬编码密钥和密码

这会生成 CONSTITUTION.md,AI 在后续生成所有内容时,都会遵循这个"宪法"规定,自动使用中文。

步骤 4:编写功能规格(Specify)

自动化程度:⭐⭐⭐⭐⭐ 全自动 - 你只需描述"做什么",AI 自动生成完整规格

使用 /speckit.specify 描述功能需求:

/speckit.specify 构建一个照片相册管理应用:

核心功能:
1. 相册管理
   - 按日期分组创建相册
   - 支持拖放重新排序
   - 不允许嵌套相册(扁平结构)

2. 照片展示
   - 瓷砖式界面预览照片
   - 懒加载提升性能
   - 支持 JPEG、PNG、WebP 格式

3. 数据存储
   - 图片本地存储(不上传云端)
   - 元数据存储在本地 SQLite 数据库
   - 支持导出/导入相册数据

用户故事:
- 作为用户,我想拖动相册来重新排序
- 作为用户,我想在网格布局中查看照片
- 作为用户,我想让数据保持私密(仅本地)

这会生成 SPEC.md,包含功能描述、用户故事、验收标准、非功能需求。

步骤 5:需求澄清(Clarify)

自动化程度:⭐⭐⭐⭐⭐ 全自动 - AI 主动提问帮你澄清模糊想法

/speckit.clarify

AI 会自动分析 SPEC.md,主动向你提问,帮你澄清模糊想法。例如:

  • 是否需要支持方言?
  • 离线模式是否必需?
  • 响应时间要求是多少?

步骤 6:制定技术计划(Plan)

自动化程度:⭐⭐⭐⭐⭐ 全自动 - 你只需说"用什么技术",AI 自动设计架构

使用 /speckit.plan 提供技术实现细节:

/speckit.plan 技术实现方案:

前端:
- 构建工具:Vite 5.x
- 语言:原生 HTML5、CSS3、ES2023 JavaScript
- UI 框架:无(保持轻量)
- 拖放功能:原生 HTML5 Drag and Drop API
- 状态管理:原生 JS 发布/订阅模式

后端/数据:
- 数据库:SQLite(浏览器端使用 sql.js)
- 存储:IndexedDB 存储二进制图片数据
- 文件处理:Native File System Access API

性能优化:
- 图片懒加载(Intersection Observer)
- 大型相册虚拟滚动
- 缩略图(200x200)+ 按需加载原图

约束条件:
- 零外部运行时依赖
- 支持离线工作(PWA)
- 移动端响应式适配

这会生成 PLAN.md,包含技术栈选择、架构设计、数据模型、API 接口定义。

步骤 7:分解任务(Tasks)

自动化程度:⭐⭐⭐⭐⭐ 全自动 - 将规格转化为可执行任务

/speckit.tasks

这会分析 SPEC.mdPLAN.md,自动生成 TASKS.md

# 实现任务列表

## 阶段一:项目搭建
- [ ] 初始化 Vite 项目
- [ ] 设置目录结构(src/、assets/、db/)
- [ ] 配置构建和开发脚本

## 阶段二:数据库层
- [ ] 设计 SQLite 表结构(albums、photos 表)
- [ ] 实现 sql.js 封装
- [ ] 创建 CRUD 操作

## 阶段三:UI 组件
- [ ] 创建相册组件
- [ ] 创建照片网格组件
- [ ] 实现拖放逻辑

## 阶段四:功能实现
- [ ] 相册增删改查操作
- [ ] 照片上传和展示
- [ ] 拖放重新排序
- [ ] 数据导出/导入

## 阶段五:完善优化
- [ ] 添加 CSS 样式
- [ ] 实现懒加载
- [ ] 添加错误处理
- [ ] 编写测试用例

步骤 8:执行实现(Implement)

自动化程度:⭐⭐⭐⭐⭐ 全自动 - 从需求到代码的最终落地

/speckit.implement

AI 助手会:

  1. 读取 TASKS.md
  2. 按顺序执行每个任务
  3. 生成代码文件
  4. 更新任务状态

四、自动化程度总览

命令 自动化程度 输入 输出
/speckit.constitution ⭐⭐⭐⭐ 原则方向 CONSTITUTION.md
/speckit.specify ⭐⭐⭐⭐⭐ 需求描述 SPEC.md
/speckit.clarify ⭐⭐⭐⭐⭐ 无需输入 澄清问题
/speckit.plan ⭐⭐⭐⭐⭐ 技术偏好 PLAN.md
/speckit.tasks ⭐⭐⭐⭐⭐ 无需输入 TASKS.md
/speckit.implement ⭐⭐⭐⭐⭐ 无需输入 代码文件

五、中文项目完整工作流示例

以下是一个智能座舱语音控制系统的完整工作流:

# 步骤1:初始化项目
specify init my-project --ai claude

# 步骤2:创建中文宪法(关键!)
/speckit.constitution 
创建项目原则:
- 所有文档、注释、提交信息使用简体中文
- 代码命名遵循英文规范
- 测试覆盖率要求 80% 以上
- 遵循 Clean Code 原则

# 步骤3:描述需求(用中文)
/speckit.specify
构建一个智能座舱语音控制系统:
- 支持语音识别和语音合成
- 可控制空调、车窗、导航等功能
- 支持多轮对话和上下文理解
- 离线模式支持

# 步骤4:澄清需求(AI 自动提问)
/speckit.clarify

# 步骤5:技术方案(自动生成)
/speckit.plan
使用 Android 原生开发,Kotlin 语言,MVVM 架构

# 步骤6:任务分解(全自动)
/speckit.tasks

# 步骤7:自动实现
/speckit.implement

六、支持的 AI 助手

AI 助手 支持状态 备注
Claude Code 完全支持
GitHub Copilot 完全支持
Cursor 完全支持
Gemini CLI 完全支持
Windsurf 完全支持
Amazon Q ⚠️ 不支持自定义参数
Codex CLI 完全支持
Roo Code 完全支持

七、进阶用法

7.1 增量开发

# 只执行特定阶段的任务
/speckit.implement --phase 2

# 执行单个任务
/speckit.implement --task "创建相册组件"

7.2 更新规格

# 修改 SPEC.md 后重新生成任务
/speckit.tasks --update

# 修改 PLAN.md 后重新生成任务
/speckit.plan --update

7.3 代码审查

# 根据 Constitution 审查代码
/speckit.review

# 检查测试覆盖率
/speckit.test --coverage

八、最佳实践

8.1 Constitution 编写建议

  • 具体可衡量:不说"代码要好",而说"单元测试覆盖率 > 80%"
  • 技术无关:关注原则而非具体技术
  • 团队共识:与团队一起制定

8.2 Spec 编写建议

  • 用户视角:描述用户能看到什么、能做什么
  • 避免技术细节:不在 Spec 中指定"使用 React"或"用 Redis"
  • 验收标准:每个功能都要有明确的完成标准

8.3 Plan 编写建议

  • 技术选型:说明为什么选择某技术
  • 架构图:用文字或 ASCII 图描述架构
  • 数据流:描述数据如何在系统中流动

九、故障排除

9.1 安装问题

问题uv tool install 失败

解决

# 强制重新安装
uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git

# 或使用 uvx 临时运行
uvx --from git+https://github.com/github/spec-kit.git specify init my-project

9.2 AI 助手不响应

问题/speckit.specify 命令无响应

解决

  • 检查 AGENTS.md 是否正确配置
  • 确认 AI 助手支持 slash 命令
  • 尝试完整路径命令:/speckit.specify --verbose

十、总结

Spec-Driven Development 的核心价值:

  1. 规格即代码:规格不再是文档,而是可执行的资产
  2. AI 原生:专为 AI 助手设计,充分发挥 AI 能力
  3. 可追溯:从需求到实现的完整链路
  4. 可维护:修改规格即可更新实现

通过 Spec-Kit,你可以:

  • 用自然语言描述需求
  • 让 AI 自动生成实现
  • 保持代码与需求同步
  • 提高开发效率和代码质量

十一、参考资源


本文链接:Spec-Kit 完整实践指南 - https://h89.cn/archives/515.html

版权声明:原创文章 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文链接和本声明。

标签: none

添加新评论