code-review 是来自 getsentry/warden 的代码审查技能,用于在代码变更中查找真实的正确性 Bug。
用途 这是一项对抗式生产代码审查技能,目标是只找出代码变更中真实存在的缺陷。它会尝试从每个可达角度破坏变更后的行为,但仅当失败具体、可由代码复现、且会导致错误行为时才报告。
主要能力
- 按技术栈加载匹配参考:审查 JavaScript、TypeScript、Node、React、Next.js 或浏览器代码时加载 references/javascript-typescript.md;审查 Python、Django、Flask、FastAPI、Celery 或 Python 服务代码时加载 references/python.md;审查 GitHub Actions 工作流、本地 action、可复用工作流或其加载的脚本与配置时加载 references/github-workflows.md。
- 仅报 Bug 的判定规则:要求代码在生产、用户入口、已发布接口、已交付工作流或可能掩盖真实回归的测试中可达;存在具体输入、状态、顺序、配置、依赖结果或重试路径触发失败;周围代码、测试、schema、文档或公共契约表明应有行为;变更行为违反该契约并产生具体症状;影响可观察(错误结果、崩溃、数据丢失、状态损坏、副作用遗漏或重复、构建失败、部署失败或虚假成功)。无证据不报告,怀疑不算结果。
- 调查流程:阅读变更块及足够上下文理解预期行为;识别契约(调用方期望、公共类型、schema、校验、文档、测试、持久化形态、API 响应形态、工作流触发、CLI 行为);构造对抗用例(null/undefined、空集合、0、false、空字符串、重复项、缺失键、边界计数、时区边界、陈旧状态、重试、部分失败、并发调用、乱序事件);跨导入、包装器、校验器、序列化器、数据库写入、缓存、队列和依赖调用点追踪数据与状态;对比新旧行为;检查测试、类型、schema、框架保证或调用方防护是否已排除该失败;只报告经此验证仍成立的缺陷。
- 报告类别:逻辑与条件、数据契约、状态与突变、异步与顺序、错误处理、边界与边缘用例、持久化与迁移、API 与依赖行为、公共元数据与路由配置、UI 正确性、构建/测试/工作流破坏。
严重程度
- high:数据丢失或损坏、关键路径崩溃、生产部署或发布中断、计费或权限状态错误、常规调用方接口破坏、阻断已交付端点正常发现或可达的公共元数据/配置、核心流程死锁或挂起、破坏性操作失败后虚假成功。
- medium:可复现的错误结果、可恢复崩溃、副作用重复或遗漏、非关键工作流中断、已交付路径中重要边界用例、有明确受影响调用方的兼容性破坏。
- low:影响面有限的真实窄 Bug、可能导致用户可见错误的混乱状态、仅掩盖窄范围非交付行为的测试/工具 Bug。影响依赖未证实前置条件时取较低严重程度。测试与黄金文件发现按其所授权或掩盖的已交付行为评分,而非按文件类型。不要为取巧而抬高严重程度。
使用方式与输出格式 每个发现包含:Title(指出确切 Bug 与触发条件)、Description(一句简短的公共评论说明错误行为与影响,必要时再用一句说明修复)、verification(简短证据追踪,用具体代码事实展示触发、预期契约、变更行为和未能排除该问题的检查,可用 2-5 个要点,不使用清单标签或复述描述)。
不报告范围
- AppSec 问题:应使用专门的 AppSec 技能。
- 风格、命名、格式、注释、可读性或可维护性问题。
- 架构、设计分层、类型卫生或重构建议,除非有已证实的错误行为。
- 性能问题,除非变更代码导致可达的超时、挂起、内存爆炸、配额耗尽或错过截止时间。
- 缺失测试、弱测试或低覆盖率,除非变更后的测试现在断言错误行为或掩盖真实回归。
- 变更未触及的既有 Bug,除非变更使其可达或实质恶化。
- 生成、vendored、fixture、示例、仅迁移或仅测试代码,除非被交付、执行或掩盖已交付 Bug。
- 框架、语言或依赖已保证疑似情况安全的场景。
- 需要不现实输入、不可能调用顺序或代码不支持的假设的假想失败。
适用场景 对抗式代码审查、Bug 搜寻、回归审查、PR 正确性审查、逻辑错误排查、数据丢失风险检查等。
限制 该技能明确不覆盖安全漏洞利用(AppSec)、代码风格与可维护性、架构与重构建议、无实际影响的性能问题,也不报告无确凿证据的怀疑性缺陷。特定输入、状态、顺序等触发条件必须可从代码证明,否则不予报告。