architect/arh/analysis/2026-01-17-roles-optimization/L0_PROTOCOL_FIX.md

ИСПРАВЛЕНИЕ L0-L4 ПРОТОКОЛА В CLAUDE.MD

Дата: 2026-01-18
Проблема: Правила L0-L4 не работали из-за отсутствия алгоритма применения


ПРОБЛЕМА

Что было в CLAUDE.md:

❌ Таблица уровней L1-L4 (БЕЗ L0!)
❌ Протокол подтверждения (шаги 1-7)
❌ НЕТ алгоритма "когда применять какой уровень"
❌ НЕТ правила "L0 = делай сразу"
❌ НЕТ связи между уровнем и поведением

Почему не работало:

Claude видел:
- Таблицу L1-L4 (описание уровней)
- Протокол (как подтверждать)

НО НЕ знал:
- Что делать с L0 (чтение)
- Когда применять протокол, когда нет
- Как определить уровень операции

Результат: Либо спрашивал всегда, либо делал всегда (непредсказуемо)


РЕШЕНИЕ

1. Добавлена СХЕМА РАБОТЫ

Запрос пользователя
    ↓
Определить уровень операции (L0-L4)
    ↓
    ├─→ L0 (чтение)
    │   └─→ ДЕЛАЙ СРАЗУ
    │       └─→ Grep/Read/Glob → результат → отчёт
    │
    └─→ L1-L4 (изменения)
        └─→ ПРОТОКОЛ ПОДТВЕРЖДЕНИЯ
            └─→ Варианты → подтверждение → выполнение → проверка → отчёт

Показывает: Две ветки поведения (L0 vs L1-L4)


2. Добавлен L0 в таблицу уровней

Было:

Уровень Что
L1 Документы
L2 Код
L3 Сервер
L4 Опасные

Стало:

Уровень Что Подтверждение Поведение
L0 Чтение (Grep, Read, статус) ❌ НЕТ ДЕЛАЙ СРАЗУ
L1 Документы Короткое Протокол
L2 Код Да Протокол
L3 Сервер Полное Протокол
L4 Опасные СТОП + "да" Протокол

Добавлено:
- L0 (чтение)
- Колонка "Поведение" (ДЕЛАЙ СРАЗУ vs Протокол)


3. Добавлен АЛГОРИТМ ОПРЕДЕЛЕНИЯ УРОВНЯ

ПЕРЕД ЛЮБЫМ ДЕЙСТВИЕМ:

1. Определить тип операции:
   - Чтение? (grep, read, ls, статус)  L0
   - Документ? (.md, .yaml)  L1
   - Код? (.py, .js)  L2
   - Сервер? (nginx, systemd)  L3
   - Опасное? (prod, DROP, rm -rf)  L4

2. Применить поведение:
   - L0  Делай сразу БЕЗ подтверждения
   - L1-L4  Протокол подтверждения

С примерами:

"найди где используется OzonClient"
→ Grep (чтение) → L0 → ДЕЛАЙ СРАЗУ

"создай функцию calculate()"
→ Код → L2 → ПРОТОКОЛ (план → подтверждение)

"настрой nginx для docs.0kt.ru"
→ Сервер → L3 → ПРОТОКОЛ (полное подтверждение)

4. Обновлён шаг "ПОЛУЧЕНИЕ ЗАДАЧИ"

Было:

1. Определи уровень операции (L1-L4)
2. Предложи варианты
3. Жди выбор

Стало:

1. Определи уровень операции (L0-L4) по алгоритму выше

2. ЕСЛИ L0 (чтение):
   - Делай сразу БЕЗ протокола
   - Используй Grep/Read/Glob
   - Покажи результат
    Переход к шагу 6 (отчёт)

3. ЕСЛИ L1-L4 (изменения):
   - Предложи варианты решения
   - Жди выбор

Явно указано: L0 пропускает протокол


5. Уточнён шаг "ПОДТВЕРЖДЕНИЕ"

Добавлено:

### 3. ПОДТВЕРЖДЕНИЕ (только L1-L4)

Этот шаг ТОЛЬКО для L1-L4. L0 пропускает протокол.

Явно указано: Подтверждение не для L0


ИТОГО: ЧТО ИЗМЕНИЛОСЬ В CLAUDE.MD

Секция "ПРОТОКОЛ ДИАЛОГА С ОПЕРАТОРОМ"

Добавлено:

  1. ✅ Схема работы (L0 vs L1-L4)
  2. ✅ L0 в таблицу уровней
  3. ✅ Колонка "Поведение" в таблице
  4. ✅ Алгоритм определения уровня ПЕРЕД действием
  5. ✅ Примеры применения алгоритма
  6. ✅ Явное ветвление в шаге 2 (L0 → сразу, L1-L4 → протокол)
  7. ✅ Явное указание в шаге 3 (только L1-L4)

КАК ЭТО РАБОТАЕТ

Пример 1: L0 (research)

