AI News HubLIVE
站內改寫2 分鐘閱讀

NoWreck v0.4.0 – 確定性AI驗證器

NoWreck 是一個開源工具,用於確定性驗證 AI 對程式碼變更的描述是否與實際修改一致。它支援 Python 和 JavaScript 檔案,透過解析 AST 構建符號索引,檢測結構性變更,並與 AI 宣告進行精確匹配,輸出確認、矛盾或無法驗證的結果。該工具專注於事實核查,不依賴 AI 主觀判斷。

來源Hacker News AI作者: AstralXVoid

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 的說明與實際程式碼變更保持一致。