DeepSeek Harness Plugin

Vladimir-Human/humanizer-ru#dsh

Stars ★ 100 Category Skills Added 2026-08-16

Cleans AI traces from Russian text: finds chatbot copy-paste artefacts (ChatGPT, Gemini, Grok, Perplexity, DeepSeek) and rewrites the text into natural prose on request; 39 regex markers with an evidence registry, offline, text-only bundle.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:Vladimir-Human/humanizer-ru#path:/dsh

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).

README

License: MIT GitHub stars Версия Regex checks Skills.sh

English version → README.en.md

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

Здесь 38 паттернов (25 базовых и 13 расширений) и 39 проверяемых regex-маркеров классов A и B. Проверки гоняет CI. Каталог skills.sh сообщает об успешных проверках Gen Agent Trust Hub и Socket; про красную плашку Snyk — в разделе «Безопасность».

До:

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

После:

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

Скилл убирает штампы, но не дописывает факты за автора. В примере выше всё из варианта «После» уже было в исходнике.

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

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

Одноимённые проекты — не путать

В GitHub есть другие репозитории с именем humanizer-ru, не связанные с этим проектом. Позиции у них разные:

Проект Фокус Позиция по детекторам
Vladimir-Human/humanizer-ru — этот проект Редактор русского текста: 38 паттернов, 39 regex-маркеров с реестром доказательств 37/39, 36 CI-гейтов, слепые парные прогоны Детекторы не обходим и текст под них не подгоняем; цель — естественный текст, а не зелёный вердикт детектора
smixs/humanizer-ru Скилл «humanizer & detector»: правка и проверка одним инструментом
ilyautov/humanizer-ru Скилл-гуманизатор; в описании заявлена подгонка под то, что меряют GPTZero, DivEye, RuBERT (perplexity и burstiness) Обход детекторов заявлен открыто в описании
blader/humanizer Англоязычный скилл того же жанра, опубликован на три дня раньше

Мы не аффилированы ни с одним из них. Декларация этого проекта: «не средство обхода детекторов»; подробнее — в разделе «Безопасность».

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

npx skills add https://github.com/vladimir-human/humanizer-ru --skill humanizer-ru

Установщик предложит выбрать агентов: Claude Code, Codex, Cursor, Gemini CLI, OpenCode и другие среды с поддержкой формата Agent Skills. Сам скилл состоит из текстовых инструкций и не исполняет код при работе. Команда npx запускает сторонний Skills CLI; если хотите проверить каждый файл до установки, используйте раздел «Установка вручную».

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

Скилл humanizer-ru ставится в Claude.ai и в локальный CLI Claude Code. Для команд — свой путь, через администратора организации (см. раздел 2).

0. Проверка перед установкой

Скилл не выполняет код при активации: рабочая часть — только текстовые файлы разметки. В репозитории есть вспомогательные Python-скрипты (scripts/) для тестов и CI — они запускаются только вручную или в GitHub Actions. Правило одно для любых скиллов: сначала прочитать, потом ставить.

  1. Откройте SKILL.md и references/ прямо на GitHub и убедитесь, что содержимое вас устраивает.
  2. Ставьте только выпуски со страницы Releases (аннотированные теги вида vX.Y.Z), а не произвольное состояние ветки.
  3. После распаковки убедитесь, что внутри лишь SKILL.md, README.md, README.en.md, SECURITY.md, SECURITY.en.md, CHANGELOG.md, PERSONA.md, LICENSE, references/ и scripts/ — ничего исполняемого при установке. Каталогов .github/, research/ и tests/ в архиве нет: валидаторам, которым нужны корпуса и фикстуры, требуется полный клон репозитория.

