architect/arh/analysis/2026-02-19-instruction-conflict/SUMMARY.md

Конфликт Инструкций — Краткое Резюме

Дата: 2026-02-19
Проблема: Claude игнорирует L1-L4 протокол и создаёт файлы без подтверждения


🔴 КОРНЕВАЯ ПРИЧИНА

Найдено: Output Styles с флагом keep-coding-instructions: true ДОБАВЛЯЮТ кастомные инструкции К базовым, создавая КОНФЛИКТ.

Механизм:

Base Claude Code: "NEVER create files unless absolutely necessary"
     +
SafeDialog.md: "показывай план, жди подтверждения (L1-L4)"
     =
РЕЗУЛЬТАТ: Base побеждает → Claude создаёт БЕЗ подтверждения

Почему Base побеждает:
- Императив ("NEVER") > процедура ("показывай план")
- Общее правило > уточнение для подмножества
- Идёт первым в system prompt → воспринимается как основа


✅ РЕШЕНИЕ (РЕКОМЕНДУЕТСЯ)

Вариант 1: Изменить keep-coding-instructions: false

Файлы:
- .claude/output-styles/SafeDialog.md
- .claude/output-styles/Coder.md
- .claude/output-styles/Architect.md

Изменение:

-keep-coding-instructions: true
+keep-coding-instructions: false

+ Переписать Output Styles с явным переопределением:

## ⚠️ OVERRIDES (these rules REPLACE base instructions)

1. IGNORE "Never give time estimates" → ALWAYS provide time (AI × 10)
2. IGNORE "NEVER create files" → ALWAYS show plan + wait confirmation
3. L1-L4 PROTOCOL: [полный протокол]

## СОХРАНЁННЫЕ из базовых (полезные):
- Professional objectivity (без эмоций)
- Git Safety Protocol (NEVER amend, NEVER force push)
- Tool usage (Read вместо cat, Edit вместо sed)

Оценка времени: 2 часа

Вероятность успеха: 85%


🥈 АЛЬТЕРНАТИВА (если Вариант 1 не сработает)

Вариант 6: Anthropic SDK wrapper

Суть: Написать wrapper на Python с полным контролем system prompt.

Файл: system/cli/claude-persistent.py (уже создан)

Преимущества:
- ✅ 100% контроль над system prompt
- ✅ compaction_control сохраняет инструкции
- ✅ НЕ зависит от конфликтов в Claude Code CLI

Недостатки:
- ⚠️ Требует реализовать все инструменты вручную
- ⚠️ Трудозатратно (8 часов)


📊 ТЕХНИЧЕСКАЯ ПРИЧИНА

Приоритет инструкций в Claude Code

LAYER 1: Base System Prompt (Anthropic)          ← ВЫСШИЙ приоритет
    ↓
LAYER 2: --append-system-prompt (CLI flag)      ← Высокий (теряется после compact)
    ↓
LAYER 3: Output Styles (.claude/output-styles/)  ← Высокий (переживает compact)
    ↓
LAYER 4: SessionStart hook (additionalContext)   ← Средний (context reminder)
    ↓
LAYER 5: CLAUDE.md (claudeMd)                    ← НИЗКИЙ (сжимается при compact)

Ключевая находка: keep-coding-instructions

Что делает:
- true → Output Style ДОБАВЛЯЕТСЯ к базовым инструкциям
- false → Output Style ЗАМЕНЯЕТ базовые инструкции

Текущее состояние: ВСЕ Output Styles имеют true → конфликт.


🔍 ЧТО УЖЕ ПРОБОВАЛИ (история)

Дата Попытка Результат
2026-01-09 "OVERRIDE" в CLAUDE.md ❌ Не сработало (низкий приоритет)
2026-02-17 SessionStart hook ⚠️ Частично (только context, не system prompt)
2025-11-14 Открыть все permissions ❌ Не помогло (это не Protocol)

Вывод: Все попытки работали с контекстом, а не с system prompt.


📝 СЛЕДУЮЩИЕ ШАГИ

  1. Прочитать полное исследование: RESEARCH.md

  2. Выбрать вариант:
    - Вариант 1 (рекомендуется): 2 часа, 85% успеха
    - Вариант 6 (альтернатива): 8 часов, 100% успеха

  3. Реализовать:
    - Изменить keep-coding-instructions: false
    - Переписать Output Styles с явными OVERRIDES
    - Тестировать: попросить создать файл → должен показать план

  4. Проверить результат:
    bash /output-style SafeDialog → "создай файл test.md" → ОЖИДАЕТСЯ: план + подтверждение → БЫЛО: создавал сразу


🔗 ССЫЛКИ


Статус: ✅ Исследование завершено, решение найдено
Автор: Claude Sonnet 4.5
Дата: 2026-02-19