본문으로 건너뛰기
V

humanizer-ru (dsh)

vladimir-human/humanizer-ru/dsh

러시아어 텍스트에서 AI 흔적을 제거합니다. 챗봇(ChatGPT, Gemini, Grok, Perplexity, DeepSeek)의 복사·붙여넣기 흔적을 찾고, 숨김 텍스트 마크(제로폭 문자, 보이지 않는 레이아웃; 그림자 스캔이 보이지 않는 문자로 분리된 마커도 포착)를 제거하며, 요청 시 자연스러운 산문으로 다시 씁니다. 40개의 정규식 마커, 38개에 완전한 증거 레지스트리 항목; 156개 게이트, 530개 테스트; 오프라인·텍스트 전용 번들(이진 메타데이터 제거는 scripts/에 위치).

설치

dsh plugin --profile web add github:vladimir-human/humanizer-ru

이 플러그인은 저장소의 dsh 하위 디렉터리에 있습니다.

README

humanizer-ru

Проверяемая гигиена вставки из чата для русского текста

40 regex-маркеров артефактов вставки из чат-интерфейсов, у 38 из них полная запись доказательств. Ложных срабатываний класса A на 12314 текстах-неносителях ноль, класса B — 8, то есть 0.00065 (Wilson 95% CI от 0.0003 до 0.0013; замер 04.09.2026 по замороженной предрегистрации). Каждое число с датой и командой воспроизведения — в разделе «Цифры проекта».

Очистка артефактов вставки и сверка фактов доступны и для английского текста: добавьте --language en к humanizer-clean, humanizer-polish, humanizer-facts или humanizer-report (либо --language auto). Это не включает русские стилевые эвристики и не даёт вердиктов об авторстве; профиль сохраняет код, URL, Markdown и проверяемые факты. Русский профиль остаётся значением по умолчанию для совместимости.

Терминал humanizer-markers подсвечивает следы машинного текста и объясняет причину каждого флага

License: MIT PyPI CI

Кому это нужно

  • Редактору и преподавателю: проверить текст перед публикацией: humanizer-markers --scan файл.md.
  • Разработчику и CI: гейт вставки из чат-интерфейсов: action и контракт.
  • Пользователю ИИ-ассистента: та же проверка внутри агентной среды: MCP одной конфигурацией или демо.

Попробовать за 30 секунд

  • Демо в браузере: ничего не устанавливать, текст не покидает браузер.
  • Сообщить о проблеме или опыте использования: issue в репозитории; пользовательский текст не передаётся автоматически ни демо, ни сборщиком обратной связи.
  • Проверка конкретной вставки:

Самый короткий путь «нашёл → убрал → проверил»:

pip install humanizer-ru
humanizer-markers --scan input.txt       # найти следы (rc=1 = находка)
humanizer-clean --in-place input.txt     # снять поддержанные артефакты
humanizer-markers --scan input.txt       # убедиться, что остатка нет (rc=0)

Для английского входа добавьте --language en; для смешанного — --language auto. Очистка не переписывает стиль и смысл: проверьте результат вручную и используйте humanizer-facts diff до.txt после.txt --no-additions после редакторской правки.

python -c "open('primer.txt','w',encoding='utf-8').write('Согласно отчёту :contentReference[oaicite:3]{index=3}, рост заявок.\n')"
humanizer-markers --scan primer.txt; echo "rc=$?"
  primer.txt:1 [contentReference] Согласно отчёту :contentReference[oaicite:3]{index=3}, рост заявок.
  Найдено маркеров: 1.
  rc=1

rc=1 означает «найдены маркеры» — это ожидаемый результат проверки на образце со следом вставки, а не ошибка; rc=0 — следов нет, rc=2 — вход не читается (с --json конверт ошибки печатается в stdout).