1. Claude.ai (Веб-интерфейс)

  1. Откройте страницу Releases этого репозитория, выберите свежий выпуск и скачайте приложенный к нему архив humanizer-ru.zip. Это собранный архив скилла — состав перечислен в шаге 0. Source code (zip), который GitHub добавляет к каждому выпуску, — полное дерево репозитория вместе с .github/, research/ и tests/; он нужен только тем, кто собирается запускать валидаторы.
  2. Зайдите в аккаунт Claude.ai и перейдите в Settings > Skills.
  3. Нажмите Upload skill и выберите скачанный архив.

Примечание. В humanizer-ru.zip файл SKILL.md лежит в корне архива, поэтому переупаковка не нужна. Она может понадобиться, только если вы взяли Source code (zip): там всё вложено в папку вида humanizer-ru-<номер версии>.

2. Организации (Enterprise & Team)

Администратор организации проверяет выпуск (см. шаг 0) и загружает его в общую библиотеку — скилл становится доступен всей команде.

3. API и локальные агенты (Claude Code)

Работаете через API (эндпоинт /v1/messages или аналоги) — передайте скилл параметром container.skills. Детали — в документации вашего клиента.

Локальная установка — с закреплением на теге выпуска, чтобы получить именно проверенное состояние:

mkdir -p ~/.claude/skills
git clone --branch v3.13.0 --depth 1 https://github.com/Vladimir-Human/humanizer-ru.git ~/.claude/skills/humanizer-ru

Или минимально — только карта скилла (без справочников references/; глубина проверки будет ниже):

mkdir -p ~/.claude/skills/humanizer-ru
cp SKILL.md ~/.claude/skills/humanizer-ru/

Если проверять каждый шаг вручную не нужно, быстрее поставить одной командой из каталога skills.sh — см. «Установка за 30 секунд» выше.

4. DeepSeek Harness (dsh)

dsh ищет скиллы в собственных каталогах. Проверено с dsh 0.1.0-rc.6. Это developer preview: ломающие изменения обещаны, поэтому для другой версии сверяйтесь с её документацией.

Глобальная установка (все проекты и агенты профиля):

mkdir -p ~/.agents/skills
git clone --branch v3.13.0 --depth 1 https://github.com/Vladimir-Human/humanizer-ru.git ~/.agents/skills/humanizer-ru

Порядок поиска скилла в dsh (ближайший каталог побеждает): <проект>/.dsh/skills, <проект>/.agents/skills, ~/.dsh/skills, ~/.agents/skills. Каталог ~/.claude/skills dsh не сканирует: скилл, установленный туда по инструкции для Claude Code выше, в dsh не виден.

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

В Claude Code или другом агенте:

/humanizer-ru [вставьте текст]

Или напрямую:

Очеловечь этот текст: [ваш текст]

Что делает

Прогоняет русский текст по 38 паттернам машинного письма (25 базовых и 13 расширений для русского) и 39 проверяемым regex-маркерам классов A и B, затем убирает следы. Опирается на Wikipedia:Signs of AI writing и Википедия:Признаки сгенерированности текста.

С версии 2.3 SKILL.md — это карта с деревом решений. Полное описание паттернов и проверок лежит в подключаемых файлах references/.

С версии 3.8 мягкий слой стал счётным. scripts/scan_soft_signals.py находит кандидатов по четырём категориям признаков, считает каждый паттерн один раз на текст и применяет пороги дерева решений; жанровые исключения берутся из references/false-positives.md. Скрипт печатает цитаты и рекомендацию объёма правки, вердикта об авторстве не даёт — Главное правило остаётся за агентом. На человеческом контрольном корпусе скрипт молчит: единичные литературные тире и повторы отсекают жанровые исключения. На выводах русских моделей он находит кандидатов там, где regex-слой ничего не видит. Наружу идут только механические оси: снятие маркеров, чистота фактов, ложные правки (LEADERBOARD.md). Читаемость оценивает своя панель судей, но её числа мы держим при себе: панель односемейная, а позиционный шум описан в прогонах.

Архитектура

