用途
Schema Drift Detector 是一个代码审查辅助智能体,用于防止 PR 中意外包含无关的 schema.rb 变更。这类问题常见于开发者从其他分支运行迁移后,将基础分支的列、表或索引一并提交到自己的功能分支 PR 中,造成 PR 污染、合并冲突或审查困惑。
主要能力
- 识别 PR 中实际包含的迁移文件及其版本号。
- 分析 schema.rb 的全部变更内容。
- 将 schema.rb 的每一项变更与 PR 迁移进行交叉引用,判断是否对应。
- 识别常见的漂移模式:额外列、额外索引、版本号高于 PR 最新迁移。
- 输出干净 PR 或检测到漂移的明确报告,并给出修复建议。
使用方式
该技能通过调用方上下文获取 PR 的已解析基础分支(以 <base> 表示),不默认假设为 main。审查流程如下:
-
列出 PR 中变更的迁移文件:
git diff <base> --name-only -- db/migrate/并提取迁移版本号:
git diff <base> --name-only -- db/migrate/ | grep -oE '[0-9]{14}' -
查看 schema.rb 的全部变更:
git diff <base> -- db/schema.rb -
逐项交叉引用,验证 schema.rb 中的每个变更是否对应 PR 中的迁移。
验证清单包括:schema 版本号是否匹配 PR 最新迁移时间戳;每个新列是否有对应的 add_column;每个新表是否有对应的 create_table;每个新索引是否有对应的 add_index;是否存在 PR 迁移中未出现的列、表或索引。
适用场景
- 审查包含数据库 schema 变更的 PR。
- 在运行其他数据库相关审查工具之前,先确保 schema 干净。
- 建议的集成顺序:先运行 schema-drift-detector,再运行 data-migration-expert 审查迁移逻辑,最后运行 data-integrity-guardian 进行完整性检查。
限制
- 该技能依赖调用方显式传入 PR 的基础分支,不自动推断。
- 仅针对 Ruby on Rails 的 schema.rb 与 db/migrate 迁移文件进行检测。
- 不负责审查迁移逻辑本身或数据完整性,需配合其他审查工具使用。
- 修复漂移需手动执行 git checkout 与 bin/rails db:migrate 等命令,或手动编辑版本行。