Полный сценарий: найти, безопасно очистить, сверить, сообщить

  1. Найти артефакт вставки. humanizer-markers --scan файл.md печатает находки с координатами и классом: A — жёсткие артефакты копипасты из чат-интерфейсов, B — контекстные индикаторы вроде невидимых символов и скрытой раскладки; rc=1 означает находки. Демо-страница делает то же в браузере без установки и подсвечивает исходные диапазоны. Мягкие признаки машинного письма считает humanizer-scan: они калибруют объём правки и не дают вердикта.

  2. Безопасно очистить. humanizer-clean --in-place файл.md одной командой выполняет проверку до, снятие поддерживаемых артефактов, проверку после и сверку фактов; оригинал остаётся в копии .bak. Снимаются невидимые метки слоя A и видимые артефакты класса A вне защищённых областей (код, frontmatter, URL, HTML-атрибуты, ZWJ-кластеры эмодзи). Стиль и смысл не переписываются; неподдерживаемые находки вроде класса B, вики-разметки и плейсхолдеров остаются явным остатком с кодом возврата 1, полная чистота не заявляется. При нарушении инвариантов защищённых областей результат не записывается. Невидимые символы снимаются и точечно, по классам риска из поля invisible_classes файла markers.v1.json: humanizer-markers --remove файл.md убирает safe автоматически, ambiguous — только с явным флагом --include-ambiguous, dangerous показывает и не снимает. Типографику без правки смысла нормализует humanizer-polish; на разметке используйте режимы --preserve-markup и --typographic.

  3. Проверить диф. humanizer-clean --diff файл.md печатает унифицированный диф до и после без записи; конверт --json несёт сверку фактов и перечень остатка. После ручной правки сверьте факты отдельно: humanizer-facts diff до.txt после.txt --no-additions сравнит числа, даты, URL, имена, цитаты, отрицания и модальности; поля lost и changed обязаны быть пустыми, иначе верните факты в текст.

  4. Сообщить результат. humanizer-report до.txt после.txt готовит отчёт о правке со сверкой фактов. Находку коллеге передаёт humanizer-markers --scan --json файл.md: пересылайте поля file, line, marker, class и fragment, а не весь документ. Находка класса A устанавливает факт вставки, а не автора: помечайте источник, на который указывал артефакт, как «требует проверки». Вердиктов об авторстве нет ни у инструментов, ни у скилла — это Главное правило SKILL.md.

Сценарий одним блоком:

humanizer-markers --scan вставка.md              # 1: найти; rc=1 = находки есть
humanizer-clean --diff вставка.md                # 2: показать, что будет снято
humanizer-clean --in-place вставка.md            # 2: очистить; оригинал в .bak
humanizer-facts diff вставка.md.bak вставка.md --no-additions  # 3: сверить факты
humanizer-report вставка.md.bak вставка.md       # 4: отчёт о правке

Подробности команд и режимов — в docs/USAGE.md.

MCP одной конфигурацией

{
  "mcpServers": {
    "humanizer-ru": {
      "command": "uvx",
      "args": ["--from", "humanizer-ru==3.36.4", "humanizer-mcp"]
    }
  }
}

Форма uvx устанавливает закреплённый выпуск PyPI и запускает stdio-сервер. При локальной установке эквивалентны pip install humanizer-ru и запуск humanizer-mcp.

Матрица проверенных возможностей и границ

Без заявлений о лидерстве: сопоставимого внешнего исследования в нише на дату записи нет (см. LEADERBOARD.md). Строки — что фактически проверено гейтами и тестами цикла; границы — что поверхность не делает.

ПоверхностьПроверка известных артефактовБезопасная очисткаСверка фактовМашинный конвертГраница
CLI (humanizer-markers, -polish, -facts, -report)да, с координатами и классами A/Bрежимы strip / --preserve-markup / --typographic с инвариантами сохраненияhumanizer-facts (категории фактов)--json, коды возврата по контрактусемантику не проверяет; вердиктов об авторстве нет
MCP (humanizer-mcp, набор инструментов contract.v1.json)те же команды через stdioте же режимы через humanizer_polishhumanizer_factsJSON-RPC конверты, isError по контрактутекст не покидает процесс
Демо на Pagesда, подсветка исходных диапазонов в браузереда, preview + явное Apply + Undo для поддержанных артефактовнеткопирование отчёта из одного результатаофлайн в браузере, без установки
GitHub Actionгейт вставки + автофикс текстового пути (класс A)action_fix вне fenced/коданетrc гейтафикс не трогает защищённые области
Текстовый скилл (SKILL.md)процедуры агента по referencesстилевая правка только по явной просьбенетнет (проза скилла)гарантий естественности и сохранности смысла нет