humanizer-ru/
├── SKILL.md                  # Карта, дерево решений, чек-лист
├── CHANGELOG.md              # Полная история версий
├── LEADERBOARD.md            # Механические оси: прогоны детекторов
├── PERSONA.md                # Компактные правила живого диалога
├── README.md / README.en.md  # Описание проекта (рус/англ)
├── SECURITY.md / SECURITY.en.md
├── CITATION.cff                # Карточка цитирования
├── LICENSE                     # MIT
├── dsh/                        # Бандл для DeepSeek Harness (вендор SKILL.md + references/)
├── CODE_OF_CONDUCT.md / CONTRIBUTING.md
├── docs/
│   └── FRAMEWORK.md            # Публичная методология проверяемости
├── scripts/
│   ├── check_markers.py          # Прогон regex-маркеров, режим --scan
│   ├── check_spec.py             # Валидатор спецификации Agent Skills
│   ├── check_fixture_sources.py  # Валидатор реестра источников
│   ├── count_style_markers.py    # Счётчик стилевых нарушений
│   ├── check_docs.py             # Согласованность документации
│   ├── check_examples.py         # Гейт честности примеров До/После
│   ├── check_readme_parity.py    # Паритет и правдивость витрины RU/EN
│   ├── check_own_style.py        # Порог мягких признаков на свою прозу
│   ├── check_reference_maps.py   # Карты разбитых справочников
│   ├── check_budget.py           # Бюджет контекста по спецификации
│   ├── check_corpus.py           # Регрессия корпусов валидации
│   ├── check_perf.py             # Скорость выражений на большом входе
│   ├── check_release.py          # Сборка и проверка релизного архива
│   ├── check_bundle_sync.py      # Синхронность вендора бандла dsh/
│   ├── filemarks/                # Слой A/B и метаданные файлов (inspect/clean)
│   ├── scan_soft_signals.py      # Счётчик мягких признаков
│   └── check_all.py              # Весь релизный чек-лист одной командой
├── eval/
│   ├── run_eval.py               # Нейтральный корпус для любого скилла
│   ├── blind_eval.py             # Слепая парная оценка эффекта
│   ├── HOW-TO-RUN.md             # Протокол прогона и границы метрик
│   ├── README.md                 # Карта eval и словарь метрик
│   ├── manifest.v1.json          # Схема нейтрального корпуса
│   ├── runs/                     # Парные прогоны (10 записей; см. runs/README.md)
│   └── results/                  # Отчёты прогонов целиком, включая
│                                 #   метрики не в пользу скилла
├── .github/workflows/        # CI: regex-check, self-scan, no-anglicisms,
│                             #     validators, docs-check, release-check
├── references/               # 11 справочников; два разбиты на части (16 файлов)
├── research/                 # Протоколы, реестр, аудит и BACKLOG.md
└── tests/fixtures/           # Проверочные образцы

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

# Паттерн Критичность
1 Усреднение — конкретика заменяется общими эпитетами «выдающийся», «титан» высокая
2 Раздувание значимости — «ключевой момент в истории отрасли» средняя
3 Перечисление СМИ — «цитировали NYT, BBC, Forbes» без контекста средняя
4 Деепричастные хвосты — «символизируя... отражая...» средняя
5 Рекламный язык — «жемчужина региона», «идеальное место» средняя
6 Размытые эксперты — «эксперты считают» без источника высокая
7 Вызовы и перспективы — «несмотря на трудности, продолжает процветать» низкая
8 Канцелярит — «осуществлять деятельность» средняя
9 Текст о тексте — описание статьи вместо предмета средняя
9a Академические клише-заполнители — «актуальность темы обусловлена», «целью работы является» средняя
6a Именованная псевдоатрибуция эпохи RAG — «критик подчеркнул непреходящее влияние» без опоры на источник средняя

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

