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

АНАЛИЗ РОЛЕЙ И ПРАВИЛ В СИСТЕМЕ

Дата: 2026-01-17
Цель: Понять что есть, что применяется, выработать политику


ЧТО УЖЕ ЕСТЬ В СИСТЕМЕ

1. OUTPUT STYLE: SafeDialog

Файл: .claude/output-styles/SafeDialog.md
Статус: ✅ Активен (в settings.local.json)
Содержит:
- L1-L4 протокол подтверждений
- Алгоритм работы (6 шагов)
- Варианты решений (формат 1, 2, 3, 4)
- Формат подтверждений
- Git операции детально
- Опасные термины (проект/база/ключ)

Приоритет: System prompt level (ВЫСОКИЙ)
Compaction: ✅ Переживает

2. РОЛИ В CLAUDE.md

Файл: $WORKSPACE/CLAUDE.md
Содержит 3 роли:

● ОПЕРАТОР (строки 557-581)

◆ ПРОЕКТОР (строки 584-615)

▲ АРХИТЕКТОР (строки 619-651)

3. ОБЩИЙ ПРОТОКОЛ ДИАЛОГА

Файл: CLAUDE.md (строки 133-556)
Статус: "Применяется для ВСЕХ режимов"

Содержит:
- L1-L4 уровни операций
- Делегирование моделям (Opus/Sonnet/Haiku)
- Правило времени (AI × 10 быстрее)
- STOP RULES (credentials, rm -rf, DROP, деньги)
- Опасные термины
- 6 шагов диалога (Понимание → Задача → Подтверждение → Выполнение → Проверка → Отчёт)

4. START.SH (точки входа)

Файл: $WORKSPACE/start.sh

1) exec claude "режим оператор"              # Оператор
2) exec claude "режим проектор"              # Проектор
3) exec claude "режим архитектор"            # Архитектор
4-8) exec claude "проектор работаем с..."    # Проектор + проект
9) exec claude "архитектор работаем с..."    # Архитектор + платформа

Проблема: НЕТ --append-system-prompt или других способов активации дополнительных правил.


ГДЕ КОД, ГДЕ НЕ КОД

ОПЕРАТОР ● - НЕ КОД (99%)

Задачи:
- Настроить nginx → L3 (сервер)
- Создать БД → L3 (сервер)
- Проверить статус → L0 (просмотр)
- Запустить сервис → L3 (сервер)

Операции: Инфраструктурные команды, настройки, быстрые проверки

L1-L4 НУЖЕН? ✅ ДА!
- L3 операции (nginx, systemd, docker) — опасные
- L4 редко, но возможны (DROP TABLE, rm -rf /var)

КОД? ❌ Почти нет
- Изредка скрипты мониторинга
- Но это L2 (редко)

ПРОЕКТОР ◆ - МНОГО КОДА (70%)

Задачи:
- Добавить фичу → КОД (L2)
- Исправить баг → КОД (L2)
- Создать компонент → КОД (L2)
- Настроить БД для проекта → НЕ КОД (L3)

Операции:
- Исследование: Поиск, анализ (НЕ КОД)
- Планирование: Обсуждение (НЕ КОД)
- Реализация: Написание кода (КОД!)

L1-L4 НУЖЕН? ⚠️ ЧАСТИЧНО
- L2 (код) — нужен, но НЕ ДОЛЖЕН МЕШАТЬ!
- При кодинге показывать план, но НЕ спрашивать на каждую функцию
- L3/L4 — редко (deploy, миграции БД)

ПРОБЛЕМА: L1-L4 протокол МЕШАЕТ кодингу:
- При написании 10 функций → 10 подтверждений ❌
- При рефакторинге → подтверждение на каждый файл ❌

РЕШЕНИЕ: Разграничить ПЛАНИРОВАНИЕ и РЕАЛИЗАЦИЮ:
- Планирование: Показать план → подтверждение → дальше без остановок
- Реализация: Работать без остановок до конца

АРХИТЕКТОР ▲ - ДОКУМЕНТЫ (90%)

Задачи:
- Создать стандарт → L1 (документ)
- Обсудить подход → L0 (обсуждение)
- Зафиксировать решение → L1 (документ)

Операции:
- Анализ
- Обсуждение
- Документирование

L1-L4 НУЖЕН? ⚠️ ЧАСТИЧНО
- L1 (документы) — нужен, но упрощённый
- L0 (обсуждение) — НЕ нужен

КОД? ❌ Почти нет
- "Без кода до согласования" (CLAUDE.md:631)


ПРОБЛЕМЫ ТЕКУЩЕЙ СИСТЕМЫ

1. SafeDialog ПРИМЕНЯЕТСЯ ВСЕГДА

Проблема:
- settings.local.jsonoutputStyle: "SafeDialog"
- Это для ВСЕХ сессий (Оператор, Проектор, Архитектор)
- При кодинге (Проектор Реализация) — SafeDialog МЕШАЕТ

Пример:

Проектор: Реализация  создаю 5 компонентов

Claude (SafeDialog):
Создам компонент Header.tsx
1 - да
0 - нет

[пользователь: 1]

Создам компонент Footer.tsx
1 - да
0 - нет

[пользователь: 1]

...x5 раз 

2. Нет разделения ПЛАНИРОВАНИЕ vs РЕАЛИЗАЦИЯ

Сейчас:
- Проектор имеет 3 подрежима (Исследование/Планирование/Реализация)
- Но L1-L4 протокол применяется ко ВСЕМ одинаково

Нужно:
- Планирование: L1-L4 активен (показывать план, ждать подтверждения)
- Реализация: L1-L4 отключён (работать без остановок)

3. Роли не связаны с Output Styles

Сейчас:
- Роли определены в CLAUDE.md (context level)
- SafeDialog активен глобально (system prompt level)
- Переключение ролей НЕ меняет SafeDialog

Нужно:
- Оператор → SafeDialog (L3 много)
- Проектор Планирование → SafeDialog
- Проектор Реализация → БЕЗ SafeDialog
- Архитектор → SafeDialog упрощённый (только L1)


АНАЛИЗ: КОГДА L1-L4 НУЖЕН

L0: Просмотр, анализ, обсуждение

L1: Документы (.md, .yaml)

L2: Код (.py, .js)

L3: Сервер (nginx, systemd, docker)

L4: Опасные (prod, деньги, rm -rf)


МАТРИЦА: РОЛЬ × ПРАВИЛА

Роль Подрежим Тип работы L1-L4 Почему
Оператор Инфра ✅ Полный Много L3, риск downtime
Проектор Исследование Поиск, анализ ❌ Нет Только чтение
Проектор Планирование Обсуждение плана ✅ L2 план Согласование ПЕРЕД кодом
Проектор Реализация Написание кода ❌ Нет Уже согласовали, пишем
Архитектор Исследование Анализ ❌ Нет Только чтение
Архитектор Обсуждение Выбор подхода ⚠️ Варианты Показать 2-4 варианта
Архитектор Документация Создание .md ✅ L1 короткий Изменение документов

ПРОБЛЕМА С КОДИНГОМ

Сценарий: Проектор Реализация

Задача: Создать 5 React компонентов для проекта

С SafeDialog (СЕЙЧАС):

1. План: создам Header, Footer, Sidebar, Content, Layout
    Подтверждение: да
2. Header.tsx  подтверждение
3. Footer.tsx  подтверждение
4. Sidebar.tsx  подтверждение
5. ...

 5 остановок! Медленно, раздражает.

Без SafeDialog (НУЖНО):

1. План: создам Header, Footer, Sidebar, Content, Layout
   Структура: [показать]
   Зависимости: [показать]
    Подтверждение: да

2. [Создаёт все 5 компонентов БЕЗ остановок]

3. ВЫПОЛНЕНО: 5 компонентов созданы
   Тесты: npm test 
   Build: npm run build 

 1 подтверждение в начале, потом работа без остановок

РЕШЕНИЕ: ПОЛИТИКА ПО РОЛЯМ

ОПЕРАТОР ●

Output Style: SafeDialog (ПОЛНЫЙ L1-L4)

Почему:
- Много L3 операций (nginx, systemd, docker)
- Риск downtime
- Нужны подтверждения

Исключения: Нет

ПРОЕКТОР ◆

Output Style: Зависит от подрежима

Подрежим Style L1-L4 Обоснование
Исследование Default ❌ Нет Только чтение, анализ
Планирование SafeDialog ✅ План Согласовать ПЕРЕД кодом
Реализация Coder ❌ Нет Уже согласовали, не мешать

Как переключать:

# При входе в Планирование
/output-style SafeDialog

# При входе в Реализацию (после согласования плана)
/output-style Coder

# При входе в Исследование
/output-style Default

АРХИТЕКТОР ▲

Output Style: ArchitectDialog (упрощённый L1-L4)

Подрежим Style L1-L4 Обоснование
Исследование Default ❌ Нет Только чтение, анализ
Обсуждение ArchitectDialog ⚠️ Варианты Показать 2-4 варианта, ждать выбор
Документация ArchitectDialog ✅ L1 Короткое подтверждение для .md

ArchitectDialog отличия от SafeDialog:
- Только L1 (документы)
- НЕТ L2 (код не пишем)
- НЕТ L3/L4 (не работаем с инфрой)
- Фокус на варианты решений (2-4 варианта)


ФИНАЛЬНАЯ ПОЛИТИКА

1. Создать 3 Output Styles

Файлы:
- .claude/output-styles/Operator.md → SafeDialog (полный L1-L4)
- .claude/output-styles/Coder.md → БЕЗ подтверждений (для кодинга)
- .claude/output-styles/Architect.md → L1 + варианты (для документов)

2. Обновить CLAUDE.md

Добавить правило переключения:

## ПЕРЕКЛЮЧЕНИЕ OUTPUT STYLE ПО РОЛИ

**ОБЯЗАТЕЛЬНОЕ ПРАВИЛО:** При переключении роли/подрежима → менять Output Style

| Роль | Подрежим | Команда |
|------|----------|---------|
| Оператор | — | `/output-style Operator` |
| Проектор | Исследование | `/output-style Default` |
| Проектор | Планирование | `/output-style Operator` (L2 план) |
| Проектор | Реализация | `/output-style Coder` (БЕЗ подтверждений) |
| Архитектор | Исследование | `/output-style Default` |
| Архитектор | Обсуждение | `/output-style Architect` (варианты) |
| Архитектор | Документация | `/output-style Architect` (L1) |

**Как переключать:**
1. Пользователь: "режим проектор планирование"
2. Claude: `/output-style Operator` → активирует L1-L4
3. Согласование плана
4. Пользователь: "делаем" или "реализация"
5. Claude: `/output-style Coder` → отключает подтверждения
6. Кодинг без остановок

3. Модифицировать start.sh (опционально)

При старте через меню:

# Оператор
exec claude --append-system-prompt "Activate /output-style Operator immediately" "режим оператор"

# Проектор
exec claude --append-system-prompt "Ask for submode (Исследование/Планирование/Реализация) and set appropriate output-style" "режим проектор"

# Архитектор
exec claude --append-system-prompt "Ask for submode and set /output-style Architect or Default" "режим архитектор"

Или оставить как есть — пусть Claude сам спрашивает подрежим и переключает стиль.


ЧТО ДЕЛАТЬ ДАЛЬШЕ

Вариант А: Только Output Styles (РЕКОМЕНДУЕТСЯ)

  1. Создать 3 файла стилей
  2. Обновить CLAUDE.md с правилами переключения
  3. НЕ трогать start.sh

Плюсы:
- Минимальные изменения
- Работает внутри сессии
- Гибкость (можно менять стиль вручную)

Минусы:
- Claude должен сам переключать (может забыть)

Вариант Б: Styles + start.sh

  1. Создать 3 файла стилей
  2. Обновить CLAUDE.md
  3. Модифицировать start.sh с --append-system-prompt

Плюсы:
- Гарантированная активация при старте
- CLAUDE.md + system prompt = двойная защита

Минусы:
- Сложнее
- Нужно менять start.sh

Вариант В: Автоматизация через Skills (БУДУЩЕЕ)

  1. Создать Skills для автопереключения стилей
  2. При триггере "режим X" → автоматически /output-style Y

Плюсы:
- Полная автоматизация

Минусы:
- Skills context level (может не сработать)
- Сложно


РЕКОМЕНДАЦИЯ

Сделать:
1. ✅ Создать 3 Output Styles (Operator, Coder, Architect)
2. ✅ Обновить CLAUDE.md с чёткими правилами переключения
3. ⚠️ НЕ менять start.sh (пока)
4. ⚠️ Протестировать в работе
5. ⚠️ Если Claude забывает → добавить в start.sh --append-system-prompt

Принцип:
- Оператор: ВСЕГДА SafeDialog (инфра опасна)
- Проектор Планирование: SafeDialog (согласование плана)
- Проектор Реализация: БЕЗ подтверждений (не мешать кодингу)
- Архитектор: Упрощённый (только L1 + варианты)


Делаем Вариант А?