User: найди где используется TelegramClient

Claude:
1. Определяю уровень: Grep  L0
2. Применяю поведение: ДЕЛАЙ СРАЗУ
3. [выполняет Grep сразу]

TelegramClient используется в:
 library/connectors/api/telegram/__init__.py:8
 system/monitor/alerts/telegram.py:12
 projects/org/pirotehnika/app/bot.py:45

[без подтверждений, сразу результат]

Пример 2: L2 (code)

User: создай функцию validate_email()

Claude:
1. Определяю уровень: создание кода  L2
2. Применяю поведение: ПРОТОКОЛ
3. [показывает варианты]

ВАРИАНТЫ:

1. С regex (быстро, простой валидатор)
2. С библиотекой email-validator (надёжно)
3. С DNS проверкой (полная валидация)

Выбери: 1/2/3

[User: 1]

План:
- Создать validate_email() с regex
- Добавить тесты
Оценка: 5 минут
 Делаем?

[User: да]

[создаёт функцию и тесты]

ВЫПОЛНЕНО:
 validate_email() в utils/validators.py
 5 тестов

Пример 3: L3 (ops)

User: настрой nginx для test.example.com

Claude:
1. Определяю уровень: nginx  L3
2. Применяю поведение: ПРОТОКОЛ (полное подтверждение)
3. [показывает план]

L3 | Сервер
Изменю: /etc/nginx/sites-available/test.example.com
Действие: создам конфиг с proxy на :3000
Откат: rm конфиг && nginx reload
Бэкап: сделаю cp перед изменением
Риск: низкий (новый сайт)

Оценка: 5 минут
 Делаем?

[User: ок]

[создаёт конфиг, тестирует, релоадит nginx]

ВЫПОЛНЕНО:
 Конфиг создан
 Nginx перезагружен
 Тест: curl http://test.example.com  200 OK

ОТКАТ: rm /etc/nginx/sites-available/test.example.com && nginx reload

СВЯЗЬ С OUTPUT STYLES

CLAUDE.md (контекст)

Определяет:
- Уровень операции (L0-L4)
- Когда применять протокол

НЕ определяет:
- Как именно выглядит подтверждение (это в Output Styles)


Output Styles (поведение)

Default.md (research → L0):

- Read, analyze, search WITHOUT asking
- No confirmations for read-only operations

Coder.md (code → L2):

1. Show plan  wait confirmation
2. Execute ALL items WITHOUT stopping

SafeDialog.md (ops → L3-L4):

L3: Полное подтверждение + откат
L4: СТОП + "да" явное

Как работает вместе

User: найди где TelegramClient

CLAUDE.md:
 Операция: Grep  L0
 Поведение: ДЕЛАЙ СРАЗУ

Output Style: Default.md
 "Read without asking"

[выполняет Grep  результат]
User: создай функцию

CLAUDE.md:
 Операция: код  L2
 Поведение: ПРОТОКОЛ

Output Style: Coder.md
 "Plan → wait → execute all"

[план  ждёт "да"  создаёт без остановок]

ТЕСТИРОВАНИЕ

Тест 1: L0 работает без подтверждений

# Запросить:
"найди все файлы где используется OzonClient"

# Ожидание:
- Сразу выполняет Grep
- Показывает список файлов
- БЕЗ подтверждений

Тест 2: L2 работает с протоколом

# Запросить:
"создай функцию parse_json() в utils/helpers.py"

# Ожидание:
- Показывает варианты (с regex / с библиотекой)
- Ждёт выбор
- Показывает план
- Ждёт "да"
- Создаёт БЕЗ остановок (если Output Style = Coder)

Тест 3: L3 работает с полным подтверждением

# Запросить:
"настрой nginx для new.example.com"

# Ожидание:
- Показывает варианты
- Показывает полный план (L3)
- Указывает откат
- Ждёт "ок"
- Выполняет
- Проверяет (nginx -t && curl)
- Отчёт

ФАЙЛЫ

Изменённые

CLAUDE.md  (+50 строк в секции "ПРОТОКОЛ ДИАЛОГА С ОПЕРАТОРОМ")

Созданные

architect/analysis/2026-01-17-roles-optimization/L0_PROTOCOL_FIX.md

ИТОГО

Проблема: L0-L4 правила были ОПИСАНЫ но не ПРИМЕНЯЛИСЬ

Решение:
1. Добавлен L0 (чтение = делай сразу)
2. Добавлен алгоритм определения уровня ПЕРЕД действием
3. Добавлена явная ветка: L0 → сразу, L1-L4 → протокол
4. Добавлена визуальная схема работы

Теперь работает:
- L0 → делай сразу (research)
- L1 → короткое подтверждение (docs)
- L2 → план + подтверждение (code)
- L3 → полное подтверждение (ops)
- L4 → СТОП + "да" (dangerous)


Статус: ✅ ИСПРАВЛЕНО
Дата: 2026-01-18