feat(skills): добавлены новые паттерны и quick scan в ai-text-lint

- Зачем:
  - расширить покрытие AI-маркеров и добавить быстрый режим для коротких текстов.
- Что:
  - добавлен режим quick scan (только 🔴 high, без развёрнутых объяснений).
  - новые паттерны: P05 (буква «ё»), L06 (hedging), S07 (двоеточие перед списком), T05 (sandwich pattern).
  - расширен словарь L01 (формирование, реализация, осуществлять, функционирование).
  - улучшена детекция S04 (добавлен синтаксический аспект однородности).
  - обновлены таблицы severity для всех контекстов.
- Проверка:
  - /ai-text-lint на тестовом тексте с новыми паттернами.
This commit is contained in:
ddadmin committed 2026-04-05 16:49:48 +03:00
1 parent e11258b51d
commit 5d2d9e3d22
2 files changed
+93 -12

No files matched your search

@@ -96,6 +96,34 @@ AI-модели же подставляют типографически кор
| message | 🟡 medium |
| resume | 🔴 high |
### P05: Буква «ё» — второй em dash
**Что:** Последовательное использование буквы «ё» в тексте: «идёт», «всё», «ещё», «берёт», «нёс», «подчёркивает».
**Почему:** Это один из самых надёжных маркеров наравне с P01. Клавиша «ё» расположена в неудобном месте (левый верхний угол, под `~`), и культура её использования в русскоязычном интернете слабая. Подавляющее большинство людей набирают «идет», «все», «еще» — и это нормально, языковая норма допускает оба варианта. AI-модели же обучены на отредактированных текстах (книги, Википедия, СМИ), где «ё» используется последовательно. Результат: если в тексте из мессенджера стабильно стоит «ё» — это красный флаг.
**Исключения:** Некоторые люди принципиально пишут с «ё» (ёфикаторы). Текст, прошедший через корректора/редактора, тоже будет с «ё». Если автор — известный сторонник «ё», это не маркер.
**Примеры маркеров:**
- «Проект идёт по плану, всё готово к деплою» (в Slack)
- «Ещё нужно разобраться с конфигурацией» (в Telegram)
**Как выглядит реальный человеческий текст:**
- «Проект идет по плану, все готово к деплою»
- «Еще нужно разобраться с конфигурацией»
**Рекомендация:** В переписке заменить «ё» на «е» повсеместно. В статьях — допустимо, если автор осознанно ёфицирует, но в сочетании с другими маркерами усиливает подозрение.
**Детекция:** Подсчитать количество «ё» в тексте. Порог: 3+ вхождения в коротком тексте (до 200 слов) или стабильное использование по всему тексту (ни одного «е» там, где должно быть «ё» — подозрительная последовательность).
| Контекст | Severity |
|----------|----------|
| article | 🟡 medium |
| message | 🔴 high |
| resume | 🔴 high |
---
## Категория: Лексика-маркер
### L01: AI vocabulary (русский)
**Что:** Слова и обороты, статистически чрезмерно используемые LLM в русском тексте.
@@ -109,6 +137,8 @@ AI-модели же подставляют типографически кор
- данный (вместо "этот"), текущий (вместо "нынешний/сейчашний")
- неотъемлемая часть, играет важную роль
- оптимизация, масштабирование (вне технического контекста)
- формирование (вместо "создание"), реализация (вместо "сделали/написали")
- осуществлять (вместо "делать"), функционирование (вместо "работа")
**Список (tier 2 — подозрительные в скоплении):**
- безусловно, несомненно, очевидно
@@ -189,9 +219,25 @@ AI-модели же подставляют типографически кор
| message | 🔴 high |
| resume | 🟢 low |
---
### L06: Hedging (перестраховочная лексика)
## Категория: Структурные паттерны
**Что:** Оговорки и смягчающие конструкции: «возможно», «вероятно», «в определённой степени», «в той или иной мере», «не исключено, что», «можно предположить», «как правило», «в большинстве случаев».
**Почему:** AI хеджирует рефлекторно — ставит оговорки там, где человек сказал бы прямо. Одна оговорка в абзаце — нормально. Три — сигнал, что текст сгенерирован моделью, которая боится быть неточной.
**Примеры маркеров:**
- «Вероятно, это связано с особенностями архитектуры»
- «В определённой степени это позволяет улучшить производительность»
- «Можно предположить, что данный подход окажется эффективным»
**Как выглядит человеческий текст:**
- «Это из-за архитектуры»
- «Это улучшает производительность»
- «Этот подход работает»
**Рекомендация:** Убрать оговорку, если автор уверен в утверждении. Если не уверен — написать почему, а не прятаться за «возможно».
| Контекст | Severity |
|----------|----------|
| article | 🟡 medium |
| message | 🟡 medium |
| resume | 🔴 high |
### S01: Negative parallelism ("не X, а Y")
@@ -249,7 +295,9 @@ AI-модели же подставляют типографически кор
- Четыре абзаца по 50-60 слов каждый
**Рекомендация:** Варьировать длину осознанно. Добавить один короткий пункт (одно предложение) и один длинный.
**Подсказка по детекции:** Посчитать слова в каждом пункте списка или абзаце. Если разброс длин менее 20% от среднего — это паттерн. Например, пять пунктов по 12, 11, 13, 12, 11 слов — подозрительно ровно.
**Подсказка по детекции:** Два аспекта однородности:
1. *Длина.* Посчитать слова в каждом пункте списка или абзаце. Если разброс длин менее 20% от среднего — это паттерн. Например, пять пунктов по 12, 11, 13, 12, 11 слов — подозрительно ровно.
2. *Синтаксис.* AI часто строит предложения по одной схеме: подлежащее → сказуемое → дополнение, подлежащее → сказуемое → дополнение. Человек чередует порядок слов, начинает с обстоятельства, вставляет вводные конструкции, использует инверсию.
| Контекст | Severity |
|----------|----------|
@@ -287,9 +335,24 @@ AI-модели же подставляют типографически кор
| message | 🟡 medium |
| resume | 🟡 medium |
---
### S07: Двоеточие перед каждым списком
## Категория: Тональные паттерны
**Что:** Вводная фраза с двоеточием перед каждым bullet-списком: «Основные преимущества:», «Ключевые особенности:», «Что мы сделали:».
**Почему:** AI рефлекторно ставит "заголовок:" перед каждым списком, даже когда список и так понятен из контекста. Человек часто начинает список без вводной фразы или встраивает его в предложение.
**Примеры маркеров:**
- «Основные преимущества ClickHouse:» + список
- «Что было сделано в рамках проекта:» + список
- «Ключевые технологии:» + список
**Как выглядит человеческий текст:**
- Список начинается после абзаца, без отдельной вводной строки
- Или встроен в предложение: «Мы использовали ClickHouse, Kafka и Airflow»
**Рекомендация:** Убрать вводную фразу, если из контекста и так ясно, о чём список. Или встроить перечисление в текст.
| Контекст | Severity |
|----------|----------|
| article | 🟡 medium |
| message | 🟡 medium |
| resume | 🟡 medium |
### T01: Vague attribution (размытые ссылки на авторитет)
@@ -352,9 +415,23 @@ AI-модели же подставляют типографически кор
| message | 🔴 high |
| resume | 🟡 medium |
---
### T05: Sandwich pattern (похвала-оговорка-похвала)
## Категория: Паттерны, специфичные для резюме
**Что:** Структура, где критика или ограничение обёрнуты в два слоя позитива: «Отличный инструмент. Есть некоторые ограничения. Но в целом достойное решение.»
**Почему:** AI боится быть категоричным и рефлекторно смягчает любую критику обрамлением из похвалы. Человек, если ему что-то не нравится, скажет прямо: «Работает, но тормозит на больших объёмах — для нас это критично».
**Примеры маркеров:**
- «Kafka — мощный инструмент. Настройка может быть непростой. Тем не менее, для нашей задачи это лучший выбор.»
- «Хороший фреймворк с активным сообществом. Документация могла бы быть лучше. В целом — рекомендую.»
**Как выглядит человеческий текст:**
- «Kafka подходит, но настройка — боль. Будьте готовы потратить на это время.»
- «Документация слабая, приходится разбираться по исходникам. В остальном норм.»
**Рекомендация:** Убрать обрамляющие позитивные предложения, если они не несут информации. Критику подать прямо, с конкретикой.
| Контекст | Severity |
|----------|----------|
| article | 🟡 medium |
| message | 🟡 medium |
| resume | 🟢 low |
### R01: Абстрактные impact-фразы без цифр
@@ -445,12 +522,12 @@ AI-модели же подставляют типографически кор
### article (статьи, Хабр, документация)
🔴 high: P04 (эмодзи в заголовках), L03 (inflated significance), L04 (AI-зачины), S01 (negative parallelism), S05 (bold bullet headers), T01 (vague attribution), T03 (стерильная нейтральность)
🟡 medium: P01, P03, L01, L02, L05, S02, S03, S04, S06, T02, R01, C01, C02
🟡 medium: P01, P03, P05, L01, L02, L05, L06, S02, S03, S04, S06, S07, T02, T05, R01, C01, C02
### message (переписка)
🔴 high: P01 (длинное тире), L01 (AI vocabulary RU), L04 (AI-зачины), L05 (вводные приглашения), S01, S03 (compulsive summary), T04 (вежливые обрамления), C01 (conjunctive phrases)
🟡 medium: P02, P03, P04, L03, S02, T01, T02, C02
🔴 high: P01 (длинное тире), P05 (буква ё), L01 (AI vocabulary RU), L04 (AI-зачины), L05 (вводные приглашения), S01, S03 (compulsive summary), T04 (вежливые обрамления), C01 (conjunctive phrases)
🟡 medium: P02, P03, P04, L03, L06, S02, S07, T01, T02, T05, C02
### resume (резюме)
🔴 high: P01 (длинное тире), P04 (эмодзи), L01, L02, L03, S01, R01 (abstract impact), R02 (buzzword stacking), R03 (однородные bullets), T02 (причастные оценки), C02 (false range)
🟡 medium: P03, L04, S02, S03, S04, T04, C01
🔴 high: P01 (длинное тире), P04 (эмодзи), P05 (буква ё), L01, L02, L03, L06, S01, R01 (abstract impact), R02 (buzzword stacking), R03 (однородные bullets), T02 (причастные оценки), C02 (false range)
🟡 medium: P03, L04, S02, S03, S04, S07, T04, T05, C01