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

ВОЗМОЖНОСТИ УПРАВЛЕНИЯ CLAUDE CODE

Дата: 2026-01-18
Цель: Понять ЧТО можем управлять через документы, ЧТО нет


АРХИТЕКТУРА УПРАВЛЕНИЯ

Схема приоритетов

┌─────────────────────────────────────────────────────────────────┐
 ПРИОРИТЕТ 1: System Prompt (встроенный в CLI)                  
 Источник: /usr/lib/node_modules/@anthropic-ai/claude-code/cli.js
 Изменить:  НЕЛЬЗЯ (минифицирован)                             
 "You are Claude Code, Anthropic's official CLI for Claude."     
└─────────────────────────────────────────────────────────────────┘
                               может быть дополнен
┌─────────────────────────────────────────────────────────────────┐
 ПРИОРИТЕТ 2: --append-system-prompt (флаг командной строки)    │
 Источник: claude --append-system-prompt "текст"                 │
 Изменить:  МОЖНО через wrapper-скрипт                         
 Проблема: ⚠️ ТЕРЯЕТСЯ после context compaction                  
└─────────────────────────────────────────────────────────────────┘
                               определяет поведение
┌─────────────────────────────────────────────────────────────────┐
 ПРИОРИТЕТ 3: Output Styles                                      
 Источник: .claude/output-styles/*.md                            │
│ Изменить: ✅ МОЖНО                                              │
│ Сохраняется: ✅ ДА (после compaction)                           │
│ Возможности: Поведение, формат ответов, Stop Rules             │
└─────────────────────────────────────────────────────────────────┘
                              ↓ читается как контекст
┌─────────────────────────────────────────────────────────────────┐
│ ПРИОРИТЕТ 4: CLAUDE.md (контекст)                               │
│ Источник: $WORKSPACE/CLAUDE.md                       │
│ Изменить: ✅ МОЖНО                                              │
│ Сохраняется: ⚠️ ДА, но низкий приоритет vs system prompt       │
│ Возможности: Протокол, правила, триггеры, индекс               │
└─────────────────────────────────────────────────────────────────┘
                              ↓ дополнительный контекст
┌─────────────────────────────────────────────────────────────────┐
│ ПРИОРИТЕТ 5: История разговора                                  │
│ Сохраняется: ⚠️ Частично (после compaction — summary)          │
└─────────────────────────────────────────────────────────────────┘

ЧТО МОЖЕМ УПРАВЛЯТЬ

✅ РАБОТАЕТ СЕЙЧАС (через документы)

1. Output Styles (.claude/output-styles/*.md)

Что можно:
- ✅ Поведение (когда спрашивать подтверждения, когда нет)
- ✅ Формат ответов (заголовки, структура)
- ✅ Stop Rules (что НИКОГДА не делать)
- ✅ Алгоритмы работы (шаг за шагом)
- ✅ Примеры диалогов

Что НЕЛЬЗЯ:
- ❌ Добавить новые инструменты (только CLI может)
- ❌ Изменить базовый system prompt
- ❌ Логика определения типа работы (только через триггеры в имени файла)

Файлы:

.claude/output-styles/
├── Default.md        Research mode (L0, без подтверждений)
├── Coder.md          Code mode (план  всё сразу)
├── Architect.md      Methodology mode (варианты + L1)
└── SafeDialog.md     Ops mode (L1-L4 протокол)

Пример что работает:

---
name: Coder
---

# Coder Mode

## Behavior

### Planning phase
1. Show full plan
2. Wait for confirmation

### Implementation phase
3. Execute ALL items WITHOUT stopping

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

Что можно:
- ✅ Протокол диалога (L0-L4 уровни)
- ✅ Индекс триггеров (при слове X → читай файл Y)
- ✅ Правила работы (Stop Rules, Security)
- ✅ Делегирование моделям
- ✅ Примеры и шаблоны
- ✅ Ссылки на стандарты

Что НЕЛЬЗЯ:
- ❌ Переопределить базовый system prompt
- ❌ Гарантировать что Claude ВСЕГДА прочитает (зависит от контекста)
- ❌ Добавить логику которая требует изменения кода CLI

Пример что работает:

## ИНДЕКС ТРИГГЕРОВ

| Триггер | Что делать |
|---------|------------|
| `pirotehnika` | Читай projects/org/pirotehnika/CLAUDE.md |
| `scheduler` | Читай system/scheduler/CLAUDE.md |

3. settings.local.json (настройки CLI)

Что можно:
- ✅ Модель по умолчанию
- ✅ Output Style по умолчанию (но лучше не задавать глобально)
- ✅ Другие настройки CLI

Что НЕЛЬЗЯ:
- ❌ Изменить поведение инструментов
- ❌ Добавить свои инструменты

Файл: .claude/settings.local.json


⚠️ РАБОТАЕТ ЧАСТИЧНО (теряется после compaction)

4. --append-system-prompt (флаг CLI)

Что можно:
- ✅ Дополнить system prompt ЛЮБЫМ текстом
- ✅ Переопределить правила (приоритет выше чем CLAUDE.md)

Проблема:
- ❌ ТЕРЯЕТСЯ после context compaction
- ❌ Нужно добавлять КАЖДЫЙ РАЗ при запуске

Решение:
Wrapper-скрипт который всегда добавляет нужный текст:

#!/bin/bash
# start.sh

CUSTOM_PROMPT="
OVERRIDE: AI works 10x faster than humans.
OVERRIDE: Always provide time estimates in minutes.
"

claude --append-system-prompt "$CUSTOM_PROMPT" "$@"

Что можно добавить через --append-system-prompt:
- ✅ Переопределение правил базового system prompt
- ✅ Формула времени (AI × 10)
- ✅ Любые дополнительные инструкции


❌ НЕ РАБОТАЕТ (требует изменения CLI)

5. Базовый System Prompt

Что хотим:
- ❌ Полностью заменить "You are Claude Code..."
- ❌ Изменить логику определения типа работы
- ❌ Добавить свои инструменты (кроме MCP)

Где находится:
- Встроен в /usr/lib/node_modules/@anthropic-ai/claude-code/cli.js (минифицирован)

Как изменить:
- ВАРИАНТ 1: Не менять (смириться)
- ВАРИАНТ 2: Proxy (перехватывать и модифицировать запросы)
- ВАРИАНТ 3: Свое приложение (fork или с нуля)


6. Инструменты (Tools)

Встроенные инструменты:
- Bash, Read, Write, Edit, Glob, Grep
- TodoWrite, AskUserQuestion, EnterPlanMode, ExitPlanMode
- WebSearch, WebFetch, NotebookEdit
- Task (для запуска агентов)
- Skill (для запуска skills)

Что хотим:
- ❌ Добавить свои инструменты (например, DatabaseQuery, SendTelegram)

Как добавить:
- ✅ Через MCP (Model Context Protocol) — официальный способ
- ⚠️ Через Skill (но это обёртка над существующими tools)
- ❌ Напрямую в CLI (требует изменения кода)


МАТРИЦА: ЧТО ГДЕ УПРАВЛЯЕТСЯ

Что управляем Output Styles CLAUDE.md --append-system-prompt settings.json Требует CLI
Поведение (когда спрашивать) ✅ Да ⚠️ Да (низкий приоритет) ✅ Да (теряется) ❌ Нет
Формат ответов ✅ Да ⚠️ Да ✅ Да (теряется) ❌ Нет
Stop Rules ✅ Да ✅ Да ✅ Да (теряется) ❌ Нет
Протокол L0-L4 ⚠️ Частично ✅ Да ✅ Да (теряется) ❌ Нет
Индекс триггеров ❌ Нет ✅ Да ⚠️ Да ❌ Нет
Делегирование моделям ⚠️ Да (в описании) ✅ Да ✅ Да (теряется) ❌ Нет
Переопределение system prompt ❌ Нет ❌ Нет ✅ Да (теряется) ❌ Нет
Формула времени (AI×10) ⚠️ Частично ⚠️ Да (низкий приоритет) ✅ Да (теряется) ❌ Нет
Логика определения режима ❌ Нет ❌ Нет ❌ Нет ❌ Нет ✅ Да
Свои инструменты ❌ Нет ❌ Нет ❌ Нет ❌ Нет ✅ MCP/CLI
Модель по умолчанию ❌ Нет ❌ Нет ❌ Нет ✅ Да

ЧТО У НАС СЕЙЧАС ЕСТЬ

Файлы для управления Claude Code

✅ РАБОТАЮЩИЕ (сохраняются после compaction)

$WORKSPACE/
│
├── CLAUDE.md                                    ← Главный протокол
│   • L0-L4 протокол ✅
│   • Индекс триггеров ✅
│   • Stop Rules ✅
│   • Делегирование ✅
│   • Автоопределение типа работы ✅
│
├── .claude/output-styles/
│   ├── Default.md                               ← Research (L0) ✅
│   ├── Coder.md                                 ← Code (план→всё) ✅
│   ├── Architect.md                             ← Methodology ✅
│   └── SafeDialog.md                            ← Ops (L1-L4) ✅
│
└── architect/
    ├── reference/
    │   └── CLAUDE_CODE_SYSTEM_PROMPT.md         ← Справка (для понимания) ✅
    │
    ├── standards/
    │   ├── TIME_ESTIMATION_AI.md                ← Формула AI×10 ⚠️
    │   ├── SECURITY_CREDENTIALS.md              ← Security rules ✅
    │   ├── MODEL_DELEGATION.md                  ← Делегирование ✅
    │   └── processes/
    │       └── RESOURCE_CHECK.md                ← Проверка ресурсов ✅
    │
    └── analysis/2026-01-17-roles-optimization/
        ├── OPTIMAL_ARCHITECTURE.md              ← Решение ✅
        ├── IMPLEMENTATION_COMPLETE.md           ← Отчёт ✅
        └── L0_PROTOCOL_FIX.md                   ← Отчёт ✅

⚠️ ПРОБЛЕМНЫЕ (не работают как ожидалось)

1. TIME_ESTIMATION_AI.md
- Местоположение: architect/standards/TIME_ESTIMATION_AI.md
- Проблема: Переопределяет базовый system prompt ("Never give time estimates")
- Не работает через: CLAUDE.md (низкий приоритет)
- Не работает через: Output Styles (нет переопределения)
- Решение: --append-system-prompt (но теряется)

2. Автоопределение типа работы
- Местоположение: CLAUDE.md (таблица триггеров)
- Проблема: Claude не всегда правильно определяет тип
- Решение: Нужна более явная логика (требует proxy/CLI)


ЧТО ХОТИМ СДЕЛАТЬ

Наши требования (из запроса)

  1. "Сменить алгоритм работы с проектами"
    - Сейчас: Триггер "pirotehnika" → читает CLAUDE.md проекта
    - Хотим: Автоматическое определение проекта по директории?
    - Возможно через: CLAUDE.md + Output Styles ✅

  2. "По-другому определять режимы работы"
    - Сейчас: Триггеры в запросе → Output Style
    - Хотим: Другая логика?
    - Возможно через: CLAUDE.md (частично) ⚠️
    - Требует: Proxy для полного контроля ❌

  3. "Использовать возможности Claude Code CLI но со своими настройками"
    - Сейчас: Output Styles + CLAUDE.md
    - Хотим: Больше контроля
    - Возможно через: Wrapper + --append-system-prompt ✅


ВЫВОДЫ

✅ Можем управлять СЕЙЧАС через документы

  1. Поведение — через Output Styles
  2. Протокол L0-L4 — через CLAUDE.md + Output Styles
  3. Триггеры и индексы — через CLAUDE.md
  4. Stop Rules — через CLAUDE.md + Output Styles
  5. Делегирование моделям — через CLAUDE.md

⚠️ Можем управлять ЧАСТИЧНО (с костылями)

  1. Переопределение system prompt — через wrapper + --append-system-prompt (теряется)
  2. Формула времени AI×10 — через wrapper + --append-system-prompt (теряется)

❌ НЕ можем управлять (требует proxy/CLI)

  1. Логика определения режимов — встроена в CLI
  2. Свои инструменты — только через MCP или fork
  3. Базовый system prompt — минифицирован в CLI

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

Для ваших задач:

Фаза 1: МАКСИМУМ БЕЗ ИЗМЕНЕНИЙ CLI (1-2 дня)

Используем только документы:

  1. ✅ Output Styles — детальное поведение
  2. ✅ CLAUDE.md — протокол, триггеры, индекс
  3. ✅ Wrapper-скрипт start — добавляет --append-system-prompt

Покрывает: 80% ваших требований

Фаза 2: WRAPPER С --APPEND-SYSTEM-PROMPT (1 день)

Создать start.sh:
- Загружает кастомные переопределения из файла
- Запускает claude --append-system-prompt "..."
- Проблема: теряется после compaction

Покрывает: 90% требований (кроме compaction)

Фаза 3: PROXY (1-2 недели, если нужно)

Если Фаза 1-2 не достаточно:
- Полный контроль над system prompt
- Своя логика определения режимов
- Не теряется после compaction


Следующий шаг: Создать план перестройки (что делаем в каждой фазе)?