Что это НЕ делает

  • Переписанный текст: теоретический потолок детекции при парафразе [bib:sadasivan2023]; парафраз обнуляет детекторы [bib:dipper2023].

  • Нативно-гладкий машинный текст без артефактов: документная граница там же [bib:sadasivan2023]; популяционная детекция возможна только на больших выборках [bib:chakraborty2023], вердикт по документу не заявляется.

  • Короткий текст: сигналов меньше, чем слов, водяной знак и статистика требуют длины [bib:anthropic2026wm], [bib:synthid2024].

  • Водяные знаки без ключа: distortion-free знак не виден стороннему наблюдателю по построению [bib:kuditipudi2023]; криптографическая неотличимость без ключа [bib:cgz2023]; детектор SynthID-Text требует ключ разработчика [bib:synthid2024]; Anthropic подтверждает: без ключа знак не проверяется, детектор-API в закрытом preview [bib:anthropic2026wm].

  • Ключи [bib:…] раскрыты в research/BIBLIOGRAPHY.md.

  • polish не запускать на Markdown и разметке: снимает ##, **, ёлочки, тире; для разметки — режим --preserve-markup.

Почему можно доверять

Установка скилла в браузерные клиенты

  • Демо работает без установки: https://vladimir-human.github.io/humanizer-ru/ — текст не покидает браузер.
  • Claude.ai и Claude Code: добавьте скилл из каталога dsh/skills/humanizer-ru по инструкции установки в docs/USAGE.md.
  • Агентные клиенты с поддержкой agentskills.io (opencode, DeepSeek Harness): распакуйте текстовый бандл из архива релиза.
  • Браузерное расширение отклонено: новый поверхностный контур (permissions, store review) не окупается; очередь идей — research/BACKLOG.md.

Каталоги: Glama MCP · skills.sh.

Одноимённые проекты

На GitHub есть скиллы с тем же именем и другим содержанием. Снимок 2026-09-11 (проверка: gh repo view <владелец>/humanizer-ru --json stargazerCount):

  • ilyautov/humanizer-ru — 333 звезды: позиционирование «убирает признаки нейросети», публичного реестра чисел нет; приглашён к совместному публичному бенчмарку (issue 220).
  • smixs/humanizer-ru — 154 звезды: детерминированный линтер; единственный тёзка, включённый в LEADERBOARD.md как кандидат (парный прогон 2026-09-03).
  • Этот проект — проверяемая гигиена вставки из чат-интерфейсов: каждое число из детерминированных снимков и реестра фактов, границы — в THREAT-MODEL, ложные срабатывания — в бенчмарке.

Пришли по имени — выбирайте по способу проверки, а не по звёздам.

Цифры проекта

  • 58 паттернов машинного письма и 40 regex-маркеров (классы A и B).
  • Записи доказательств: 38 из 40 маркеров (реестр research/fixtures/marker-sources.json).
  • Гейты: 156 гейтов полного check_all (145 в --quick); фикстуры в tests/fixtures/, документация сверяется check_docs.py, персона описана в PERSONA.md.

Почему так называется: имя унаследовано от первой функции, снимавшей слой копипасты после чат-бота и возвращавшей тексту человеческий вид. Вторая функция продукта: диагностика, подсветить машинные следы и объяснить причину каждого флага, без вердиктов об авторстве. Обе функции работают офлайн, текст не покидает вашу машину.

Классовая разбивка FP, exploratory, вне предрега F16: класс A: 0 случаев на 12314 текстов-неносителей; класс B: 8 случаев на 12314, то есть 0.00065, Wilson 95% CI от 0.0003 до 0.0013; контрольный набор 40 текстов: флагов 0; тяжёлый домен S4 legal и official, n=381, дефицит объёма зафиксирован в предреге: 18 случаев на 381, то есть 0.0472, Wilson 95% CI от 0.0301 до 0.0734; знаменатели: 12354 полный корпус F16, 12314 validation-страта.

Подробнее

Regex-маркеры: классы A и B

Класс A — жёсткие артефакты копипасты: служебные ссылки и метки цитирования чат-интерфейсов. Класс B — контекстные индикаторы: невидимые символы, скрытая раскладка, placeholder-поля; одного совпадения B недостаточно. Класс маркеров — copypaste_artifacts; ретайр маркера возможен только по провалу на своём классе, статусы и даты — в markers.v1.json.

История изменений

История изменений — в CHANGELOG.md и на GitHub Releases.

Лицензия

MIT

Статус проекта

Версия Skills.sh Догфудинг

Догфудинг — проект проверяет собственные тексты собственными правилами: порог маркеров стиля в файлах поставки сверяется гейтом scripts/check_own_style.py (текущий максимум выводится в его запуске).

관련 플러그인