NoWreck:AIコーディングアシスタントのための決定論的検証ツール
NoWreck は、静的コード分析を使用してAIコーディングアシスタントの説明が実際のコード変更と一致するかどうかを自動的に検証し、幻覚関数や不一致などを検出するオープンソースツールです。
NoWreck は、AIコーディングアシスタント(Claude Code、Copilotなど)が生成した変更説明が実際のコード差分を正確に反映しているかどうかをチェックする決定論的検証ツールです。AIツールがコードを変更する際、通常は説明が添付されますが、その説明には誤りが含まれることがあります——存在しない関数を参照したり、実際には呼び出していない関数を呼び出したと主張したり、実際に行った変更を省略したりする場合です。NoWreck は、別のAIの判断に頼るのではなく、静的コード分析を使用してAIの主張と実際の差分を自動的に比較します。
NoWreck が検出できる問題は4つあります:幻覚的な内部ファイル、関数、クラス;偽の内部API呼び出し(存在しない関数への参照);説明と差分の不一致(AIが実際には存在しない変更を説明);未説明の変更(AIが言及しなかった実際の変更)。ただし、NoWreck は論理バグ、実行時障害、セキュリティ問題、または幻覚的なサードパーティパッケージ(これにはslopcheckやslop-scanを使用することを推奨)は検出しません。
有効性を示すため、開発者は実際のモデルでテストを実施しました:AIに対して somme_file.py に is_valid_email 関数を追加するよう指示し、さらにその関数内で sanitize_input を呼び出したと主張するよう要求(実際のコードにはその呼び出しを含めない)。NoWreck の報告では、1つの主張(関数追加)が確認され、もう1つの主張(関数呼び出し)が反駁されました——幻覚を正確に捉えたのです。
インストールは、リポジトリをクローンして pipx install . で行います。設定にはAPIキー、ベースURL、モデル名が必要です。例えば、Groqを使用する場合、nowreck config set base_url https://api.groq.com/openai/v1 と設定し、モデルを指定します。OpenAI、Groq、DeepSeek、Ollamaなど、OpenAI互換のプロバイダをサポートしています。
NoWreck のワークフローは4ステップです:変更前にリポジトリをスキャン(シンボル、関数、クラスを記録);プロンプトをモデルに送信し、差分と構造化された主張を取得;変更後にリポジトリをスキャン;AIの主張を実際に検出された変更と独立して比較し、各主張のステータス(CONFIRMED、CONTRADICTED、UNVERIFIABLE)を報告します。すべての主張タイプ(ADD_FUNCTION、CALLS_FUNCTIONなど)は、キーワードの推測や意味解釈ではなく、直接的な構造的事実によって検証されます。
NoWreck は信頼度スコアを提供しますが、これはコードにバグがないという意味ではありません。制限事項として、動的なPython動作(exec/eval、動的インポート、リフレクション)を処理できず、現在はPythonのみをサポートしています。
要約すると、NoWreck は「AIの説明が実際の変更と一致するか?」という特定の質問に答えることに特化しています。コードを生成したり、主観的なレビューを行ったりするのではなく、静的解析に基づく決定論的検証を提供します。