Metadata-Version: 2.4
Name: humanizer-ru
Version: 3.16.9
Summary: CLI-сканеры следов машинной генерации русского текста (только stdlib)
Author: Vladimir-Human
License-Expression: MIT
Project-URL: Repository, https://github.com/Vladimir-Human/humanizer-ru
Project-URL: Tracker, https://github.com/Vladimir-Human/humanizer-ru/issues
Project-URL: Releases, https://github.com/Vladimir-Human/humanizer-ru/releases
Keywords: russian,ai-text,ai-detection,humanizer,claude-code,agent-skills,codex,cursor,dsh
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: Russian
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Text Processing :: Linguistic
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Humanizer-ru — нормализация и диагностика русского текста

[![License: MIT](https://img.shields.io/github/license/Vladimir-Human/humanizer-ru)](LICENSE)
[![Версия](https://img.shields.io/github/v/release/Vladimir-Human/humanizer-ru?label=%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F&color=blue)](https://github.com/Vladimir-Human/humanizer-ru/releases)
[![Regex checks](https://github.com/Vladimir-Human/humanizer-ru/actions/workflows/regex-check.yml/badge.svg)](https://github.com/Vladimir-Human/humanizer-ru/actions/workflows/regex-check.yml)
[![Skills.sh](https://img.shields.io/badge/skills.sh-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3-blueviolet)](https://www.skills.sh/vladimir-human/humanizer-ru/humanizer-ru)
[![Догфудинг](https://img.shields.io/badge/%D1%81%D0%B2%D0%BE%D0%B8_%D0%B4%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D1%8B-%D0%BF%D1%80%D0%BE%D1%85%D0%BE%D0%B4%D0%B8%D1%82-brightgreen)](https://github.com/Vladimir-Human/humanizer-ru/blob/main/scripts/check_all.py)

**[English version → README.en.md](README.en.md)** (документация; продукт русскоязычный)

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

Что это на практике: текст, вставленный из чат-бота, несёт служебные метки,
невидимые символы и машинную типографику; скилл снимает этот слой и
показывает, где он был. Числа проекта — в реестре фактов `eval/facts/`,
машинный интерфейс — в `contract.v1.json`.

**До:**

> 🚀 **Инновации:** Мы добавили пакетную обработку, горячие клавиши и офлайн-режим. Это безусловно является свидетельством нашего стремления к качеству. Кроме того, эти функции обеспечивают бесшовный, интуитивно понятный и мощный пользовательский опыт — гарантируя эффективность. Эксперты считают, что это революция.

**После:**

> Мы добавили пакетную обработку, горячие клавиши и офлайн-режим.

Скилл убирает штампы, но не дописывает факты за автора: в варианте «После»
нет ничего, чего не было бы в исходнике. Собственные тексты проекта проходят
его же гейты мягкого слоя (самопроверка в `check_all`).

## Что ему давать

Дайте скиллу готовый фрагмент русского текста. Он найдёт следы генерации и
по просьбе перепишет текст. `SKILL.md` — инструкция агента: её подгружают на
задачу анализа или правки вместе со справочниками из `references/`.
`PERSONA.md` — другое: короткие правила живого тона для диалога, а не для
проверки текста.

## Установка за 30 секунд

```sh
npx skills add https://github.com/Vladimir-Human/humanizer-ru --skill humanizer-ru
```

Если нужен не скилл для агента, а команды в терминале — пакет из PyPI:

```sh
pip install humanizer-ru
```

Попробовать до установки: [онлайн-демо](https://vladimir-human.github.io/humanizer-ru/)
или `demo/index.html` офлайн — текст обрабатывается в браузере и не покидает
машину. Демо показывает только детерминированный слой поиска артефактов;
переписывает агент со скиллом, а не браузер.

## Установка вручную

Ставьте выпуск со страницы **Releases** (архив `humanizer-ru.zip`, состав —
`SKILL.md`, оба README, `CHANGELOG.md`, `PERSONA.md`, обе SECURITY,
`PRIVACY_POLICY.md`, `LICENSE`, `gemini-extension.json`, `references/`,
`scripts/`, `knowledge/` и каталоги плагин-манифестов; исполняемого кода при
установке нет). Загрузка в Claude.ai: **Settings → Skills → Upload skill**.

Клон с закреплением на теге:

```sh
git clone --branch v3.16.9 --depth 1 https://github.com/Vladimir-Human/humanizer-ru.git ~/.claude/skills/humanizer-ru
```

DeepSeek Harness (dsh): глобально — тот же клон в `~/.agents/skills`, либо
бандл `dsh plugin --profile web add "github:Vladimir-Human/humanizer-ru#path:/dsh"`.
Порядок поиска в dsh: `.dsh/skills` и `.agents/skills` проекта, затем
`~/.dsh/skills` и `~/.agents/skills`; `~/.claude/skills` не сканируется, а
`pnpm` в команде `add` молча игнорирует подкаталог.

## Использование

В агенте: `/humanize [текст]` (правка), `/audit [текст]` (проверка без
правки) или прямо: «Очеловечь этот текст: …». Команды пакета:

- `humanizer-polish` — типографическая нормализация (`--diff`, `--dry-run`,
  `--in-place`, `--json`); идемпотентна, буквы и цифры не трогает.
- `humanizer-detect` — частота связок со статусом домена; вердикта об
  авторстве нет, ответ градуированный.
- `humanizer-markers` — поиск артефактов копипасты (классы A и B).
- `humanizer-scan` — счётчик мягких признаков, калибрует объём правки.

Машинный интерфейс (схемы выводов, коды выхода, «когда не использовать»):
`contract.v1.json`; вход для агентов — `llms.txt`.

## Что делает

Прогоняет русский текст по 58 паттернам машинного письма (25 базовых и 33
расширения для русского). Всего в скилле 58 паттернов и 40 проверяемых
regex-маркеров классов A и B; у 38 из 40 маркеров полная запись
доказательств в `research/fixtures/marker-sources.json`. Опирается на
[Wikipedia:Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing)
и [Википедия:Признаки сгенерированности текста](https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F%3A%D0%9F%D1%80%D0%B8%D0%B7%D0%BD%D0%B0%D0%BA%D0%B8_%D1%81%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0).

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

Детектор частоты связок работает в домене «чистая проза, инструкции»; для
эссе не валидирован, для веб-текста с артефактами неприменим, статус домена
обязателен в каждом выводе. Мягкие признаки вердикта об авторстве не дают —
только калибруют объём правки (Главное правило в `SKILL.md`).

Свой репозиторий можно проверять в CI: переиспользуемый экшен `action/`
гоняет те же скрипты, вход `fail-on: class-a` или `soft-threshold`,
`permissions: contents: read`, текст не покидает раннер. Пример вызова — в
`action/action.yml`.

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

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

## Архитектура

Короткая карта; подробности в самих каталогах:

- `SKILL.md` + `references/` — текстовое ядро скилла (карта, 13 справочников).
- `scripts/` — валидаторы и инструменты: полировка, детекторы, гейты
  (список в каталоге и в `contract.v1.json`).
- `src/humanizer_ru/` — PyPI-пакет (зеркала скриптов, точки входа).
- `eval/` — харнесы оценки: нейтральный корпус, слепые прогоны, реестр фактов.
- `research/` — реестр доказательств маркеров, фикстуры, протоколы.
- `tests/fixtures/` — образцы маркеров и полировки.
- `action/`, `demo/`, `dsh/` — CI-экшен, браузерное демо, бандл dsh.

Полный чек-лист — одна команда: `python scripts/check_all.py` — 85 гейтов полного чек-листа (81 в --quick). Юнит-тесты — `python -m unittest discover -s tests`.

### Содержательные паттерны

Усреднение, раздувание значимости, размытые эксперты, канцелярит, псевдоатрибуция — `references/content-patterns.md`.

### Языковые паттерны

Машинная лексика, «не только…, но и», правило трёх, смягчающие каскады, кальки — `references/language-patterns.md`.

### Структурные и стилевые паттерны

Избыток тире и жирного, эмодзи-списки, следы разметки, прыжки заголовков — `references/structural-style-patterns.md`.

### Коммуникативные паттерны

Остатки реплик чата, льстивый тон, псевдотерапевтический регистр, ложные альтернативы — `references/communication-patterns.md`.

### Подлог источников

404, DOI на чужую статью, несуществующий ISBN, автор умер до публикации — `references/source-fabrication.md`.

### Границы ложного срабатывания

Длинное тире в художке, автозамена кавычек, канцелярит в договоре — не признаки машинного текста — `references/false-positives.md`.

### Отпечатки моделей

Уровни доказательств привязки приметы к модели; версия модели из стиля не выводится — `references/llm-fingerprints.md`.

## Безопасность

Скилл текстовый: при активации код не выполняется, сеть и файловая система
не трогаются, ничего с машины не собирается. Входной текст — данные, а не
команды: спрятанные в нём инструкции не выполняются (раздел «Границы
безопасности» в `SKILL.md`). Модель угроз и порядок сообщения об
уязвимостях — в [SECURITY.md](SECURITY.md).

Про аудит каталога skills.sh: скилл содержит идентификатор S3-бакета
Perplexity `ppl-ai-file-upload` как документированную примету класса A;
сканер однажды принял описание приметы за ссылку на скачивание (класс
случаев известен по YARA и строке EICAR). Убрать примету нельзя: это дыра в детекторе.

## Отличия от английской версии

- Паттерн «канцелярит» и список машинной лексики адаптированы под русский.
- Title Case наоборот: в русском заголовки из слов с прописной — признак, а не норма (паттерн 21a, только с другими признаками).
- Кавычки: «ёлочки» вместо „нижних лапок“.

## Источники

- [Wikipedia:Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing)
- [Википедия:Признаки сгенерированности текста](https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F%3A%D0%9F%D1%80%D0%B8%D0%B7%D0%BD%D0%B0%D0%BA%D0%B8_%D1%81%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0)
- [WikiProject AI Cleanup](https://en.wikipedia.org/wiki/Wikipedia:WikiProject_AI_Cleanup)
- `docs/FRAMEWORK.md` — методология проверяемости; `ERRATA.md` — датированные отзывы чисел.

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

История изменений — в [CHANGELOG.md](CHANGELOG.md) и на [GitHub Releases](https://github.com/Vladimir-Human/humanizer-ru/releases).

## Лицензия

MIT