# Паттерн Критичность
10 Машинная лексика — «безусловно, синергия, ландшафт, погрузиться» высокая
11 Избегание «есть» — «представляет собой» вместо «это» средняя
12 «Не только..., но и» — отрицательные параллелизмы средняя
13 Правило трёх — принудительные тройки высокая
14 Погоня за синонимами — «герой... протагонист... персонаж» низкая
15 Ложные диапазоны — «от Большого взрыва до тёмной материи» средняя
15a Нелогичные деепричастные обороты — «используя метод, результаты улучшаются» средняя
15b Каскад смягчений — «возможно, в некоторых случаях, в зависимости от» средняя
15c Связки-переходы и заключительные обороты-затычки — «Однако стоит отметить...», «В заключение хочется отметить...» средняя
15d Резкая смена стилистики внутри одного текста низкая
15e Семантический сдвиг через английское поле — «основание науки», «адресовать проблему» средняя
15f Отсутствие идиоматики — длинный текст без единого живого оборота низкая

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

# Паттерн Критичность
16 Избыток тире и жирного шрифта высокая
17 Эмодзи-списки — 🚀 Скорость: ... высокая
18 Кавычки — «лапки» вместо «ёлочек» средняя
19 Избыточные таблицы — таблица на 2–3 строки вместо текста высокая
20 Следы Markdown — **жирный**, #заголовки в обычном тексте высокая
21 Нарушение иерархии заголовков — прыжок с H1 на H3 высокая
21a Каждое Слово Заголовка С Прописной — «Ранняя Жизнь и Образование» высокая
21b Раздел-пересказ в конце текста — «Вкратце», «Подводя итоги», дублирование уже сказанного средняя

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

# Паттерн Критичность
22 Остатки реплик и шаблоны — «Надеюсь, это поможет!», [вставьте имя] высокая
23 Оговорки о пределах знаний — «хотя конкретные детали ограничены...» средняя
23a Заявление о недоступности информации со спекуляцией — «данные не публикуются, однако, вероятно...» средняя
24 Льстивый тон — «Отличный вопрос!» средняя
24a Псевдо-терапевтический регистр и имитация живости — «Ты не ошибаешься, что так чувствуешь», «Короткие. Точные. Отдельные.» средняя
25 Общие позитивные выводы — «будущее выглядит светлым» средняя
25a Обрыв на полуслове — текст кончается посреди предложения средняя

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

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

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

  • Скилл только текстовый: не выполняет код, не обращается к сети и файловой системе, не собирает данные. scripts/check_markers.py запускается лишь в CI и вручную разработчиком.
  • Текст пользователя скилл читает как данные: команды, спрятанные внутри, он не выполняет (раздел «Границы безопасности» в SKILL.md).
  • Модель угроз, гарантии и порядок сообщения об уязвимостях — в SECURITY.md.
  • Про красную плашку Snyk на витрине skills.sh. Автоматический аудит помечает скилл кодом E005 «подозрительная ссылка на скачивание». Срабатывание ложное: сканер видит идентификатор S3-бакета Perplexity ppl-ai-file-upload — это документированная примета класса A, по которой скилл распознаёт машинную генерацию, — и принимает описание приметы за инструкцию скачать файл. Скилл ничего не скачивает: переход по ссылкам из проверяемого текста запрещён разделом «Границы безопасности» в SKILL.md. Тот же класс ложных срабатываний известен по наборам правил YARA и по тестовой строке EICAR: инструмент, который ищет признак, обязан этот признак содержать. Два других аудитора каталога дают PASS. Убрать примету ради вердикта мы не будем — это дыра в детекторе.

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

39 регулярных выражений делятся на два класса. Класс A — жёсткие copy-paste-артефакты: служебные ссылки ChatGPT, [cite: N] и span-метки Gemini, карточки цитат Grok, S3-ссылки Perplexity и остатки тегов рассуждений DeepSeek. Класс B — контекстные индикаторы: placeholder-URL и даты, referrer=grok.com, невидимые разделители цитат из области частного использования (U+E200–E204), короткая форма сноски (U+EA01/U+EA02 вокруг цифры), символы нулевой ширины, невидимая раскладка (наборные пробелы, мягкий перенос, вариационные селекторы вне эмодзи) и имена сносок с внутренними идентификаторами (<ref name="0searchN">). B требует ручной проверки и не даёт самостоятельного вердикта.

