通过结构化扫描比对AI声称的代码变更与实际git diff,解决AI幻觉性声明问题。支持Claims/Pre-Post/Prompt三种模式,输出SARIF格式可接入Code Scanning。工程团队可用来验证AI辅助代码的可靠性。
NoWreck v0.13.0 — CI/CD 集成
AstralXVoid / NoWreck
一款对 AI 编程助手的声明进行实际结构变更核验的 CLI 工具——在代码提交前捕获虚假函数、伪造调用和遗漏修改。
Deterministic AI Verifier — v0.13.0
NoWreck 是一款用于 AI 生成代码变更声明的确定性结构验证器。当 AI 描述一项代码变更时,NoWreck 将声明与从自身扫描器推导出的结构证据进行对比——验证器从不向另一个 AI 寻求意见。证据来源取决于模式:在 Pre/Post 和 Claims 模式下,来自实际的前后仓库快照;在 Prompt 模式下,来自模型自身提出的 diff。
$ nowreck fix "Add email validation to auth.py"
Summary
────────────────────
● 3 claims total
● 2 confirmed
● 1 contradicted
CONFIRMED
─────────
✓ ADD_FUNCTION validate_email → auth.py (conf: 100%)
Evidence: Function 'validate_email' was added in auth.py
CONTRADICTED
────────────
✗ CALLS_FUNCTION validate_email → auth.py (conf: 100%)
Evidence: Function 'validate_email' was added in auth.py
幻觉函数或类——声称添加了某内容但实际并不存在
伪造的内部 API 调用——声称……
发布日期:2026 年 8 月 上个版本:v0.12.0(Provider 整合 + 扫描缓存) 本次重点:CI/CD 集成,支持机器可读输出格式(SARIF、JUnit)以及针对 Pull Request 验证的自动化 git 对比。
nowreck fix --compare HEAD~1 --format sarif > nowreck.sarif
NW001-NW013:每个 CONTRADICTED 声明类型对应一条规则(错误级别)
NW014:UNVERIFIABLE 声明(警告级别)
NW015:UNEXPLAINED 变更(提示级别)
CONFIRMED 结果默认排除(SARIF 用于问题报告)
使用 ruleId(字符串)提升 GitHub UI 可读性
每种声明类型独立对应一条规则,支持细粒度过滤
nowreck fix --compare HEAD~1 --format junit > nowreck-junit.xml
CONFIRMED → pass(无元素)
CONTRADICTED → <failure>
UNVERIFIABLE → <failure type="UNVERIFIABLE">
UNEXPLAINED → 排除(非声明)
nowreck fix --compare HEAD~1 --format json # JSON
nowreck fix --compare HEAD~1 --format sarif # SARIF
nowreck fix --compare HEAD~1 --format junit # JUnit
向后兼容:--json 已废弃并附带警告,但仍然可用。--output 参数 ✅
将输出写入文件而非 stdout:
nowreck fix --compare HEAD~1 --format sarif --output nowreck.sarif
nowreck fix --compare HEAD~1 # 与上一个提交对比
nowreck fix --compare main # 与 main 分支对比
nowreck fix --compare abc1234 # 与指定提交对比
支持的 ref 类型:commit hash、分支名、tag、HEAD~N 语法。
实现方式:使用 git archive 干净地提取到临时目录。通过 tempfile.TemporaryDirectory 自动清理。