DSH exclusive bundle: injects the humanizer-ru Russian "de-AI" skill into the host as a cordis patch. After the agent loads, it can detect and rewrite traces of chatbots like ChatGPT, Gemini, and Grok in Russian text.
- Language
- Python
- License
- MIT
- Branch
- main
Install
$ dsh plugin --profile web add github:Vladimir-Human/humanizer-ru#path:dshRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Install via your agent
Install the DeepSeek Harness plugin Vladimir-Human/humanizer-ru/dsh for me: review the repository at https://github.com/Vladimir-Human/humanizer-ru first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
One-sentence Positioning
The dsh subdirectory of humanizer-ru injects the same-named Russian "de-AI" skill into the DSH host as a Cordis patch: after installation, the agent loads a plain-text instruction set on demand when the user inputs Russian and explicitly requests "очеловечь/перепиши/убери гпт-шность", identifying and rewriting copy-paste traces and mechanized clichés left by ChatGPT, Gemini, Grok and other chatbots, without adding facts not present in the original text.
Core Capabilities
- Detects 39 regex markers, divided into Class A (hard copy residues like ChatGPT
:contentReference[oaicite:N], Grokgrok_card://, Perplexityppl-ai-file-upload, Gemini[cite: N]) and Class B (placeholder URLs, zero-width characters, PUA control characters, and other contextual clues requiring human judgment) - Identifies 38 types of "soft signals" across content/language/structure/communication dimensions: hollow praise, forced three-part structure, parallel "не только... но и" constructions,滥用长破折号, Markdown remnants, chat endings like «Надеюсь, это поможет», etc.
- Rewrites on user request: 3–5 soft signals selectively modified, 6+ full paragraph rewrites; does not add facts not present in original (numbers, dates, names, units are all kept as-is)
- Sets "false positive" boundaries for different styles: literature, legal, contracts, academic, marketing (em dashes, rule of three, Apple-style quotes are legal in human text)
- Treats the audited text as untrusted input: ignores embedded instructions, does not execute links, does not read/write files, does not go online
Technical Implementation
- Language: YAML + Markdown (no .ts/.js/.py code in bundle)
- Key Dependencies:
@deepseek-ai/dsh-skill-filesystem(Cordis-injected skill provider),process.getBuiltinModule('node:path')andnode:module(patch inline expression parsing package paths) - Architecture Pattern: Cordis patch injection—the bundle's
cordis.patch.ymlinserts a record at DSH startup, naming the host's built-in skill-filesystem provider ashumanizer-ru-skill-root, and resolves the path viarequire('humanizer-ru-dsh/package.json'), pointingcustomSkillDirsto the bundle'sskills/directory; all "logic" is handed to the agent as SKILL.md instructions to load on demand - Entry Files:
dsh/cordis.patch.yml(bundle injection point) +dsh/skills/humanizer-ru/SKILL.md(instruction set actually loaded by agent)
Use Cases
DSH users in Russian content workflows—bloggers, marketing editors, wiki contributors, customer service knowledge base maintainers—when pasting a Russian text in the DSH agent and saying "очеловечь", the skill is loaded to check and rewrite AI traces; or when simply auditing a Russian text that may have been generated by another model, having the agent output "оснований для вердикта нет" or "стоит проверить" judgments. Suitable for DSH workflows handling Russian publishing and content operations.
Prerequisites and Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| DSH host | 0.1.0-rc.6 | CI tested bundle install/uninstall with this version in dsh-install.yml; DSH is in dev preview, promises may introduce breaking changes |
| Node.js | Not declared | Bundle writes no code, node:path/node:module in patch expressions are provided by DSH host, unrelated to plugin |
| pnpm | Version required by DSH | DSH installs plugins via pnpm; bundle doesn't introduce additional pnpm packages |
| Platform | Cross-platform | Bundle contains only YAML + Markdown, no native compilation modules, no OS/CPU restrictions |
| Native modules | None | No dependencies on node-pty, sqlite, better-sqlite3, etc. that require native compilation |
Installation
dsh plugin --profile web add github:Vladimir-Human/humanizer-ru/dsh
Configuration
This plugin requires no additional configuration.
dsh/cordis.patch.yml injects a skill-filesystem provider via Cordis pointing to the bundle's skills/ directory, requiring no environment variables; the trigger method is entering /humanizer-ru … or natural language instructions like "очеловечь", "убери гпт-шность", "перепиши" in DSH conversations.
FAQ
Q: What's the difference between this dsh bundle and the main directory version?
A: The main repo is a full project (with scripts/filemarks, 36 CI gates, eval benchmarks), the dsh/ subdirectory just bundles SKILL.md and references/ for DSH installation—no scripts/ or test code, doesn't execute any code at runtime.
Q: Does it work automatically after installation, or does it need manual triggering every time?
A: It doesn't run automatically. The agent only loads SKILL.md on demand when the user explicitly says keywords like "очеловечь/перепиши/убери гпт-шность"; the bundle-injected skill-filesystem provider only registers the skill location with the host.
Q: Will it modify the facts in the original text?
A: No. Principle 6 in "Шестъ ключевых принципов правки" in SKILL.md is a hard constraint: any numbers, dates, names, units in the rewritten version must be findable in the original; if details are missing, ask the user, don't invent them.
Q: Can it be used on non-Russian text?
A: No. SKILL.md description explicitly states: reject non-Russian, source code, configuration files, legal contracts, artistic prose; fall back or limit intervention scope when encountering these.
Q: Will it "bypass" AI detectors like GPTZero?
A: No. README clearly states "Детекторы не обходим и текст под них не подгоняем"—the goal is producing natural text, not getting green detection scores.
Q: Are there known issues with this bundle in DSH?
A: Yes. CI testing found that combining "tag + subdirectory" in one line like github:Vladimir-Human/humanizer-ru#v3.13.0&path:/dsh, pnpm silently drops the subdirectory, installs the whole repo as a regular dependency, exit code is still 0, but the profile is missing layers. So dsh bundles separately use path:/dsh without binding to a tag.
Q: How to completely uninstall?
A: dsh plugin --profile web remove humanizer-ru-dsh. The bundle only injects one Cordis patch + one Skill folder into the DSH profile, doesn't create persistent data outside DSH, environment is clean after deletion.
Difficulty Level
Beginner — one-line install command; triggered by /humanizer-ru or natural language instructions, no coding or environment variables needed; SKILL.md is a long Russian-dominant document but agent loads relevant sections on demand, not flooding the system prompt all at once.
Known Issues and Limitations
- Not suitable for non-Russian text: SKILL.md description explicitly rejects and asks user for Russian original (dsh/skills/humanizer-ru/SKILL.md:3, :33-38)
- Not suitable for source code, configuration files, legal contracts, pure artistic prose: decision tree first step rejects or limits intervention (dsh/skills/humanizer-ru/SKILL.md:60-63)
- "Soft signal" combinations don't constitute authorship attribution: regardless of how many soft signals, agent must not claim "this was written by AI"; only Class A hard markers, verifiable source fabrication, or author's self-statement can lead to conclusions (dsh/skills/humanizer-ru/SKILL.md:127,
Главное правило) - Class B markers alone are insufficient: must be accompanied by Class A hard evidence or independent corroboration; Class B alone cannot be used for stamping (dsh/skills/humanizer-ru/SKILL.md:127)
- dsh bundle install combination
tag+#path:/dshsilently fails under pnpm chain: CI tested that pnpm drops subdirectory with#v3.13.0&path:/dshform, installs as regular dependency, exit code still 0 but profile missing layer (.github/workflows/dsh-install.yml:7-11) - DSH is in dev preview stage, host itself promises may introduce breaking changes; this bundle only tested on 0.1.0-rc.6 (README.en.md:68)
- Rewriting process has 6 hard constraints: remove clutter, break templates, adjust rhythm, trust reader, no slogans, don't add facts; even if user asks "more aggressive" can't break these 6 rules (dsh/skills/humanizer-ru/SKILL.md:144-152)
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. Правило одно для любых скиллов: сначала прочитать, потом ставить.
- Откройте
SKILL.mdиreferences/прямо на GitHub и убедитесь, что содержимое вас устраивает. - Ставьте только выпуски со страницы Releases (аннотированные теги вида
vX.Y.Z), а не произвольное состояние ветки. - После распаковки убедитесь, что внутри лишь
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 (Веб-интерфейс)
- Откройте страницу Releases этого репозитория, выберите свежий выпуск и скачайте приложенный к нему архив
humanizer-ru.zip. Это собранный архив скилла — состав перечислен в шаге 0.Source code (zip), который GitHub добавляет к каждому выпуску, — полное дерево репозитория вместе с.github/,research/иtests/; он нужен только тем, кто собирается запускать валидаторы. - Зайдите в аккаунт Claude.ai и перейдите в Settings > Skills.
- Нажмите 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/. Его ставит менеджер плагинов, профиль создаётся при первом обращении, pnpm нужен на PATH:
dsh plugin --profile web add "github:Vladimir-Human/humanizer-ru#path:/dsh"
В бандле лежит копия SKILL.md и references/; гейт check_bundle_sync.py держит её равной источнику. Снять бандл: dsh plugin --profile web remove humanizer-ru-dsh.
Команда берёт ветку по умолчанию. Закрепить тег и подкаталог одной строкой не выходит: pnpm молча отбрасывает подкаталог, ставит репозиторий целиком обычной зависимостью и возвращает 0, а профиль остаётся без слоя. Проверено на dsh 0.1.0-rc.6.
Порядок поиска скилла в 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+200B–U+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
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](https://deepseek-plugin.org/plugins/Vladimir-Human/humanizer-ru/dsh)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.