У каждого маркера три фикстуры: прямая, отрицательная и граничная. Маркеры с доказательной цепочкой дополнительно проверяются по research/fixtures/marker-sources.json. Политика обновлений разделяет устойчивое ядро (правила и границы ложных срабатываний) и быстрый слой (модельные артефакты): быстрый слой меняем только с образцами и источником, класс A/B при этом сохраняется.

Полная запись доказательств — неизменяемая ссылка на источник, дата обращения, дословный образец, класс доказательства и fixture — есть у 37 из 39 маркеров. Остальные закрыты только фикстурами.

Маркер Источник Регулярное выражение
:contentReference[oaicite:N]{index=N} OpenAI ChatGPT :contentReference\[oaicite:\d+\]\{index=\d+\}
oaicite:7 (усечённая форма метки) OpenAI ChatGPT oaicite:\d+
oai_citation:N‡ OpenAI ChatGPT oai_citation:\d+‡
attributableIndex в JSON Внутреннее поле разметки JSON-ответов при использовании инструментов \battributableIndex\b
turn0search0 OpenAI веб-поиск turn\d+search\d+
turn0fetch0 OpenAI загрузка страниц turn\d+fetch\d+
<ref name="0search12"> Контекстный след внутреннего инструмента в имени вики-сноски <ref\b[^>]*\bname=["']\d+(?:search|fetch|file|image|news|video|ref)\d+["']
?utm_source=chatgpt.com OpenAI ChatGPT [?&]utm_source=chatgpt\.com
?utm_source=openai OpenAI API [?&]utm_source=openai
attached_file:// OpenAI ChatGPT attached_file:\/\/
grok_card:// xAI Grok grok_card:\/\/
vertexaisearch.cloud.google.com/grounding-api-redirect Google Gemini vertexaisearch\.cloud\.google\.com/grounding-api-redirect
[^N^] Microsoft Copilot \[\^\d+\^\]
【N†source】 OpenAI Assistants 【\d+(?::\d+)?†source】
citeturn0file0 OpenAI ChatGPT (поток) citeturn\d+[a-z]+\d+
turn0file2, fileciteturn0file2turn0file6 OpenAI file_search turn\d+file\d+
\]\(sandbox:/mnt/data/...\) OpenAI ChatGPT (анализ данных) \]\(sandbox:/mnt/data/
Невидимые символы U+E200–E204 OpenAI ChatGPT (служебные разделители цитат) [\ue200-\ue204]
Короткая форма сноски: цифра в U+EA01/U+EA02 (новое в v3.2) OpenAI ChatGPT [\uea01\uea02]
<think>…</think> DeepSeek и другие рассуждающие модели (?m)^\s*</?think>|</think>\s*$
Сцепка ISO+3ISO+3 OpenAI ChatGPT (ошибка отрисовки сносок) [A-Za-z\u0410-\u042f\u0430-\u044f\u0401\u0451)]\+\d+(?=[A-Z\u0410-\u042f\u0401][A-Za-z\u0410-\u042f\u0430-\u044f\u0401\u0451&.\-]*(?: [A-Z\u0410-\u042f\u0401][A-Za-z\u0410-\u042f\u0430-\u044f\u0401\u0451&.\-]*){0,3}\+\d)
[cite_start] Google Gemini (анализ PDF) \[cite_start\]
[cite: 8], [Cite: 12], [cite: 19, 20, 21] Google Gemini (ссылка на фрагменты источника; расширено в v3.2) \[[Cc]ite:\s?\d+(?:,\s?\d+)*\]
[span_N] start_span / end_span (новое в v3.5) Google Gemini (внутренние границы фрагментов) \[span_\d+\][\[(](?:start_span|end_span)[\])]
Символы нулевой ширины U+200BU+200D, U+2060, U+FEFF Внутренние разделители цитат и кодировочные артефакты; U+FEFF в начале файла — BOM, не ИИ [\u200b\u200c\u2060\ufeff]|(?<![\U0001f000-\U0001faff\u2600-\u27bf\ufe0f\U0001f1e6-\U0001f1ff])\u200d(?![\U0001f000-\U0001faff\u2600-\u27bf\ufe0f\U0001f1e6-\U0001f1ff])
:::writing{variant="document" id="68427"} Writing-разметка интерфейса; атрибуция версии не подтверждена evidence registry :::\w+\{variant
turn0image0, turn0news0, turn0video0, turn0ref0 OpenAI ChatGPT (мультимедиа-инструменты) turn\d+(?:image|news|video|ref)\d+
?utm_source=copilot.com Microsoft Copilot [?&]utm_source=copilot\.com
?referrer=grok.com xAI Grok [?&]referrer=grok\.com
<grok-card ... data-type="citation_card"> xAI Grok (XML-тег карточки) <grok-card\b[^>]*\bcitation_card\b
grok_render_citation_card_json={...} xAI Grok (JSON карточек) grok_render_citation_card_json
【85†L261-269】, 【854†L119-L123】 DeepSeek и производные (ссылки на строки) 【\d+†L\d+(?:-L?\d+)?】
[attached_file:N], [web:N] Perplexity (скобочная форма ссылок, осень 2025) \[(?:attached_file|web):\d+\]
[citation:3] Perplexity и другие поисковые ИИ \[citation:\d+\]
citegenerated-reference-identifier ChatGPT (сгенерированный идентификатор) citegenerated-reference-identifier
INSERT_SOURCE_URL, URL_HERE, PASTE_*_URL_HERE Placeholder-URL из шаблонных ответов \b(?:INSERT_SOURCE_URL(?:_\d+)?|URL_HERE|PASTE_\w+_URL_HERE)\b
2025-XX-XX, 2022-11-XX Placeholder-даты из шаблонных ответов (чаще всего «дата обращения») \b(?:19|20)\d{2}-(?:0[1-9]|1[0-2]|[Xx]{2})-[Xx]{2}\b
ppl-ai-file-upload в URL (новое в v3.5) Perplexity (ссылки на Amazon S3-bucket) ppl-ai-file-upload

Полный список с дословными образцами — в references/test-fixtures.md.

Подлог источников (новое в v2.3)

Отдельный класс проверок для текстов со ссылками: 404, DOI ведёт на чужую статью, несуществующий ISBN, автор умер до даты публикации, книжная ссылка без номера страниц. См. references/source-fabrication.md.

Границы ложного срабатывания (новое в v2.3)

Длинное тире у Цветаевой и Бродского, изогнутые кавычки от автозамены macOS, правило трёх в риторической прозе, канцелярит в юридическом документе — это не признаки ИИ. Скилл намеренно не исправляет такие случаи. См. references/false-positives.md.

Отпечатки моделей (новое в v2.3)

references/llm-fingerprints.md не ведёт каталог актуальных версий моделей. Он описывает уровни доказательств, воспроизводимые артефакты и локальные наблюдения с явными ограничениями атрибуции. Версию или доступность модели нельзя выводить из стилистического признака без первичного датированного источника. Там же собраны ручные мягкие сигналы русских моделей — GigaChat, Алисы и YandexGPT: они помечены как наблюдения без корпусного подтверждения, регулярных выражений для них нет.

Шкала критичности: высокая — мгновенно выдаёт ИИ · средняя — сильный сигнал · низкая — слабый сигнал

Источники

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

Актуальная версия — на значке в начале страницы. Полную историю изменений смотрите в CHANGELOG.md и на странице GitHub Releases.

Лицензия

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →