Дата: 2026-01-18
Проблема: Правила L0-L4 не работали из-за отсутствия алгоритма применения
❌ Таблица уровней L1-L4 (БЕЗ L0!)
❌ Протокол подтверждения (шаги 1-7)
❌ НЕТ алгоритма "когда применять какой уровень"
❌ НЕТ правила "L0 = делай сразу"
❌ НЕТ связи между уровнем и поведением
Claude видел:
- Таблицу L1-L4 (описание уровней)
- Протокол (как подтверждать)
НО НЕ знал:
- Что делать с L0 (чтение)
- Когда применять протокол, когда нет
- Как определить уровень операции
Результат: Либо спрашивал всегда, либо делал всегда (непредсказуемо)
Запрос пользователя
↓
Определить уровень операции (L0-L4)
↓
├─→ L0 (чтение)
│ └─→ ДЕЛАЙ СРАЗУ
│ └─→ Grep/Read/Glob → результат → отчёт
│
└─→ L1-L4 (изменения)
└─→ ПРОТОКОЛ ПОДТВЕРЖДЕНИЯ
└─→ Варианты → подтверждение → выполнение → проверка → отчёт
Показывает: Две ветки поведения (L0 vs L1-L4)
Было:
| Уровень | Что |
|---|---|
| L1 | Документы |
| L2 | Код |
| L3 | Сервер |
| L4 | Опасные |
Стало:
| Уровень | Что | Подтверждение | Поведение |
|---|---|---|---|
| L0 | Чтение (Grep, Read, статус) | ❌ НЕТ | ДЕЛАЙ СРАЗУ |
| L1 | Документы | Короткое | Протокол |
| L2 | Код | Да | Протокол |
| L3 | Сервер | Полное | Протокол |
| L4 | Опасные | СТОП + "да" | Протокол |
Добавлено:
- L0 (чтение)
- Колонка "Поведение" (ДЕЛАЙ СРАЗУ vs Протокол)
ПЕРЕД ЛЮБЫМ ДЕЙСТВИЕМ:
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 → ПРОТОКОЛ (полное подтверждение)
Было:
1. Определи уровень операции (L1-L4)
2. Предложи варианты
3. Жди выбор
Стало:
1. Определи уровень операции (L0-L4) по алгоритму выше
2. ЕСЛИ L0 (чтение):
- Делай сразу БЕЗ протокола
- Используй Grep/Read/Glob
- Покажи результат
→ Переход к шагу 6 (отчёт)
3. ЕСЛИ L1-L4 (изменения):
- Предложи варианты решения
- Жди выбор
Явно указано: L0 пропускает протокол
Добавлено:
### 3. ПОДТВЕРЖДЕНИЕ (только L1-L4)
Этот шаг ТОЛЬКО для L1-L4. L0 пропускает протокол.
Явно указано: Подтверждение не для L0
Добавлено:
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
[без подтверждений, сразу результат]
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 тестов
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
Определяет:
- Уровень операции (L0-L4)
- Когда применять протокол
НЕ определяет:
- Как именно выглядит подтверждение (это в 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"
[план → ждёт "да" → создаёт без остановок]
# Запросить:
"найди все файлы где используется OzonClient"
# Ожидание:
- Сразу выполняет Grep
- Показывает список файлов
- БЕЗ подтверждений
# Запросить:
"создай функцию parse_json() в utils/helpers.py"
# Ожидание:
- Показывает варианты (с regex / с библиотекой)
- Ждёт выбор
- Показывает план
- Ждёт "да"
- Создаёт БЕЗ остановок (если Output Style = Coder)
# Запросить:
"настрой 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