NoWreck v0.4.0 – 確定性AI驗證器
NoWreck 是一個開源工具,用於確定性驗證 AI 對代碼變更的描述是否與實際修改一致。它支持 Python 和 JavaScript 文件,通過解析 AST 構建符號索引,檢測結構性變更,並與 AI 聲明進行精確匹配,輸出確認、矛盾或無法驗證的結果。該工具專注於事實核查,不依賴 AI 主觀判斷。
NoWreck 是一個專注於驗證 AI 對代碼變更所作聲明準確性的工具。它由 AstralXVoid 開發,旨在解決 AI 代碼助手可能生成虛假或不準確描述的問題。該工具的核心理念是:不依賴 AI 進行判斷,而是通過確定性分析比對代碼結構的變化。
NoWreck 的工作流程分為三個階段:掃描、檢測和驗證。掃描階段遞歸查找 Python(.py)和 JavaScript(.js)文件,使用各自的語言解析器構建符號索引,索引中包含所有函數、類和方法。Python 利用內置的 ast 模塊,JavaScript 則使用 Tree-sitter 及其 JavaScript 語法。檢測階段比較前後快照的符號索引,識別結構性變更,如添加或刪除函數、類、文件以及新增的函數調用。驗證階段則針對 AI 提供的聲明,在已檢測的變化中尋找匹配項,若找到類型和身份完全匹配的變化則標記為“已確認”(CONFIRMED),若找到矛盾的變化則標記為“矛盾”(CONTRADICTED),若沒有匹配則標記為“無法驗證”(UNVERIFIABLE)。
該工具支持七種聲明類型:ADD_FUNCTION、REMOVE_FUNCTION、ADD_CLASS、REMOVE_CLASS、FILE_CREATED、FILE_DELETED 和 CALLS_FUNCTION。每種類型都通過直接的結構事實進行驗證,不涉及關鍵詞猜測或語義解釋。NoWreck 還會為每個結果提供置信度分數:確認和矛盾均為 100%,無法驗證為 50%。
NoWreck 提供了多種使用模式。交互模式(nowreck --interactive)啓動終端菜單,適合新用户和一次性驗證。提示模式(nowreck fix "...")讓用户用自然語言描述變更,NoWreck 會調用配置的 AI 模型生成差異和聲明,然後自動驗證。前後模式(nowreck fix --pre PATH --post PATH)允許用户手動提供兩個快照目錄,並可選地附帶 JSON 格式的聲明進行驗證。此外,還支持 --json 輸出以集成到 CI 流水線。
配置方面,NoWreck 支持任何與 OpenAI API 兼容的模型端點,如 Groq、DeepSeek、Ollama、LM Studio、OpenRouter 以及 OpenAI 本身。用户可以通過 nowreck config 命令設置 API 密鑰、基礎 URL、模型、温度和最大重試次數。環境變量 NOWRECK_API_KEY 也可替代配置文件中存儲的密鑰。
與其他工具相比,NoWreck 的定位獨特。它不像 Cursor 或 Copilot 那樣生成代碼,也不像 CodeRabbit 那樣進行代碼審查,而是專注於驗證代碼變更描述的真實性。類似的驗證工具如 slopcheck 檢查包名註冊,但 NoWreck 聚焦於代碼結構層面的聲明驗證。
NoWreck 的侷限性包括僅支持 Python 和 JavaScript,無法處理動態行為(如 exec、eval、動態導入、元類等),僅檢測簡單函數調用(不支持 obj.method() 或鏈式調用),缺乏跨文件語義分析,且不支持 TypeScript。開發路線圖包括添加 --verbose 模式、更多模型提供商(Anthropic、Gemini)、大型倉庫緩存、TypeScript 支持和 CI/CD 集成。
安裝方面,目前需要從源代碼通過 pipx 或 pip 安裝,PyPI 發佈將在後續推出。要求 Python 3.10 或更高版本。總體而言,NoWreck 為依賴 AI 協助的開發者提供了一種驗證工具,確保 AI 的説明與實際代碼變更保持一致。