Skip to content

Repository files navigation

AI Code Detector

Небольшой инструмент на Java без внешних зависимостей. Оценивает, насколько код похож на сгенерированный языковой моделью, а не написанный человеком. Ничего не отправляет в сеть и не спрашивает другую модель: читает код, применяет набор взвешенных эвристик и показывает конкретные строки, на которых построен вердикт, — чтобы решение оставалось за тобой.

Он же: детектор ИИ-кода · проверка кода на нейросеть · определить, сгенерирован ли код ChatGPT/LLM · ИИ или человек писал код · AI / ChatGPT generated-code detector для Java, JavaScript, TypeScript и Python.

Смысл не в слепой классификации, а в том, чтобы подсветить «приметы»: идеально ровное форматирование, шаблонные имена, док-блок над каждым тривиальным методом, рефлекторный try/catch, стену защитных проверок на null. Когда насмотришься на них пару раз — инструмент перестанет быть нужен.

Скриншоты

HTML-отчёт (файл / папка / GitHub-репозиторий):

HTML-отчёт

Десктоп-приложение:

Десктоп-приложение

Как считается оценка

У каждого сигнала есть вес. «ИИ-сигналы» поднимают балл, «человеческий» — опускает. Итоговая оценка:

score = clamp( сумма(сработавшие веса со знаком) / сумма(все веса) * 100, 0, 100 )
Сигнал Вес Склоняет к
Комментарии к тривиальным шагам 2.0 ИИ
Разговорная преамбула в коде 1.6 ИИ
Рефлекторные обёртки try/catch 1.6 ИИ
Шаблонные имена-заглушки 1.5 ИИ
Док-блоки на каждой функции 1.5 ИИ
Повторяющиеся, копипастные строки 1.4 ИИ
Сплошные защитные проверки на null 1.3 ИИ
Симметричные имена хелперов 1.1 ИИ
Плотный «учебниковый» control flow 1.0 ИИ
Совсем нет комментариев 0.6 ИИ
Подозрительно ровное форматирование 0.3 ИИ
Нет меток TODO/FIXME 0.2 ИИ
Живая, «человеческая» сложность 1.0 человек

Вердикт: ≥50 — скорее ИИ, 25–49 — смешанно, <25 — скорее человек. Пороги настраиваются ключами командной строки.

Кроме балла каждый файл получает уровень уверенностиlow, medium или high — в зависимости от числа независимых сильных сигналов (тяжёлых ИИ-признаков, а не ровного форматирования или отсутствия комментария). По-настоящему подозрительными стоит считать только файлы с high: оценка, накрученная слабыми сигналами, намеренно остаётся на low, чтобы чистый код без комментариев не путали с ИИ.

Поддерживаемые языки: Java, JavaScript, TypeScript, Python. Остальные расширения обрабатываются по правилам C-подобных комментариев и строк.

Сборка

Сборщик не нужен — только JDK 17 или новее.

build.bat     :: Windows
./build.sh    # Unix

Оба скрипта компилируют исходники в out/.

Запуск

# один файл
aidetect examples/ai-style/OrderProcessor.java

# целая папка
aidetect src

# через stdin
type snippet.java | aidetect - --lang java        :: Windows
cat  snippet.java | aidetect - --lang java         # Unix

# по ссылке на репозиторий — клонирует, оценивает и сам убирает за собой
aidetect https://github.com/owner/repo

aidetect — это тонкая обёртка (aidetect.bat / aidetect.sh) над java -cp out aidetector.Main. Без обёртки: java -cp out aidetector.Main <цель>.

Окно-приложение

Запустить GUI напрямую, без сборки exe:

java -cp out aidetector.DesktopApp

Вставь путь к файлу/папке или GitHub-ссылку (либо нажми Browse), нажми Analyze — HTML-отчёт сам откроется в браузере.

Windows: HTML-отчёт и .exe

Одним кликом из Проводника — aidetect-report.bat: спросит путь или ссылку, сделает reports\ai-detector-report.html и откроет его в браузере.

Собрать кликабельное приложение (нужен jpackage из JDK):

.\build-exe.bat

Готовый файл: dist\AI Code Detector\AI Code Detector.exe. Отчёты он пишет в %USERPROFILE%\AI Code Detector\reports.

Опции

Опция По умолчанию Что делает
--ai-threshold <n> 50 балл, с которого файл считается ИИ
--mixed-threshold <n> 25 балл, с которого файл считается смешанным
--top <n> 10 сколько файлов раскрывать для папки/репозитория
--evidence <n> 5 сколько строк-улик показывать на сигнал
--format <name> console формат отчёта: console, html
--out <file> записать отчёт в файл вместо вывода в консоль
--lang <name> подсказка языка для stdin: java, js, ts, python

Оговорки

Это эвристики, а не доказательство. Чистый, аккуратный код без комментариев тоже наберёт несколько ИИ-сигналов, а модель, которой велели писать «грязно», их обойдёт. Считай оценку поводом присмотреться, а не приговором. Читай улики, а не только число.

About

Детектор ИИ-кода: проверяет, написан ли код человеком или сгенерирован нейросетью (ChatGPT / LLM). Подсвечивает признаки ИИ-кода с уликами по строкам. CLI, HTML-отчёт и десктоп-приложение; анализ файла, папки или GitHub-репозитория. AI / ChatGPT generated-code detector for Java, JS, TS, Python.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages