Spec-kit 入门
Spec-kit 入门
- 介绍
- 安装
- ai 配置
- specify init
- 要做的事情
- speckit.constitution
- speckit.specify
- speckit.clarify
- speckit.plan
- speckit.tasks
- speckit.implement
介绍
Spec-kit 地址:https://github.com/github/spec-kit.git
SDD(Spec-Driven Development) 的介绍:
https://github.com/github/spec-kit/blob/main/spec-driven.md
规范驱动开发是一种在产品开发中优先考虑需求规范的方法,其目标是通过明确的需求和预期结果来引导软件开发。在这一过程中,在开发开始之前编写详细的规范文档至关重要,规范应以易于理解的格式呈现,以便所有开发人员和相关利益方都能清楚理解。在编码过程中,开发者需始终遵循规范,确保功能实现的一致性。文档中应包括背景信息、功能描述和使用示例,以帮助开发团队理解需求。此外,规范的编写与审阅应是团队协作的结果,开发过程中需持续收集反馈并适时调整规范。最佳实践包括保持规范简洁、定期更新和鼓励团队成员提出意见。整体而言,规范驱动开发提高了开发的透明度和一致性,减少了误解,从而优化了最终产品的质量和用户体验。
安装
使用 uv 管理器下载安装
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
如果没有uv ,需要安装
uv 安装手册:https://uv.doczh.com/getting-started/installation/
安装成功

ai 配置
安装好后,需要配置ai
Spec-kit 支持的ai列表

我用的是 CodeBuddy CLI
https://www.codebuddy.ai/cli
按照指引安装
npm install -g @tencent-ai/codebuddy-code

安装完了需要登录一下
输入 codebuddy进入交互式的界面

选择合适的登录验证即可
specify init
使用 specify init <ProjectName>初始化

会让你选择ai实现,前面章节是保证环境中安装并支持了ai,现在是将ai配置到 spec-kit

会发现有报错

请求 github的api失败了。
需要设置github的token

在这个地址创建 github-token https://github.com/settings/tokens
需要能访问 github


选择永不过期

不做任何授权

创建好后,记得保存,只能展示一次的

重新初始化

就好了

到了这里,重新打开ai,上面的spec-kit的一些约定已经给ai了,就可以直接用了
要做的事情
假设现在有一个项目,需要使用ai给项目生成单元测试
项目是 go语言开发,使用 gomonkey , goconvey 进行mock验证
speckit.constitution
将上面的背景和要做的事情进行整理:
给现有的项目生成单元测试,使用 gomonkey 和 goconvery 进行mock验证.xx
在 test 目录,使用 codebuddy 使用ai

在ai的对话框输入
/speckit.constitution 给现有的项目生成单元测试,使用 gomonkey 和 goconvery 进行mock验证。保证覆盖率为100.

在ai执行命令的时候,会要求授权

ai会按照要求分析现有项目的结构,并进行对生成单元测试这个需求进行优化

到了这里,spec-kit的魅力就出现了,按照之前使用ai的经验,大部分这里ai会尝试做一些事情,但是当需求没有搞明白,ai尝试做的事情往往不尽如人意。
而 spec-kit 指导下,或者说 SDD指导下的ai,会进行确认,明确需求后才会开始干活
生成了相关的需求内容
网上叫做宪章,我个人觉得约定可能更合适点儿~

speckit.specify
因为需要生成的文件很多,我们尝试先给一个包下的文件生成单侧
/speckit.specify 给包 cynosdb_log 生成单元测试

ai会生成计划

speckit.clarify
如果你觉得ai理解的有问题,那么可以使用 /speckit.clarify进行明确
speckit.plan
按照计划,拆分任务


ok

speckit.tasks
使用 /speckit.tasks 生成可执行任务

任务已经拆分完毕

speckit.implement
使用 /speckit.implement 实现

生成成功了

