构建 SpecSync:我如何使用自定义 MCP 工具扩展 Kiro
Source: Dev.to
问题:代码、测试、文档和规范之间的漂移
想象一下:凌晨 2 点,生产环境宕机。你的前端在调用 GET /users/{id}/posts,而后端在三周前已经删除了这个接口。测试?全部通过。文档?仍然显示该接口存在。
有人更新了代码,却忘记更新测试,文档更是彻底忘记了。规范?几个月都没人去看。这种 漂移——代码、测试、文档和规范逐渐变得互不相干——会严重拖慢开发速度。
什么是 SpecSync?
SpecSync 是一个 超级 级别的 pre‑commit hook,在提交发生之前就验证一切保持同步。你的 Git 提交会直接拒绝不一致的情况。
SpecSync 工作原理
添加新接口
git add backend/handlers/user.py
git commit -m "Add user posts endpoint."
SpecSync 会阻止提交:
❌ 等等。你添加了一个接口,但:
- 没有对应的规范
- 没有对应的测试
- 没有对应的文档
先补全这些再试。
在补齐缺失的规范、测试和文档后,提交即可成功。Git 历史中不再有谎言。
微服务问题
当后端团队发布破坏性变更时,前端可能仍在调用旧接口。SpecSync Bridge 能提前捕获这种情况。
后端:
specsync-bridge extract # 提取 API 合约
git push # 推送共享
前端(每小时自动同步):
specsync-bridge validate
当前端版本落后时的输出:
❌ 你正在调用 GET /users/{id}/posts
后端在上周已经删除该接口。
你可以在开发阶段发现不匹配,而不是等到生产环境。
关键特性
1. 一键式设置
specsync-bridge setup
该命令会自动检测你的环境,询问几个问题,然后完成——无需手写 YAML。
2. 自动同步
specsync-bridge auto-sync --enable
合约每小时在后台静默同步。只有在出现问题时才会通知你。
3. 基于 Git,无需额外基础设施
specsync-bridge add-dependency backend \
--git-url https://github.com/org/backend.git
不需要 Kafka、服务网格或数据库——只要 Git。
实际效果
我在一个包含五个服务的微服务项目中测试了 SpecSync:
- 第 1 周: 检测到 23 条我们之前未发现的漂移问题。
- 第 2 周: 在三个破坏性变更进入预发布前拦截。
- 第 3 周: 新加入的开发者相信文档——因为文档真的正确。
- 第 4 周: 由于 API 不匹配导致的生产事故为零。
团队的反应?“为什么以前没有这个工具?”
快速入门(约 2 分钟)
pip install specsync-bridge
specsync-bridge setup
回答几个问题即可完成。
项目已开源。
SpecSync 的座右铭
你的代码会说谎。你的文档会说谎。你的测试会说谎。它们并非有意,而是随着时间逐渐漂离。SpecSync 强制它们在提交时说实话——自动、永远。Git 中没有漂移 = 生产环境也没有漂移。